我使用OpenCL优化算法,我想对内核进行矢量化。在数据对齐的情况下,vloadn / vstoren比简单地转换为所需的向量慢吗?
发布于 2013-10-31 07:06:58
据我所知,vloadn / vstoren没有提供更快的访问速度。它只提供访问内存的助手功能。
发布于 2013-11-04 20:20:16
http://www.khronos.org/registry/cl/specs/opencl-1.1.pdf
规格是你的朋友。
基本上,强制转换和vloadn之间的唯一区别是vloadn允许您执行未对齐的加载(与向量大小不对齐,基元必须对齐)。如果对float4执行简单强制转换,则指针必须与4*sizeof(浮点数)边界对齐。如果对float4执行vloadn,则指针必须与sizeof(浮点数)边界对齐。
因此,人们可能会期望纯强制转换会更快,因为它根本不需要检查对齐,而且在任何情况下,纯强制转换都不可能更慢,除非实现被be。
在数据对齐的情况下,tl;dr: vloadn可能比直接转换慢。
https://stackoverflow.com/questions/19690835
复制相似问题