我正在尝试从 Snapdragon 820 设备(三星 Galaxy S7)上的 Adreno 530 GPU 获取 CL_DEVICE_MAX_COMPUTE_UNITS 和 CL_DEVICE_MAX_CLOCK_FREQUENCY 设备信息。但是,对于 CL_DEVICE_MAX_COMPUTE_UNITS,我得到 4,对于 CL_DEVICE_MAX_CLOCK_FREQUENCY,我得到 1。这似乎是错误的,因为 CL_DEVICE_MAX_CLOCK_FREQUENCY = 1 表示 1 MHz。以下是我提取这些信息的代码:
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,它似乎可以正常工作。我为 Intel Iris Pro 获得 40 个计算单元和 1200 MHz 时钟频率。