推理平台|TensorRT
文章平均质量分 66
使用TensorRT推理引擎,利用设备的gpu加速推理过程,便于边缘设备的算法部署
澄鑫
不断重复,百炼成钢!
展开
-
【C++|TensorRT】使用ostream和istream类来读写TensorRT模型并推理(v9_trtx)
写入时,我们先创建一个std::ofstream的写入流p,初始化构造函数的第一个参数为const char *,填写保存路径,第二个参数为打开写入的方式,在写入序列化模型时,一般都是std::ios::binary的形式;方法来获取指向序列化模型数据的指针,但是这里我们需要将这个指针的数据类型转为const char *型,因此我们需要用到。在调用write写入时,第一个参数是const char*的数据指针,第二个参数是写入流的字节数。方法,该方法提供数字到指针间的转换以及不同类型指针间的强制转换。原创 2024-03-19 10:34:09 · 657 阅读 · 2 评论 -
【TensorRT】int8量化与推理学习链接
关于TensorRT 量化与部署的网络教程,方便自己查找原创 2024-02-21 11:52:03 · 433 阅读 · 0 评论 -
【TensorRT】官方文档onnx序列化教程与推理教程
需要注意的是,TensorRT网络定义的一个重要方面是它包含指向模型权重的指针,这些指针由构建器复制到优化的引擎中。由于网络是使用解析器创建的,所以解析器拥有权重占用的内存,因此在构建器运行之前,不可以删除解析器对象。并且由于需要展示各对象的存在周期,实例代码中没有使用智能指针,但是建议在实际使用中加上智能指针来配合TensorRT接口。本博客主要说明的是TensorRT C++ API,从我们获取到onnx模型开始的流程。现在,我们可以通过ONNX模型来填充网络定义,ONNX解析器API位于文件。原创 2024-01-28 22:47:17 · 752 阅读 · 0 评论 -
【CUDA,TensorRT】cuda,cudnn,TensorRT官方下载链接
各版本cuda下载链接各版本cudnn下载链接原创 2024-01-25 21:53:09 · 167 阅读 · 0 评论 -
【TensorRT】关于8.6版本开始的硬件兼容特性的一些试错
在工业应用中,边缘端的部署通常需要发布到不同的硬件,在自己的电脑上生成的模型,往往会因为与其他设备的显卡型号不同架构不同的问题,导致其他设备无法部署主机上导出的engine模型或者trt模型。因此,8.6版本的tensorRT发布了一项新的可能,可以支持基于不同显卡设备之间的兼容。,笔者案例中的情况是使用3060显卡的主机导出的模型,想发布到1660显卡的设备上,由于3060显卡已是基于。架构的,因此这个设备兼容性并不支持,只能通过在1660显卡的主机上重新导出engine或者trt模型再调用。原创 2024-01-24 16:32:33 · 1035 阅读 · 2 评论 -
【TensorRT】c++使用面向对象来封装tensorRT推理代码的指针释放问题
于是乎,我便开始从头开始查询我的代码,看看到底哪里多释放了一次,后来突然发现,由于我使用了智能指针,智能指针在其完成调用之后,根据引用计数可以自动释放,而我的这些_engine, _context, _runtime,也都已经在类的成员变量中定义过了,(并且我也在类中封装了Malloc_data()和Free_malloc()函数,作用分别是为tensorRT推理时在host和device上为输入输出的指针分配存储空间,和在执行推理完毕后,将host和device上分配的指针指向的内存空间手动释放掉)。原创 2024-01-18 14:34:37 · 975 阅读 · 0 评论 -
【TensorRT】DeviceToHost同步与异步拷贝的区别及带来的问题
使用tensorRT推理MaskRCNN时,在执行推理完毕后,将device的指针指向的内容拷贝给host的指针时,如果此时使用cudaMemcpyAsync来进行拷贝,会随机的出现推理结果错乱的问题(观察后发现即上一张推理的结果,会在第二张的输入上呈现)。如果我们有多个核函数,并且我们创建了一个stream,那么这些核函数在stream中都是串行执行的,但是如果我们需要并发执行,可以开启多个stream。在cuda中,一个stream是由主机代码发布的一系列在设备上执行的操作,是严格保序执行的。原创 2024-01-15 13:09:31 · 572 阅读 · 0 评论