我从外面连接到GPU集群,我不知道如何选择运行我的CUDA程序的设备.
我知道集群中有两个Tesla GPU,我想选择其中一个.
有什么想法?如果有多台设备连接到计算机,您如何选择要使用的设备?
tal*_*ies 10
在运行时API中选择设备的规范方法是使用cudaSetDevice.这将配置运行时以在指定设备上执行延迟上下文建立.在CUDA 4.0之前,这个调用实际上没有建立上下文,它只是告诉运行时尝试使用哪个GPU.从CUDA 4.0开始,此调用将在调用时在指定的GPU上建立上下文.还有cudaChooseDevice,将在可用设备中进行选择以找到与呼叫者提供的标准匹配的设备.
您可以使用系统枚举系统上的可用GPU cudaGetDeviceCount,并检索其详细信息cudaGetDeviceProperties.SDK deviceQuery示例显示了如何执行此操作的完整详细信息.
但是,您可能需要注意如何在多GPU系统中选择GPU,具体取决于主机和驱动程序配置.在Linux和Windows TCC驱动程序中,存在GPU被标记为"计算错误"的选项,这意味着驱动程序将每个GPU限制为一次一个活动上下文,或计算禁止,这意味着没有CUDA程序可以在该设备上建立上下文.如果您的代码尝试在计算禁止设备或正在使用的计算专用设备上建立上下文,则结果将是无效的设备错误.在多GPU系统中,策略是使用计算排他性,正确的方法不是尝试选择特定的GPU,而只是允许隐式上下文建立隐式发生.驱动程序将自动选择一个免费的GPU来运行您的代码.可以通过cudaDeviceProp.computeMode使用cudaGetDeviceProperties呼叫读取字段来检查任何设备的计算模式状态.请注意,您可以自由检查不可用或禁止的GPU并查询其属性,但任何需要上下文建立的操作都将失败.
请参阅所有这些调用的运行时API文档
您可以将环境变量设置CUDA_VISIBLE_DEVICES为以逗号分隔的设备 ID 列表,以便仅这些设备对应用程序可见。使用它可以屏蔽设备或更改设备的可见性顺序,以便 CUDA 运行时以特定顺序枚举它们。
| 归档时间: |
|
| 查看次数: |
9588 次 |
| 最近记录: |