CUDA精講(2) GPU體系結構之執行緒執行

2021-10-24 14:54:43 字數 1023 閱讀 7503

本講是cuda精講的第二部分,在cuda精講(1)中主要列出了cuda程式設計的一些基本概念。為了進一步地深入cuda的系統優化我們需要了解gpu的硬體體體系結構。大部分的處理器體系結構都可以分成計算、儲存、控制三部分。gpu中主要強調計算(thread exection)與儲存(memory hierarchy)兩部分,下面就以下兩部分進行展開。

cuda執行緒執行特點:

執行緒排程的基本單位warp

warp divergence

當執行的kernel函式中存在if分支的時候比如:

if

(foo

(threadidx.x)

)else

由於warp中的執行緒必須執行相同的指令,因此這些執行緒會限制性函式a,然後再執行函式b,最後再根據條件將函式a和函式b的結果進行合併。執行過程如下圖所示:

因此if中的分支會導致warp中的thread序列執行分支中的**。

if

(threadidx.x / warp_size >2)

iteration divergence, 迭代發散,當乙個kernel中存在乙個迭代迴圈的時候,有可能因為乙個thread的迴圈次數過多而導致乙個warp中的所有執行緒都要等待。

通過unroll減少for迴圈中條件判斷的次數:

例如:

還可以通過乙個簡單的方法來表示:

編譯器會自動的將這個語法展開。

原子操作,當多個執行緒同時去更改乙個資料的時候,可以通過原子操作進行同步,常見的原子操作指令有:

GPU體系結構

gpu的硬體結構,也不是具體的硬體結構,就是與cuda相關的幾個概念 thread,block,grid,warp,sp,sm。sp 最基本的處理單元,streaming processor 最後具體的指令和任務都是在sp上處理的。gpu進行平行計算,也就是很多個sp同時做處理 sm 多個sp加上其...

現代GPU的體系結構

大規模並行處理器程式設計實戰 第2版 全面更新了並行程式設計方法和技術的內容。本書旨在綜述並行程式設計,展示了專業人士和學生都可以使用的一種程式設計思維,以此來指導並行程式設計和優化應用程式,從而使效能得到顯著提公升。本節為大家介紹現代gpu的體系結構。ad 1.2 現代gpu的體系結構 採用cud...

oracle體系結構(2)

1.shared pool 共享池 share pool 是由library cache和data dictionary cache 構成 共享池是對sql,pl sql程式語法分析,編譯執行的記憶體區域。seared pool 的作用 1.用於儲存 最近執行的sql語句 最近使用的資料定義 2.它...