CSE 599W: system for ML 05:GPU架構

CPU與GPU的計算模塊差別在這裏插入圖片描述在這裏插入圖片描述

以上爲CPU架構與GPU架構的主要區別:
圖一可見:CPU在ALU的計算一個步驟之外還有許多額外的開銷。
圖二展示了CPU,AVX(高級矢量擴展指令集),以及GPU的計算模塊。可以看出GPU在ALU的數量上具有相當大的優勢,因此在計算密集度高的場景上有可以有相對高的計算能力。

在這裏插入圖片描述
以上爲完整的GPU結構。
在這裏插入圖片描述
圖三中的每一個綠色小塊都是一個SM,而每個SM的詳細結構如圖四。

CPU與GPU的存儲單元差別

在這裏插入圖片描述
在這裏插入圖片描述
可以看出GPU擁有更大的register,且其L1 cache受programmer控制。屬於顯式的存儲控制。
而CPU則依靠內部的流水線操作進行調度,屬於隱式的存儲控制。
下圖則給出了不同等級的存儲訪問時的延遲實例。
在這裏插入圖片描述

GPU編程模型

在這裏插入圖片描述
1、上圖中引出了GPU使用中無法繞開的一個概念:kernel。
由於GPU的實現是多線程的,其加速計算的根本也是基於多線程中warps的快速轉換。
kernel的定義是一組線程塊(block)組成的網格(grid),而這些block之間相互獨立,沒有依賴關係,可以被GPU以任意順序調度。

Q:爲什麼要把thread封裝爲block?爲什麼要把block封裝爲kernel?同一個block的thread除了需要執行同步之外,還有什麼特點?同kernel問?

在這裏插入圖片描述
上圖解釋了GPU的硬件結構(SM)與軟件線程塊(block)的關係:
block對應於硬件的SM,一個block被一個SM執行,並且在執行中不會發生遷移。
而根據SM能提供的存儲資源和線程塊存儲要求,幾個同時併發的線程塊(block)可以駐留在同一個SM內。如圖,一個kernel中的8個block被分配給2個SM單元執行,或分成4個SM單元執行。
在這裏插入圖片描述
上圖提到了warp的概念,warp是kernel執行的基本調度單位,有由32個線程組成。而在warp之上是block,32個warp組成一個block。在每個時鐘週期,warp scheduler會選擇一個準備好的warp,並將其分配到CUDA core裏執行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章