我目前有一个大的浮点数数组,需要在我的OpenCL内核中处理。我想知道如果我将这个数组分成多个部分,并使用OpenCL向量类型的数组代替,是否能加快处理速度。换句话说,如果我有一个由4800个浮点数组成的数组,我会将其分成300个float16向量的数组。这样做能够利用SIMD技术吗?
我目前有一个大的浮点数数组,需要在我的OpenCL内核中处理。我想知道如果我将这个数组分成多个部分,并使用OpenCL向量类型的数组代替,是否能加快处理速度。换句话说,如果我有一个由4800个浮点数组成的数组,我会将其分成300个float16向量的数组。这样做能够利用SIMD技术吗?
这取决于OpenCL的实现方式以及程序执行的硬件。可能会有改进,也可能没有。
唯一的方法是在感兴趣的平台和实现上进行基准测试 - 对于向量大小的范围(例如比较1(标量),2,4,8和16)。