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'
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
材料整理不易,如果你覺得對你當前問題有幫助,可以進行小額滴贊助,感謝各位支持(▽)