OpenCL vloadn vs casting

OpenCL vloadn vs casting,opencl,vectorization,Opencl,Vectorization,我使用OpenCL优化算法,我想对内核进行矢量化。 在对齐数据的情况下,vloadn/vstoren是否比对所需向量的简单转换慢?据我所知,vloadn/vstoren不能提供更快的访问。它只提供访问内存的帮助器功能。 规格是你的朋友 基本上,强制转换和vloadn之间的唯一区别是vloadn允许您执行未对齐的加载(未对齐到向量大小,原语必须对齐)。如果对float4执行简单强制转换,指针必须与4*sizeof(float)边界对齐。如果对float4执行vloadn,指针必须与sizeof(f

我使用OpenCL优化算法,我想对内核进行矢量化。
在对齐数据的情况下,
vloadn/vstoren
是否比对所需向量的简单转换慢?

据我所知,
vloadn/vstoren
不能提供更快的访问。它只提供访问内存的帮助器功能。

规格是你的朋友

基本上,强制转换和vloadn之间的唯一区别是vloadn允许您执行未对齐的加载(未对齐到向量大小,原语必须对齐)。如果对float4执行简单强制转换,指针必须与4*sizeof(float)边界对齐。如果对float4执行vloadn,指针必须与sizeof(float)边界对齐

因此,人们可能会期望纯cast更快,因为它根本不需要检查对齐,而且在任何情况下,纯cast都不能慢一些,除非实现中有bug

tl;dr:vloadn在对齐数据的情况下可能比直接强制转换慢