Linux上查看已安装的CUDA和cuDNN版本号

举报
山海之光 发表于 2019/12/23 16:58:39 2019/12/23
【摘要】 做AI开发时,经常需要用到github上的各种代码,但是这些代码可能需要不同版本的AI开发框架和不同版本的CUDA、cuDNN才能跑通,于是我们的机器上可能要安装多个版本的CUDA和cuDNN,那么如何查看当前机器上已安装的CUDA和cuDNN呢? 1. 查看CUDA版本 cuda默认安装在/usr/local目录,可以使用ls -l /usr/local | gre...

做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命令,使用该命令会有如下输出:

1577091204604355.jpg

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

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。