【发布时间】:2016-09-07 00:26:37
【问题描述】:
According to Wikipedia, the Iris Graphics 6100 has 48 execution units (EU) with each having a pair of 128 bit FPUs. 所以每个EU应该支持一个8个浮点类型的向量。当设备被轮询 GPU 的首选向量宽度时,除了双精度类型之外,每种类型都显示为 1。结果是 0。这是预期的行为,因为不支持双打。 CPU 正确返回了所有信息。所有 48 个 GPU EU 也被认为存在。
这只是 Apple 实现 clGetDeviceInfo 的一个错误吗?它至少应该输出 char 向量的首选宽度大于 int 向量。但他们都返回 1。
驱动程序是最新版本(2016 年 8 月 29 日)。
编辑:
clGetDeviceInfo(devices[j], CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, sizeof(maxWidth), &maxWidth, NULL);
和
clGetDeviceInfo(devices[j], CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, sizeof(maxWidth), &maxWidth, NULL);
对于 GPU 上的所有类型,两者都返回 1。
CPU 分别为 Char、Short、Int/Float 返回 16、8、4。
【问题讨论】:
-
您对 clGetDeviceInfo 的调用是什么样的?
-
clGetDeviceInfo(devices[j], CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, sizeof(maxWidth), &maxWidth, NULL);
-
我认为这是 Apple 实施的特殊行为;我以这种方式调查过的所有 Mac 硬件(诚然,不是代表性样本)都没有返回 1 以外的向量宽度。但是根据我的经验,Apple 的实现有比这更糟糕的错误......
标签: c++ macos vector opencl gpgpu