深入淺出談CUDA
2009-2-5 作者: he21he21 來源: he21he21關(guān)鍵字: CUDA NVIDIACUDA是什么?能吃嗎? 編者注:NVIDIA的GeFoce8800GTX發(fā)布后,它的通用計算架構(gòu)CUDA經(jīng)過一年多的推廣后,現(xiàn)在已經(jīng)在有相當多的論文發(fā)表,在商業(yè)應用軟件等方面也初步出現(xiàn)了視頻編解碼、金融、地質(zhì)勘探、科學計算等領(lǐng)域的產(chǎn)品,是時候讓我們對其作更深一步的了解。為了讓大家更容易了解CUDA,我們征得Hotball的本人同意,發(fā)表他最近親自撰寫的本文。這篇文章的特點是深入淺出,也包含了hotball本人編寫一些簡單CUDA程序的親身體驗,對于希望了解CUDA的讀者來說是非常不錯的入門文章,PCINLIFE對本文的發(fā)表沒有作任何的刪減,主要是把一些臺灣的詞匯轉(zhuǎn)換成大陸的詞匯以及作了若干"編者注"的注釋。 現(xiàn)代的顯示芯片已經(jīng)具有高度的可程序化能力,由于顯示芯片通常具有相當高的內(nèi)存帶寬,以及大量的執(zhí)行單元,因此開始有利用顯示芯片來幫助進行一些計算工作的想法,即GPGPU。CUDA即是NVIDIA的GPGPU模型。 NVIDIA的新一代顯示芯片,包括GeForce8系列及更新的顯示芯片都支持CUDA。NVIDIA免費提供CUDA的開發(fā)工具(包括Windows版本和Linux版本)、程序范例、文件等等,可以在CUDAZone下載。 GPGPU的優(yōu)缺點 使用顯示芯片來進行運算工作,和使用CPU相比,主要有幾個好處: 顯示芯片通常具有更大的內(nèi)存帶寬。例如,NVIDIA的GeForce8800GTX具有超過50GB/s的內(nèi)存帶寬,而目前高階CPU的內(nèi)存帶寬則在10GB/s左右。 顯示芯片具有更大量的執(zhí)行單元。例如GeForce8800GTX具有128個"streamprocessors",頻率為1.35GHz。CPU頻率通常較高,但是執(zhí)行單元的數(shù)目則要少得多。 和高階CPU相比,顯卡的價格較為低廉。例如目前一張GeForce8800GT包括512MB內(nèi)存的價格,和一顆2.4GHz四核心CPU的價格相若。 當然,使用顯示芯片也有它的一些缺點: 顯示芯片的運算單元數(shù)量很多,因此對于不能高度并行化的工作,所能帶來的幫助就不大。 顯示芯片目前通常只支持32bits浮點數(shù),且多半不能完全支持IEEE754規(guī)格,有些運算的精確度可能較低。目前許多顯示芯片并沒有分開的整數(shù)運算單元,因此整數(shù)運算的效率較差。 顯示芯片通常不具有分支預測等復雜的流程控制單元,因此對于具有高度分支的程序,效率會比較差。 目前GPGPU的程序模型仍不成熟,也還沒有公認的標準。例如NVIDIA和AMD/ATI就有各自不同的程序模型。 整體來說,顯示芯片的性質(zhì)類似streamprocessor,適合一次進行大量相同的工作。CPU則比較有彈性,能同時進行變化較多的工作。 CUDA架構(gòu) CUDA是NVIDIA的GPGPU模型,它使用C語言為基礎,可以直接以大多數(shù)人熟悉的C語言,寫出在顯示芯片上執(zhí)行的程序,而不需要去學習特定的顯示芯片的指令或是特殊的結(jié)構(gòu)。 |
|