OpenCL:NVIDIA的向量寄存器(float4,float8,..)VS英特尔的向量寄存器

时间:2012-02-11 15:47:32

标签: opencl intel nvidia cpu-registers

我知道对于Intel来说,矢量寄存器是经过优化的,例如SandyBridge微体系结构(SSE + AVX),但NVIDIA的GPU怎么样?

我在某处读到的一些资料(我忘了哪里)说使用矢量寄存器对于NVIDIA的GPU来说是无用的。但是我有一个testrun在GPU上运行带有矢量寄存器的程序,并且比较它们的那个,他们确实给了我apx。 1.7倍加速。

仅供参考英特尔的CPU仅为同一程序提供1.25倍的加速。

因此,如果NVIDIA确实优化了这些向量寄存器,有人可以给我一个解释或来源阅读吗?我需要它用于文档。感谢。

1 个答案:

答案 0 :(得分:2)

NVIDIA GPU上性能改进的可能来源是内存吞吐量。硬件可以在每个多处理器的单个事务中对64位和128位类型进行存储和加载,从而减少总体延迟并提高有效吞吐量。硬件可以处理每个warp 256和512字节的事务大小,因此可以在单个事务中为warp提供适当对齐的float4加载/存储请求,并在两个事务中提供float8加载/存储请求交易。这可以在任何给定的占用级别上产生更高的全局存储器带宽利用率。请参阅加州大学伯克利分校的Vasily Volkov的this presentation幻灯片35,了解CUDA中的memcpy内核示例,该示例说明了类型大小(以及由此产生的事务大小)对内存吞吐量的影响。