TensorRT:自定义插件学习与实践 002:实现GELU

news2024/7/2 3:59:10
  • 代码连接:https://github.com/codesteller/trt-custom-plugin

TensorRT版本的选择

  • 教程代码对应的版本TensorRT-6.0.1.8,我尝试使用TensorRT-7.2.3.4也能通过编译
set_ifndef(TRT_LIB /usr/local/TensorRT-7.2.3.4/lib)
set_ifndef(TRT_INCLUDE /usr/local/TensorRT-7.2.3.4/include)
  • 但是使用更高版本可能报错
set_ifndef(TRT_LIB /usr/local/TensorRT-8.0.0.3/lib)
set_ifndef(TRT_INCLUDE /usr/local/TensorRT-8.0.0.3/include)
  • error: looser throw specifier for ‘virtual int GeluPlugin::getNbOutputs() const’ // https://forums.developer.nvidia.com/t/custom-plugin-fails-error-looser-throw-specifier-for-virtual/186885

  • 需要按照新版本的格式进行修改,一般需要加上noexcept关键字 : int getNbOutputs() const noexcept override;

plugin 在python端使用使用

trt.PluginField

def getAddScalarPlugin(scalar):
    for c in trt.get_plugin_registry().plugin_creator_list:
        print(c.name)
        if c.name == "CustomGeluPlugin":# "LReLU_TRT":#
            parameterList = []
            #res = c.create_plugin(c.name,None) ## 段错误 (核心已转储)
            parameterList.append(trt.PluginField("typeId", np.int32(0), trt.PluginFieldType.INT32))
            parameterList.append(trt.PluginField("bias", np.int32(scalar), trt.PluginFieldType.INT32))
            res = c.create_plugin(c.name, trt.PluginFieldCollection(parameterList))
            return res
    return None
  • 关于参数列表 parameterList.append(trt.PluginField("typeId", np.int32(0), trt.PluginFieldType.INT32))的设置,可在原代码的PluginField进行设置

在这里插入图片描述

  • python文档:https://docs.nvidia.com/deeplearning/tensorrt/api/python_api/infer/Plugin/IPluginCreator.html#tensorrt.PluginFieldCollection

python环境安装

install cuda-python

  • pip install cuda-python -i https://mirrors.aliyun.com/pypi/simple/

        Both CUDA-Python and pyCUDA allow you to write GPU kernels using CUDA C++. The kernel is presented as a string to the python code to compile and run. The key difference is that the host-side code in one case is coming from the community (Andreas K and others) whereas in the CUDA Python case it is coming from NVIDIA.(https://pypi.org/project/cuda-python/ ,https://nvidia.github.io/cuda-python/install.html https://blog.csdn.net/hjxu2016/article/details/122868139)

install right version tensorrt for python

  • https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html
  • cd /usr/local/TensorRT-7.2.3.4/python/
  • pip install tensorrt-7.2.3.4-cp37-none-linux_x86_64.whl
    在这里插入图片描述
  • from .tensorrt import * ImportError: libnvinfer.so.7: cannot open shared object file: No such file or directory
  • LD_LIBRARY_PATH=/usr/local/TensorRT-7.2.3.4/lib/ /home/pdd/anaconda3/envs/yolocopy/bin/python3.7 /home/pdd/MPI/AddScalarPlugin/cmake-build-debug/testAddScalarPlugin.py
  • from .tensorrt import * ImportError: libcudnn.so.8: cannot open shared object file: No such file or directory
  • LD_LIBRARY_PATH=/usr/local/TensorRT-7.2.3.4/lib/:/usr/local/cuda-11.1/targets/x86_64-linux/lib /home/pdd/anaconda3/envs/yolocopy/bin/python3.7 /home/pdd/MPI/AddScalarPlugin/cmake-build-debug/testAddScalarPlugin.py

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/482219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

是不是在为 API 烦恼 ?好用免费的api接口大全呼之欲出

前期回顾 “ ES6 —— 让你的JavaScript代码从平凡到精彩 “_0.活在风浪里的博客-CSDN博客Es6 特性https://blog.csdn.net/m0_57904695/article/details/130408701?spm1001.2014.3001.5501 👍 本文专栏:开发技巧 先说本文目的,本文会分…

有效日志管理在软件开发和运营中的作用

作者:Luca Wintergerst, David Hope, Bahubali Shetti 当今存在的快速软件开发过程需要扩展和复杂的基础架构和应用程序组件,并且操作和开发团队的工作不断增长且涉及多个方面。 有助于管理和分析遥测数据的可观察性是确保应用程序和基础架构的性能和可靠…

JavaScript实现输入数值,判断是否为(任意)三角形的代码

以下为实现输入数值,判断是否为(任意)三角形的代码和运行截图 目录 前言 一、实现输入数值,判断是否为三角形 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 二、实现输入数值,判断是否为…

PLC模糊控制模糊PID(梯形图实现+算法分析)

博途PLC的模糊PID控制详细内容请查看下面的博客文章: Matlab仿真+博途PLC模糊PID控制完整SCL源代码参考(带模糊和普通PID切换功能)_博途怎么实现模糊pid_RXXW_Dor的博客-CSDN博客模糊PID的其它相关数学基础,理论知识大家可以参看专栏的其它文章,这里不再赘述,本文就双容…

01背包问题个人剖析

背包问题 文章目录 背包问题1 01背包问题1.1 问题阐述1.2 问题分析 背包问题中我最初的一些疑惑 1 01背包问题 我参考了文献背包九讲。https://github.com/tianyicui/pack/raw/master/V2.pdf 背包九讲的作者是ACM大牛崔天翼。 1.1 问题阐述 有 N N N件物品和一个容量为 V V …

Java程序猿搬砖笔记(十二)

文章目录 PostConstruct注解Mybatis的mapper-locations配置JsonFormat实现原理IDEA String Manipulation插件使用及设置快捷键在Windows中测试服务器端口是否开放Centos开放端口Nginx常用配置详解Nginx里面的路径定位关键词root、aliaszuul里面的prefix 和 strip-prefix学习解决…

【三十天精通Vue 3】第二十四天 Vue3 移动端适配和响应式布局

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录 引言一、 移动端适配概述1.1 为什么需要移动端适配?1.…

3.5 并行存储器

学习步骤: 如果我要学习并行存储器,我会采取以下几个步骤: 了解并行存储器的基本概念和原理。学习并行存储器的前提是要对存储器的基本原理有所了解,包括存储器的分类、工作原理、读写时序等。 学习并行存储器的特点和应用。并行…

Java每日一练(20230502)

目录 1. 二叉搜索树的最近公共祖先 🌟🌟 2. 随机分组问题 🌟 3. K 个一组翻转链表 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练…

Vue 框架入门介绍

前言 前端时间工作任务没有那么忙,在技术总监沟通中他认为我自己花点时间做技术扩展,由于项目中用到前端部分功能,框架用的是Vue,本身项目中和前端同时接触比较多,而且公司有现成的项目可以供我去练习,所以…

存储资源调优技术——SmartMigration智能数据迁移技术

目录 基本概念 工作原理 注意事项 基本概念 智能数据迁移技术是业务迁移的关键技术 在不中断主机业务的情况下,实现源LUN上的业务完整--业务相关的所有数据 迁移到目标LUN上 工作原理 业务数据同步 创建SmartMigration,源LUN和目标LUN之间建立Pair关系&a…

RabbitMq、Kafka、RocketMq整理

MQ的主要作用:异步提高性能、解耦提高扩展性、削峰。 一、常见中间件对比 Kafka、RocketMq和RabbitMq最大的区别就是:前两个是分布式存储。 1.1、ActiveMq 优点:1)完全支持jms规范的消息中间件 ,2)提供丰富的api, 3)多种集群构建模式。 缺点:)在高并发的场景下,性能可…

计算机视觉——day88 读论文:基于驾驶员注意视野的交通目标检测与识别

基于驾驶员注意视野的交通目标检测与识别 II. RELATED WORKSA. 通用对象检测B. 交通标志检测与识别C. 车辆检测D.行人检测E. 交通灯检测 III. PROPOSED METHODA. The RoadLAB DatasetB. 驾驶员注视定位C. 目标检测阶段模型A模型B D.数据扩充E.综合检测结果F.物体识别阶段 IV. 实…

【Git】Git(分布式项目管理工具)在Windows本地/命令行中的基本操作以及在gitee中的操作,使用命令行、window,进行提交,同步,克隆

介绍 这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 一个人为什么要努力&a…

​【五一创作】基于mysql关系型实现分布式锁

看完该文预计用时:15分钟 看之前应具体的技术栈:springboot mysql nginx(了解即可) 目录 0.写在前面 1. 从减库存聊起 1.1. 环境准备 1.2. 简单实现减库存 1.3. 演示超卖现象 1.4. jvm锁问题演示 1.4.2. 原理 1.5. 多服务问…

Linux CentOS本地搭建Web站点,并实现公网访问

文章目录 前言1. 本地搭建web站点2. 测试局域网访问3. 公开本地web网站3.1 安装cpolar内网穿透3.2 创建http隧道,指向本地80端口3.3 配置后台服务 4. 配置固定二级子域名5. 测试使用固定二级子域名访问本地web站点 转载自cpolar文章:Linux CentOS本地搭建…

ChatGPT提示词工程(六):Expanding扩展

目录 一、说明二、安装环境三、扩展(Expanding)1. 自定义自动回复客户电子邮件2. 提醒模型使用客户电子邮件中的详细信息3. 参数 temperature 一、说明 这是吴恩达 《ChatGPT Prompt Engineering for Developers》 的课程笔记系列。 本文是第六讲的内容…

linux编写脚本之快速入门

前言 在进行Linux测试时编写脚本是必不可少的。最近经常使用Linux,感觉太频繁地敲击键盘有些累了,于是想到了Shell脚本。可以把太多的命令写成一个脚本,这样每次执行一遍 shell文件,就可以省去了敲击键盘的时间。于是在网上搜了一…

3.7 虚拟存储器

学习目标: 建议按照以下学习目标进行学习: 了解虚拟存储器的基本概念和原理。包括什么是虚拟存储器、虚拟地址和物理地址、虚拟内存、页面置换算法等。 了解虚拟存储器的实现方式。包括基于请求分页、请求分段和请求段页混合的虚拟存储器实现方式&…

前置操作:Kubernetes快速安装组件Kubectl Kubeadam Kubeinit

文章目录 配置K8S主从集群前置准备操作一:主节点操作 查看主机域名->编辑域名1.1 编辑HOST 从节点也做相应操作1.2 从节点操作 查看从节点102域名->编辑域名1.3 从节点操作 查看从节点103域名->编辑域名 二:安装自动填充,虚拟机默认…