float VS floatN

Mic*_*lle 3 opencl

在OpenCL中使用floatN而不是float时有什么优势吗?

例如

float3 position;
Run Code Online (Sandbox Code Playgroud)

float posX, posY, posZ;
Run Code Online (Sandbox Code Playgroud)

谢谢

pru*_*nge 8

这取决于硬件.

NVidia GPU具有标量架构,因此与仅编写纯标量代码相比,向量几乎没有优势.引用NVidia OpenCL最佳实践指南(PDF链接):

CUDA架构是一种标量架构.因此,使用矢量类型和指令没有性能优势.这些只应该用于方便.一般来说,拥有更多的工作项目比使用大型矢量更少.

使用CPU和ATI GPU,您将从使用向量中获得更多好处,因为这些架构具有向量指令(尽管我听说在最新的Radeons上可能有所不同 - 希望我有一个链接到我阅读本文的文章).

引用ATI Stream OpenCL编程指南(PDF链接),用于CPU:

CPU(SSE)中的SIMD浮点资源需要使用矢量化类型(float4)来生成打包的SSE代码,并从SIMD硬件中提取良好的性能.

本文提供了使用向量与纯标量类型编写的内核的ATI GPU的性能比较.