[導(dǎo)讀]在先前文章《近距離看GPU計(jì)算(2)》中,我們談到現(xiàn)代GPU發(fā)展出SIMT(SingleInstructionMultipleThread)的執(zhí)行結(jié)構(gòu),硬件線程池的線程們有相對獨(dú)立的運(yùn)行上下文,以Warp為單位分發(fā)到一組處理單元按SIMD的模式運(yùn)行。這些Warp內(nèi)的線程共享同樣的...
在先前文章《近距離看GPU計(jì)算(2)》中,我們談到現(xiàn)代GPU發(fā)展出SIMT(Single Instruction Multiple Thread)的執(zhí)行結(jié)構(gòu),硬件線程池的線程們有相對獨(dú)立的運(yùn)行上下文,以Warp為單位分發(fā)到一組處理單元按SIMD的模式運(yùn)行。這些Warp內(nèi)的線程共享同樣的PC,以鎖步的方式執(zhí)行指令,但是每個(gè)線程又可以有自己的執(zhí)行分支。很自然衍生的一個(gè)問題就是現(xiàn)代GPU如何有效的處理Branch Divergence(分支分歧)?一方面為適應(yīng)復(fù)雜圖形渲染以及通用計(jì)算的要求,GPU編程語言像其它高級語言一樣需要支持各種各樣的流控制(Flow Control)指令,比如if\switch\do\for\while等等,這些指令都會導(dǎo)致分支分歧。另一方面GPU并行計(jì)算的特點(diǎn)要求所有處理單元整齊劃一地執(zhí)行相同指令,才能夠取得性能最大化。如何較好地解決這兩種不同要求導(dǎo)致的沖突,一直是GPU研究中的熱點(diǎn)難點(diǎn)問題。在這里筆者沒有能力深入探討,只是淺嘗輒止做一般介紹,主要求這個(gè)系列內(nèi)容完整,不足甚至謬誤之處,請各位看官不吝指正。一,分支分歧對性能的影響這一節(jié)我們首先來討論下分支分歧對GPU性能的影響。以如下if\else代碼為例,我們看下GPU一般是如何來處理分支分歧的?if (cond) {...} else {...}假設(shè)一個(gè)Warp中有16個(gè)線程判斷條件為真,另外16個(gè)線程條件為假,所以一半線程會執(zhí)行if中的語句,另一半線程執(zhí)行else中的語句。這看起來像個(gè)悖論,我們知道Warp中的線程同一時(shí)刻只能執(zhí)行相同的指令。實(shí)際上遇到分支分歧時(shí)GPU會順序執(zhí)行每個(gè)分支路徑,而禁用不在此路徑上的線程,直到所有有線程使能的分支路徑都走完,線程再重新匯合到同一執(zhí)行路徑。如下圖所示,每個(gè)分支都有些線程不干活或者干無用功,Warp實(shí)際上需要執(zhí)行的指令數(shù)目大增。假設(shè)每個(gè)分支任務(wù)量大致相同,分支分歧造成的性能損失少則原先的一半,最壞的情況如果每個(gè)線程執(zhí)行分支都不一致,性能下降為最高時(shí)候的1/32。所以無論在設(shè)計(jì)算法還是分配處理數(shù)據(jù)的時(shí)候,我們都要小心盡量避免同一個(gè)Warp內(nèi)線程出現(xiàn)分支分歧的狀況,在遇到流控制指令的時(shí)候,最好能夠選擇同樣的路徑。二,如何實(shí)現(xiàn)Reconvergence
上一節(jié)我們講了Warp的線程產(chǎn)生了分支分歧之后,為求性能最佳,不可能讓它們一直放任自流,最終還是要盡可能在合適時(shí)機(jī)把它們重新匯合(Reconverge)起來。但這一切是如何實(shí)現(xiàn)的呢?按照參考1的說法,“The SM uses a branch synchronization stack to manage independent threads that diverge and converge”?。下面根據(jù)可接觸到的文獻(xiàn)我們看看大概是如何實(shí)現(xiàn)的,不一定跟GPU產(chǎn)商的實(shí)際做法一致。我們稱這個(gè)Warp運(yùn)行時(shí)棧為SIMT Stack,每個(gè)Warp擁有一個(gè)SIMT棧用于處理SIMT執(zhí)行模式中的分支分歧。首先我們需要先確定分支分歧的最近重匯合點(diǎn)(Reconvergence Point),一般可以選用造成分支分歧節(jié)點(diǎn)的直接后序支配節(jié)點(diǎn)(Immediate post-dominator,若控制流圖的節(jié)點(diǎn)n 到終結(jié)節(jié)點(diǎn)的每一條路徑均要經(jīng)過節(jié)點(diǎn)d,則稱節(jié)點(diǎn)d后序支配節(jié)點(diǎn)n,如d與n之間沒有任何其他節(jié)點(diǎn)后序支配n,則稱節(jié)點(diǎn)d直接后序支配節(jié)點(diǎn)n),這可以通過編譯時(shí)的控制流分析得到。如下圖所示,左邊是我們假想的一段GPU偽代碼,右邊是對應(yīng)的控制流圖,我們假設(shè)SIMD通道的數(shù)目是4,每個(gè)節(jié)點(diǎn)邊上的掩碼數(shù)字代表通道上線程在該節(jié)點(diǎn)基本塊有沒有使能。SIMT棧結(jié)構(gòu)每個(gè)條目由執(zhí)行指令PC、分支重匯合PC(RPC)和使能線程掩碼三部分組成。下圖反映了執(zhí)行流從節(jié)點(diǎn)B分支分歧到節(jié)點(diǎn)E重新匯合時(shí)SIMT棧的更新過程。執(zhí)行的時(shí)候,遇到流控制指令,我們將各個(gè)分支依次入棧,棧頂條目的PC會被送到取指單元開始相應(yīng)分支路徑的處理,只有條目掩碼中使能的線程會處于活躍狀態(tài),當(dāng)下一條PC等于棧頂條目RPC的時(shí)候,說明該分支已經(jīng)到了匯合點(diǎn),棧頂條目會被彈出,開始下一分支的處理以至所有執(zhí)行線程匯合并共同執(zhí)行接下來的指令。值得注意的是真實(shí)環(huán)境下GPU都設(shè)計(jì)有一些特殊指令來維護(hù)SIMT棧。下圖表示上面代碼在時(shí)間軸上的執(zhí)行過程,實(shí)心箭頭表示對應(yīng)線程在該執(zhí)行節(jié)點(diǎn)處于活躍狀態(tài),反之空心箭頭代表不活躍狀態(tài)。基于SIMT棧的Reconvergence方案并不完美,其中一個(gè)很大的問題是Warp內(nèi)線程細(xì)粒度同步的時(shí)候很容易引發(fā)死鎖。按照Nvidia的說法,"algorithms requiring fine-grained
sharing of data guarded by locks or mutexes can easily lead to deadlock,
depending on which warp the contending threads come from."。以下面代碼為例,某幸運(yùn)線程拿到鎖之后,在最近重匯合點(diǎn)C等著與大部隊(duì)接頭,不幸的是它無法執(zhí)行下面的Exch指令以釋放鎖,導(dǎo)致其它線程只能在B處空轉(zhuǎn),形成死鎖。從更高的層次上理解,分支分歧導(dǎo)致的順序執(zhí)行只發(fā)生在Warp內(nèi)的線程,Warp之間卻相互不受干擾,這種不一致的處理方式對算法移植的適應(yīng)性還是可預(yù)測性都會帶來影響。Nvidia從Volta GPU開始做出了改進(jìn),提出了"Independent Thread Scheduling"的方法,使得所有線程無關(guān)所在Warp可以具有同樣并發(fā)執(zhí)行能力,為此相比之前的GPU其Warp內(nèi)所有線程共享PC以及運(yùn)行棧,Volta GPU的線程都分別有各自的PC和運(yùn)行棧,如下圖所示。如此針對同樣的GPU程序以及分支分歧,Volta與之前的GPU相比有截然不同的調(diào)度行為。我們注意到在Volta中所有的Warp線程并沒有一起強(qiáng)制匯合執(zhí)行Z基本塊,主要考慮到Z可能作為生產(chǎn)者需要提供其它執(zhí)行分支依賴的的數(shù)據(jù)?;氐轿覀兿惹八梨i的例子,在Volta中這個(gè)死鎖便可迎刃而解。如果我們明顯了解相關(guān)分支不存在同步行為,為優(yōu)化性能計(jì),CUDA提供了?__syncwarp()?函數(shù)以便強(qiáng)制匯合。主要參考資料:NVIDIA Tesla: A Unified Graphics and Computing Architecture
- Dynamic Warp Formation and Scheduling for Efficient GPU Control Flow
- https://developer.nvidia.com/blog/inside-volta/
- General-Purpose?Graphics Processor Architectures
~~~~~~~~~~~~~~~~~~~~~~~~~~~~如果覺著內(nèi)容有幫助,請幫忙關(guān)注、點(diǎn)贊、在看并分享給更多的朋友。謝謝!
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
當(dāng)?shù)貢r(shí)間 3 月 30 日消息,法國大模型廠商 Mistral AI 完成首輪債務(wù)融資,總額達(dá)8.3 億美元,資金將全部用于擴(kuò)建 AI 算力基礎(chǔ)設(shè)施,核心用途為采購英偉達(dá) GPU。
關(guān)鍵字:
AI
Mistral
英偉達(dá)
GPU
面向所有熱愛硬核技術(shù)的你:這一次,用代碼說話,用性能封神。 北京2026年3月25日 /美通社/ -- 在 DeepSeek-R1 和 Kimi K2.5 等頂級開源模型確立了萬億參數(shù)的工業(yè)基準(zhǔn)后,真正的極限性能壓榨才...
關(guān)鍵字:
AMD
EPS
PSE
GPU
March 18, 2026 ---- 根據(jù)TrendForce集邦咨詢最新AI Server研究,在大型云端服務(wù)供應(yīng)商(CSP)加大自研芯片力道的情況下,NVIDIA(英偉達(dá))在GTC 2026大會改為著重各領(lǐng)域的AI...
關(guān)鍵字:
ASIC
GPU
CPU
可擴(kuò)展邊緣計(jì)算性能,從容應(yīng)對嚴(yán)苛應(yīng)用挑戰(zhàn)
關(guān)鍵字:
邊緣計(jì)算
CPU
GPU
Nscale收購Monarch計(jì)算園區(qū)——美國首個(gè)獲州認(rèn)證的AI微電網(wǎng),現(xiàn)場供電能力最高可擴(kuò)展至8吉瓦以上 Nscale與Microsoft簽署意向書,提供高達(dá)1....
關(guān)鍵字:
NVIDIA
MICROSOFT
GPU
TE
加州圣荷西2026年3月17日 /美通社/ -- 全球高效能、節(jié)能服務(wù)器解決方案領(lǐng)導(dǎo)廠商,神達(dá)控股股份有限公司(股票代號:3706)旗下子公司神雲(yún)科技股份有限公司(MiTAC Computing Technology C...
關(guān)鍵字:
NVIDIA
TC
AI
GPU
加利福尼亞州圣何塞 —— GTC —— 太平洋時(shí)間 2026 年 3 月 16 日 —— NVIDIA 今日宣布,正與包括 Cadence、達(dá)索系統(tǒng)、PTC、西門子和新思科技等在內(nèi)的全球領(lǐng)先工業(yè)軟件廠商合作,將 NVID...
關(guān)鍵字:
GPU
AI
數(shù)字孿生
上海2026年3月12日 /美通社/ -- 繼3月5日在硅谷成功舉辦全球品牌發(fā)布會后,圖靈進(jìn)化攜其AI全棧解決方案首次亮相中國家電及消費(fèi)電子博覽會(AWE 2026)。 在展會上,圖靈進(jìn)化展示了覆蓋AI算力、存儲、...
關(guān)鍵字:
芯片
GPU
PS
全棧
礪算科技AWE2026:50余款專業(yè)應(yīng)用、近百款游戲適配,國產(chǎn)GPU交出實(shí)績
關(guān)鍵字:
礪算科技
AWE
渲推一體
GPU
芯原成熟的GPU、顯示處理與畸變矯正IP三者協(xié)同,支持AR顯示處理實(shí)現(xiàn)高度集成與低時(shí)延
關(guān)鍵字:
AR顯示
處理器
GPU
Feb. 25, 2026 ---- 根據(jù)TrendForce集邦咨詢最新AI server產(chǎn)業(yè)研究,為加速AI應(yīng)用導(dǎo)入與升級,全球云端服務(wù)供應(yīng)商(CSP)持續(xù)加強(qiáng)投資AI server及相關(guān)基礎(chǔ)建設(shè),預(yù)計(jì)2026年八大...
關(guān)鍵字:
AI
ASIC
GPU
Feb. 13, 2026 ---- 根據(jù)TrendForce集邦咨詢最新HBM產(chǎn)業(yè)研究,隨著AI基礎(chǔ)建設(shè)擴(kuò)張,對應(yīng)的GPU需求也不斷成長,預(yù)期NVIDIA(英偉達(dá)) Rubin平臺量產(chǎn)后,將帶動HBM4需求。目前三大存...
關(guān)鍵字:
HBM4
AI
GPU
Feb. 10, 2026 ---- 根據(jù)TrendForce集邦咨詢最新高速互連市場研究,為應(yīng)對AI所需的龐大運(yùn)算需求,Google(谷歌)新世代Ironwood機(jī)柜系統(tǒng)結(jié)合3D Torus網(wǎng)絡(luò)拓?fù)洹pollo OC...
關(guān)鍵字:
AI
數(shù)據(jù)中心
GPU
1月27日消息,國產(chǎn)GPU迎來了重磅更新,這家名叫天數(shù)智芯的公司發(fā)布的四代架構(gòu)路線圖顯示,明年超英偉達(dá)Rubin架構(gòu)。
關(guān)鍵字:
GPU
5nm
上海2026年1月22日 /美通社/ -- 以下報(bào)道來自海峽導(dǎo)報(bào): 2025年末,隨著摩爾線程、沐曦股份在科創(chuàng)板上市后股價(jià)表現(xiàn)強(qiáng)勁,及2026年初壁仞科技成功登陸港股,國產(chǎn)高端GPU領(lǐng)軍企業(yè)集群加速對接資本市場。如今,...
關(guān)鍵字:
GPU
IP
進(jìn)程
BSP
1月21日消息,被稱為國產(chǎn)GPU第一股的摩爾線程今晚發(fā)布了2025年報(bào)預(yù)告,營收14.5億元到15.2億元,同比增長230.70%到246.67%,但依然虧損9.5億元到10.6億元。
關(guān)鍵字:
GPU
5nm
1月20日消息,最近,基于兆芯開勝KH-40000 32核心處理器打造的高性能服務(wù)器產(chǎn)品,成功落地南非塞拉利昂寶石礦區(qū)預(yù)測系統(tǒng),為礦產(chǎn)資源勘探提供核心算力支撐。
關(guān)鍵字:
CPU
GPU
上海2026年1月2日 /美通社/ -- 北京時(shí)間2026年1月2日,啟明創(chuàng)投投資企業(yè)、國產(chǎn)GPU領(lǐng)軍企業(yè)壁仞科技成功登陸港交所,成為2026年港股首家上市企業(yè)。壁仞科技(06082.HK)發(fā)行價(jià)為19.6港元/股,開盤...
關(guān)鍵字:
GPU
AI
芯片
智能計(jì)算
1月6日消息,在“全球最快游戲CPU”這個(gè)頭銜上,現(xiàn)在的AMD不可能讓步。
關(guān)鍵字:
CPU
GPU
隨著GPU功耗的持續(xù)攀升,AI服務(wù)器環(huán)境中的供電需求不斷增長,本文圍繞此趨勢展開討論。文中重點(diǎn)闡述了供電架構(gòu)從48V向800V的轉(zhuǎn)型變化,并探討了隨著數(shù)據(jù)中心基礎(chǔ)設(shè)施的演進(jìn),ADI在高壓熱插拔保護(hù)領(lǐng)域的持續(xù)創(chuàng)新成果。
關(guān)鍵字:
熱插拔保護(hù)
GPU
AI服務(wù)器