如何获得 CUDA 版本?

Posted

技术标签:

【中文标题】如何获得 CUDA 版本?【英文标题】:How to get the CUDA version? 【发布时间】:2012-04-01 10:20:17 【问题描述】:

是否有任何快速命令或脚本来检查安装的 CUDA 版本?

我在安装目录下找到了4.0的手册,但不知道是不是实际安装的版本。

【问题讨论】:

另见:How to verify CuDNN installation? 这个问题针对的是哪个操作系统? 你考虑安装和支持的运行时还是安装的SDK? @JaredHoberock nvcc --version 产生 The program 'nvcc' is currently not installed. You can install it by typing: sudo apt install nvidia-cuda-toolkit 但是 nvidia-smi 包含 CUDA Version: 10.1 但是cat /usr/local/cuda/version.txt 给出了更精确的版本CUDA Version 10.1.168 【参考方案1】:

使用张量流:

import tensorflow as tf
from tensorflow.python.platform import build_info as build
print(f"tensorflow version: tf.__version__")
print(f"Cuda Version: build.build_info['cuda_version']")
print(f"Cudnn version: build.build_info['cudnn_version']")

张量流版本:2.4.0

Cuda 版本:11.0

Cudnn 版本:8

【讨论】:

【参考方案2】:

以编程方式使用CUDA Runtime API C++ wrappers:

auto v1 = cuda::version::maximum_supported_by_driver();
auto v2 = cuda::version::runtime();

这为您提供了一个 cuda::version_t 结构,您可以对其进行比较并打印/流式传输,例如:

if (v2 < cuda::version_t 8, 0  ) 
    std::cerr << "CUDA version " << v2 << " is insufficient." std::endl;

【讨论】:

你能建议一种不编译 C++ 代码的方法吗?在之前的评论中,您提到 cat /usr/local/cuda/version.txt 不再适用于 CUDA 11... @drevicko:好吧,试试this,或者这个页面上的其他几个答案。 好的。我希望避免安装 CUDA SDK(据我了解,需要 nvcc)。使用 nvidia-smi 是不可靠的。从 /usr/local/cuda 链接的文件夹(应该是符号链接)似乎是一个不错的选择:这是否符合您所知道的并适用于 CUDA 11? @drevicko: 是的,如果您愿意假设 CUDA 安装在 /usr/local/cuda 下(对于具有默认位置的独立安装程序,这是正确的,但对于集成了 CUDA 作为package) - 然后查看符号链接就足够了。 我发现 /usr/local/cuda/version.json 有 cuda 相关的包和版本。我正在使用 Ubuntu 20.04【参考方案3】:

其他受访者已经描述了可以使用哪些命令来检查 CUDA 版本。在这里,我将描述如何将这些命令的输出转换为“10.2”、“11.0”等形式的环境变量。

回顾一下,你可以使用

nvcc --version

查找 CUDA 版本。 我认为这应该是您的第一个停靠港。 如果您安装了多个版本的 CUDA,此命令应打印出 PATH 上最高副本的版本。

输出如下所示:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Thu_Jun_11_22:26:38_PDT_2020
Cuda compilation tools, release 11.0, V11.0.194
Build cuda_11.0_bu.TC445_37.28540450_0

我们可以通过 sed 传递这个输出来选择 MAJOR.MINOR 发布版本号。

CUDA_VERSION=$(nvcc --version | sed -n 's/^.*release \([0-9\.]\+\).*$/\1/p')

如果 nvcc 不在您的路径上,您应该能够通过指定 nvcc 的默认位置的完整路径来运行它。

/usr/local/cuda/bin/nvcc --version

其中的输出同上,同样可以解析。

或者,您可以从 version.txt 文件中找到 CUDA 版本。

cat /usr/local/cuda/version.txt

其中的输出

CUDA Version 10.1.243

可以使用 sed 进行解析,以找出 MAJOR.MINOR 发布版本号。

CUDA_VERSION=$(cat /usr/local/cuda/version.txt | sed 's/.* \([0-9]\+\.[0-9]\+\).*/\1/')

请注意,有时 version.txt 文件指的是与 nvcc --version 不同的 CUDA 安装。在这种情况下,nvcc 版本应该是您实际使用的版本。

我们可以将这三种方法结合在一起,以稳健地获得 CUDA 版本,如下所示:

if nvcc --version 2&> /dev/null; then
    # Determine CUDA version using default nvcc binary
    CUDA_VERSION=$(nvcc --version | sed -n 's/^.*release \([0-9\.]\+\).*$/\1/p');

elif /usr/local/cuda/bin/nvcc --version 2&> /dev/null; then
    # Determine CUDA version using /usr/local/cuda/bin/nvcc binary
    CUDA_VERSION=$(/usr/local/cuda/bin/nvcc --version | sed -n 's/^.*release \([0-9\.]\+\).*$/\1/p');

elif [ -f "/usr/local/cuda/version.txt" ]; then
    # Determine CUDA version using /usr/local/cuda/version.txt file
    CUDA_VERSION=$(cat /usr/local/cuda/version.txt | sed 's/.* \([0-9]\+\.[0-9]\+\).*/\1/')

else
    CUDA_VERSION=""

fi

此环境变量对于下游安装很有用,例如当 pip 安装为正确 CUDA 版本编译的 pytorch 副本时。

python -m pip install \
    "torch==1.9.0+cu$CUDA_VERSION/./" \
    "torchvision==0.10.0+cu$CUDA_VERSION/./" \
    -f https://download.pytorch.org/whl/torch_stable.html

同样,你可以在没有安装 CUDA 的情况下安装 CPU 版本的 pytorch。

if [ "$CUDA_VERSION" = "" ]; then
    MOD="+cpu";
    echo "Warning: Installing CPU-only version of pytorch"
else
    MOD="+cu$CUDA_VERSION/./";
    echo "Installing pytorch with $MOD"
fi

python -m pip install \
    "torch==1.9.0$MOD" \
    "torchvision==0.10.0$MOD" \
    -f https://download.pytorch.org/whl/torch_stable.html

但请注意这一点,因为当您打算获得 GPU 支持时,您可能会意外安装仅 CPU 版本。 例如,如果您在没有 GPU 的服务器登录节点上运行安装脚本,您的作业将部署到有 GPU 的节点上。在这种情况下,登录节点通常不会安装 CUDA。

【讨论】:

【参考方案4】:

在 Windows 10 上,我在“C:\Program Files\NVIDIA Corporation\NVSMI”中找到了 nvidia-smi.exe;在 cd 进入该文件夹(在我的情况下不在 PATH 中)和 '.\nvidia-smi.exe' 之后它显示

【讨论】:

这不会显示当前安装的 CUDA 版本,而只会显示可用于您的 GPU 的最高兼容 CUDA 版本。请参阅 cmets 到其他答案 ***.com/a/55717476/988591。【参考方案5】:

如果您安装了 PyTorch,您只需在 IDE 中运行以下代码:

import torch

print(torch.version.cuda)

【讨论】:

【参考方案6】:

在 Ubuntu Cuda V8 上:

$ cat /usr/local/cuda/version.txt
  

您还可以了解安装了哪些 CUDA 版本:

$ ls -l /usr/local | grep cuda

这会给你这样的东西:

lrwxrwxrwx  1 root root    9 Mar  5  2020 cuda -> cuda-10.2
drwxr-xr-x 16 root root 4096 Mar  5  2020 cuda-10.2
drwxr-xr-x 16 root root 4096 Mar  5  2020 cuda-8.0.61

给定一个合理的路径,cuda 指向的版本应该是活动版本(在本例中为 10.2)。

注意:这仅在您愿意假设 CUDA 安装在 /usr/local/cuda 下时才有效(对于具有默认位置的独立安装程序是正确的,但对于将 CUDA 集成为一个包的发行版则不正确) .参考:comment from@einpoklum。

【讨论】:

这比harrism 的回答更通用,因为它不需要安装nvcc(需要管理员权限) 适用于 AWS Linux 深度学习 AMI 使用这个我得到“CUDA 版本 8.0.61”但是 nvcc --version 给我“Cuda 编译工具,版本 7.5,V7.5.17”你知道不匹配的原因吗? 赞成是更正确的答案,我的 CUDA 版本是 9.0.176,并且在 nvcc -V 中没有提到 我收到文件未找到错误,但 nvcc 报告版本 8.0。 /usr/local/cuda 不存在..【参考方案7】:

打开终端并运行以下命令:

cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

您可以获取CUDA 驱动程序版本CUDA 运行时版本 的信息,以及GPU(s) 的详细信息。我的输出的图像示例如下。

You can find the image here.

【讨论】:

【参考方案8】:

你也可以使用:

nvidia-smi | grep "CUDA Version:" 

检索显式行。

【讨论】:

这有时可能无法为您提供正确的版本。请检查@mwweb 答案。这给出了实际安装的版本。 cat /usr/local/cuda/version.txt【参考方案9】:

如果 nvcc 和 nvidia-smi 之间存在版本不匹配,则使用不同版本的 cuda 作为驱动程序和运行时环境。

为确保使用相同版本的 CUDA 驱动程序,您需要做的是在系统路径上获取 CUDA。

首先运行 whereis cuda 并找到 cuda 驱动的位置。

然后去.bashrc修改路径变量,使用变量'LD_LIBRARY_PATH'设置搜索的目录优先顺序。

例如

$ whereis cuda
cuda: /usr/lib/cuda /usr/include/cuda.h /usr/local/cuda

CUDA 安装在 /usr/local/cuda,现在我们需要在 .bashrc 中添加路径变量:

vim  ~/.bashrc
export PATH="/usr/local/cuda/bin:$PATH"

并在此行之后将目录搜索路径设置为:

export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

然后保存 .bashrc 文件。并将其刷新为:

$ source ~/.bashrc

这将确保您拥有 nvcc -V 和 nvidia-smi 以使用相同版本的驱动程序。

【讨论】:

【参考方案10】:

对于 CUDA 版本:

nvcc --version

或者使用,

nvidia-smi

对于 cuDNN 版本:

对于 Linux:

使用以下方法查找 cuDNN 的路径:

$ whereis cuda
cuda: /usr/local/cuda

然后用这个从头文件中获取版本,

$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

对于 Windows,

使用以下方法查找 cuDNN 的路径:

C:\>where cudnn*
C:\Program Files\cuDNN7\cuda\bin\cudnn64_7.dll

然后使用它从头文件中转储版本,

type "%PROGRAMFILES%\cuDNN7\cuda\include\cudnn.h" | findstr CUDNN_MAJOR

如果您在 Windows 上获得两个不同版本的 CUDA - Different CUDA versions shown by nvcc and NVIDIA-smi

【讨论】:

您在谈论 CUDA SDK。也许问题出在 CUDA 运行时和驱动程序上——那么这不合适。 (或者问题可能与计算能力有关——但不确定是否是这种情况。) nvcc 是一个二进制文件,会报告它的版本。您可以在单独的子目录中同时拥有多个版本。 /usr/local/cuda 是一个可选的符号链接,它可能仅在安装了 CUDA SDK 时才存在。 @Lorenz - 在某些情况下,我没有安装 nvidia-smi。此外,在调试时,最好知道东西在哪里。如果你想在 Linux 上卸载 cuda,很多时候你唯一的选择就是手动查找版本并删除它们。另外,请注意答案包含 CUDA 以及 cuDNN,稍后 smi 不会显示。我已经更新了使用 nvidia-smi 的答案,以防您唯一感兴趣的是 CUDA 的版本号。 目的是删除@Mircea 的评论,我不是说你的回答。我无意在您的回答中提及 nvidia-smi。命名 nvidia-smi 已经是错误的了!这不是这个线程问题的答案。如果你非常想命名它,你必须明确它不显示安装的版本,而只显示支持的版本。您现在的回答并没有说明这一点,因此在这一点上是错误的。 对于 Linux,它实际上位于 cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 中,对于 conda 环境:cat /opt/anaconda3/envs/tensorflow-gpu-2.6/include/cudnn_version.h | grep CUDNN_MAJOR -A 2【参考方案11】:

在之后找到我的:

whereis cuda

cuda: /usr/lib/cuda /usr/include/cuda.h

nvcc --version

CUDA 版本 9.1.85

【讨论】:

【参考方案12】:

我们有三种方式来检查版本: 在我的例子中,输出如下: - 方式一:-

cat /usr/local/cuda/version.txt

输出:-

CUDA Version 10.1.243

方式2:-

nvcc --version

输出:-

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85

方式3:-

/usr/local/cuda/bin/nvcc --version

输出:-

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243

方式4:-

nvidia-smi
NVIDIA-SMI 450.36.06    Driver Version: 450.36.06    CUDA Version: 11.0

输出不一样。不知道为什么会这样。

【讨论】:

方式 1 不再适用于 CUDA 11(或至少 11.2);请提及。 这个答案具有误导性。投反对票。【参考方案13】:

您可以使用

查看 CUDA 的版本
nvcc -V

或者你可以使用

nvcc --version

或者您可以检查 CUDA 使用的位置

whereis cuda 

然后做

cat location/of/cuda/you/got/from/above/command

【讨论】:

【参考方案14】:

如果你在 linux 上运行:

dpkg -l | grep cuda

【讨论】:

【参考方案15】:

使用以下命令检查 Conda 安装的 CUDA:

conda list cudatoolkit

以下命令检查 conda 安装的 CUDNN 版本:

conda list cudnn

如果您想通过 CONDA 安装/更新 CUDA 和 CUDNN,请使用以下命令:

conda install -c anaconda cudatoolkit
conda install -c anaconda cudnn

您也可以使用以下命令检查 CUDA 安装:

nvidia-smi

nvcc --version

如果您通过 Anaconda 包使用 tensorflow-gpu(您可以通过在控制台中打开 Python 并检查默认 python 在启动时是否显示 Anaconda, Inc. 来验证这一点,或者您可以运行 which python 并检查位置) ,然后手动安装 CUDA 和 CUDNN 很可能无法正常工作。您将不得不通过 conda 进行更新。

如果您想手动安装 CUDA、CUDNN 或 tensorflow-gpu,可以查看此处的说明https://www.tensorflow.org/install/gpu

【讨论】:

nvidia-smi没有给你安装的版本,只是支持的版本,对这个问题没有用,看@mostafa.elhoushi的回答下的cmets。 nvcc --version 如果您使用 conda 安装了 cuda 工具包,则在 anaconda 提示符下不起作用,如果您的意思是在 anaconda 提示符之外进行非 conda 安装,则它是已接受答案的重复. 请注意,在 conda 中,如果要为 pytorch 安装 cudatoolkit,则不应单独安装它。详情请查看***.com/questions/53102436/…。 支持如何检查 cuda 是否安装在 anaconda 中。【参考方案16】:

如果你跑了

nvidia-smi

您应该在命令输出的右上角找到 CUDA 版本。至少我发现了 CUDA 10.0 版的输出,例如,

【讨论】:

看起来nvidia-smi 只输出旧版本的驱动程序版本。 CUDA 版本显示仅适用于 410.72 之后的驱动版本。即使没有安装 CUDA,它也会显示 CUDA 版本。所以这些信息目前没有任何意义。参考:devtalk.nvidia.com/default/topic/1045528/… 这个答案是错误的,那只表示驱动CUDA版本支持。它没有提供任何关于安装了哪个 CUDA 版本甚至是否安装了 CUDA 的任何信息 这个 cuda 版本只显示 gpu cuda 功能,而不是用于运行时 api 的 cuda 版本。 nvcc --versionnvidia-smi 没有给我相同的 CUDA 版本。事实证明你的 (nvidia-smi) 是错误的。【参考方案17】:

如果 nvcc --version 不适合您,请使用 cat /usr/local/cuda/version.txt

【讨论】:

【参考方案18】:

正如 Jared 在评论中提到的,从命令行:

nvcc --version

(或/usr/local/cuda/bin/nvcc --version)给出了CUDA编译器版本(与工具包版本相匹配)。

从应用程序代码中,您可以查询运行时 API 版本

cudaRuntimeGetVersion()

或带有

的驱动程序API版本
cudaDriverGetVersion()

正如 Daniel 所指出的,deviceQuery 是一个 SDK 示例应用,可查询上述内容以及设备功能。

正如其他人所说,您还可以使用(例如,在 Mac 或 Linux 上)检查 version.txt 的内容

cat /usr/local/cuda/version.txt

但是,如果安装了除/usr/local/cuda 符号链接的版本以外的其他版本的 CUDA 工具包,如果您的PATH 中的另一个版本早于上述版本,则可能会报告不准确的版本,因此请谨慎使用。

【讨论】:

nvcc --version 应该在 Windows 命令提示符下工作,假设 nvcc 在您的路径中。 在 Ubuntu 中,您可能需要安装 nvidia-cuda-tools 才能使此命令生效。只需输入sudo apt install nvidia-cuda-toolkit 如果找不到nvcc,应该在/usr/local/cuda/bin/ cat /usr/local/cuda/version.txt点赞。如果您安装了 nvidia-toolkit,则使用 nvcc --version 的流行方法可以工作,但是,如果您只有 cuda 运行时,则 nvcc 可能不存在。 @RutgerHofste 指出的情况可能就是这种情况。例如。 (Tensorflow setup instructions不要安装nvcc) “/usr/local/cuda/bin/nvcc --version”和“nvcc --version”都显示不同的输出。【参考方案19】:

我得到 /usr/local - 没有这样的文件或目录。虽然 nvcc -V 给出了

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Sun_Sep__4_22:14:01_CDT_2016
Cuda compilation tools, release 8.0, V8.0.44

【讨论】:

【参考方案20】:

在终端输入以下内容即可获得cuda版本:

$ nvcc -V

# below is the result
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85

或者,可以手动通过首先查找安装目录来检查版本:

$ whereis -b cuda         
cuda: /usr/local/cuda

然后cd 进入该目录并检查 CUDA 版本。

【讨论】:

【参考方案21】:

在 Ubuntu 上:

试试

$ cat /usr/local/cuda/version.txt 要么 $ cat /usr/local/cuda-8.0/version.txt

有时该文件夹被命名为“Cuda-version”。

如果以上都不起作用,请尝试转到 $ /usr/local/ 并找到您的 Cuda 文件夹的正确名称。

输出应该类似于: CUDA Version 8.0.61

【讨论】:

这就是关于 CUDA SDK 的全部内容。这与 CUDA 驱动程序无关。【参考方案22】:

首先你应该找到 Cuda 的安装位置。

如果是像here 这样的默认安装,位置应该是:

对于 ubuntu:

/usr/local/cuda

在这个文件夹中你应该有一个文件

版本.txt

使用任何文本编辑器打开此文件或运行:

cat version.txt

来自文件夹

 cat /usr/local/cuda/version.txt 

【讨论】:

【参考方案23】:

除了上面提到的之外,您的 CUDA 安装路径(如果在安装过程中没有更改)通常包含版本号

which nvcc 应该给出路径,这会给你版本

PS:这是一种快速而肮脏的方式,上面的答案更优雅,并且会付出相当大的努力得到正确的版本

【讨论】:

获取/usr/bin/nvccnvcc --version 是要走的路。 nvcc 未安装【参考方案24】:

您可能会发现 CUDA-Z 很有用,以下是他们网站的引述:

“这个程序的诞生是对另一个 Z 实用程序(如 CPU-Z 和 GPU-Z)的模仿。CUDA-Z 显示了有关启用 CUDA 的 GPU 和 GPGPU 的一些基本信息。它适用于 nVIDIA Geforce、Quadro 和 Tesla卡,ION 芯片组。”

http://cuda-z.sourceforge.net/

在支持选项卡上有源代码的 URL:http://sourceforge.net/p/cuda-z/code/,下载实际上不是安装程序,而是可执行文件本身(没有安装,所以这是“快速”)。

此实用程序提供了大量信息,如果您想知道它是如何产生的,可以查看源代码。您可能会搜索其他类似的实用程序。

【讨论】:

这是一个Windows平台的程序。它可以在脚本内部使用吗? 查看各种选项卡,我找不到任何有关 CUDA 的有用信息。 适用于 Linux、Windows 和 Mac:sourceforge.net/p/cuda-z/code/HEAD/tree/qt-s-mini/4.8.6 - 检查源代码的中继:sourceforge.net/p/cuda-z/code/HEAD/tree/trunk【参考方案25】:

安装CUDA后可以通过nvcc -V查看版本

我已经安装了 5.0 和 5.5 所以它给出了

Cuda 编译工具,发布 5.5,V5.5,0

此命令适用于 Windows 和 Ubuntu。

【讨论】:

nvcc 未安装【参考方案26】:

如果你已经安装了CUDA SDK,你可以运行“deviceQuery”来查看CUDA的版本

【讨论】:

对于那些想知道的人:deviceQuery 是一个要构建的示例程序(Linux:在/usr/local/cuda/samples 中运行make,然后在./bin/x86_64/linux/release/deviceQuery 中运行)。

以上是关于如何获得 CUDA 版本?的主要内容,如果未能解决你的问题,请参考以下文章

你如何在 jcuda 中获得 CUDA 核心数?

CUDA 流是不是与设备相关?以及如何获得流的设备?

如何使用CUDA并行化嵌套for循环以在2D数组上执行计算

使用 Cuda 进行 128 位向量加法,性能问题

我可以将“静态”CUDA 内核启动与 PTX 代码结合起来并获得一个工作二进制文件吗?

在内核上工作的 CUDA 上的向量