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