当我尝试在容器内执行示例./deviceQuery脚本时,返回错误:
$ ./deviceQuery ./deviceQuery Starting... CUDA Device Query (Runtime API) version (CUDART static linking) cudaGetDeviceCount returned 38 -> no CUDA-capable device is detected Result = FAIL
Cuda被识别并安装在容器内部 :
$ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2015 NVIDIA Corporation Built on Tue_Aug_11_14:27:32_CDT_2015 Cuda compilation tools, release 7.5, V7.5.17
nVidia设备安装在“主机和LXC容器内:
$ ls -l /dev/nvidia* crw-rw-rw- 1 root root 195, 0 Dec 20 23:31 /dev/nvidia0 crw-rw-rw- 1 root root 195, 255 Dec 20 23:31 /dev/nvidiactl crw-rw-rw- 1 root root 246, 0 Dec 20 23:31 /dev/nvidia-uvm
当我在容器中运行sudo nvidia-smi ,出现以下错误:
Failed to initialize NVML: Unknown Error
如何在容器内执行Cuda脚本?
看起来这个问题已经被SuperUser问过了 ,但是如果它已经存在于ServerFault中,我只能将它标记为重复的。 我会在这里复制我的答案,希望能帮助那些首先遇到这个问题的人。
我有这个问题,这是我在这里写的。
您遇到的问题可能是由于使用与主机不匹配的LXC模板造成的。 我正在使用基于Debian 8.6的Proxmox 4.4。 我的容器基于Ubuntu 16.04。 就像你一样,我看到容器中的所有节点都以root身份作为所有者和组,而不是nobody:nogroup 。
我偶然发现的一个论坛post启发了我build立一个基于与我的主机Debian 8.6相匹配的模板的新容器。 一旦我这样做了/dev节点归个人所有nobody:nogroup和nvidia-smi正确地识别了我的GPU。
如果你的不匹配,我强烈build议你尝试使它们匹配 – 我知道的唯一方法是重build它。