在多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可执行文件时,如何从命令行管理?