Jetson TX2 安裝 cuda9.0 及 cudnn7 超詳細(真實親測)

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的。如下圖所見:
在這裏插入圖片描述
那麼,如何得到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超詳細刷機指南
直到出現下圖,表示已經下載並且安裝好了,後續的刷機過程也就不用在繼續了,直接關閉就行:
在這裏插入圖片描述

然後找到剛纔安裝過程中選擇的下載目錄(如下圖)
在這裏插入圖片描述

在 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 文件夾下
在這裏插入圖片描述

注意:建議在 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 文件夾下
在這裏插入圖片描述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'

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

材料整理不易,如果你覺得對你當前問題有幫助,可以進行小額滴贊助,感謝各位支持()
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章