After an AMD platform is found, the application needs to identify the corresponding AMD devices.
The following code demonstrates finding all the AMD devices, with an upper limit of 16, by using API
clGetDeviceIDs
.
cl_device_id devices[16]; // compute device id
char cl_device_name[1001];
err = clGetDeviceIDs(platform_id, CL_DEVICE_TYPE_ACCELERATOR,
16, devices, &num_devices);
printf("INFO: Found %d devices\n", num_devices);
//iterate all devices to select the target device.
for (uint i=0; i<num_devices; i++) {
err = clGetDeviceInfo(devices[i], CL_DEVICE_NAME, 1024, cl_device_name, 0);
printf("CL_DEVICE_NAME %s\n", cl_device_name);
}
Important: The
clGetDeviceIDs
API is called with the platform_id
and CL_DEVICE_TYPE_ACCELERATOR
to receive all the available AMD devices.