「解析」Jetson 安装 CUDA/cuDNN
Posted ViatorSun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「解析」Jetson 安装 CUDA/cuDNN相关的知识,希望对你有一定的参考价值。
注意:自从JetPack 升级到 5.0版本之后,可以,JetPack 官方教程
官方教程提供了三种方法:SD卡、SDK Manager 以及 apt安装Jetpack。前两种主要用于Orin系列之前的 Jetson开发板,主要针对还没有烧录系统的空机。而从 Jetson Orin系列开始,便支持 apt 安装 Jetpack 。
1、安装 JetPack 组件
用一句话总结 为啥安装 Jetpack,那就是 Jetpack 是 Nvidia为 Jetson系列开发板开发的一款软件开发包,常用的开发工具基本都包括了,并在在安装 Jetpack的时候,会自动的将匹配版本的CUDA、cuDNN、TensorRT等安装好,极大地方便了开发者!几乎就是一键傻瓜安装,爽到爆!
1.1 安装Jetpack
烧录好 Jetson系统之后,给Jetson连接键盘、鼠标和显示器,配置好系统之后就可以从Internet安装与 Jetson L4T版本对应的最新JetPack组件。
cat /etc/nv_tegra_release
sudo bash -c 'echo "deb https://repo.download.nvidia.com/jetson/common r34.1 main" >> /etc/apt/sources.list.d/nvidia-l4t-apt-source.list'
sudo bash -c 'echo "deb https://repo.download.nvidia.com/jetson/t234 r34.1 main" >> /etc/apt/sources.list.d/nvidia-l4t-apt-source.list'
1.2 安装注意事项
博主的版本是 R35 (release)
sun@ubuntu:~$ cat /etc/nv_tegra_release
# R35 (release), REVISION: 3.1, GCID: 32827747, BOARD: t186ref, EABI: aarch64, DATE: Sun Mar 19 15:19:21 UTC 2023
然后可以参考 Nvida官方指导教程安装JetPack,命令如下:
sudo apt upgrade
sudo apt update
sudo apt dist-upgrade
sudo reboot
sudo apt install nvidia-jetpack
安装完输入 sudo jetson_release
进行查询 ( 注:需要提前装好Jtop才可以使用,Jtop 安装教程):
可以发现 Jetpack会自动安装相关版本的CUDA、cuDNN、TensorRT等
其中 cuDNN 默认安装路径在 /usr/lib/aarch64-linux-gnu 下
CUDA 默认安装路径在 /usr/local/cuda 下
1.3 升级 JetPack
2、配置Cuda环境变量:
Cuda 已经默认安装在了/usr/local/cuda下,运行如下指令:
sudo vim ~/.bashrc # 打开~/.bashrc
#在文本末输入如下代码:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
source ~/.bashrc # 更新环境变量配置
运行 nvcc -V 查看版本号:
nvcc -V
3、配置 cuDNN
虽然安装了cuDNN,但没有将对应的头文件、库文件放到cuda目录。
cuDNN的头文件在:/usr/include,库文件位于:/usr/lib/aarch64-linux-gnu。将头文件与库文件复制到cuda目录下:
(这里我与amd64上的cudnn头文件进行了对比,发现amd64下的头文件都是源文件,而arm64下的头文件都是软链接,当我将软链接头文件复制到cuda头文件目录下,变为了源文件。。。之所以说这些,就是为了证明这里的操作和amd64的一样,不用担心)
操作如下:
# 复制文件到cuda目录下
cd /usr/include && sudo cp cudnn* /usr/local/cuda/include
cd /usr/lib/aarch64-linux-gnu && sudo cp libcudnn* /usr/local/cuda/lib64
# 修改文件权限,修改复制完的头文件与库文件的权限,所有用户都可读,可写,可执行:
sudo chmod 777 /usr/local/cuda/include/cudnn.h
sudo chmod 777 /usr/local/cuda/lib64/libcudnn*
# 重新软链接,这里的8.6.0和8对应安装的cudnn版本号和首数字
cd /usr/local/cuda/lib64
sudo ln -sf libcudnn.so.8.6.0 libcudnn.so.8
sudo ln -sf libcudnn_ops_train.so.8.6.0 libcudnn_ops_train.so.8
sudo ln -sf libcudnn_ops_infer.so.8.6.0 libcudnn_ops_infer.so.8
sudo ln -sf libcudnn_adv_train.so.8.6.0 libcudnn_adv_train.so.8
sudo ln -sf libcudnn_adv_infer.so.8.6.0 libcudnn_adv_infer.so.8
sudo ln -sf libcudnn_cnn_train.so.8.6.0 libcudnn_cnn_train.so.8
sudo ln -sf libcudnn_cnn_infer.so.8.6.0 libcudnn_cnn_infer.so.8
sudo ldconfig
4、测试Cudnn:
sudo cp -r /usr/src/cudnn_samples_v8/ ~/
cd ~/cudnn_samples_v8/mnistCUDNN
sudo chmod 777 ~/cudnn_samples_v8
sudo make clean && sudo make
./mnistCUDNN
配置成功输出:
Result of classification: 1 3 5
Test passed!
Jetson AGX Orin安装AnacondaCudaCudnnPytorch最全教程
文章目录
一:Anaconda安装
Jetson系列边缘开发板,其架构都是arm64,而不是传统PC的amd64,深度学习的环境配置方法大不相同。想要看amd64的相关环境安装,可以参考这篇文章。下面步入正题:
对于Anaconda的安装其实和之前差不多,只是寻找aarch64的shell包安装即可,下载地址anaconda清华镜像源,我选择的是Anaconda3-2021.11-Linux-aarch64.sh
。
进入到下载文件夹,按如下命令依次安装即可:
chmod +x Anaconda3-2021.11-Linux-aarch64.sh
./Anaconda3-2021.11-Linux-aarch64.sh
后面的安装流程和amd64的一样,不再赘述,可移步这篇文章。
二:Cuda、Cudnn安装
坑:千万不要安装cuda官网上最新的cuda-jetson-12.0,装完重启后终端就黑屏了,含泪刷机!
所以我参考了官网上最常用的三种方法SD卡、SDK Manager安装Jetpack、apt安装Jetpack。
前两种是针对Orin之前的jetson系列板,第一次它们需要手动刷机,所以是针对无系统的空机。而Orin系列开始,自装好了Ubuntu20.04系统,所以选择第三种apt安装Jetpack
。
那Jetpack这到底是什么呢,明明要安装cuda,为啥却先安装Jetpack呢?
其实原因很简单,Jetpack可以理解为Jetson系列板上的软件开发工具包,所有常用的开发kit里面都有。而apt安装Jetpack时默认直接装上与jetson版本号适配的cuda、cudnn、TensorRT,岂不妙哉!!
这里我参考的Invida官方指南,下面直接上代码:
sudo apt upgrade
sudo apt update
sudo apt dist-upgrade
sudo reboot
sudo apt install nvidia-jetpack
安装完输入sudo jetson_release
进行查询 ( 注:需要装好Jtop才有此命令,安装方式见文尾):
发现安装Jetpack的过程中也安装了和5.0.2版本适配的Cuda_11.4、Cudnn_8.4.1。
,而Cudnn默认安装在了/usr/lib/aarch64-linux-gnu下
注:下面配置Cuda环境变量:
Cuda已经默认安装在了/usr/local/cuda下,运行如下指令:
#打开~/.bashrc
sudo gedit ~/.bashrc
#在文本末输入如下代码:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
#更新环境变量配置
source ~/.bashrc
运行nvcc -V
查看版本号:
#/usr/local/cuda/bin/nvcc -V
nvcc -V
注:还没有结束,虽然安装了cuDNN,但没有将对应的头文件、库文件放到cuda目录。
cuDNN的头文件在:/usr/include
,库文件位于:/usr/lib/aarch64-linux-gnu
。将头文件与库文件复制到cuda目录下:
(这里我与amd64上的cudnn头文件进行了对比,发现amd64下的头文件都是源文件,而arm64下的头文件都是软链接,当我将软链接头文件复制到cuda头文件目录下,变为了源文件。。。之所以说这些,就是为了证明这里的操作和amd64的一样,不用担心)
操作如下:
#复制文件到cuda目录下
cd /usr/include && sudo cp cudnn* /usr/local/cuda/include
cd /usr/lib/aarch64-linux-gnu && sudo cp libcudnn* /usr/local/cuda/lib64
#修改文件权限,修改复制完的头文件与库文件的权限,所有用户都可读,可写,可执行:
sudo chmod 777 /usr/local/cuda/include/cudnn.h
sudo chmod 777 /usr/local/cuda/lib64/libcudnn*
#重新软链接,这里的8.4.1和8对应安装的cudnn版本号和首数字
cd /usr/local/cuda/lib64
sudo ln -sf libcudnn.so.8.4.1 libcudnn.so.8
sudo ln -sf libcudnn_ops_train.so.8.4.1 libcudnn_ops_train.so.8
sudo ln -sf libcudnn_ops_infer.so.8.4.1 libcudnn_ops_infer.so.8
sudo ln -sf libcudnn_adv_train.so.8.4.1 libcudnn_adv_train.so.8
sudo ln -sf libcudnn_adv_infer.so.8.4.1 libcudnn_adv_infer.so.8
sudo ln -sf libcudnn_cnn_train.so.8.4.1 libcudnn_cnn_train.so.8
sudo ln -sf libcudnn_cnn_infer.so.8.4.1 libcudnn_cnn_infer.so.8
sudo ldconfig
测试Cudnn:
sudo cp -r /usr/src/cudnn_samples_v8/ ~/
cd ~/cudnn_samples_v8/mnistCUDNN
sudo chmod 777 ~/cudnn_samples_v8
sudo make clean && sudo make
./mnistCUDNN
可能会报错
test.c:1:10: fatal error: FreeImage.h: 没有那个文件或目录
#include “FreeImage.h”
^~~~~~~~~~~~~
compilation terminated.
输入如下代码:
sudo apt-get install libfreeimage3 libfreeimage-dev
如果配置成功 测试完成后会显示:“Test passed!”。
大功告成!!
三:Pytorch安装
pytorch版本不能随意安装,必须安装英伟达编译的好的库文件,附上官方链接,我是Jetpack5.0.2,选择1.12.0版本的pytorch
点击链接然后下载。完成后执行:
pip install torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl
(其实在运行它之前,我事先根据官方教程链接运行如下代码,如果前面或后面的代码报错,可以尝试一下)
sudo apt-get -y update;
sudo apt-get -y install autoconf bc build-essential g++-8 gcc-8 clang-8 lld-8 gettext-base gfortran-8 iputils-ping libbz2-dev libc++-dev libcgal-dev libffi-dev libfreetype6-dev libhdf5-dev libjpeg-dev liblzma-dev libncurses5-dev libncursesw5-dev libpng-dev libreadline-dev libssl-dev libsqlite3-dev libxml2-dev libxslt-dev locales moreutils openssl python-openssl rsync scons python3-pip libopenblas-dev
注:我们还需安装 torchvision,官方没有whl文件,运行如下代码:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
git clone --branch <version> https://github.com/pytorch/vision torchvision #<version>看下表选择,我的是v0.13.0
cd torchvision
export BUILD_VERSION=0.x.0 # where 0.x.0 is the torchvision version
python3 setup.py install --user
由下表可知,version中我应填v0.13.0
,注意v不要漏了。
不出意外的话最后编译时会报错,我当时卡在了numpy安装上,说超时。所以我又先安装了numpy,然后再编译。其他可类推
最后验证Pytorch和torchvision是否安装成功:
这里有人会说import torchvison时有警告,如网址所说,原因就是你在torchvison文件夹中打开了终端,执行import,相当于”体内“调包。。。
所以退出当前编译包位置,到其他任何地方重新打开终端,运行import torchvison,自然都不会报错了。
我是刚出cv泥潭不久,又入jetson终端部署泥潭的江南咸鱼,希望大家能从一而终,不留遗憾!!!
觉得文章有用的话,各位客官点个赞吧!!
以上是关于「解析」Jetson 安装 CUDA/cuDNN的主要内容,如果未能解决你的问题,请参考以下文章
Jetson nano开发笔记jetson nano 环境搭建与常见软件安装
[jetson]jetson上安装scikit-image方法