我目前在我的OpenCL内核中处理了大量的浮点数我想知道如果我将这个数组分开并使用OpenCL矢量类型数组,如果它会加快进程。基本上如果我有一个4,800个浮点数组,我会把它分成300个float16向量的数组。这会利用SIMD吗?
答案 0 :(得分:7)
英特尔实际上描述了他们的OpenCL SDK的作用:见Writing Optimal OpenCL™ Code with Intel® OpenCL SDK。您可能想要检查一下,作为基准测试的补充。有趣的部分从第2.3章开始。
回答你的问题:是的,它会利用SIMD。但要“通过使用矢量数据类型最大限度地利用CPU矢量单位”,您应该真正阅读该文档。
答案 1 :(得分:0)
它可能,也可能不会。它取决于OpenCL的实现,以及程序执行的硬件。
查看它是否提供改进的唯一方法是对感兴趣的平台和实现进行基准测试 - 对于矢量大小范围(例如,比较1(标量),2,4,8和16)。