在OpenCL中使用floatN而不是float时有什么优势吗?
例如
float3 position;
Run Code Online (Sandbox Code Playgroud)
和
float posX, posY, posZ;
Run Code Online (Sandbox Code Playgroud)
谢谢
这取决于硬件.
NVidia GPU具有标量架构,因此与仅编写纯标量代码相比,向量几乎没有优势.引用NVidia OpenCL最佳实践指南(PDF链接):
CUDA架构是一种标量架构.因此,使用矢量类型和指令没有性能优势.这些只应该用于方便.一般来说,拥有更多的工作项目比使用大型矢量更少.
使用CPU和ATI GPU,您将从使用向量中获得更多好处,因为这些架构具有向量指令(尽管我听说在最新的Radeons上可能有所不同 - 希望我有一个链接到我阅读本文的文章).
引用ATI Stream OpenCL编程指南(PDF链接),用于CPU:
CPU(SSE)中的SIMD浮点资源需要使用矢量化类型(float4)来生成打包的SSE代码,并从SIMD硬件中提取良好的性能.
本文提供了使用向量与纯标量类型编写的内核的ATI GPU的性能比较.
归档时间: |
|
查看次数: |
2688 次 |
最近记录: |