本文主要是介绍tensorRT推理yolov5.trt模型崩溃,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在用
在jetson xavier上利用TensorRT C++部署yolov5_基于tiny-tensorrt_陈 洪 伟的博客-CSDN博客
代码推理yolov5的trt模型时,当我多线程推理模型时候(两个线程同时做初始化、推理、反初始化),程序老是在反初始化的时候崩溃,
if(nullptr == mystream){cudaStreamDestroy(mystream);}if (mContext != nullptr) {mContext->destroy();//这一行崩溃报错。mContext = nullptr;}if (mEngine != nullptr) {mEngine->destroy();mEngine = nullptr;}
原因在于,我们的trt.h里面
我们的Runtime是在类里面的,我们的这个Runtime是个单例,它应该是全局的,这个应该所有线程共用一个,而我们的mEngine是绑定模型的,mContext是绑定模型的某一路的。所以这里我们两个线程应该共用一个mRuntime,所以我们把这个mRuntime注释掉,不再放在类里面,拿到外面,但是这样改还是不对,我们创建mRuntime的时候要用到mLogger(也是个单例),所以这个mLogger也要拿到类外面,
这样修改之后错误消失。
这篇关于tensorRT推理yolov5.trt模型崩溃的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!