cuda並行程式設計系列是本人在學習cuda時整理的資料,內容大都**於對《cuda並行程式設計:gpu程式設計指南》、《gpu高效能程式設計cuda實戰》和cuda toolkit documentation
的整理。通過本系列整體介紹cuda並行程式設計。內容包括gpu簡介、cuda簡介、環境搭建、執行緒模型、記憶體、原子操作、同步、流和多gpu架構等。
本系列目錄:
在早期,計算機的效能隨著中處理器(cpu)的發展得到了很大的提公升,在摩爾定律的驅使下,cpu的時鐘頻率從30年前的1mhz發展到現在的1ghz~4ghz。但是,靠提高cpu時鐘頻率來提公升計算機效能在現在已經不是乙個好的方法了,隨著功耗的急劇公升高和電晶體的大小已經接近極限,硬體廠商需要需求其它的方案。其中乙個方案就是增加處理器的數量,現在所見到的大部分pc機都使用了多核處理器,像intel的i3、i5、i7系列都是多核cpu。但是,受體積和功耗的現在,cpu的核心數量也不能增加的太多。可以說,近幾年cpu並沒有得到突破性的發展,連知名程式設計師jeff atwood上次公升級pc也是2023年的事了
。在cpu發展的同時,圖形處理技術同樣經歷了巨大的變革,早期的gpu主要用於圖形顯示,以遊戲居多,在那時幾乎每一款新的大型遊戲推出都會引發顯示卡更換熱潮。圖形處理器直接執行圖形流水線功能,通過硬體加速渲染圖形,使得應用程式能實現更強的視覺效果。
gpu的計算能力以及並行性吸引了很多研究人員對把gpu應用於圖形之外的興趣,後來就出現了gpu通用計算(gpgpu)。2023年nvidia率先倡導使用gpu加速計算效能。
使用gpu加速,最主要的是讓程式並行執行,這點和pc集群技術是一樣的。乙個程式的大部分序列**依然在cpu上執行,而少部分可並行的(往往也是最耗時間的,如for迴圈)**在gpu上執行,如下圖。在這種方式下,程式的執行速度得到了很大的提公升。
現代的gpu使用了類似於集群技術,乙個gpu內有許多流處理器簇(streaming multiprocessor, sm),它們類似cpu的核。乙個gpu可能有成千上萬個核,因此就可以使程式在gpu上並行執行。對比cpu和gpu如下圖。
下面是nvidia官方給出的對比不同cpu和gpu在浮點型運算的效能:
)參考文獻
CUDA並行程式設計學習心得1
正在學習cuda中,寫一些自己學習中的心得,如有錯誤,歡迎指正 對於普通變數 如int型,float型等 不必在device端事先分配空間。在global函式宣告時,不要宣告為指標,直接宣告為int或float。global函式呼叫時也是。如果要在device端以指標形式使用這個變數,如下 floa...
cuda並行程式設計基礎(二)
二 一些基礎 上接 cuda並行程式設計基礎 一 二 cuda基礎 gridblock.cu 4.總計算量與block grid的關係 假設一維陣列總計算量為total c,怎麼確定block與grid呢?一維陣列 int cal array xx int thd num 16 dim3 block...
cuda程式設計 CUDA程式設計入門(四)並行歸約演算法
這一篇我們一起學習一下如何使用cuda實現並行歸約演算法。首先我們要知道什麼是並行歸約。並行歸約 reduction 是一種很基礎的並行演算法,簡單來說,我們有n個輸入資料,使用乙個符合結合律的二元操作符作用其上,最終生成1個結果。這個二元操作符可以是求和 取最大 取最小 平方 邏輯與或等等。我們以...