我跟着以下说明并详细阅读官方指南以便在 LXC 容器内设置 Cuda。
当我尝试从官方示例代码中执行示例 ./deviceQuery 脚本时我在主机中获得了 PASS。但是当我执行脚本时在容器中我收到以下错误:
$ ./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
如何才能使该设备在容器内可用?
linux/index.html
答案1
我也遇到过同样的问题,我对此写过一篇长文这里。
您遇到的问题可能是由于使用了与您的主机不匹配的 LXC 模板造成的。我使用的是基于 Debian 8.6 的 Proxmox 4.4。我的容器基于 Ubuntu 16.04。就像您一样,我在容器中看到了传递的节点根作为所有者和群组,不没人:无群组正如预期的那样。
A我偶然发现的论坛帖子启发我基于与我的主机 Debian 8.6 匹配的模板构建了一个新容器。一旦我这样做,节点/dev
就归我的 GPU 所有nobody:nogroup
,并nvidia-smi
正确识别了我的 GPU。
如果您的不匹配,我强烈建议您尝试使它们匹配 - 我知道的唯一方法就是重建它。