我的操作系统是Ubuntu 18.04,我已经安装了nvidia驱动程序nvidia-docker
,但无法检测到CUDA。
$ docker run -it --gpus all nvidia/cuda:10.0-cudnn7-runtime-ubuntu18.04 /bin/bash
root@7c0be9bfaeec:/# nvcc --version
bash: nvcc: command not found
另外我无法在 Docker 容器中检测到 CUDNN:
root@694cefcad33a:/# cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
cat: /usr/local/cuda/include/cudnn.h: No such file or directory
然而,当我运行的时候nvidia-smi
,它成功了!
root@7c0be9bfaeec:/# nvidia-smi
Thu Dec 19 04:51:23 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.44 Driver Version: 440.44 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
答案1
似乎您正在运行Docker 映像runtime
的标签nvidia/cuda
,其中不包含nvcc
您尝试访问的开发工具和 CUDA 标头。该映像仅包含执行 CUDA 应用程序所需的运行时库。我猜您可以从标签访问开发工具latest
。
尝试这个命令:
$ docker run -it --gpus all nvidia/cuda:latest bash
ETA:头文件可能安装在不同的位置。我建议您不必担心该CUDNN_MAJOR
值。如果您确实需要它,请尝试:
sudo apt update
sudo apt install mlocate
sudo updatedb
sudo locate cudnn.h
如果你找到了结果(例如/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
另外,你还展示了一个无用使用的例子cat
(联合大学)。您可以改为执行以下操作:
grep -A 2 CUDNN_MAJOR /a/b/cudnn.h # Avoid UUOC
PS:@optimus 从您尝试安装的 Docker 映像中,nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04
您可以看到 CUDNN 的主版本号是 7。只是认为它可能对您有用。
PPS:如果你找不到 CUDNN 头文件,那么你可能没有安装它。请尝试按照以下步骤进行安装本指南。