为什么我无法在 docker-CUDA 容器中运行命令“nvcc --version”?

opt*_*mus 5 nvidia bash cuda drivers 18.04

我的操作系统是Ubuntu 18.04\xef\xbc\x8can并且我已经安装了nvidia驱动程序和nvidia-docker,但无法检测到CUDA。

\n\n
$ docker run -it --gpus all nvidia/cuda:10.0-cudnn7-runtime-ubuntu18.04 /bin/bash\nroot@7c0be9bfaeec:/# nvcc --version\nbash: nvcc: command not found\n
Run Code Online (Sandbox Code Playgroud)\n\n

我也无法在 Docker 容器中检测到 CUDNN:

\n\n
root@694cefcad33a:/# cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2\ncat: /usr/local/cuda/include/cudnn.h: No such file or directory\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而,当我跑步时nvidia-smi,它起作用了!

\n\n
root@7c0be9bfaeec:/# nvidia-smi\nThu Dec 19 04:51:23 2019\n+-----------------------------------------------------------------------------+\n| NVIDIA-SMI 440.44 Driver Version: 440.44 CUDA Version: 10.2 |\n|-------------------------------+----------------------+----------------------+\n| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n
Run Code Online (Sandbox Code Playgroud)\n

Muk*_*mar 3

似乎您正在运行Docker 映像runtime的标签nvidia/cuda,其中不包括nvcc您尝试访问的开发工具和 CUDA 标头。该映像仅包含执行 CUDA 应用程序所需的运行时库。我想您可以从标签访问开发工具latest

尝试这个命令:

$ docker run -it --gpus all nvidia/cuda:latest bash
Run Code Online (Sandbox Code Playgroud)

ETA:头文件可能安装在不同的位置。我建议你不必担心价值CUDNN_MAJOR。如果您确实需要它,请尝试:

sudo apt update
sudo apt install mlocate
sudo updatedb
sudo locate cudnn.h
Run Code Online (Sandbox Code Playgroud)

如果您找到结果(例如/a/b/cudnn.h),则用该位置替换cat您注释的命令。像这样:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 #This is the old command
cat /a/b/cudnn.h | grep CUDNN_MAJOR -A 2 #This is the new command, with the file you found
Run Code Online (Sandbox Code Playgroud)

cat另外,您还展示了无用使用( UUOC )的示例。你可以这样做:

grep -A 2 CUDNN_MAJOR /a/b/cudnn.h # Avoid UUOC
Run Code Online (Sandbox Code Playgroud)

PS:@optimus 从您尝试安装的 Docker 映像中,nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04您可以看到 CUDNN 的主版本号是 7。只是认为它可能对您有用。

PPS:如果您找不到 CUDNN 标头,则可能没有安装它。尝试按照本指南进行安装。