2011-12-30 137 views
15

雖然GPU可用於浮點數據類型,但我會對GPU處理按位運算的速度感興趣。這些是CPU上最快的可能,但是GPU是模擬按位操作還是硬件完全計算?我打算在使用GLSL編寫的着色器程序中使用它們。另外我想如果按位操作具有完整的性能,整數數據類型也應該有,但我需要確認。GPU上的整數和按位運算的性能

更確切地說,目標版本是OpenGL 3.2和GLSL 1.5。應該運行這個硬件的是任何Radeon HD顯卡和GeForce系列8和更新的版本。如果OpenGL和GLSL的新版本與按位運算/整數的處理速度有關的一些重大變化,我會很高興,我會指出它們。

+0

您需要指定特定的GPU架構,或至少OpenGL版本。現在這個問題非常模糊。 – 2011-12-30 22:21:18

+0

@BenVoigt已更新,是否足夠精確,或者您需要架構的特定代碼名稱(它們會像每張新卡一樣更改它們) – Raven 2011-12-30 22:42:30

+0

Raven:Radeon HD 1xxx和HD 7xxx之間有一些巨大變化,但額外的信息是大的改進。假設您正在查看宣傳OpenGL 3.2支持(或更高版本)的卡片,這可能足夠清晰。 – 2011-12-30 23:10:03

回答

8

這個問題是部分答案 Integer calculations on GPU

總之現代GPU擁有32位數據的等效INT和FP性能。所以你的邏輯運算將以相同的速度運行。

從編程的角度來看,如果您正在處理SCALAR整數數據,將會失去性能。像使用PARALLEL和PACKED操作的GPU一樣。

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; 

...你會遇到性能問題的同一矢量的元素做許多不同的操作。

+0

感謝您的回答。結合鏈接後,這是足夠的,但我還有一個問題。正如所寫,INT和FP性能應該是一樣的。但是沒有什麼比較像FP的按位運算(或者至少它會很奇怪)。那麼他們說什麼是平等的?加入等等?如果是這種情況,對於INT數據類型,按位運算(例如移位)比數學運算(添加..)更快,或者性能也相同。 – Raven 2012-01-03 18:43:12

+0

「X位左移1」是否比「x + x」更快取決於體系結構。我希望當你的shadar被編譯時會發生一些優化(除非你在GPU組件中編寫它)。 「X除以2」的源比「X位右移1」慢,這是因爲除了比位移還有更多的邏輯涉及。 – 2012-01-04 12:44:26

+3

「GPU像處理PARALLEL和PACKED操作一樣。」 NVidia和AMD最新的GPU是標量架構。所以純標量運算的性能實際上高於矢量運算。 – datenwolf 2012-01-04 12:45:09