网址:https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-pytorch
按照这个上面的操作说明,拉取,启动与系统版本相匹配的镜像。
按照下面命令安装的 torch 不能使用 cuda 也就是说 torch.cuda.is_available() 是False
安装 torch 命令
$ pip3 install torch -f https://torch.kmtea.eu/whl/stable-cn.html
安装 torchvision 命令
$ pip3 install torchvision -f https://torch.kmtea.eu/whl/stable-cn.html
时间:2022/4/14
设 备:联想 EA-B310
核心模块:NVIDIA Jetson Xavier NX
系 统:系统自带的 ubuntu18.04
使用该设备自带的 docker,用下面的命令启动了一个容器
$ sudo docker run --runtime nvidia --network host -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix nvcr.io/nvidia/l4t-base:r32.3.1
思路:根据网页 https://elinux.org/Jetson_Zoo 要求,查看Jetpack版本,然后根据版本下载安装推荐的torch版本
https://elinux.org/Jetson_Zoo 页面截图
提示:是查看系统的 Jetpack 版本,不是在 docker 容器里面查看
$ cat /etc/nv_tegra_release
结果
# R32 (release), REVISION: 4.3, GCID: 21589087, BOARD: t186ref,
EABI: aarch64, DATE: Fri Jun 26 04:34:27 UTC 2020
上面的意思是系统 L4t 的版本是32.4.3
但是 docker 启动命令来看 L4t 的版本是 32.3.1
各版本对应关系
- 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
我想既然我是在 docker 中运行的,所以参考的是 docker 启动命令, 选择的J etpack 版本是 Jetpack4.3, 因此下载了 Jetpack4.3 对应的 v1.14.0的 pytorch安装包 https://nvidia.app.box.com/v/torch-1-4-cp36-jetson-jp43
下载的时候需要梯子。
下载完成以后,拷贝到U盘,再用U盘拷贝的设备里。最后用docker命令拷贝到容器里。
用docker命令查看正在运行的容器ID的命令
$ sudo docker ps -a
拷贝到docker容器里,xxxxxx是容器ID
$ sudo docker cp torch-1.4.0-cp36-cp36m-linux_aarch64.whl xxxxxx:/home
安装
$ sudo apt-get install libopenblas-base libopenmpi-dev libomp-dev
$ pip3 install Cython
$ pip3 install numpy torch-1.4.0-cp36-cp36m-linux_aarch64.whl
安装成功,但是导入包的时候报错
ImportError:libnvToolsExt.so.1:cannot open shared object file: No such file or directory
使用查找命令
$ find / -name libnvToolsExt*
然后猜想可能是没有包含这个路径
在 ~/.bashrc 文件中的最后添加
export PATH=/usr/local/cuda-10.2/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
执行命令更新环境
$ source ~/.bashrc
完成以后 在导入的时候依旧报错
ImportError:libcudart.so.10.0:cannot open shared object file: No such file or directory
我想是不是环境里面包含不存在的cuda10.0版本的路径
用 env 命令查看 发现果真包含了,然后不知道怎么删除,搜索了一下用命令
export -n PATH=/usr/local/cuda-10.0/bin
然后发现很多命令都用不了了,包括ls命令,开始的时候挺紧张的。然后突然试着把之前的PATH内容都重新用export添加一下,发现不能用的命令都又可以用了。
接着用类似的命令重新添加了一下环境,把cuda-10.0排除外,后用env查看了一下。就没有发现有cuda-10.0了。认为环境中应该不包含cuda10.0了
最后导入torch的时候依旧报一样的错误。。。
emmmm 所以最后放弃了这种安装方法,改用另外一个安装方法。一行命令就安装成功了,导入也没有问题。
$ pip3 install torch -f https://torch.kmtea.eu/whl/stable-cn.html
emmmm。。。。我都经历了些啥。。。最后也不知道是哪的问题。。。
是我启动的容器版本不对吗?
或者我应该装与系统版本匹配的pytorch吗?而不是与容器版本匹配。