Я пытаюсь получить информацию об устройстве CL_DEVICE_MAX_COMPUTE_UNITS и CL_DEVICE_MAX_CLOCK_FREQUENCY с графического процессора Adreno 530 на устройстве Snapdragon 820 (Samsung Galaxy S7). Но я получаю 4 для CL_DEVICE_MAX_COMPUTE_UNITS и 1 для CL_DEVICE_MAX_CLOCK_FREQUENCY. Это кажется неправильным, потому что CL_DEVICE_MAX_CLOCK_FREQUENCY = 1 означает 1 МГц. Ниже приведен мой код для извлечения этой информации:
cl_uint buf_uint;
clGetDeviceInfo(device.get(), CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(buf_uint), &buf_uint, NULL);
printf(" DEVICE_MAX_COMPUTE_UNITS = %u\n", (unsigned int)buf_uint);
clGetDeviceInfo(device.get(), CL_DEVICE_MAX_CLOCK_FREQUENCY, sizeof(buf_uint), &buf_uint, NULL);
printf(" DEVICE_MAX_CLOCK_FREQUENCY = %u\n", (unsigned int)buf_uint);
Примечание: устройство имеет тип cl::Device.
Для Mac вроде корректно работает. Я получаю 40 вычислительных блоков и тактовую частоту 1200 МГц для Intel Iris Pro.