2.4 设备管理
NVIDIA提供了几个查询和管理GPU设备的方法。学会如何查询GPU设备信息是很重要的,因为在运行时你可以使用它来帮助设置内核执行配置。
在本节,你将通过以下两种方法学习查询和管理GPU设备:
CUDA运行时API函数
NVIDIA系统管理界面(nvidia-smi)命令行实用程序
2.4.1 使用运行时API查询GPU信息
在CUDA运行时API中有很多函数可以帮助管理这些设备。可以使用以下函数查询关于GPU设备的所有信息:
代码清单2-8提供了一个示例,查询了大家通常感兴趣的一般属性。可以使用下列命令编译并运行:
2.4.2 确定最优GPU
一些系统支持多GPU。在每个GPU都不同的情况下,选择性能最好的GPU运行核函数是非常重要的。通过比较GPU包含的多处理器的数量选出计算能力最佳的GPU。如果你有一个多GPU系统,可以使用以下代码来选择计算能力最优的设备:
2.4.3 使用nvidia-smi查询GPU信息
nvidia-smi是一个命令行工具,用于管理和监控GPU设备,并允许查询和修改设备状态。
你可以从命令行调用nvidia-smi。例如,要确定系统中安装了多少个GPU以及每个GPU的设备ID,可以使用以下命令:
2.4.4 在运行时设置设备
支持多GPU的系统是很常见的。对于一个有N个GPU的系统,nvidia-smi从0到N―1标记设备ID。使用环境变量CUDA_VISIBLE_DEVICES,就可以在运行时指定所选的GPU且无须更改应用程序。
设置运行时环境变量CUDA_VISIBLE_DEVICES=2。nvidia驱动程序会屏蔽其他GPU,这时设备2作为设备0出现在应用程序中。
也可以使用CUDA_VISIBLE_DEVICES指定多个设备。例如,如果想测试GPU 2和GPU 3,可以设置CUDA_VISIBLE_DEVICES = 2, 3。然后,在运行时,nvidia驱动程序将只使用ID为2和3的设备,并且会将设备ID分别映射为0和1。