OpenCL向量类型使用SIMD吗?

8

我目前有一个大的浮点数数组,需要在我的OpenCL内核中处理。我想知道如果我将这个数组分成多个部分,并使用OpenCL向量类型的数组代替,是否能加快处理速度。换句话说,如果我有一个由4800个浮点数组成的数组,我会将其分成300个float16向量的数组。这样做能够利用SIMD技术吗?


2
OpenCL应该已经利用了底层硬件的SIMD特性,否则它对于GPU编程来说将是相当无用的。虽然CPU并不是OpenCL发挥其优势的完美领域,但我不确定它在CPU上的表现如何。 - Christian Rau
2个回答

7
Intel实际上描述了他们的OpenCL SDK所做的事情:请参见使用Intel® OpenCL SDK编写最佳OpenCL™代码。 作为基准测试的补充,您可能需要查看一下该文档。有趣的部分从第2.3章开始。
回答您的问题:是的,它将利用SIMD。但是,要“通过使用矢量数据类型最大限度地利用CPU向量单元”,您应该真正阅读该文档。

0

这取决于OpenCL的实现方式以及程序执行的硬件。可能会有改进,也可能没有。

唯一的方法是在感兴趣的平台和实现上进行基准测试 - 对于向量大小的范围(例如比较1(标量),2,4,8和16)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接