有没有快速的命令或脚本来检查安装的CUDA版本?
我在安装目录下找到了4.0的手册,但我不确定它是否是实际安装版本。
正如Jared在评论中提到的那样,从命令行:
nvcc --version
(或者/usr/local/cuda/bin/nvcc --version
)可以给出CUDA编译器版本(与工具包版本相匹配)。
从应用程序代码中,您可以使用以下命令查询运行时API版本:
cudaRuntimeGetVersion()
或者使用驱动程序API版本
cudaDriverGetVersion()
version.txt
(在最近的CUDA版本中为.json
),例如,在Mac或Linux上:cat /usr/local/cuda/version.txt
然而,如果除了从/usr/local/cuda
链接的版本之外还安装了CUDA工具包的其他版本,则如果另一个版本在您的PATH
中早于上述版本,则此版本可能报告不准确的版本,因此请谨慎使用。
nvcc
,它应该在/usr/local/cuda/bin/
中。 - Rushcat /usr/local/cuda/version.txt
命令。如果已安装 NVIDIA Toolkit,则使用流行的 nvcc --version
方法有效,但是如果您仅安装了 CUDA 运行时,则可能不存在 nvcc 命令,正如 @RutgerHofste 指出的那样。例如,(TensorFlow 设置说明)未安装 nvcc。 - Kirill Pavlov[编辑的答案。感谢所有纠正它的人]
如果你运行
nvidia-smi
你应该在命令输出的右上角找到已安装驱动程序支持的最高 CUDA 版本,而不是找到CUDA 版本。至少,我在 CUDA 版本 10.0 上找到了这个输出,
请注意,这并不意味着 CUDA 10.0 已经安装。可能已经安装,也可能没有。
你可以通过nvcc --version
命令来检查 CUDA 是否真正安装。
注意 - 有时候通过某些方法(.run 文件)安装 CUDA 默认也会安装 NVIDIA 驱动程序或替换现有安装的驱动程序,这让很多人感到困惑。然而,通过 CUDA 安装来安装驱动程序可能不能为你的 GPU 提供最新或最合适的驱动程序。这是一个更复杂的话题。
nvidia-smi
仅在旧版本中输出驱动程序版本。 - mrgloomnvcc --version
和 nvidia-smi
给出的 CUDA 版本不一致,最终发现你所用的(nvidia-smi
)是错误的。 - scottlittle在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
假设PATH设置正确,cuda
的版本应该是活动版本(在这种情况下为10.2)。
注意:仅当您愿意假定CUDA安装在/usr/local/cuda下时,此方法才有效(对于具有默认位置的独立安装程序而言是正确的,但对于将CUDA集成为软件包的发行版则不一定正确)。参考:@einpoklum的评论
nvcc
(需要管理员权限)。 - dinosaurls -l /usr/local | grep cuda
,以了解你安装了哪些版本。 /usr/local/cuda
(应该是一个符号链接)指向的那个版本应该是系统看到的默认版本。 - drevickoCUDA 版本:
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-nvcc和NVIDIA-smi显示不同的CUDA版本
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
中查找。 - Gabriel Cretinnvidia-smi
与安装的CUDA版本无关。它甚至不随CUDA工具包一起提供,而是来自NV驱动程序包。它仅显示支持的最大CUDA版本。 - bviktor其他回答者已经描述了哪些命令可以用于检查CUDA版本。在这里,我将描述如何将这些命令的输出转换为形式为“10.2”、“11.0”等的环境变量。
回顾一下,您可以使用
nvcc --version
查找CUDA版本。 我认为这应该是您的首要选择。 如果您安装了多个CUDA版本,则此命令应打印出路径上最高版本的版本。
输出如下:
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命令提取出仅包含主要版本号和次要版本号的版本号。
CUDA_VERSION=$(nvcc --version | sed -n 's/^.*release \([0-9]\+\.[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解析,以仅获取主要和次要的版本号。CUDA_VERSION=$(cat /usr/local/cuda/version.txt | sed 's/.* \([0-9]\+\.[0-9]\+\).*/\1/')
请注意,有时version.txt文件引用的CUDA安装版本与nvcc --version
不同。在这种情况下,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]\+\.[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]\+\.[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时,您可以安装pytorch的CPU版本。
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
但是要小心,因为您可能会意外安装仅支持CPU的版本,而本来想要支持GPU。 例如,如果您在服务器的登录节点上运行安装脚本,该节点没有GPU,并且您的作业将部署到具有GPU的节点上。在这种情况下,登录节点通常不会安装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,或者您可以运行which python并检查位置来验证此内容),那么手动安装CUDA和CUDNN很可能不起作用。 您将需要通过conda进行更新。
如果您想手动安装CUDA、CUDNN或tensorflow-gpu,您可以在这里查看说明:https://www.tensorflow.org/install/gpu
nvidia-smi
命令无法提供已安装的版本,只能提供支持的版本,对于这个问题没有用处,在 @mostafa.elhoushi 的回答下面评论中有相关说明。 - questionto42nvcc --version
命令,则该命令无法正常工作。如果您是在非conda安装环境下运行该命令,则这句话就是已经被接受的答案的重复。 - questionto42在Ubuntu上:
尝试使用以下命令:
$ cat /usr/local/cuda/version.txt
或者
$ cat /usr/local/cuda-8.0/version.txt
有时文件夹的名称是"Cuda-version"。
如果以上方法都不行,请前往
$ /usr/local/
并找到您的Cuda文件夹的正确名称。
输出结果应类似于:
CUDA版本8.0.61
deviceQuery
是一个示例程序,用于构建(在Linux中,需要在/usr/local/cuda/samples
目录下运行make
,然后运行./bin/x86_64/linux/release/deviceQuery
)。 - Matthieuimport torch
print(torch.version.cuda)
http://cuda-z.sourceforge.net/
在支持选项卡中,有源代码的URL:http://sourceforge.net/p/cuda-z/code/,下载实际上并不是安装程序,而是可执行文件本身(无需安装,因此速度很快)。
nvcc --version
命令会提示The program 'nvcc' is currently not installed. You can install it by typing: sudo apt install nvidia-cuda-toolkit
,但是nvidia-smi
命令显示 CUDA 版本为 10.1。 - mrgloomcat /usr/local/cuda/version.txt
命令可以得到更精确的版本信息:CUDA 版本 10.1.168
。 - mrgloomnvidia-smi
混合获取版本,使用grep
识别行,并使用sed
删除不必要的字符:nvidia-smi | grep -o 'CUDA Version: [0-9].\.[0-9]' | sed 's/.*: //'
。 - Eduardo Pignatelli