从0到1的cuda安装
前言:这个CUDA是否选择最新版本和你是否用pytorch有关,你先去Pytorch查一下它最高支持的cuda版本是啥,不是一般都不是最新版
0.cuda卸载
卸载cuda
sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
"*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*"
sudo apt-get autoremove
卸载tensorrt
sudo apt-get purge "libnvinfer*"
sudo apt-get purge "nv-tensorrt-repo*"
sudo apt-get purge graphsurgeon-tf onnx-graphsurgeon
pip3 uninstall tensorrt
pip3 uninstall uff
pip3 uninstall graphsurgeon
pip3 uninstall onnx-graphsurgeon
python3 -m pip uninstall nvidia-tensorrt
这里有个坑,就是如果你安装了anaconda,你sudo pip是下到了系统默认的python3.8里面了。而不加sudo是下到了conda下面的python3.9里面。
卸载cuDNN
sudo apt-get purge libcudnn8=8.3.3.*-1+cuda11.5
sudo apt-get purge libcudnn8-dev=8.3.3.*-1+cuda11.5
卸载Pytorch
pip3 uninstall torch torchvision torchaudio
卸载torch2tr
pip3 uninstall torch torchvision torchaudio
1.cuda最新版本安装
(1).检查所需版本
所需版本通过
nvidia-smi
查看,
在右上角就是最适合你的cuda版本,CUDA Version: 11.6
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.60.02 Driver Version: 510.60.02 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| 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 ... Off | 00000000:01:00.0 Off | N/A |
| N/A 38C P8 12W / N/A | 615MiB / 8192MiB | 9% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 3327 G /usr/lib/xorg/Xorg 77MiB |
| 0 N/A N/A 5799 G /usr/lib/xorg/Xorg 280MiB |
| 0 N/A N/A 5994 G /usr/bin/gnome-shell 67MiB |
| 0 N/A N/A 8639 G /usr/lib/firefox/firefox 156MiB |
| 0 N/A N/A 8849 G /usr/lib/firefox/firefox 2MiB |
| 0 N/A N/A 12892 G /usr/lib/firefox/firefox 2MiB |
| 0 N/A N/A 15710 G /usr/lib/firefox/firefox 2MiB |
| 0 N/A N/A 20200 G /usr/lib/firefox/firefox 2MiB |
| 0 N/A N/A 22707 G /usr/lib/firefox/firefox 2MiB |
| 0 N/A N/A 24121 G /usr/lib/firefox/firefox 2MiB |
+-----------------------------------------------------------------------------+
显卡安装请参见我另一篇文章
(2).具体操作
具体操作手册网址
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_network
CUDA11.6,具体参考官方网址如上,在上面选择deb(网络)即可
以下是具体操作代码
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
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
sudo apt-get update
sudo apt-get -y install cuda
(3).验证结果
nvcc -V
如果显示没有这个命令,参加文尾错误,是环境变量路径里面没把cuda添加进去。
2.cuda指定版本安装
(1).检查所需版本
这里以我在pytorch官网上看到它只更新到11.1,而我显卡驱动最适合的cuda版本是11.6为例
首先看一下pytorch支持的最新版本的cuda,你显卡能不能用,你显卡能用哪个版本的。
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#cuda-developer-tools-new-features
(2).具体操作
这里有个坑,就是你用deb安装,一般都是给你默认安装的最新版,所以我们这次用run文件安装
看见版本号了吧,如果和我版本不一样,从这个里面选一下,选runfile那项。
https://developer.nvidia.com/cuda-toolkit-archive
和我版本一样的,11.1用以下代码
wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run
sudo sh cuda_11.1.0_455.23.05_linux.run
注意:run文件里的叉叉表示excute的意思那个前面有叉就说明要下载哪个文件,所以下面表示不安装驱动。
这图摘自
https://blog.csdn.net/kuweicai/article/details/109314381?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-1-109314381.pc_agg_new_rank&utm_term=cuda+installer&spm=1000.2123.3001.4430
3.cuDNN安装
(1).检查所需版本
版本号查询(寻找和你cuda相对应的cuDNN)
https://docs.nvidia.com/deeplearning/cudnn/release-notes/rel_8.html#rel-833
(2).具体操作
具体操作手册
https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#package-manager-ubuntu-install
选择通过包管理器安装,代码如下,官网如上
CUDNN
sudo apt-get install zlib1g
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
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
sudo apt-get update
sudo apt-get install libcudnn8=8.3.3.*-1+cuda11.5
sudo apt-get install libcudnn8-dev=8.3.3.*-1+cuda11.5
4.tensorrt安装
(1).检查所需版本
根据cuda的版本,选取tensorrt下载,下载网址如下
https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#downloading
(2).具体操作
参考官方网址操作手册的Debian安装章目,用以下代码进行安装,注意tensorrt只有离线版本安装,即必须将其下载到本地再安装
https://docs.nvidia.com/deeplearning/tensorrt/archives/tensorrt-840-ea/install-guide/index.html
根据cuda的版本,选取tensorrt下载
sudo dpkg -i nv-tensorrt-repo-ubuntu2004-cuda11.6-trt8.4.0.6-ea-20220212_1-1_amd64*
cd /
cd ./var
cd ./nv*
sudo apt-key add 7fa2af80.pub
# 或者
# sudo apt-key add 7fa2af80.pub
sudo apt-get update
sudo apt-get install tensorrt
python3 -m pip install numpy
sudo apt-get install python3-libnvinfer-dev
python3 -m pip install protobuf
sudo apt-get install uff-converter-tf
python3 -m pip install numpy onnx
sudo apt-get install onnx-graphsurgeon
# 验证安装
dpkg -l | grep TensorRT
(3).验证结果
验证后的结果是这样的就说明你成功了
#显示
ii graphsurgeon-tf 8.4.0-1+cuda11.6 amd64 GraphSurgeon for TensorRT package
ii libnvinfer-bin 8.4.0-1+cuda11.6 amd64 TensorRT binaries
ii libnvinfer-dev 8.4.0-1+cuda11.6 amd64 TensorRT development libraries and headers
ii libnvinfer-doc 8.4.0-1+cuda11.6 all TensorRT documentation
ii libnvinfer-plugin-dev 8.4.0-1+cuda11.6 amd64 TensorRT plugin libraries
ii libnvinfer-plugin8 8.4.0-1+cuda11.6 amd64 TensorRT plugin libraries
ii libnvinfer-samples 8.4.0-1+cuda11.6 all TensorRT samples
ii libnvinfer8 8.4.0-1+cuda11.6 amd64 TensorRT runtime libraries
ii libnvonnxparsers-dev 8.4.0-1+cuda11.6 amd64 TensorRT ONNX libraries
ii libnvonnxparsers8 8.4.0-1+cuda11.6 amd64 TensorRT ONNX libraries
ii libnvparsers-dev 8.4.0-1+cuda11.6 amd64 TensorRT parsers libraries
ii libnvparsers8 8.4.0-1+cuda11.6 amd64 TensorRT parsers libraries
ii onnx-graphsurgeon 8.4.0-1+cuda11.6 amd64 ONNX GraphSurgeon for TensorRT package
ii python3-libnvinfer 8.4.0-1+cuda11.6 amd64 Python 3 bindings for TensorRT
ii python3-libnvinfer-dev 8.4.0-1+cuda11.6 amd64 Python 3 development package for TensorRT
ii tensorrt 8.4.0.6-1+cuda11.6 amd64 Meta package of TensorRT
ii uff-converter-tf 8.4.0-1+cuda11.6 amd64 UFF converter for TensorRT package
(4).安装wheel使python3能调用tensorrt库
(1.安装 TensorRT Python 轮。
python3 -m pip install --upgrade nvidia-tensorrt
以上pip命令将拉入所有必需的 CUDA Python 轮格式的库和 cuDNN,因为它们是 TensorRT Python 轮。 而且还会升级 英伟达张量 到最新版本,如果你有 安装了以前的版本。
(2.验证安装结果
python3
>>> import tensorrt
>>> print(tensorrt.__version__)
>>> assert tensorrt.Builder(tensorrt.Logger())
导入 tensorrt Python 模块。
确认正确版本的 TensorRT 安装。
创建一个 builder 验证您的 CUDA 安装工作正常。
参见网址
https://docs.nvidia.com/deeplearning/tensorrt/archives/tensorrt-840-ea/quick-start-guide/index.html#installing-pip
pip轮文件安装
5.安装PyCUDA
(1).具体操作
https://docs.nvidia.com/deeplearning/tensorrt/archives/tensorrt-840-ea/install-guide/index.html#installing-pycuda
上面网址的手册往下翻找,就能找到pycuda安装,请注意,pycuda不会随着cuda更新而更新,如果你更新了你的cuda,则需要卸载pycuda,然后更新cuda后在下载。
python3 -m pip install 'pycuda<2021.1'
(2).常见错误
src/cpp/cuda.hpp:14:10: fatal error: cuda.h: No such file or directory
14 | #include <cuda.h>
| ^~~~~~~~
compilation terminated.
error: command '/usr/bin/gcc' failed with exit code 1
[end of output]
(1.检查系统环境变量
echo $PATH
检查输出里是否有cuda
/home/zhangqi/anaconda3/bin:/opt/ros/noetic/bin:/home/zhangqi/anaconda3/bin:/home/zhangqi/anaconda3/bin:/home/zhangqi/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
如图所示,是没有的
(2.具体操作
cd ~
gedit gedit ./.bashrc
在文件的最后一行加上该语句,注意,我这里写的是11.6,不同的版本要稍改一下。
export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}}
然后让改完的路径生效
source ./.bashrc
(3.验证
echo $PATH
/usr/local/cuda-11.6/bin:/home/zhangqi/anaconda3/bin:/opt/ros/noetic/bin:/usr/local/cuda-10.2/bin:/home/zhangqi/anaconda3/bin:/home/zhangqi/anaconda3/bin:/home/zhangqi/anaconda3/bin:/home/zhangqi/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
有了诶,此时再执行install命令即可
6.安装PyTorch
在官网选择和你cuda相同的版本
然后加源
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu111 -i https://pypi.tuna.tsinghua.edu.cn/simple
如果加源还不快,则降低版本
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu110 -i https://pypi.tuna.tsinghua.edu.cn/simple
降为110,因为这个111版本可能清华源没有,只能从官网下
这里有个坑,就是如果你安装了anaconda,你sudo pip是下到了系统默认的python3.8里面了。而不加sudo是下到了conda下面的python3.9里面。
没有sudo的pip和pip3都指向ananconda的python
cuda不要安的过高,要和pytorch的最高版本耦合,比如我现在用的11.6,而pytorch才出到11.3
7.安装torch2tr
torch2tr这个小插件不要直接从github下master文件,git clone即可,前者缺点东西
sudo python是系统原装的python3.8,python是anaconda的python3.9
set up 工作空间里的32是1GB显存