【发布时间】:2017-10-31 10:47:15
【问题描述】:
我们只有 4 个 GPU 设备。我们有超过 4 个用户来运行 cuda 程序,所以在我运行我的程序之前,我想检查哪个设备不忙,否则它会分配内存失败。但我还没有找到一个函数来获取这个标签。我知道当我们想使用我们调用“cudaSetDevice()”的设备时,每个设备都必须有一个标签。并且“nvidia-smi”可以获得更多细节,包括哪个进程正在使用哪个设备以及它使用了多少内存。那么谁能帮帮我呢?
【问题讨论】:
我们只有 4 个 GPU 设备。我们有超过 4 个用户来运行 cuda 程序,所以在我运行我的程序之前,我想检查哪个设备不忙,否则它会分配内存失败。但我还没有找到一个函数来获取这个标签。我知道当我们想使用我们调用“cudaSetDevice()”的设备时,每个设备都必须有一个标签。并且“nvidia-smi”可以获得更多细节,包括哪个进程正在使用哪个设备以及它使用了多少内存。那么谁能帮帮我呢?
【问题讨论】:
cudaSetDevice 的值从 0 开始,然后随着每个附加设备单调增加。或者,您可以设置环境变量 CUDA_VISIBLE_DEVICES 来选择要使用的设备。 (见https://devblogs.nvidia.com/parallelforall/cuda-pro-tip-control-gpu-visibility-cuda_visible_devices/)。
要获取有关使用设备的信息,您需要使用驱动程序 API:http://docs.nvidia.com/cuda/cuda-driver-api/index.html
【讨论】: