本文记录于2021年初。不满于网络上的资料大多过时和有瑕疵,重新整理 Ubuntu 环境下配置 CUDA 开发套件的步骤。
- 本文介绍的步骤主要面向 CUDA 相关的机器学习开发环境配置。所以它包含 CUDA、cuDNN、TensorRT、onnx。如果你不需要其中某些组件,直接跳过即可。
- 本文涉及的版本信息:Ubuntu 18.04、CUDA 10.2、cuDNN v8.0.5、TensorRT 7.1 GA。请根据你自己的需要选择恰当的版本,唯一注意的是:这几个组件之间的版本必须严格对应,请跟自己的团队确认好版本之后再执行安装,否则会遇到很多版本兼容性问题。
C++ 和 python
C++ 编译链
sudo apt install g++
sudo snap install cmake --classic
确保安装的是最新版 cmake:https://cmake.org/download/
(我安装的时候是 3.19.1)
Anaconda
官网上下载,然后:
bash ./Anaconda3-2019.10-Linux-x86_64.sh
一路 yes,然后重启 terminal 生效
CUDA 相关底层支持
安装 CUDA 工具包
非常值得参考的官方文档:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
与网上大部分教程不同,我们无需先安装显卡驱动,cuda 包里自带驱动。
在这里下载 CUDA Toolkit 10.2 (Nov 2019) :https://developer.nvidia.com/cuda-toolkit-archive
(如果要求注册账号就注册一下,后续也会用到)
注意版本选择 CUDA 10.2
里面再选 Linux
-> x86_64
-> Ubuntu
-> 18.04
-> deb(local)
注释:为什么选 deb(local)
,不按网上其他教程选 run
,因为后面安装 TensorRT 会变简单。何况有 deb 包为什么不用呢,软件管理起来都更方便。
然后按下载页面内指示安装,(2021.2.24 下面代码框内容来自官方页面的安装指南信息,可能会过期):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
完成后打上页面内提供的两个补丁。(先把这两个补丁包下载到本地,然后执行命令)
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local_10.2.1-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local_10.2.2-1_amd64.deb
完事重启,让显卡驱动生效。
[ IMPORTANT ! ]
参考官方文档最后的要求:Post-installation Actions
新增环境变量
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}}
检查 cuda 版本(确认是否安装成功):
nvcc --version
安装cuDNN
官方指引文档:https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html
下载地址:https://developer.nvidia.com/rdp/cudnn-download
填写问卷,同意协议后,
选择跟 CUDA 版本对应的版本: Download cuDNN v8.0.5 (November 9th, 2020), for CUDA 10.2
找到 Ubuntu18.04 的 Deb 包,这两个都要下:
cuDNN Runtime Library for Ubuntu18.04 (Deb)
cuDNN Developer Library for Ubuntu18.04 (Deb)
下载完后安装:
sudo dpkg -i libcudnn8_x.x.x-1+cudax.x_arm64.deb
sudo dpkg -i libcudnn8-dev_8.x.x.x-1+cudax.x_arm64.deb
安装 TensorRT
务必参考 Nvidia 的官方文档严格执行,否则非常多坑:https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html
下载地址:https://developer.nvidia.com/nvidia-tensorrt-download
选择 TensorRT 7
-> TensorRT 7.1 GA
-> TensorRT 7.1 for Linux
-> TensorRT 7.1.3.4 for Ubuntu 1804 and CUDA 10.2 DEB local repo package
下载
版本必须跟团队一致,因为 TensorRT 不提供跨版本兼容。确定版本后先设置shell变量:
os="ubuntu1804"
tag="cuda10.2-trt7.1.3.4-ga-20200617"
以上两项的参数根据你当时使用的包决定,不能有错
sudo dpkg -i nv-tensorrt-repo-${os}-${tag}_1-1_amd64.deb
sudo apt-key add /var/nv-tensorrt-repo-${tag}/7fa2af80.pub
sudo apt-get update
sudo apt-get install tensorrt
sudo apt-get install python3-libnvinfer-dev
其他
独立安装 onnx
(参考这篇里的onnx部分:https://zhuanlan.zhihu.com/p/158895888)
git clone https://github.com/onnx/onnx.git
cd onnx
git submodule update --init --recursive
mkdir build && cd build
cmake ..
make -j
sudo make install
如果你的 CUDA 版本安装有误
To remove cuda toolkit:
sudo apt-get --purge remove "*cublas*" "cuda*" "nsight*"
To remove Nvidia drivers:
sudo apt-get --purge remove "*nvidia*"
Remove related pkg:
sudo apt autoremove
If you have installed via source files (assuming the default location to be /use/local
) then remove it using:
sudo rm -rf /usr/local/cuda*
If you get the problem of broken packages, it has happened since you added repo to the apt/sources.lst. Run the following to delete it:
sudo vim /etc/apt/sources.list
Go to the line containing reference to Nvidia repo and comment it by appending #
in front of the line, for e.g.:
# deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /
检查这个路径下有没有 CUDA 相关的 source,有就删掉,否则会干扰新版本的源:
/etc/apt/sources.list.d
Then run
sudo apt-get update
发表回复