CUDA學習筆記一 GPU基本架構

2021-10-05 21:24:22 字數 2029 閱讀 6818

以fermi gpu為例:

左側是乙個粗略的gpu架構圖,可以看到gpu由「視訊記憶體」和「計算單元」組成,有以下幾個部分:

dram:dynamic random access memory,即gpu的視訊記憶體,容量較大,速度慢,cpu和gpu都可以訪問。dram相當於cpu的ram,裡面存放的資料斷電就沒有了。

sm:streaming multiprocessor,即計算單元,乙個gpu有多個sm。cpu可以使多核的,比如四核八核,而gpu的核心就特別多,乙個sm裡面包含多個核心(core)。

l2 cache:這是乙個二級快取,比如當我們在cpu上執行100個1相加的時候,首先計算1+1,將結果2儲存,再繼續計算2+1,如此迴圈。但是由於在記憶體上讀寫資料耗費時間,我們只需要將中間結果儲存在快取裡面,將最後結果寫入記憶體即可。所有快取大致就是這個作用。

每乙個sm的架構如同右邊所示:

core:每乙個sm裡面包含的多個核心。

sp:streaming process(圖中沒有),乙個sm有多個sp,sp是最基本的處理單元,最後的指令和任務都是在sp上完成的,現在sp的概念被弱化,用執行緒(thread)代替,乙個sp對應乙個thread。(這裡或許理解還有些問題,因為我查資料發現又有些說法是sm和streaming process是同乙個東西,而前面說的乙個sm有多個sp是指scalar processor

warp:在sm裡面將sp(thread)進行分組,一般每32個thread稱為乙個warp,gpu裡面有乙個叫wrap scheduler的排程器,確保每乙個warp即這32個執行緒裡面執行的內容是相同的。

dispatch unit:指令分發單元,指令分發單元和執行硬體之間有乙個完整的交叉開關(crossbar),每個單元都可以向 sm 內的任何單元分配執行緒(不過存在一些限制)。

ld/st:load/store,用於記憶體操作的,讀取單元。

sfu:special function unit,來執行超指令(transcendental instruction)如正弦、余弦、倒數和平方根等函式。每個 sfu 一次執行乙個執行緒塊中乙個執行緒的一條指令。

register和l1:都表示快取,不過gpu裡面關於快取的知識較為複雜,之後會列出。

其他補充

gpc:graphics processing cluster,圖形處理集群,乙個gpu有多個gpc,乙個gpc包含多個sm。

spa:streaming process array,sp的陣列

register file:簡稱rf,是暫存器

每乙個core架構:

如圖所示是gpu裡面core部分的架構,在了解core之前首先要知道什麼是異構計算:

異構架構計算:gpu和cpu協同工作,cpu端稱為主機端用host表示,gpu端稱為裝置端用device表示。gpu和cpu連線一般協議是pci-e,速度可達16g/s或者32g/s,最新的協議有nvme,延遲更小。

每乙個core裡面包含多個grid,每乙個grid裡面包含多個block,每乙個block裡面包含多個thread。在執行**時會涉及到對於執行緒的分配,我會在之後的學習筆記中貼出。

CUDA學習 GPU記憶體

通俗意義上的裝置記憶體 位置 裝置記憶體。形式 關鍵字 shared 新增到變數宣告中。如 shared float cache 10 目的 對於gpu上啟動的每個執行緒塊,cuda c編譯器都將建立該共享變數的乙個副本。執行緒塊中的每個執行緒都共享這塊記憶體,但執行緒卻無法看到也不能修改其他執行緒...

《GPU高效能程式設計CUDA實戰》學習筆記(五)

add dev a,dev b,dev c 尖括號中 n 開啟了n個執行緒塊 1 每個執行緒塊中建立1個執行緒。共啟動的執行緒數量 n個執行緒塊 1個執行緒 執行緒塊 n個並行執行緒 本節完成上一章相同任務。但執行緒塊中的並行能完成並行執行緒塊無法完成的工作。1.使用執行緒實現gpu上的向量求和 1...

《GPU高效能程式設計CUDA實戰》學習筆記 1

gpu高效能程式設計cuda實戰 中 整理 gpu高效能程式設計cuda實戰 學習筆記 三 cuda程式設計 gpu架構,由sp,sm,thread,block,grid,warp說起 cuda並行程式設計 gpu程式設計指南 讀書筆記 1 執行緒網格 執行緒塊以及執行緒 sp streaming ...