在Intel Iris Graphics 6100 (MBP 2015)上实现OpenCL的OSX矢量宽度
Vector Width on OSX Implementation of OpenCL on the Intel Iris Graphics 6100 (MBP 2015)
根据维基百科,Iris Graphics 6100有48个执行单元(EU),每个执行单元有一对128位fpu。所以每个EU应该支持8个浮点类型的向量。当设备被轮询为GPU的首选向量宽度时,除了双精度外,每种类型都显示为1。结果是0。这是预期的行为,因为不支持双精度。CPU正确返回所有信息。所有48个GPU u也被识别为存在。
这只是苹果实现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。
对于Char, Short, Int/Float, CPU分别返回16,8,4
在Intel GEN Graphics上,float vector的首选向量宽度为4,如float4。对于某些内核,float8有时是有意义的。所以我认为这是MacOSX驱动程序的问题。
相关文章:
- 如果没有malloc,链表实现将失败
- 使用std::vector的OpenCL矩阵乘法
- 如何在c++中实现处理器调度模拟器
- 如何在c++中使用引用实现类似python的行为
- 实现无开销push_back的最佳方法是什么
- 使用简单类型列表实现的指数编译时间.为什么
- 如何在BST的这个简单递归实现中消除警告
- 实现一个在集合上迭代的模板函数
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 如何正确实现和访问运算符的各种自定义枚举器
- C++Union/Struct位域的实现和可移植性
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 在c++中实现LinkedList时,应出现未处理的错误
- 为左值和右值的包装器实现C++范围
- 在 OpenCL 内核中实现半精度浮点数据类型
- OpenCL C++ Bindings:如何实现 enqueueWriteBuffer 竞争的回调
- 如何准确测量和比较opencl速度以实现循环功能的简单速度
- OpenCL实现的算法比正常循环慢
- 性能不佳基于OpenCL的OpenCV平方实现
- 在Intel Iris Graphics 6100 (MBP 2015)上实现OpenCL的OSX矢量宽度