在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

GPU Microarch學(xué)習(xí)筆記

處理器與AI芯片 ? 來源:處理器與AI芯片 ? 2023-08-14 14:39 ? 次閱讀

Warp

GPU的線程從thread grid 到threadblock,一個(gè)thread block在CUDA Core上執(zhí)行時(shí),會(huì)分成warp執(zhí)行,warp的顆粒度是32個(gè)線程。比如一個(gè)thread block可能有1024個(gè)線程,那么就會(huì)分成32個(gè)warp執(zhí)行。

ddb374e6-390d-11ee-9e74-dac502259ad0.png

上圖的CTA(cooperative thread arrays)即為thread block。

Warp內(nèi)的32個(gè)線程是以lock-step的方式鎖步執(zhí)行,也就是在沒有遇到分支指令的情況下,如果執(zhí)行,那么執(zhí)行的都是相同的指令。通過這種方式32個(gè)線程可以共享pc,源寄存器ID和目標(biāo)寄存器ID。

雖然warp是以32的顆粒度,但是具體在GPU內(nèi)部執(zhí)行時(shí),也可能是以16的顆粒度,分兩次執(zhí)行,比如早期的fermi架構(gòu)。

dddfa098-390d-11ee-9e74-dac502259ad0.png

如上圖所示,兩個(gè)warp scheduler,每個(gè)warp每次只能在16個(gè)CUDA core上執(zhí)行。

后續(xù)的Pascal GPU架構(gòu) CUDA core增加到了32個(gè),每個(gè)周期都能執(zhí)行一個(gè)warp。

de11a43a-390d-11ee-9e74-dac502259ad0.png

寄存器

GPU的寄存器數(shù)量是影響劃分CUDA thread block的數(shù)量的原因之一,如下圖所示[1]。

de51f210-390d-11ee-9e74-dac502259ad0.png

雖然內(nèi)部執(zhí)行是按照warp執(zhí)行的,按照調(diào)度順序和ready進(jìn)行調(diào)度。但是寄存器的分配是靜態(tài)的按照thread number分配的,而不是warp。在warp執(zhí)行時(shí),32個(gè)線程,每個(gè)線程讀取源寄存器,寫入目標(biāo)寄存器。假設(shè)每個(gè)寄存器4B,那么每次32個(gè)線程讀取128B。

因而128B也就是GPU L1 Cache Cacheline的大小。不同于CPU,每一級(jí)的cache都要維護(hù)MOSEI的一致性,對(duì)于GPU的thread來說,私有memory不需要共享,因此對(duì)于local memory可以write back。而全局共享memory則可以write evict。

CPU的寄存器,在編譯器編譯時(shí),會(huì)根據(jù)寄存器的live time進(jìn)行優(yōu)化,而且在CPU內(nèi)部執(zhí)行時(shí),進(jìn)行重命名,在有限的寄存器數(shù)量上盡量地解決依賴問題。

GPU只在編譯時(shí)優(yōu)化,盡量減少對(duì)memory的使用,在內(nèi)部執(zhí)行時(shí),如果針對(duì)每個(gè)warp都增加一個(gè)寄存器重命名單元,設(shè)計(jì)復(fù)雜。因此GPU每個(gè)線程需要的寄存器就是它編譯時(shí)需要的寄存器上限(寄存器上限也可以通過編譯器控制)。這就導(dǎo)致了實(shí)際GPU內(nèi)部執(zhí)行時(shí)對(duì)寄存器使用數(shù)量的波動(dòng)。如下圖[2]所示,因此也有很多文章研究如何優(yōu)化寄存器的使用。

de8424f6-390d-11ee-9e74-dac502259ad0.png

在編譯時(shí),nvcc可以通過指定--maxrregcount指定寄存器的數(shù)量,但是過多的寄存器會(huì)因?yàn)楣潭ǖ募拇嫫髻Y源而導(dǎo)致thread數(shù)量變少,過少的寄存器也會(huì)導(dǎo)致需要頻繁的訪問memory,因此也需要折衷。

deadf132-390d-11ee-9e74-dac502259ad0.png

WARP Divergence

之前討論warp時(shí)說如果32個(gè)線程,沒有遇到分支,那么每個(gè)線程都執(zhí)行同一條指令,但是如果存在分支呢?

GPU沒有CPU的分支預(yù)測(cè),使用active mask和predicate register來構(gòu)建token stack來處理遇到分支時(shí)的問題。

GPGPU-sim按照下圖[3]模擬的token stack,其中的

def25c8c-390d-11ee-9e74-dac502259ad0.png

另一種可能的token stack則是按照如下的方式構(gòu)建,結(jié)合了指令,predicateregister和token stack。

df2592c8-390d-11ee-9e74-dac502259ad0.png

上圖[4]中的(b)即為編譯出的匯編指令,SSY 0xF0即為push stack,if else分支指令結(jié)束重聚的指令地址為0xF0。每個(gè)warp會(huì)有當(dāng)前的active pc寄存器和active mask寄存器。我們假設(shè)一個(gè)warp內(nèi)有8個(gè)thread,在SSY0xF0指令執(zhí)行時(shí),會(huì)將active mask 壓棧,壓棧的內(nèi)容包括Fig1中的entry type SSY,active mask和re-convergence pc,也就是0xF0(從SSY 0xF0指令可以獲得).

在分支指令@PO BRA 0xB8執(zhí)行時(shí),會(huì)將DIV(divergence),activemask(0xF0,這個(gè)并非pc,而是active mask,當(dāng)前warp的每個(gè)thread的predicateregister拼接而成,8bit 每個(gè)bit表示一個(gè)thread是否滿足if條件)和 0xB8(if語(yǔ)句塊內(nèi)的第一條指令的地址)壓棧。

然后gpu會(huì)默認(rèn)執(zhí)行else分支(因?yàn)閕f需要跳轉(zhuǎn),else直接順序執(zhí)行),執(zhí)行else分支時(shí),需要對(duì)active mask取反,只執(zhí)行不滿足if條件的那些thread。

Else分支的最后一條匯編指令末尾會(huì)增加.S flag用于標(biāo)志popstack,此時(shí)pop指令會(huì)將active mask出棧,更新到active mask寄存器和active pc中,然后執(zhí)行if 分支,直到執(zhí)行完畢if內(nèi)的最后一條指令,對(duì)應(yīng)地址0xE8,此時(shí)再次出棧。

將當(dāng)前active pc更新為0xF0,activemask更新為0xFF,此時(shí)if else分支執(zhí)行完畢,回到重聚點(diǎn),所有線程繼續(xù)lock-step鎖步執(zhí)行。

這里只假設(shè)一個(gè)if else,但是實(shí)際上可能存在if else的嵌套,因此第一步SSY 0xF0,可以理解成上下文切換時(shí)的先保存當(dāng)前的activemask 0xFF和重聚點(diǎn)的指令地址0xF0。

上述的方案與GPGPU-sim中的架構(gòu)類似,除了在指令中顯式的增加了壓棧出棧,GPGPU-sim處理每一個(gè)分支都需要壓棧if else兩條分支,占用兩項(xiàng),而方案2)中每次除了保存當(dāng)前active mask外,只需壓棧一項(xiàng)。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5397

    瀏覽量

    122623
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1651

    瀏覽量

    49705
  • CUDA
    +關(guān)注

    關(guān)注

    0

    文章

    122

    瀏覽量

    13991
  • cache技術(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    1164
  • GPU芯片
    +關(guān)注

    關(guān)注

    1

    文章

    304

    瀏覽量

    6079

原文標(biāo)題:GPU Microarch 學(xué)習(xí)筆記【1】

文章出處:【微信號(hào):處理器與AI芯片,微信公眾號(hào):處理器與AI芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA在深度學(xué)習(xí)應(yīng)用中或?qū)⑷〈?b class='flag-5'>GPU

    筆記本電腦或機(jī)架式服務(wù)器上訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),這不是什么大問題。但是,許多部署深度學(xué)習(xí)模型的環(huán)境對(duì) GPU 并不友好,比如自動(dòng)駕駛汽車、工廠、機(jī)器人和許多智慧城市環(huán)境,在這些環(huán)境中硬件必須忍受熱、灰塵、濕度
    發(fā)表于 03-21 15:19

    Allegro學(xué)習(xí)筆記

    Allegro學(xué)習(xí)筆記 不收積分,需要的看下
    發(fā)表于 11-23 17:41 ?0次下載

    模擬電路學(xué)習(xí)筆記

    模擬電子的相關(guān)知識(shí)學(xué)習(xí)教材資料——模擬電路學(xué)習(xí)筆記
    發(fā)表于 09-20 16:10 ?0次下載

    PADS_2007學(xué)習(xí)筆記

    PADS_2007學(xué)習(xí)筆記
    發(fā)表于 01-16 13:54 ?18次下載

    Ansoft學(xué)習(xí)筆記

    ansoft學(xué)習(xí)筆記與常見問題
    發(fā)表于 03-23 10:24 ?0次下載

    Java設(shè)計(jì)模式學(xué)習(xí)筆記

    Java設(shè)計(jì)模式學(xué)習(xí)筆記
    發(fā)表于 09-08 10:15 ?5次下載
    Java設(shè)計(jì)模式<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>

    ARM學(xué)習(xí)筆記

    ARM學(xué)習(xí)筆記
    發(fā)表于 10-13 14:28 ?3次下載
    ARM<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>

    Altera FPGA CPLD學(xué)習(xí)筆記

    Altera FPGA CPLD學(xué)習(xí)筆記(肇慶理士電源技術(shù)有限)-Altera FPGA CPLD學(xué)習(xí)筆記? ? ? ? ? ? ? ? ?
    發(fā)表于 09-18 10:54 ?83次下載
    Altera FPGA CPLD<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>

    學(xué)習(xí)筆記】單片機(jī)匯編學(xué)習(xí)

    學(xué)習(xí)筆記】單片機(jī)匯編學(xué)習(xí)
    發(fā)表于 11-14 18:21 ?15次下載
    【<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】單片機(jī)匯編<b class='flag-5'>學(xué)習(xí)</b>

    使用外部GPU在Linux筆記本上加速機(jī)器學(xué)習(xí)

      隨著 Intel Thunderbolt 3 在筆記本電腦中的引入,您現(xiàn)在可以使用外部 GPU ( e GPU )外殼來使用專用的 GPU 來進(jìn)行游戲、制作和數(shù)據(jù)科學(xué)。霹靂 3e
    的頭像 發(fā)表于 04-28 14:16 ?2244次閱讀
    使用外部<b class='flag-5'>GPU</b>在Linux<b class='flag-5'>筆記</b>本上加速機(jī)器<b class='flag-5'>學(xué)習(xí)</b>

    GPU 引領(lǐng)的深度學(xué)習(xí)

    GPU 引領(lǐng)的深度學(xué)習(xí)
    的頭像 發(fā)表于 01-04 11:17 ?873次閱讀

    Sentaurus TCAD學(xué)習(xí)筆記

    半導(dǎo)體仿真Sentaurus TCAD 學(xué)習(xí)筆記,僅供學(xué)習(xí)
    發(fā)表于 08-07 14:54 ?5次下載

    Allegro學(xué)習(xí)筆記.zip

    Allegro學(xué)習(xí)筆記
    發(fā)表于 12-30 09:19 ?7次下載

    GPU在深度學(xué)習(xí)中的應(yīng)用與優(yōu)勢(shì)

    人工智能的飛速發(fā)展,深度學(xué)習(xí)作為其重要分支,正在推動(dòng)著諸多領(lǐng)域的創(chuàng)新。在這個(gè)過程中,GPU扮演著不可或缺的角色。就像超級(jí)英雄電影中的主角一樣,GPU在深度學(xué)習(xí)中擁有舉足輕重的地位。那么
    的頭像 發(fā)表于 12-06 08:27 ?1697次閱讀
    <b class='flag-5'>GPU</b>在深度<b class='flag-5'>學(xué)習(xí)</b>中的應(yīng)用與優(yōu)勢(shì)

    GPU深度學(xué)習(xí)應(yīng)用案例

    GPU在深度學(xué)習(xí)中的應(yīng)用廣泛且重要,以下是一些GPU深度學(xué)習(xí)應(yīng)用案例: 一、圖像識(shí)別 圖像識(shí)別是深度學(xué)習(xí)的核心應(yīng)用領(lǐng)域之一,
    的頭像 發(fā)表于 10-27 11:13 ?855次閱讀
    主站蜘蛛池模板: 色视频在线观看完整免费版 | 天天干干干 | 手机在线你懂的 | 亚洲人成网站在线在线 | 天天射天天色天天干 | 黄色尤物 | 国产一二精品 | 色视频色露露永久免费观看 | 白丝丝袜高跟国产在线视频 | 亚洲第一视频在线播放 | 宅男午夜视频在线观看 | 免费欧洲美女与动zooz | 99久久成人国产精品免费 | 免费黄色国产视频 | 人人揉揉香蕉大免费不卡 | 新天堂| 成人在色线视频在线观看免费大全 | 免费国产午夜高清在线视频 | 久久久噜噜噜久久久午夜 | 性欧美精品| 日韩精品你懂的在线播放 | 欧美一级特黄aa大片 | 国产网站在线免费观看 | 深夜国产成人福利在线观看女同 | 国产美女视频黄a视频免费全过程 | 六月婷婷激情 | 91精品啪国产在线观看免费牛牛 | 午夜精品视频5000 | 天天干天天色天天干 | 国产成人精品一区二区三区 | 国产精品午夜剧场 | 日本午夜片成年www 日本午夜三级 | 性欧美高清久久久久久久 | 天堂亚洲网 | 147西西人体大胆免费网 | 日本5级床片全免费 | 手机成人在线视频 | 高清一级毛片一本到免费观看 | 黄色欧美 | 99久久精品久久久久久婷婷 | 色免费在线 |