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