限制AMD OpenCL的GPU数量

限制AMD OpenCL的GPU数量,opencl,Opencl,是否有一个解决方案来限制AMD OpenCL平台使用的GPU数量?对于NVIDIA平台,只需设置环境变量CUDA_VISIBLE_DEVICES即可限制OpenCL可用的GPU集 编辑:我知道,我可以用减少的设备集创建上下文。但是,我正在寻找从“外部”控制OpenCL平台设备数量的方法。OpenCL规范没有定义可移植的解决方案 英伟达有你提到的解决方案。我不认为AMD有一个标准;您的OpenCL程序必须想出一种方法来共享可用的设备 请注意,AMD确实为“设备裂变”提供了OpenCL扩展(其中一些

是否有一个解决方案来限制AMD OpenCL平台使用的GPU数量?对于NVIDIA平台,只需设置环境变量
CUDA_VISIBLE_DEVICES
即可限制OpenCL可用的GPU集


编辑:我知道,我可以用减少的设备集创建上下文。但是,我正在寻找从“外部”控制OpenCL平台设备数量的方法。

OpenCL规范没有定义可移植的解决方案

英伟达有你提到的解决方案。我不认为AMD有一个标准;您的OpenCL程序必须想出一种方法来共享可用的设备


请注意,AMD确实为“设备裂变”提供了OpenCL扩展(其中一些在OpenCL 1.2中变得更为正式),用于将单个设备拆分为多个程序(但这与您所要求的不同).

OpenCL主机API允许您在获取设备ID列表时指定设备数量

_int clGetDeviceIDs(    
    cl_platform_id platform,
    cl_device_type device_type,
    cl_uint num_entries,  //  Controls the minimum  number of devices
    cl_device_id *devices,
    cl_uint *num_devices)
设备id指针*设备可用于创建具有特定数量设备的上下文

这是说明书上说的

num_entries是可以添加到的cl_设备条目数 设备。如果设备不为NULL,则num_项必须大于 零。设备返回找到的OpenCL设备列表。cl_设备id 设备中返回的值可用于标识特定的OpenCL 装置。如果devices参数为NULL,则忽略此参数。这个 返回的OpenCL设备数是该值的最小值 由num_条目或其类型为 与设备类型匹配。num_devices返回OpenCL设备的数量 与设备类型匹配的可用。如果num_devices为NULL,则 参数被忽略


然后,每个设备通过其自己的设备队列进行寻址。

AMD具有适用于Windows和Linux的GPU设备顺序环境变量。这允许您指定希望从OpenCL应用程序可见的GPU索引。例如:

jprice@nowai:~/benchmark$ python benchmark.py -clinfo

Platform 0: AMD Accelerated Parallel Processing
 -> Device 0: Tahiti
 -> Device 1: Tahiti
 -> Device 2: Intel(R) Core(TM) i5-3550 CPU @ 3.30GHz

jprice@nowai:~/benchmark$ export GPU_DEVICE_ORDINAL=0
jprice@nowai:~/benchmark$ python benchmark.py -clinfo

Platform 0: AMD Accelerated Parallel Processing
 -> Device 0: Tahiti
 -> Device 1: Intel(R) Core(TM) i5-3550 CPU @ 3.30GHz
更详细的说明见AMD应用程序OpenCL编程指南(目前在第2.4.3节“屏蔽可见设备”):

我知道OpenCL规范没有为此提供机制(除了在上下文中限制设备)。但是我会接受你的回答,因为“没有这样的事情”。正如jprice所描述的,它实际上可以使用一个系统变量来完成。我知道所有这些。也许我不太清楚,但我正在寻找一种从“外部”控制设备的方法。类似于英伟达CUDA驱动程序提供的环境变量。然后发明您自己的环境变量或使用CUDA变量并调用GetEnv()。你应该知道如何做剩下的。。。。
jprice@nowai:~/benchmark$ python benchmark.py -clinfo

Platform 0: AMD Accelerated Parallel Processing
 -> Device 0: Tahiti
 -> Device 1: Tahiti
 -> Device 2: Intel(R) Core(TM) i5-3550 CPU @ 3.30GHz

jprice@nowai:~/benchmark$ export GPU_DEVICE_ORDINAL=0
jprice@nowai:~/benchmark$ python benchmark.py -clinfo

Platform 0: AMD Accelerated Parallel Processing
 -> Device 0: Tahiti
 -> Device 1: Intel(R) Core(TM) i5-3550 CPU @ 3.30GHz