欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Jetson TX2 安装 cuda9.0 及 cudnn7 超详细(真实亲测)

程序员文章站 2022-07-05 16:02:51
...

Jetson TX2 安装 cuda9.0 及 cudnn7 超详细(真实亲测)

划重点:本文主要针对于Jetson TX1/2,如果想在 pc端 安装 cuda 及 cudnn,那这篇没有任何帮助!
最近再给Jetson TX2开发板上安装cuda和对应的cudnn,遇到了很多问题,也搜索了很多技术博客,发现在给 Jetson TX2 安装cudnn的时候都存在致命的错误,现在将出坑方法记录下来。


本文是针对下面的平台的:
平台描述:
Jetson TX2平台版本: Jetpack 3.3, TensorRT4.0.2, python2.7, python3.5
系统内核: tegra-ubuntu 4.4.38-tegra aarch64, ubuntu 16.04
Linux系统版本: Ubuntu16.04,cmake 3.15.6 (TX2刷机完原始的cmake是3.5.1版本,由于后面自己捣鼓的时候说最好安装3.9.0以上版本cmake,所以我就直接升级到新版本了)


重点一:Jetson TX2上安装的cudnn,一定要是arm版本的(即aarch64)

之前在搜所相关安装方法的时候,很多技术博客中给出的cudnn下载链接下载到的cudnn是基于x86/64的。但是,Jetson TX2是ARM内核的, 基于X86_64的cudnn在使用的时候会报错的(报错信息见下 error),所以在Jetson TX2上安装的cudnn,一定要是arm版本的(aarch64)。

重点二:arm版本的cuda及cudnn从何下载?

这是重点所在。
从 nvidia 官网 cudnn下载链接中得到其实全部都不是基于ARM的。如下图所见:
Jetson TX2 安装 cuda9.0 及 cudnn7 超详细(真实亲测)
那么,如何得到ARM版本的cuda及cudnn呢?答案在这个链接里面:

https://devtalk.nvidia.com/default/topic/1029454/cudnn-6-for-arm64/?offset=4

也就是在运行 Jetpack 安装包之后,从下载得到的文件夹( jetpack_downloads/ )中得到
如果哪位大佬有更好的办法,请指出!



一、获得 cuda 及 cudnn

首先,找一台安装有 ubuntu16 或者 ubuntu14的电脑(我的ubuntu18不能用),从官网下载jetpack安装包或者从: https://pan.baidu.com/s/1c4dSxFXwLhmA2ASYHKkAqw 提取码: c9vk。
本文就以 Jetson3.3 版本 为例。
进入到此文件的下载目录,给文献权限:

sudo chmod +x JetPack-L4T-3.3-linux-x64_b39.run

然后开始安装:

./JetPack-L4T-3.3-linux-x64_b39.run
注意:在安装的时候不要使用 sudo 命令,直接运行即可

然后默认操作即可,具体操作可以参考这篇:Jetson TX2超详细刷机指南
直到出现下图,表示已经下载并且安装好了,后续的刷机过程也就不用在继续了,直接关闭就行:
Jetson TX2 安装 cuda9.0 及 cudnn7 超详细(真实亲测)

然后找到刚才安装过程中选择的下载目录(如下图)
Jetson TX2 安装 cuda9.0 及 cudnn7 超详细(真实亲测)

在 jetpack_downloads/ 文件夹下面,就得到乐了我们需要的 cuda9.0 和 cudnn7.1.5的安装包

下面的过程将在 Jetson TX2上进行


二、安装 cuda 及 cudnn

2.1 安装cuda

2.1.1 首先,在主目录下创建一个叫 cuda-l4t 的文件夹

cd ~
mkdir cuda-l4t

2.1.2 拷贝 cuda 安装脚本
在 jetpack 的安装目录下的 _install/目录下有一个叫 cuda-l4t.sh 的脚本,将其拷贝到 主目录下的 cuda-l4t 文件夹下
Jetson TX2 安装 cuda9.0 及 cudnn7 超详细(真实亲测)

注意:建议在 jetpack 安装目录下直接搜索cuda-l4t.sh 会更加直接

2.1.3 拷贝 cuda、cudnn安装包
所有在JetPack中下载的安装包均存在JetPack/jetpack_download中,将
cuda9.0安装包 (cuda-repo-l4t-9-0-local_9.0.252-1_arm64.deb)
cudnn安装包 (有3个,libcudnn7_7.1.5.14-1+cuda9.0_arm64.deb,libcudnn7-dev_7.1.5.14-1+cuda9.0_arm64.deb,libcudnn7-doc_7.1.5.14-1+cuda9.0_arm64.deb)
拷贝到 主目录下的 cuda-l4t 文件夹下
Jetson TX2 安装 cuda9.0 及 cudnn7 超详细(真实亲测)2.1.4 开始安装cuda

cd ~/cuda-l4t
bash cuda-l4t.sh cuda-repo-l4t-9-0-local_9.0.252-1_arm64.deb 9.0 9-0

等待安装完成即可

2.2 安装cudnn

由于3个与cudnn相关的文件:
libcudnn7_7.1.5.14-1+cuda9.0_arm64.deb
libcudnn7-dev_7.1.5.14-1+cuda9.0_arm64.deb
libcudnn7-doc_7.1.5.14-1+cuda9.0_arm64.deb
由于都是 .deb 文件,因此直接使用 下面的命令安装即可:

sudo dpkg -i libcudnn7_7.1.5.14-1+cuda9.0_arm64.deb
sudo dpkg -i libcudnn7-dev_7.1.5.14-1+cuda9.0_arm64.deb
sudo dpkg -i libcudnn7-doc_7.1.5.14-1+cuda9.0_arm64.deb

安装完成后,其实是直接安装到了默认安装路径usr/include和usr/lib下的,因此需要将其拷贝到cuda安装路径下:

sudo cp /usr/include/cudnn.h /usr/local/cuda/include/

sudo cp /usr/lib/aarch64-linux-gnu/libcudnn* /usr/local/cuda/lib64/

然后执行下面命令,用重新生成cudnn库的软连接

cd /usr/local/cuda/lib64

chmod +r libcudnn*

sudo rm -rf libcudnn.so libcudnn.so.7
sudo ln -s libcudnn.so.7.1.1 libcudnn.so.7
sudo ln -s libcudnn.so.7 libcudnn.so

sudo ldconfig

到此,cuda 及 cudnn 安装就完成了


三、验证

3.1 查看 cuda 版本

在终端中输入:

$ nvcc -V

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Sun_Nov_19_03:16:56_CST_2017
Cuda compilation tools, release 9.0, V9.0.252

可知,当前平台安装的是 CUDA 9.0.252版本

3.2 查看 cudnn 版本

在终端输入:

$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
得到
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 1
#define CUDNN_PATCHLEVEL 5
--
#define CUDNN_VERSION    (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"

可知,当前的 cudnn 版本是 7.1.5


附:error

如果在Jetson TX2上安装了 x86_64 版本的cudnn,那么在使用cudnn的时候就会报如下错:
libcudnn.so.7: error adding symbols: File in wrong format
详细报错信息如下:

[ 58%] Linking CXX shared library ../lib/libcaffe2_gpu.so
/usr/local/cuda/lib64/
collect2: error: ld returned 1 exit status
caffe2/CMakeFiles/caffe2_gpu.dir/build.make:185448: recipe for target 'lib/libcaffe2_gpu.so' failed
make[2]: *** [lib/libcaffe2_gpu.so] Error 1
CMakeFiles/Makefile2:4400: recipe for target 'caffe2/CMakeFiles/caffe2_gpu.dir/all' failed
make[1]: *** [caffe2/CMakeFiles/caffe2_gpu.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 58%] Built target python_copy_files
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Failed to run 'bash ../tools/build_pytorch_libs.sh --use-cuda --use-nnpack --use-qnnpack caffe2'
相关标签: cudn Jetson tx2