我正在尝试从 Pycharm IDE 中使用 tensorflow 提供的支持 gpu 的 docker 映像运行一个简单的 tensorflow 示例。一切正常,除了当我运行它时,tensorflow 不会从容器中检测到 GPU 并默认返回CPU
:
tensorflow/stream_executor/cuda/cuda_driver.cc:318] failed call to cuInit:
运行:Ubuntu 18.04.3 Docker 19.03.3 最新版本的 NVIDIA docker 支持:https ://github.com/NVIDIA/nvidia-docker
我已经使用远程解释器功能设置了我的 Pycharm 项目来运行图像:tensorflow:latest-gpu
如果我从命令行运行容器:
docker run --gpus all --rm tensorflow/tensorflow:latest-gpu nvidia-smi
我明白了:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.26 Driver Version: 430.26 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 108... Off | 00000000:41:00.0 On | N/A |
| 28% 26C P8 9W / 250W | 443MiB / 11177MiB | 1% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+
..它告诉我 docker install、image 和 nvidia docker 支持都可以。
现在,当 Pycharm 运行容器时,它不包含“--gpus all”命令行选项。
如果我在没有 --gpus all 参数的情况下运行上面的相同命令:
docker run --rm tensorflow/tensorflow:latest-gpu nvidia-smi
我得到:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"nvidia-smi\": executable file not found in $PATH": unknown.
所以这表明 Pycharm 没有添加标志作为罪魁祸首。
但是,根据以下文档:https : //docs.docker.com/config/containers/resource_constraints/(GPU 的底部),环境变量 NVIDIA_VISIBLE_DEVICES=all 应该完成同样的事情。我确认即使没有 --gpus all 参数,这个环境变量也会被设置。
此外,似乎没有办法从 Pycharm 中添加额外的命令行参数。所以我被困住了。我觉得这个设置不是太奇特,希望我缺少一些基本的东西。