跳转至

CUDA&cuDNN

前言

如果没有二次编译代码的需求,或使用CUDA特殊功能,正常情况下不需要单独安装CUDA/cuDNN,因为框架都内置了编译好的CUDA,且包含了与CUDA相关的优化。框架版本和CUDA版本是对应的,只需要关注框架版本即可,无需独立关注CUDA版本。

查询默认CUDA/cuDNN

注意:通过nvidia-smi命令查看到的CUDA版本,是容器显卡驱动支持的最高cuda版本参数,并不代表实例中安装的是该版本CUDA。换句话说,它告诉你当前安装的 NVIDIA 驱动能够与哪个版本的 CUDA 编程环境兼容。

终端中执行查看默认镜像自带的CUDA版本(安装目录为/usr/local/cuda):

查询平台内置镜像中的cuda版本, 输出日志.so后的数字即为版本号。

ldconfig -p | grep cuda
libpcsamplingutil.so (libc6,x86-64) => /usr/local/cuda/targets/x86_64-linux/lib/libpcsamplingutil.so
libnvrtc.so.12 (libc6,x86-64) => /usr/local/cuda/targets/x86_64-linux/lib/libnvrtc.so.12
libnvrtc.so (libc6,x86-64) => /usr/local/cuda/targets/x86_64-linux/lib/libnvrtc.so
libnvrtc-builtins.so.12.3 (libc6,x86-64) => /usr/local/cuda/targets/x86_64-linux/lib/libnvrtc-builtins.so.12.3

查询平台内置镜像中的cudnn版本

ldconfig -p | grep cudnn
libcudnn_ops_train.so.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudnn_ops_train.so.8
libcudnn_ops_train.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudnn_ops_train.so
libcudnn_ops_infer.so.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudnn_ops_infer.so.8
libcudnn_ops_infer.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudnn_ops_infer.so

安装其他版本的CUDA/cuDNN, 优先使用conda进行安装

conda install cudatoolkit==xx.xx
conda install cudnn==xx.xx

如果cuda是通过conda进行安装,那么可以通过以下命令查看:

conda list | grep cudatoolkit
cudatoolkit               10.1.243             h6bb024c_0    defaults
conda list | grep cudnn
cudnn                     7.6.5                cuda10.1_0    defaults

版本号是什么可以通过conda搜索:

conda search cudatoolkit
Loading channels: done
# Name                       Version           Build  Channel
cudatoolkit                      9.0      h13b8566_0  anaconda/pkgs/main  
cudatoolkit                      9.2               0  anaconda/pkgs/main  
cudatoolkit                 10.0.130               0  anaconda/pkgs/main  
cudatoolkit                 10.1.168               0  anaconda/pkgs/main  
cudatoolkit                 10.1.243      h6bb024c_0  anaconda/pkgs/main  
cudatoolkit                  10.2.89      hfd86e86_0  anaconda/pkgs/main  
cudatoolkit                  10.2.89      hfd86e86_1  anaconda/pkgs/main  
cudatoolkit                 11.0.221      h6bb024c_0  anaconda/pkgs/main  
cudatoolkit                   11.3.1      h2bc3f7f_2  anaconda/pkgs/main