在多GPU计算机中,如何指定应运行CUDA作业的GPU?
作为一个例子,在安装CUDA时,我选择安装NVIDIA_CUDA-<#.#>_Samples
然后运行几个nbody
模拟实例,但它们都在一个GPU 0上运行; GPU 1完全空闲(使用监控watch -n 1 nvidia-dmi
).检查CUDA_VISIBLE_DEVICES
使用
echo $CUDA_VISIBLE_DEVICES
Run Code Online (Sandbox Code Playgroud)
我发现这没有设定.我尝试使用它
CUDA_VISIBLE_DEVICES=1
Run Code Online (Sandbox Code Playgroud)
然后nbody
再次运行但它也进入了GPU 0.
我看了相关的问题,如何选择指定的GPU来运行CUDA程序?,但deviceQuery
命令不在CUDA 8.0 bin目录中.除此之外$CUDA_VISIBLE_DEVICES$
,我看到其他帖子引用环境变量,$CUDA_DEVICES
但这些没有设置,我没有找到有关如何使用它的信息.
虽然与我的问题没有直接关系,但是使用nbody -device=1
我能够让应用程序在GPU 1上运行但是使用nbody -numdevices=2
不能在GPU 0和1上运行.
我在使用bash shell运行的系统上测试这个,在CentOS 6.8上,使用CUDA 8.0,2 GTX 1080 GPU和NVIDIA驱动程序367.44.
我知道在使用CUDA编写时,您可以管理和控制要使用的CUDA资源,但在运行已编译的CUDA可执行文件时,如何从命令行管理?
我正在为 NVIDIA GPU 构建 DeepStream Docker 映像,如本链接中所述。
我安装了NVIDIA 容器工具包,原始 Dockerfile 可以运行,构建后我可以使用以下命令启动具有 GPU 支持的容器:
sudo docker run --runtime=nvidia --gpus all --name Test -it deepstream:dgpu
Run Code Online (Sandbox Code Playgroud)
问题是我想在docker build
序列期间安装 PyTorch 并使用它。一旦 PyTorch 在构建序列中导入,Found no NVIDIA driver on your system
就会出现错误:
#0 0.895 Traceback (most recent call last):
#0 0.895 File "./X.py", line 15, in <module>
#0 0.895 dummy_input = torch.randn([1, 3, 224, 224], device='cuda')
#0 0.895 File "/usr/local/lib/python3.8/dist-packages/torch/cuda/__init__.py", line 229, in _lazy_init
#0 0.895 torch._C._cuda_init()
#0 0.895 …
Run Code Online (Sandbox Code Playgroud)