最佳答案
在多 GPU 计算机中,如何指定 CUDA 作业应该在哪个 GPU 上运行?
例如,在安装 CUDA 时,我选择安装 NVIDIA_CUDA-<#.#>_Samples
,然后运行 nbody
模拟的几个实例,但它们都在一个 GPU 0上运行; GPU 1完全空闲(使用 watch -n 1 nvidia-dmi
监控)。使用
echo $CUDA_VISIBLE_DEVICES
我发现这个没有设置。我试图设置它使用
CUDA_VISIBLE_DEVICES=1
then running nbody
again but it also went to GPU 0.
我查看了相关的问题 how to choose designated GPU to run CUDA program?,但是 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 可执行文件时,我如何从命令行管理这些资源?