淺談 GPU

剛看到大神的blog上有一篇在講「用 GPU 跑 FFT」的文章,剛好自己在研究跟 GPU 有關的議題(不過我不是研究 GPU programming 就是了),所以就稍微講一下自己的心得。

GPU 顯示卡上的處理器,它本來就已經是特化過的處理器,主要用途是加速 3D graphics rendering 會用到的運算(比方說 T&L, Rasterize, shading, 等等),而 3D graphics 用的 primitive data type 大多是 float,這意味著 GPU 裡面一定有很多 float-point ALU,這剛好可以用來彌補 CPU 上缺乏的部份,再加上 3D graphics 的運算本身就有很高度的平行性,所以 GPU 也多會被設計得具有強大的平行處理能力(感覺像是 CPU 上的 superscalar),GPGPU 就是因應而生的一種 programming model,它使用一種名為 Brook 語言的概念來利用 GPU 達到平行計算的效果,這種 programming model 會隨著多核處理器的普及而日益重要,日前有機會聽到 Intel Microarchitecture Lab. 裡某個學長的演講,就發現 Intel 已經研究這個 programming model 有一些時間了,看來他們正準備 push devleoper 們改用這一類的 programming model 來重寫程式(這樣 Intel 才更有理由說服大家換多核處理器呀!)

除了 PC 上的 GPU 之外,其它像是 PS2, XBOX 早就有人拿來作 clustering 之類的運算了,當然你也可以透過 Chromium project 來用 NoW(Network of Workstations)作 clustering rendering。

總而言之,會借用 GPU 強大的運算能力是勢在必行,只是以 SoC 火熱發展的今天,以後會不會把 GPU 整合進同一顆 CPU 裡還真是難說(不過 CPU 的耗電及溫度大概就要嚇死人了吧XD)