jetpack5.0.2 已经安装了 cudnn 和 tensorrt

在平台 jetson Xavier NX 中想使用 cudnn 和 tensorrt。然后自己下载了相应包并解压,拷贝,编译

安装 cudnn

1.下载对应包文件,例如:cudnn-linux-sbsa-8.4.1.50_cuda11.6-archive.tar.xz
2.解压,移动到解压目录,再拷贝。如下:

sudo cp include/cudnn*.h /usr/local/cuda/include
sudo cp -P lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

3.安装完成

安装 tensorrt

1.下载对应包文件,例如:TensorRT-8.4.2.4.Ubuntu-20.04.aarch64-gnu.cuda-11.6.cudnn8.4.tar.gz
2.解压,进入解压目录,再进入sample中随便找一个工程进行make
3.安装完成

问题:tensorrt 下任意一个工程make ,报错,错误如下:

Could not initialize cudnn, please check cudnn installation.
buildSerializedNetwork::636] Error Code 2: Internal Error (Assertion engine != nullptr failed. )

前面还有一点,我忘记了。
根据这两个问题检索,网友说:

  1. cuda 与 cudnn 版本不兼容
  2. 显卡内存不足

这两个问题我也尝试解决但任然没有头绪。
第二天早上,我再次检索,发现Nvidia开发者网站发布了一篇文章 Jetson Software Roadmap for 2H-2021 and 2022 ,根据该文中工作人员说:

JetPack 4.6 is our next production release, currently scheduled for July 2021. It will bring updates to the CUDA, cuDNN, and TensorRT compute stack as well as a feature-rich BSP update with L4T 32.6 based on Ubuntu 18.04. New capabilities will be included for over the air (OTA) software updates, security, bootloader, multimedia, camera, and cloud-native technologies.

我就瞬间诧异了,JetPack 4.6 就直接包含了 CUDA, cuDNN, TensorRT。文中还说 JetPack 4.6 是对以前的资源进行更新,增加。那 JetPack 5.0.2 那也应该是这样的。

然后我在根目录下去寻找 cudnn头文件和库文件

sudo find . -name cudnn*.h
sudo find . -name libcudnn*.so*

发现有多个版本的 cudnn!!!!!!!!!!
啊,这不就是 检索答案 中说的 cuda 与 cudnn 版本不兼容 问题嘛,
一个是 JetPack 5.0.2 刷系统时自带的,一个是我自己安装的。瞬间我明白了,我不是多此一举嘛!!!

然后我删除掉了我自己安装的 cudnn

sudo rm /usr/local/cuda/include/cudnn*.h -rf
sudo rm /usr/local/cuda/lib64/libcudnn* -rf

然后再 /usr/src/tensorrt/samples/sampleDynamicReshape 这个目录下编译该代码,再在 /usr/src/tensorrt/bin 这个目录下执行 sample_dynamic_reshape 。该程序顺利执行!!!

问题其实就在于自己多此一举,导致系统存在多个 cudnn 版本。

附上安装 cudnn 和 tensorrt 的链接
Installing cuDNN on Linux
TensorRT Tar File Installation

你可能感兴趣的:(JetPack,cuDNN,TensorRT)