我跟着以下说明为了在 LXC 容器内设置 Cuda。
当我尝试执行示例 ./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 脚本?
答案1
这个问题似乎已经在 SuperUser 上询问过,但如果它在 ServerFault 中已经存在,我只能将其标记为重复。我将我的答案复制到这里,希望它能帮助那些首先遇到这个问题的人。
我也遇到过同样的问题,我对此写过一篇长文这里。
您遇到的问题可能是由于使用了与您的主机不匹配的 LXC 模板造成的。我使用的是基于 Debian 8.6 的 Proxmox 4.4。我的容器基于 Ubuntu 16.04。就像您一样,我在容器中看到了传递的节点根作为所有者和群组,不没人:无群组正如预期的那样。
A我偶然发现的论坛帖子启发我基于与我的主机 Debian 8.6 匹配的模板构建了一个新容器。一旦我这样做,节点/dev
就归我的 GPU 所有nobody:nogroup
,并nvidia-smi
正确识别了我的 GPU。
如果您的不匹配,我强烈建议您尝试使它们匹配 - 我知道的唯一方法就是重建它。