nvidia-docker容器中nvidia-smi中CUDA Version显示N/A

nvidia-docker2版本以上增加在启动容器的时候加上

 -e NVIDIA_VISIBLE_DEVICES=all

在容器中使用nvidia-smi可以显示出GPU信息

                                                                        图源:来自网络

 但是发现CUDA Version的版本为N/A,使用torch.cuda.is_available()会出现报错

UserWarning: CUDA initialization: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx (Triggered internally at /pytorch/c10/cuda/CUDAFunctions.cpp:100.)
  return torch._C._cuda_getDeviceCount() > 0

造成这样的主要原因是因为环境变量的配置

需要在启动容器时候加上

-e NVIDIA_DRIVER_CAPABILITIES=compute,utility

如果你不改这个环境变量,宿主机的nvidia driver在容器内是仅作为utility存在的,也就是个花瓶。如果加上compute,宿主机的英伟达driver将对容器提供计算支持(所谓的计算支持也就是cuda支持)。

这样大概率问题就解决了

当然更推荐是将docker版本升级19以后,就不用使用nvidia-docker操作,在docker起容器的时候直接加上

-e gpus=all

就可以使用宿主机的GPU了,更为方便。

参考:

Found no NVIDIA driver on your system · Issue #533 · NVIDIA/nvidia-docker · GitHub


版权声明:本文为qq_36287702原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。