我使用 OpenCL 优化算法,我想对内核进行矢量化。在对齐数据的情况下,是否vloadn / vstoren
比简单转换为所需的向量更慢?
问问题
885 次
2 回答
0
http://www.khronos.org/registry/cl/specs/opencl-1.1.pdf
规格是你的朋友。
基本上 cast 和 vloadn 之间的唯一区别是 vloadn 允许您执行未对齐的加载(未对齐到矢量大小,基元必须对齐)。如果对 float4 执行简单转换,则指针必须与 4*sizeof(float) 边界对齐。如果您对 float4 执行 vloadn,则指针必须与 sizeof(float) 边界对齐。
因此,人们可能会期望纯强制转换更快,因为它根本不需要检查对齐,并且在任何情况下,纯强制转换都不会更慢,除非实现出现错误。
tl;dr:在对齐数据的情况下,vloadn 可能比直接强制转换慢。
于 2013-11-04T12:20:15.647 回答
0
据我所知vloadn / vstoren
,不提供更快的访问。它仅提供访问内存的辅助功能。
于 2013-10-30T23:06:57.633 回答