是否有任何快速命令或脚本来检查安装的CUDA版本?
我在安装目录下找到了4.0的手册,但我不确定它是否是实际安装的版本。
是否有任何快速命令或脚本来检查安装的CUDA版本?
我在安装目录下找到了4.0的手册,但我不确定它是否是实际安装的版本。
当前回答
如果nvcc和nvidia-smi之间存在版本不匹配,则使用不同版本的cuda作为驱动程序和运行时环境。
为了确保使用相同版本的CUDA驱动程序,您需要做的是在系统路径上获取CUDA。
首先运行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使用相同版本的驱动程序。
其他回答
对于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的两个不同版本-nvcc和NVIDIA smi显示的不同CUDA版本
在Windows 10上,我在“C:\Program Files\nvidia Corporation\NVSMI”中找到了nvidia-smi.exe;在cd之后插入该文件夹(在我的情况下不在PATH中)和'。\它显示了nvidia smi.exe
首先你应该找到Cuda的安装位置。
如果是像这里这样的默认安装,位置应该是:
对于ubuntu:
/usr/local/cuda
在此文件夹中,您应该有一个文件
版本.txt
使用任何文本编辑器打开此文件或运行:
cat version.txt
从文件夹
OR
cat /usr/local/cuda/version.txt
在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的评论。
使用CUDA运行时API C++包装器编程(注意:我是作者):
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;
}