问题描述
在使用tensort将onnx转化为tensorrt序列化的engine时输出如下错误
[E] Error[1]: [executionResources.cpp::setTacticSources::156] Error Code 1: Cudnn (Could not initialize cudnn, please check cudnn installation.)
解决思路1:检查显卡驱动版本与cuda的兼容性
官方版本兼容文档
# 打印驱动版本 1
cat /proc/drive/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 495.29.05 Thu Sep 30 16:00:29 UTC 2021
GCC version: gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
# 打印驱动版本 2
nvidia-smi
Tue Apr 18 17:05:52 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 495.29.05 Driver Version: 495.29.05 CUDA Version: 11.5 |
|-------------------------------+----------------------+----------------------+
# 打印cuda版本
nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Wed_Jul_14_19:41:19_PDT_2021
Cuda compilation tools, release 11.4, V11.4.100
Build cuda_11.4.r11.4/compiler.30188945_0
检查后发现版本是兼容的
解决思路2:显卡显存不足
排查后发现是显卡的显存不够导致 cudnn 初始化失败,换了一张可用显存更大的卡解决问题
# 1 trtexec可执行文件
CUDA_VISIBLE_DEVICES=1 trtexec --onnx=/path/to/load/onnx --saveEngine=/path/to/save/engine
# 2 python脚本
CUDA_VISIBLE_DEVICES=1 python build_engine.py