在 LXC 容器中执行 Cuda 脚本导致“cuda 错误:未检测到支持 CUDA 的设备”

在 LXC 容器中执行 Cuda 脚本导致“cuda 错误:未检测到支持 CUDA 的设备”

我跟着以下说明为了在 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。

如果您的不匹配,我强烈建议您尝试使它们匹配 - 我知道的唯一方法就是重建它。

相关内容