好的部署从安装好环境开始!!!
1.安装驱动
在安装驱动之前,首先确定GPU驱动和cuda的版本的对应关系。
参考:CUDA 12.3 Update 2 Release Notes
检查自己的电脑系统推荐的驱动:
ubuntu-drivers devices
如下是我的显示如下:
(base) xxxx@xxxx:~$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001E04sv00007377sd00001730bc03sc00i00
vendor : NVIDIA Corporation
model : TU102 [GeForce RTX 2080 Ti]
driver : nvidia-driver-470-server - distro non-free
driver : nvidia-driver-520 - third-party non-free
driver : nvidia-driver-470 - distro non-free
driver : nvidia-driver-525 - distro non-free
driver : nvidia-driver-525-server - distro non-free
driver : nvidia-driver-535 - distro non-free recommended
driver : nvidia-driver-535-server - distro non-free
driver : nvidia-driver-535-server-open - distro non-free
driver : nvidia-driver-535-open - distro non-free
driver : nvidia-driver-450-server - distro non-free
driver : nvidia-driver-525-open - distro non-free
driver : nvidia-driver-418-server - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
系统推荐使用535版本的,在终端输入:
sudo apt install nvidia-driver-535
一定要重新启动:
sudo reboot
检查安装
nvidia-smi
我的输出如下:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 535.54.03 Driver Version: 535.54.03 CUDA Version: 12.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... On | 00000000:01:00.0 Off | N/A |
| 25% 33C P8 11W / 250W | 10MiB / 11264MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1261 G /usr/lib/xorg/Xorg 4MiB |
| 0 N/A N/A 1883 G /usr/lib/xorg/Xorg 4MiB |
+-----------------------------------------------------------------------------+
可以看到当前安装的驱动版本是535.54.03
,需要注意CUDA Version: 12.2
指当前驱动支持的最高版本。
2.安装cuda
看前面的驱动和版本的对应关系,一定要选择驱动对应的版本:cuda下载链接CUDA Toolkit Archive | NVIDIA Developer
按照前面的提示,我这边选择安装cuda11.8,CUDA Toolkit 11.8 Downloads | NVIDIA Developer
选择好对应的选项,使用cuda官方的bash安装方式安装
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2004-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
此时校验,nvidia-smi,我的输出显示如下:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 520.61.05 Driver Version: 520.61.05 CUDA Version: 11.8 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... On | 00000000:01:00.0 Off | N/A |
| 25% 33C P8 11W / 250W | 10MiB / 11264MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1261 G /usr/lib/xorg/Xorg 4MiB |
| 0 N/A N/A 1883 G /usr/lib/xorg/Xorg 4MiB |
+-----------------------------------------------------------------------------+
这里发现安装完cuda以后,发现驱动的版本也发生变化了。这是正常的,不要担心,后面有空的会解释为什么。
3. 安装nvcc
NONONONONOONONONONONONONONONO!不要直接使用
sudo apt install nvidia-cuda-toolkit
这个命令安装!不要直接使用上面的命令直接安装!不要直接使用上面的命令直接安装!不要直接使用上面的命令直接安装!不要直接使用这个命令直接安装!不要直接使用上面的命令直接安安装!
如果直接使用上面的命令安装,有的电脑可以直接安装好,但是有些电脑会直接安装很低版本的cuda,这个命令会改变我们前面安装好的cuda11.8。巨坑勿踩!!!
1)查看是否有g++,gcc,
ls /usr/local/cuda/bin/
此时下面的列表中没有g++,gcc。有nvcc,建立软连接:
sudo ln -s /usr/bin/gcc /usr/local/cuda/bin/gcc
sudo ln -s /usr/bin/g++ /usr/local/cuda/bin/g++
重启,然后验证
nvcc -V
,此时我的输出如下:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0
如果不按照上面的要求来的话,很容易出现nvcc -V和nvidia-smi的驱动版本不一致;同时,后面编译程序的时候也会出现不一样不是自己想要的cuda版本哦。
如果使用nvcc -V出现 not found nvcc。此时将cuda的地址添加到环境变量中
# 打开配置文件
nano ~/.bashrc
# 将下面两行写入到文件末尾
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
如果使用的是 nano
,可以按下 Ctrl+O
保存文件,然后按下 Ctrl+X
退出编辑器。如果你使用的是其他编辑器,请按照该编辑器的指令来保存和退出。
为了让这些更改生效,你需要重新加载 .bashrc
文件。这可以通过以下命令完成:
source ~/.bashrc
要验证环境变量是否正确配置,你可以在新的终端会话中运行以下命令来检查 PATH
和 LD_LIBRARY_PATH
:
echo $PATH
echo $LD_LIBRARY_PATH
这样做就可以啦!!!(ubuntu内部原本就含有nvcc)
4. 安装cudnn
下载安装包,选择对应的版本。下载链接;CUDA 深度神经网络库 (cuDNN) | NVIDIA 开发者
我这边下载的是:Local Installer for Ubuntu20.04 x86_64 (Deb)
。安装完成以后,开始安装,参考链接为:Overview — NVIDIA cuDNN 9.0.0 documentation
我自己的安装步骤如下:
sudo dpkg -i cudnn-local-repo-ubuntu2004-8.7.0.84_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get install libcudnn8=8.7.0.84-1+cuda11.8
sudo apt-get install libcudnn8-dev=8.7.0.84-1+cuda11.8
sudo apt-get install libcudnn8-samples=8.7.0.84-1+cuda11.8
注意上面的安装的版本要修改自己下载的版本哦
开始验证:
cp -r /usr/src/cudnn_samples_v8/ $HOME
cd $HOME/cudnn_samples_v8/mnistCUDNN
make clean && make
./mnistCUDNN
可能出现如下的报错,解决如下
可能报错:test.c:1:10: fatal error: FreeImage.h: No such file or directory
解决办法:sudo apt-get install libfreeimage3 libfreeimage-dev
我的验证结果如下:
Testing cudnnFindConvolutionForwardAlgorithm ...
^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 0.042912 time requiring 2450080 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 7: 0.054208 time requiring 1433120 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 5: 0.056512 time requiring 4656640 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 0: 0.109088 time requiring 0 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 2: 0.129248 time requiring 64000 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.170048 time requiring 51584 memory
^^^^ CUDNN_STATUS_NOT_SUPPORTED for Algo 6: -1.000000 time requiring 0 memory
^^^^ CUDNN_STATUS_NOT_SUPPORTED for Algo 3: -1.000000 time requiring 0 memory
Resulting weights from Softmax:
0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000714 0.0000000 0.0000000 0.0000000 0.0000000
Loading image data/five_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 1.0000000 0.0000154 0.0000000 0.0000012 0.0000006
Result of classification: 1 3 5
Test passed!
5. 安装tensorRT
tensorRT和前面安装的cuda版本有对应关系哦,参考Log in | NVIDIA Developer
我选择的是 8.5.3版本,下载完文件名为:nv-tensorrt-local-repo-ubuntu2004-8.5.3-cuda-11.8_1.0-1_amd64.deb
安装参考链接:Installation Guide :: NVIDIA Deep Learning TensorRT Documentation
我自己的安装命令如下:
sudo dpkg -i nv-tensorrt-local-repo-ubuntu2004-8.5.3-cuda-11.8_1.0-1_amd64.deb
sudo cp /var/nv-tensorrt-local-repo-ubuntu2004-8.5.3-cuda-11.8/*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get install tensorrt
要注意自己的系统和安装的版本哦
对安装的tensorRT验证
(base) xxx@xxxx:~$ dpkg -l | grep TensorRT
ii libnvinfer-bin 8.5.3-1+cuda11.8 amd64 TensorRT binaries
ii libnvinfer-dev 8.5.3-1+cuda11.8 amd64 TensorRT development libraries and headers
ii libnvinfer-plugin-dev 8.5.3-1+cuda11.8 amd64 TensorRT plugin libraries
ii libnvinfer-plugin8 8.5.3-1+cuda11.8 amd64 TensorRT plugin libraries
ii libnvinfer-samples 8.5.3-1+cuda11.8 all TensorRT samples
ii libnvinfer8 8.5.3-1+cuda11.8 amd64 TensorRT runtime libraries
ii libnvonnxparsers-dev 8.5.3-1+cuda11.8 amd64 TensorRT ONNX libraries
ii libnvonnxparsers8 8.5.3-1+cuda11.8 amd64 TensorRT ONNX libraries
ii libnvparsers-dev 8.5.3-1+cuda11.8 amd64 TensorRT parsers libraries
ii libnvparsers8 8.5.3-1+cuda11.8 amd64 TensorRT parsers libraries
ii tensorrt 8.5.3.1-1+cuda11.8 amd64 Meta package for TensorRT
看了非常多非常多的博客,太多坑了。终于找到一条合适自己的安装方法了。至此,安装完成。坑太多,终于被我踩平了。
6.关于nvidia-smi和nvcc -V的问题
参考链接:NVIDIA-SMI 显示的cuda version 是指当前版本还是最大可以支持的 cuda 版本? - 知乎