GPU上的整数和按位运算的性能

时间:2011-12-30 20:25:42

标签: performance opengl bit-manipulation glsl gpu

虽然GPU应该用于浮点数据类型,但我对GPU处理按位运算的速度有多快感兴趣。这些是CPU上最快的,但是GPU模拟按位运算还是在硬件上完全计算?我打算在用GLSL编写的着色器程序中使用它们。另外我认为如果按位运算具有完全性能,整数数据类型也应该有,但我需要确认。

更准确地说,目标版本是OpenGL 3.2和GLSL 1.5。应该运行的硬件是任何Radeon HD显卡和GeForce系列8及更新..如果新版本的OpenGL和GLSL与按位操作/整数的处理速度有一些重大变化,我会很高兴,如果你'将它们指出来。

1 个答案:

答案 0 :(得分:9)

这个问题得到了部分回答 Integer calculations on GPU

简而言之,现代GPU具有32位数据的等效INT和FP性能。因此,您的逻辑操作将以相同的速度运行。

从编程角度来看,如果处理SCALAR整数数据,则会失去性能。 GPU使用PARALLEL和PACKED操作。

for(int i=0; i<LEN_VEC4; i++)
    VEC4[i] = VEC4[i] * VEC4[i]; // (x,y,z,w) * (x,y,z,w)

如果你正在做某事......

for(int i=0; i<LEN_VEC4; i++)
    VEC4[i].w = (VEC4[i].x & 0xF0F0F0F0) | (VEC4[i].z ^ 0x0F0F0F0F) ^ VEC4[i].w;

...对同一向量的元素进行许多不同的操作会遇到性能问题。