我正在从外部连接到一个GPU集群,但我不知道如何选择要在其上运行CUDA程序的设备。
我知道该集群中有两个Tesla GPU,并且我想选择其中一个。
有什么建议吗?当计算机连接多个设备时,如何选择要使用的设备?
我知道该集群中有两个Tesla GPU,并且我想选择其中一个。
有什么建议吗?当计算机连接多个设备时,如何选择要使用的设备?
cudaSetDevice
。这将配置运行时在指定设备上执行惰性上下文建立。在CUDA 4.0之前,此调用实际上并没有建立上下文,它只通知运行时尝试使用哪个GPU。自CUDA 4.0以来,此调用将在调用时在指定的GPU上建立上下文。还有cudaChooseDevice
,它会从可用设备中选择一个与调用者提供的标准匹配的设备。cudaGetDeviceCount
枚举系统上可用的GPU,并使用cudaGetDeviceProperties
检索其详细信息。SDK deviceQuery示例显示了如何执行此操作的完整详细信息。cudaGetDeviceProperties
调用读取cudaDeviceProp.computeMode
字段来检查任何设备的计算模式状态。请注意,您可以自由地检查不可用或被禁止的GPU并查询其属性,但是任何需要上下文建立的操作都将失败。CUDA_VISIBLE_DEVICES
,将设备ID的列表以逗号分隔,只使得这些设别对应用程序可见。使用此功能可以掩盖设备或更改设备的可见顺序,以便CUDA运行时按特定顺序枚举它们。
CUDA_VISIBLE_DEVICES
环境变量。(https://devblogs.nvidia.com/parallelforall/cuda-pro-tip-control-gpu-visibility-cuda_visible_devices/) - Soravux