CUDA簡介

yyfn風辰發表於2009-12-28
GPU是圖形處理單元(Graphic Processing Unit)的簡稱,最初主要用於圖形渲染。自九十年代開始,GPU的發展產生了較大的變化,NVIDIAAMD(ATI)GPU生產商敏銳的觀察到GPU天生的並行性,經過他們對硬體和軟體的改進,GPU的可程式設計能力不斷提高,GPU通用計算應運而生。由於GPU具有比CPU強大的計算能力,為科學計算的應用提供了新的選擇。

最早的GPU的開發直接使用了圖形學的API,將任務對映成紋理的渲染過程,使用匯編或者高階著色器語言CgHLSL等編寫程式,然後通過圖形學API執行(Direct3DOpenGL),這樣的開發不僅難度較大,而且難以優化,對開發人員的要求非常高,因此,傳統的GPU計算並沒有廣泛應用。

20076月,NVIDIA公司推出了CUDA(Compute Unified Device Architecture)CUDA不需要藉助圖形學API,而是採用了類C語言進行開發。同時,CUDA採用了統一處理架構,降低了程式設計的難度,使得NVIDIA相比AMD/ATI後來居上。相比AMDGPUNVIDIA GPU引入了片內共享儲存器,提高了效率。這兩項改進使CUDA架構更加適合進行GPU通用計算。由於這些特性,CUDA推出後迅速發展,被應用於石油勘測、天文計算、流體力學模擬、分子動力學模擬、生物計算、影像處理、音視訊編解碼等領域。

由於採用的是C/C++編譯器為前端,以C/C++語法為基礎設計,因此對熟悉C系列語言的程式設計師來說,CUDA的語法比較容易掌握。CUDA只對ANSI C進行了最小的必要擴充套件,以實現其關鍵特性--執行緒按照兩個層次進行組織、共享儲存器和柵欄同步。

這些關鍵特性使得CUDA擁有了兩個層次的並行:執行緒級並行實現的細粒度資料並行,和任務級並行實現的粗粒度並行。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23057064/viewspace-623802/,如需轉載,請註明出處,否則將追究法律責任。