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指针*devices可用于使用特定数量的设备创建上下文。
以下是规范中的说明:
num_entries是可以添加到devices中的cl_device条目数。如果devices不为NULL,则num_entries必须大于零。devices返回找到的OpenCL设备列表。在devices中返回的cl_device_id值可用于标识特定的OpenCL设备。如果devices参数为NULL,则忽略此参数。返回的OpenCL设备数量是num_entries或与device_type匹配的OpenCL设备数量的最小值。num_devices返回与device_type匹配的可用OpenCL设备数量。如果num_devices为NULL,则忽略此参数。
cl_context clCreateContext(
const cl_context_properties *properties,
cl_uint num_devices,
const cl_device_id *devices,
(voidCL_CALLBACK *pfn_notify) (
const char *errinfo,
const void *private_info, size_t cb,
void *user_data
),
void *user_data,
cl_int *errcode_ret)
然后,每个设备都通过其自己的设备队列进行寻址。