在電腦市場很不容易看到全新的領域出現,而當有潛力的技術在醞釀時,就會看到各大廠以前所未有的積極態度來面對。雖然可能很多人對這個沒興趣,大概五年內不會出現相關的消費端產品,但GPGPU真的開始竄起了。

Intel上週購併了一家 neoptica公司,這是一家開發GPGPU API的公司,Intel會買下他們並不奇怪,但還是有些許驚訝就是了。





因為遊戲的需求,顯示晶片在DirectX 8時代開始導入Shader技術,用程式碼來輸出畫面特效,而NVIDIA和ATI之間的白熱化競爭,讓GPU以等比級數成長,每一代都加入愈來愈多的平行執行單元,在2005年左右,GPU的浮點運算能力就已經遠遠超越當時最快的CPU,即使之後CPU往多核心發展,還是完全追趕不上GPU,近年來差距越來越大。而這造就新的GPGPU領域,就是拿顯示晶片來做非顯示相關的運算,善用它超高的浮點運算能力。

可是GPU都是拿來跑DirectX或OpenGL的,突然要做一般運算,對非顯示相關的程式開發人員來說很麻煩,在CPU上有通用的C語言可以寫,但換到GPU就得用DirectX或OpenGL,這兩個是截然不同的語言。但GPU又不能獨立於CPU之外,因為處理非平行運算時,GPU的速度慢的可怕,CPU和GPU剛好是互補的,缺一不可!

所以NVIDIA在GeForce 8這一代推出CUDA、AMD在RV670這代推出Brook+,這兩個都是GPGPU API,他們的用意就是做CPU與GPU之間的程式橋梁,只要用CUDA和Brook+寫程式,編譯器會自動把適合的程式丟給CPU或GPU,GPU的部分會自動轉換成DirectX或OpenGL,而CUDA和Brook+的寫法也很像C。這樣程式設計師就只要熟悉C語言就夠了,而不會C語言的設計師幾乎是找不到的...

AMD和NVIDIA都自行開發API了,但Intel在GPU領域落後這兩家好幾年了,原本Intel都習慣自行開發適合自己的軟體,但這次他們也被迫去買了,neoptica也有開發類似的GPGPU API,同樣也是用C語言當橋梁,幾乎跟CUDA、Brook+一模一樣,在Nehalem之後應該就會看它到實用化,我原本以為Intel會用x86 SIMD指令集做GPGPU,結果還是採用neoptica較有效率的方案。


neoptica的白皮書:http://www.neoptica.com/NeopticaWhitepaper.pdf
這篇白皮書寫的不錯,把現在GPGPU的困境與瓶頸寫的很清楚。