获取 GPU 使用率最低的 CUDA 设备
要获取 GPU 使用率最低的 CUDA 设备,我们可以使用 Python 结合 NVIDIA 的 pynvml
库。这个库允许我们访问 NVIDIA GPU 的各种信息,包括使用率。下面是一个实现这个功能的 Python 脚本:
import pynvmldef get_gpu_with_lowest_usage():pynvml.nvmlInit()deviceCount = pynvml.nvmlDeviceGetCount()lowest_usage = 100 # Start with max possible usagelowest_usage_device = -1for i in range(deviceCount):handle = pynvml.nvmlDeviceGetHandleByIndex(i)util = pynvml.nvmlDeviceGetUtilizationRates(handle)gpu_util = util.gpuprint(f"GPU {i}: Utilization {gpu_util}%")if gpu_util < lowest_usage:lowest_usage = gpu_utillowest_usage_device = ipynvml.nvmlShutdown()return lowest_usage_device, lowest_usageif __name__ == "__main__":try:device, usage = get_gpu_with_lowest_usage()if device != -1:print(f"\nGPU with lowest usage: CUDA:{device} (Utilization: {usage}%)")else:print("No GPUs found or error occurred.")except pynvml.NVMLError as error:print(f"Error: {error}")
这个脚本执行以下操作:
-
导入
pynvml
库来访问 NVIDIA GPU 信息。 -
定义
get_gpu_with_lowest_usage()
函数:- 初始化 NVML (NVIDIA Management Library)
- 获取系统中的 GPU 数量
- 遍历所有 GPU,获取每个 GPU 的使用率
- 跟踪使用率最低的 GPU
- 关闭 NVML
- 返回使用率最低的 GPU 索引和其使用率
-
在主程序中调用这个函数并打印结果
要使用这个脚本:
-
确保你已经安装了
pynvml
库。可以使用以下命令安装:pip install nvidia-ml-py3
-
将脚本保存为
.py
文件(例如get_lowest_gpu_usage.py
) -
运行脚本:
python get_lowest_gpu_usage.py
这个脚本会输出每个 GPU 的使用率,然后告诉你哪个 GPU 的使用率最低。
注意:
- 这个脚本需要在有 NVIDIA GPU 的系统上运行。
- 你需要有适当的权限来访问 GPU 信息。
- 在某些系统中,你可能需要以管理员权限运行此脚本。
如果你想在你的 Python 程序中使用最低使用率的 GPU,你可以使用 torch.cuda.set_device(device)
来设置 PyTorch 使用的 GPU,其中 device
是 get_gpu_with_lowest_usage()
函数返回的设备索引。