Linux上查看已安装的CUDA和cuDNN版本号
做AI开发时,经常需要用到github上的各种代码,但是这些代码可能需要不同版本的AI开发框架和不同版本的CUDA、cuDNN才能跑通,于是我们的机器上可能要安装多个版本的CUDA和cuDNN,那么如何查看当前机器上已安装的CUDA和cuDNN呢?
1. 查看CUDA版本
cuda默认安装在/usr/local目录,可以使用ls -l /usr/local | grep cuda查看该目录下有哪些cuda版本
假设有如下输出:
lrwxrwxrwx 1 root root 8 Apr 26 2019 cuda -> cuda-9.0
drwxr-xr-x 11 root root 4096 Apr 26 2019 cuda-10.0
drwxr-xr-x 11 root root 4096 Apr 26 2019 cuda-8.0
drwxr-xr-x 11 root root 4096 Apr 26 2019 cuda-9.0
则表示当前机器上安装了8.0、9.0、10.0三个cuda版本,/usr/local/cuda是一个软链接,链接到了/usr/local/cuda-9.0目录,表示当前使用的是cuda-9.0版本。
如果要查看详细的cuda版本号,可以用如下两种方法:
1)nvcc --version,如果提示找不到该命令,则执行/usr/local/cuda/bin/nvcc --version,如果报找不到该路径或文件,则表示nvcc没有安装,可以sudo apt install nvidia-cuda-toolkit安装
2)cat /usr/local/cuda/version.txt
如果当前机器上安装了多个cuda版本,可以使用修改软链接的方式来修改系统使用的cuda版本,命令如下:
sudo ln -snf /usr/local/cuda-8.0 /usr/local/cuda
2. 查看cuDNN版本号
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
3. CUDA是否可用于当前AI开发框架?
确定了CUDA版本号,那么该版本是否可以用于当前安装的AI开发框架呢?如pytorch、tf?
1)如果使用pytorch,可以使用如下语句查询是否可用:
import torch
print(torch.__version__) # 查看torch当前版本号
print(torch.version.cuda) # 编译当前版本的torch使用的cuda版本号
print(torch.cuda.is_available()) # 查看当前cuda是否可用于当前版本的Torch,如果输出True,则表示可用
如果尚未安装torch,可以查看pytorch各版本与CUDA各版本的对应关系: https://pytorch.org/get-started/previous-versions/
2)如果使用tf,则没有pytorch这么方便的方式来查看CUDA是否可用
只能在 import tensorflow as tf 的时候才能发现CUDA是否可用,如果不可用,会有如下类似的报错:
ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
这就表示当前tf需要CUDA 9.0,但是没有找到,决定tf应该使用哪个版本的CUDA,是tf安装目录下的一个_pywrap_tensorflow_internal.lib库文件定义的,里面是如何实现的,就得去看源码了。
但是我们可以用更简单的方法来查看tf与CUDA的对应关系,可用过官网查询:
https://tensorflow.google.cn/install/source#tested_build_configurations
https://tensorflow.google.cn/install/source_windows#tested_build_configurations
查看cuda和cudnn版本对应关系,则可以访问:https://developer.nvidia.com/rdp/cudnn-archive#a-collapse742-10
4. 其他疑问
我们还经常用到nvidia-smi命令,使用该命令会有如下输出:
nvidia-smi命令可以查看GPU的具体使用情况,同时也会列出 CUDA Version。
如果nvidia-smi命令列出的CUDA版本与nvcc -V列出的版本号不一致,可能是由以下原因之一引起的:
1)安装多版本cuda后,还没有刷新环境变量,刷新即可;
2)CUDA有两种API,分别是运行时API和驱动API,即所谓的Runtime API与Driver API,nvidia-smi的结果除了有GPU驱动版本型号,还有CUDA Driver API的版本号,这里是10.0,而nvcc的结果是对应CUDA Runtime API
补充说明:在安装CUDA 时候会安装3大组件,分别是 NVIDIA 驱动、toolkit和samples。NVIDIA驱动是用来控制GPU硬件,toolkit里面包括nvcc编译器等,samples或者说SDK 里面包括很多样例程序包括查询设备、带宽测试等等。上面说的CUDADriver API是依赖于NVIDIA驱动安装的,而CUDA Runtime API 是通过CUDA toolkit安装的。
参考链接:
https://blog.csdn.net/ljp1919/article/details/102640512
https://www.cnblogs.com/yhjoker/p/10972795.html
- 点赞
- 收藏
- 关注作者
评论(0)