1. 程式人生 > >CUDA C編程——NO.1

CUDA C編程——NO.1

int ati perf images htm graph nes 語言 ram

CUDA C編程

啥玩意是CUDA?

CUDA? is a parallel computing platform and programming model invented by NVIDIA. It enables dramatic increases in computing performance by harnessing the power of the graphics processing unit (GPU).
CUDA是一個由NVIDIA公司發明的並行計算平臺和編程模型,提供high leve的接口。它利用圖形處理單元(GPU)的強大功能,使計算性能大幅提高。關於CUDA的安裝可以參閱Cuda9.0安裝,這裏就不在啰嗦了。

GPU和CPU的區別?

GPU是為了計算密集型(compute-intensive )、高度並行計算任務(如:圖形繪制之類)專門設計的,根據下圖可以明顯的看出,GPU比CPU擁有更多的處理數據的傳感器(arithmetic and logic unit,算數邏輯單元),而不是高速數據緩存(cache)和流處理(flow control)。
技術分享圖片

CUDA模型以及用CUDA編寫的應用程序

數據並行處理將數據元素映射到並行處理線程。通過並行處理模型,可以使處理大量數據的應用程序加快處理的速度。所以,通過CUDA庫可以調用GPU進行運算,獲得比CPU更高效的處理數據能力。隨著多核CPU和多核GPU的出現,意味著現在的處理器芯片就是並行系統。而且,他的並行性也符合摩爾定律。但是這也給編程人員帶來了極大挑戰,因為透明地擴展其並行性以利用越來越多的處理器內核並不是那麽的容易。所以NVIDIA公司就開發了CUDA,提供C語言的超級,用來輕松的編寫並發程序。

CUDA模型提供細粒度的數據和線程並行模型,嵌套在粗粒度的並行模型。通過CUDA,程序員可以將一個程序分割為若幹個可以並行處理的獨立子任務。

技術分享圖片

如上圖所示,一個多線程的程序可以分割為具有多個thread的block。因此,程序可以自動發現並執行在多個GPU上,從而縮短程序的運行時間。

接下來,將會再介紹CUDA模型。

CUDA C編程——NO.1