NVIDIA Jetson tx2i 设置cuda10.2 _cudnn8.0, 安装 pyTorch

还正在更新:2021-05-17 09:32
有的版本会以后可能会改。
温馨提示:如果不会另辟蹊径上网,整个流程你会很痛苦。。
NVIDIA Jetson tx2i ,使用JetPack4.5.1刷机后,内置有(CUDA 10.2 、cudnn 8.0 、opencv4.1.1 、L4T R32.5 、TensorRT 7.1.3、VisionWorks 1.6 、Vulkan 1.2 、VPI 1.0 (First Production Release) 、Nsight Systems 2020.4
Nsight Graphics 2020.5 、Nsight Compute 2019.3)
jepack SDK 官网
https://developer.nvidia.com/embedded/jetpack-archive

1、查询jetpack版本:

方法1:

sudo systemctl restart jetson_stats.service
sudo jtop 6-INFO

方法2:
下面两行指令全是显示版本的,二选一即可:

cat /etc/nv_tegra_release
或
head -n 1 /etc/nv_tegra_release

命令行输出下面信息:

R32 (release), REVISION: 3.1, GCID: 18284527, BOARD: t186ref, EABI: aarch64, DATE: Mon Dec 16 21:38:34 UTC 2019

这显示是 版本:r32.3.1
对应Jetpack 4.3;拿到版本有啥用呢,是为后面安装pytorch准备的,不同的jetpack对应不同的pytorch(这对初装的人也是小坑)

  • Jetpack4.2.2 === ./source_sync.sh -t tegra-l4t-r32.2.1
  • Jetpack4.3 === ./source_sync.sh -t tegra-l4t-r32.3.1
  • Jetpack4.4 === ./source_sync.sh -t tegra-l4t-r32.4.3
  • Jetpack4.4.1 ===. /source_sync.sh -t tegra-l4t-r32.4.4
  • Jetpack4.5 ===./source_sync.sh -t tegra-l4t-r32.5

在这里插入图片描述

2、cuda版本查询

nvcc -V  or cat /usr/local/cuda/version.txt

3、查询cudnn版本,

cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 

4、opencv版本查询

 pkg-config --modversion opencv

Xavier刷机完成之后,当查看OpenCV版本时,若出现No package ‘opencv’ found。这是因为没有找到opencv.pc,而刷机时是安装了OpenCV的,不过是OpenCV4,而 opencv4.pc在 /usr/lib/aarch64-linux-gnu/pkgconfig 目录中,需要把它复制 到 /usr/lib/pkgconfig 下,并重命名为 opencv.pc 就可以了。
配置步骤如下:

  cd /usr/lib/aarch64-linux-gnu/pkgconfig
  sudo cp opencv4.pc /usr/lib/pkgconfig
  cd /usr/lib/pkgconfig
  sudo  mv opencv4.pc opencv.pc
  pkg-config --modversion opencv     

Jetson AGX Xavier上查看python 版本

#查看python2版本
python -V
#查看python3版本
python3 -V

5、下面是配置cuda和cudnn的步骤:

配置环境变量

export PATH=/usr/local/cuda-10.2/bin:/usr/local/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.2/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-10.2/lib64
export PATH=$PATH:/usr/local/cuda-10.2/lib64

使用版本查询命令时,若要查cudnn的版本信息,首先设置(Xavier虽然安装了cuDNN,但没有将对应的头文件、库文件放到cuda目录)。
Xavier中cuDNN的cudnn.h头文件在:/usr/include;
库文件位于:/usr/lib/aarch64-linux-gnu。
将头文件与库文件复制到cuda目录下:

cd /usr/include
sudo cp cudnn.h /usr/local/cuda/include
cd /usr/lib/aarch64-linux-gnu
sudo cp libcudnn* /usr/local/cuda/lib64

修改文件权限:
将头文件和库文件复制后,还需要修改你刚刚复制的所有头文件与库文件的权限,所有用户都可读,可写,可执行:

sudo chmod 764 /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

然后重新进行软链接,执行下面每一条指令,如果不重新链接,执行sudo ldconfig,会提示不是符号链接错误:

   cd /usr/local/cuda/lib64
   sudo ln -sf libcudnn.so.8.0.0 libcudnn.so.8
   sudo ln -sf libcudnn_ops_train.so.8.0.0 libcudnn_ops_train.so.8
   sudo ln -sf libcudnn_ops_infer.so.8.0.0 libcudnn_ops_infer.so.8
   sudo ln -sf libcudnn_adv_infer.so.8.0.0 libcudnn_adv_infer.so.8
   sudo ln -sf libcudnn_cnn_infer.so.8.0.0 libcudnn_cnn_infer.so.8
   sudo ln -sf libcudnn_cnn_train.so.8.0.0 libcudnn_cnn_train.so.8
   sudo ln -sf libcudnn_adv_train.so.8.0.0 libcudnn_adv_train.so.8

   sudo ln -sf libcudnn_ops_train.so.7.3.1 libcudnn_ops_train.so.7
   sudo ln -sf libcudnn_ops_infer.so.7.3.1libcudnn_ops_infer.so.7
   sudo ln -sf libcudnn_adv_infer.so.7.3.1 libcudnn_adv_infer.so.7
   sudo ln -sf libcudnn_cnn_infer.so.7.3.1 libcudnn_cnn_infer.so.7
   sudo ln -sf libcudnn_cnn_train.so.7.3.1 libcudnn_cnn_train.so.7
   sudo ln -sf libcudnn_adv_train.so.7.3.1 libcudnn_adv_train.so.7

再执行下面每一条指令进行 编译:

  sudo ldconfig
  sudo cp -r /usr/src/cudnn_samples_v8/ ~/
  cd ~/cudnn_samples_v8/mnistCUDNN
  sudo chmod 764 ~/cudnn_samples_v8
  sudo make clean
  make
  ./mnistCUDNN

如果编译i的过程中出现下面的错误:

g++: error: test.c: No such file or directory
g++: warning: ‘-x c’ after last input file has no effect
g++: fatal error: no input files
compilation terminated.
>>> WARNING - FreeImage is not set up correctly. Please ensure FreeImage is set up correctly. <<<

上面错误是因为你没有权限获取test.c,加上sudo就可以了,如果已经安装过g++,可以跳过第一行指令,直接执行第二条。

sudo apt-get install g++ 
sudo make

当终端窗口出现test passed,就说明你的cudnn和cuda配置好了。
在这里插入图片描述
在这里插入图片描述
查询cudnn 版本:
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

6、 NVIDIA Jetson TX2i 修改默认python、pip版本方法

1: 修改python版本:
默认板子刷机后是自带python为2.7和python3.6.9解析器的,但默认是python2.7 ,如果需要python3.6.9,需使用下面命令调用python3.6版本 及 pip3;
or:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
sudo update-alternatives --config python

根据提示来选择要使用的版本,选择后退出。再次输入python,会发现现在变成python3.6.9了;

温馨提示:

整个流程下来,我有时活用pip装 有时会用pip3装,是因为我经过设置了,不管使用pip还是pip3都会调用python3.6.9,如果你没有设置,就一定要用pip3,不然你可能会把包装载python2.7目录下。
使用python的时候也是一样,加3和不加3一定搞清楚。

2: 修改pip版本
这里提示一下,你可能需要先安装pip以及pip3,我用的板子刷机后,是没有pip的,限制性下面3条指令的前两条安装。再执行第三条打开需要修改的文档:

sudo apt-get install python-pip
sudo apt-get install python3-pip
sudo vim /usr/bin/pip

打开后,里面的内容如下, 将第一行改成你自己python3的安装位置。

#!/usr/bin/python3
# GENERATED BY DEBIAN
 
import sys
 
# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip._internal import main
if __name__ == '__main__':
    sys.exit(main())

如果过程中出现下面的错误:

Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip._internal import main
ModuleNotFoundError: No module named 'pip._internal'

你可以使用下面的指令更新下:

python -m pip install --upgrade pip

7、 pytorch for jetson:

cuda版本为10.2,所以必须pytorch1.5版本以上才可以
pytorch :
https://forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-8-0-now-available/72048

wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.8.0-cp36-cp36m-linux_aarch64.whl
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev 
pip3 install Cython
pip3 install numpy torch-1.8.0-cp36-cp36m-linux_aarch64.whl

8 torchvision

PyTorch 与 torchvision版本对应情况:

PyTorch v1.0 - torchvision v0.2.2
PyTorch v1.1 - torchvision v0.3.0
PyTorch v1.2 - torchvision v0.4.0
PyTorch v1.3 - torchvision v0.4.2
PyTorch v1.4 - torchvision v0.5.0
PyTorch v1.5 - torchvision v0.6.0
PyTorch v1.6 - torchvision v0.7.0
PyTorch v1.7 - torchvision v0.8.1
PyTorch v1.8 - torchvision v0.9.0

这里你要按照你的pytorch版本选择torchvision的版本,这个编译安装过程有点慢:

$ sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
$ git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision   # see below for version of torchvision to download
$ cd torchvision
$ export BUILD_VERSION=0.9.0    # where 0.x.0 is the torchvision version  
$ python3 setup.py install --user
$ cd ../                       # attempting to load torchvision from build dir will result in import error
$ pip install 'pillow<7'       # always needed for Python 2.7, not needed torchvision v0.5.0+ with Python 3.6

9、torch 安装成功验证

import torch
print(torch.__version__)

print('CUDA available: ' + str(torch.cuda.is_available()))
print('cuDNN version: ' + str(torch.backends.cudnn.version()))

a = torch.cuda.FloatTensor(2).zero_()
print('Tensor a = ' + str(a))
b = torch.randn(2).cuda()
print('Tensor b = ' + str(b))
c = a + b
print('Tensor c = ' + str(c))

torchvision 安装成功验证

import torchvision
print(torchvision.__version__)

参考文章:
https://blog.csdn.net/ysten618/article/details/115656120

  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值