在使用tensorrt部署yolov5时运行到context.execute_async(batch_size=self.batch_size, bindings=bindings, stream_handle=stream.handle)报错: [TRT] [E] 1: [context.cpp::setStream::121] Error Code 1: Cudnn (CUDNN_STATUS_MAPPING_ERROR)
我的系统是ubuntu20,显卡为rtx3060,tensorrt版本是8.4.3.1,cuda版本是11.6,cudnn采用的是8.4.2。一开始遇到这个错误时以为是cudnn版本不对,按照下载时的推荐更换了好多版本,包括cuda版本也更换了好几次,依然没有解决,想请了解的能指导一二,万分感谢!
小魔女参考了bing和GPT部分内容调写:
这个错误可能是由于tensorrt和cuda、cudnn的版本不兼容引起的,建议你检查一下当前的tensorrt版本是否与cuda和cudnn的版本兼容,可以参考官方文档,查看当前版本是否支持你的显卡。另外,你也可以尝试更换tensorrt版本,以确保tensorrt和cuda、cudnn的版本兼容。
回答不易,记得采纳呀。
“Devil组”引证GPT后的撰写:
该回答引用ChatGPT
这个错误通常是由于TensorRT和CUDNN版本不兼容或者TensorRT没有正确初始化所导致的。以下是一些可能的解决方案:
检查TensorRT和CUDNN的版本兼容性。TensorRT 8.4.3.1需要CUDNN 8.2或8.1。您可以尝试更换CUDNN版本,以确保与TensorRT兼容。
确保您已正确初始化TensorRT引擎和CUDA流。您可以使用以下代码来初始化:
runtime = trt.Runtime(TRT_LOGGER)
engine = load_engine(TRT_LOGGER, plan_file)
context = engine.create_execution_context()
stream = cuda.Stream()
其中load_engine()是您的代码加载TensorRT引擎的函数。
确保您的模型是正确的。您可以尝试在其他环境中运行模型,例如在TensorFlow中,以确保模型本身没有问题。
检查您的硬件是否受损。您可以尝试在其他计算机或GPU上运行代码,以确定是否有硬件故障。
你看下这个参数,batch size是不是太大,可以尝试减少batch size 或者torch.backends.cudnn.enabled = True,可以尝试设置torch.backends.cudnn.enabled = False
引用GPT:这个错误通常是由于CUDA和CuDNN版本之间不兼容或不匹配导致的。在您的情况下,您已经更换了多个版本,但问题仍然存在。以下是一些可能的解决方案:
确认CUDA和CuDNN版本匹配。根据TensorRT的官方文档,您使用的TensorRT版本需要与您的CUDA和CuDNN版本匹配。您已经使用了TensorRT 8.4.3.1和CUDA 11.6,但您的CuDNN版本是8.4.2。建议将您的CuDNN版本更改为8.4.3.1,以确保版本兼容性。
检查CUDA和CuDNN是否正确安装并配置。请确保CUDA和CuDNN正确安装并配置在系统中。建议通过运行CUDA示例代码来验证CUDA是否正确安装。同样,您可以通过在Python中导入CuDNN并执行一些简单的操作来验证CuDNN是否正确安装。
检查您的显卡是否支持所需的CUDA和CuDNN版本。请确保您的显卡支持所需的CUDA和CuDNN版本。建议查看您的显卡规格并确认它们符合TensorRT、CUDA和CuDNN的要求。
尝试重新安装TensorRT、CUDA和CuDNN。如果上述解决方案都无法解决问题,请尝试重新安装TensorRT、CUDA和CuDNN,并确保它们都是最新版本。如果问题仍然存在,请考虑更换您的显卡或与TensorRT的官方支持团队联系,以获取更多帮助。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
这个错误一般是由于TensorRT与CUDA或CUDNN版本之间的兼容性问题引起的,可以尝试以下操作:
确认您的TensorRT版本与CUDA和CUDNN版本兼容。可以在NVIDIA的官方文档中查看版本兼容性。
检查是否正确安装了CUDA和CUDNN,可以通过nvcc -V和cat /usr/local/cuda/version.txt命令来检查CUDA版本,并通过cat /usr/include/x86_64-linux-gnu/cudnn_v*.h | grep CUDNN_MAJOR -A 2检查CUDNN版本。
确认您的Yolov5模型是否正确转换为TensorRT格式。如果模型不正确,则您可能会看到类似于"unsupported layer type detection_output_TRT"的错误消息。
尝试使用更小的batch_size,有时候会因为显存限制而导致出现映射错误。
如果您的GPU上安装了多个版本的CUDA和CUDNN,建议使用export CUDA_HOME=/usr/local/cuda-和export LD_LIBRARY_PATH=/usr/local/cuda-/lib64:$LD_LIBRARY_PATH来设置CUDA和CUDNN路径,以确保使用正确的库。
如果上述都没有解决问题,请提供完整的代码以及相关的配置信息,以便更好地帮助您解决问题。
如果我的回答解决了您的问题,请采纳!