<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

探究GPGPU體系結構優化策略

處理器與AI芯片 ? 來源:處理器與AI芯片 ? 2024-04-09 11:30 ? 次閱讀

最近讀了 GPGPU Architectural Survey[1],這篇survey很長,這里簡要的介紹內容,將我理解的方向和重點的論文介紹一下。

相關的論文我只介紹縮寫的名字,大致介紹文章的內容,具體的內容還是要看survey和原文。

GPGPU的優化方向主要包括以下五點:

控制分支分叉優化

control flow divergence

Memory帶寬優化

Efficient utilization of memory bandwidth

提高并行度和優化流水線

Increasing parallelism and improving execution pipelining

增強GPGPU可編程

Enhancing GPGPU programmability

CPU GPU異構架構優化

CPU–GPU heterogeneous architecture

2b441af4-f4d8-11ee-a297-92fbcf53809c.png

上圖為近幾年各個方向文章發表的比例

優化方向的前兩點在這篇文章中介紹,后三點將會在下一篇文章介紹。

文末附有總結,也可以直接拉到文末。

文中baseline即指默認的GPGPU的配置。

控制分支分叉優化

GPU Warp內,32個線程(NVIDIA)鎖步lock step執行時,如果遇到每個分支走上了不同分支,比如20個線程if,12個執行else,那么20個線程會先執行,mask調另外的12個。20個線程執行到分支合并點之后,另外12個再執行,直到這12個線程也進行到分支合并點。

如下圖左側所示。

2b63aee6-f4d8-11ee-a297-92fbcf53809c.png

這樣的缺點:

不同的分支順序執行

warp本應執行32個,這樣導致單元利用率不高

分支divergence可能進一步導致memory divergence

具體優化的子方向如下圖所示:

2b72d8d0-f4d8-11ee-a297-92fbcf53809c.png

Dynamic Regrouping Divergent Warps即為不同warp的分支合并為新的warp。

Large Warp/CTA compaction中的Thread Block Compaction,將thread block 內的thread共享分支mask棧(baseline 每個warp單獨有自己的分支mask棧)。

2b7d798e-f4d8-11ee-a297-92fbcf53809c.png

Multi path execution即為if 和 else分支兩路同時執行。

Dynamickernels/threads比如在圖形應用中,可能會動態的創建kernel,在[3]中提出了在irregular benchmark中怎么減少創建的開銷.

Memory帶寬優化

2b979f44-f4d8-11ee-a297-92fbcf53809c.png

Two-level warp scheduling

baseline將所有的warp按照輪詢的方式調度,但是如果程序是一致的,那么可能會所有的warp同時遇到cache miss的指令,導致很長的延遲。

TPRR(Two-Level Warp Scheduling):如果將warp分成兩個level的warp。將32個warp組成了細粒度的4個fetch group,每個fetch group內部8個warp。直到一個fetch warp執行阻塞時,再執行另一組warp可以提高效率。

2ba82cf6-f4d8-11ee-a297-92fbcf53809c.png

Coarse-grained CTA throttling

baseline將在一個GPU core上盡量執行最多的CTA以增加線程并行度。

但是這樣可能會導致大量的線程競爭memory,因此也有優化方案DYNCTA提出調度最佳而不是最多的CTA。

2bbde096-f4d8-11ee-a297-92fbcf53809c.png

Fine-grained warp throttling

baseline將在一個warp內的memory優化。不同的warp之間可能也會競爭共享的資源,比如一個warp訪問的cache反復的被另一個warp競爭出去,即thrashing??梢酝ㄟ^將被thrashing的 warp優先執行,進行優化,即為PCAL(Priority-based cache allocation in throughput processors)。

Critical warp awareness

baseline對各個warp無感,但是實際上warp中也會有critical warp,執行的最慢成為關鍵路徑,以下的情況可能會產生critical warp。

warp執行的workload比較重

warp執行了另外的控制分支

競爭memory。執行最慢的warp持續的刷LRU,導致這個warp占用了最多的cache

warp如果按照輪詢調度,那么N個warp ready了之后,需要等待N個周期才能再次被調度

CAWA(Coordinated Warp Scheduling and Cache Prioritization for Critical WarpAcceleration of GPGPU Workloads)通過識別critical warp,優先調度并且優先cache 分配到這些warp上,來加速執行。

Cache management and bypassing

baseline 的cache之間沒有配合。GCache(Adaptive Cache Bypass and Insertion for Many-core Accelerators)通過在L2 tag array中增加額外的標記來給L1 cache提供這個hot line在之前被evict出來,L1 Cache通過自適應的方法來鎖定這些hot cacheline,防止thrashing,cache抖動。

Ordering buffers

如果不同的warp以interleave的方式發送memory的請求,這樣memory footprint是所有warp整體的總和,如果能夠一個warp先執行完,另一個warp再執行,那么memory footprint只是一個warp的memory footprint。

比如下圖,將W3聚合在一起,可以減少footprint。即為ordering buffer, 詳見MRPB: Memory request prioritization for massively parallel processors。

2bddc672-f4d8-11ee-a297-92fbcf53809c.png

Mitigating off-chip bandwidth bottleneck

LAMAR(local-aware memory hierarchy)注意到對于規范的GPGPU workload,每次memory 訪問,進行粗粒度的內存訪問可以利用空間局部性,也可以提高帶寬。但是對于不規則的workload,細粒度的內存訪問則更好,因此它對于不同的workload進行不同粒度的內存訪問。

CABA(Core-Assised Bottleneck Acceleartion)如果存在帶寬瓶頸,那么會使用空閑的計算單元,創建warp壓縮內存,以避免帶寬瓶頸。

Memory divergence normalization

baseline的prefetcher會根據當前的warp對下一個warp的內存進行預取,但是這樣可能會late prefetch或者不準確產生useless prefetch。 Orchestrated Scheduling and Prefetching for GPGPUs 論文比對了之前的TPRR,認為使用當前的fetch group預測下一個fetch group進行預測是不準確的,因為從使用warp1-warp4的訪問去預測warp5-warp8的訪問可能不準確,因此它細粒度的先執行warp 1/3/5/7,使用產生的地址去預測warp2/4/6/8. 下圖中的D1-D7即為warp產生的訪問內存的請求,黃色和紅色的即為TPRR中不同的fetch group,在之前的TPRR fetch group中包含8個warp。

2c022210-f4d8-11ee-a297-92fbcf53809c.png

Main memory scheduling

baseline的linux page placement主要處理CPU-only NUMA系統,致力于減少memory latency。但是GPU對bandwidth更加敏感,因此論文Page Placement Strategies for GPUswithin Heterogeneous Memory Systems通過平衡page placement來最大化memory bandwidth。

CPU–GPU memory transfer overhead

baseline的GPGPU啟動時,需要等待CPU將數據完全將內存拷貝到GPU內存,才能開始計算。

Reducing GPU Offload Latency via Fine-Grained CPU-GPU Synchronization通過增加full-empty bists,來追蹤已經傳輸完成的page。如果GPGPU計算所依賴的數據已經傳輸完畢,就可以直接執行。這樣可以overlap 執行和數據搬運的時間。

總結

1.Control Divergence

因為warp內可能存在不同的分支執行路徑,因此合并不同warp的相同分支,產生新的warp,也可以在整個CTA的范圍內合并warp。

也可以同時執行分支的不同路徑。

因為CUDA后面支持kernel執行時自己產生新的kernel,但是產生新的kernel開銷很大,所以可以減少開銷。

2. Memory 帶寬和利用率優化

不是簡單的輪詢調度warp,而是將其切割成fetch group。后面的優化方案又結合了fetch group和prefetch

可以在CTA的粒度上節流線程的執行,以減少memory競爭。同樣,也可以在warp的力度上進行節流,防止warp之間的競爭。

可以優化cache,防止cache的抖動,thrashing問題。也可以bypass

識別關鍵的warp,優先執行關鍵warp

對訪問內存的請求進行ordering,減少memory footprint

利用空閑的執行單元進行壓縮,避免bandwidth bottleneck

針對GPU memory系統設計bandwidth有限的page placement 策略

審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • gpu
    gpu
    +關注

    關注

    27

    文章

    4470

    瀏覽量

    127058
  • 內存
    +關注

    關注

    8

    文章

    2785

    瀏覽量

    72893
  • 線程
    +關注

    關注

    0

    文章

    494

    瀏覽量

    19524
  • GPGPU
    +關注

    關注

    0

    文章

    24

    瀏覽量

    4817

原文標題:GPGPU體系結構優化方向 [上]

文章出處:【微信號:處理器與AI芯片,微信公眾號:處理器與AI芯片】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ARM體系結構和編程

    本帖最后由 eehome 于 2013-1-5 09:47 編輯 ARM體系結構和編程
    發表于 12-04 03:35

    ARM嵌入式體系結構與接口技術.ARM SoC體系結構(中文版)

    ARM嵌入式體系結構與接口技術.pdf{:1:}{:1:}{:1:}ARM SoC體系結構(中文版).pd
    發表于 03-23 16:04

    ARM SoC體系結構

    介紹ARM 的片上系統體系結構
    發表于 03-31 23:03

    ARM SOC體系結構

    ARMSOC 體系結構
    發表于 11-22 10:54

    ARM體系結構是怎樣的?

    ARM體系結構是怎樣的?
    發表于 11-05 06:40

    Microarchitecture指令集體系結構

    第二章 ARM微處理器概述與編程模型ARM體系結構及其發展歷史處理器的體系結構處理器微架構 Microarchitecture指令集體系結構 Architecture幾種常見的指令集X86Inter
    發表于 12-14 07:13

    淺析嵌入式實時系統的體系結構設計

    ②和③D.①、②和③62、D[解析] 體系結構描述系統的分解、全局控制流、錯誤處理策略、子系統間的通信協議和接口、系統安全策略等系統的整體架構,不關心子系統的詳細設計和實現。輸入信號預處理、主控制過程和網絡接口等都屬于
    發表于 12-22 06:09

    了解體系結構 - 介紹 Arm 體系結構

    。該體系結構為軟件開發人員公開了一個通用的指令集和工作流程,也稱為程序員模型。這有助于確保架構的不同實現之間的互操作性,以便軟件可以在不同的 Arm 設備上運行。本指南為任何對此感興趣的人介紹了 Arm
    發表于 08-01 14:35

    Armv9-A體系結構參考手冊

    本增補件是Armv9-A體系結構的Arm?體系結構參考手冊增補件輪廓本書介紹了Armv9-A體系結構擴展,因此必須與Arm?體系結構參考手冊一起閱讀A型架構。
    發表于 08-08 07:07

    Arm的DRTM體系結構規范

    本規范定義了基于Arm A配置文件體系結構的處理器的動態測量信任根(DRTM)體系結構。本規范基于TCG D-RTM體系結構[4]的概念,但作為一個獨立的獨立文檔發揮作用。它使用了TCG體系結
    發表于 08-08 07:45

    Arm Power Policy Unit 1.1版體系結構規范

    本規范描述了電源策略單元(PPU)體系結構。它定義了PPU體系結構的1.1版本。 PPU規范的1.1版增加了對操作模式的支持。由于功能或更高粒度的功率控制原因,這使得能夠支持特定于組件的功率模式
    發表于 08-11 06:14

    ARM體系結構與編程

    ARM體系結構與編程
    發表于 02-11 09:35 ?161次下載
    ARM<b class='flag-5'>體系結構</b>與編程

    LTE體系結構

    LTE體系結構 LTE體系結構可以借助SAE 體系結構來做詳細描述。在SAE 體系結構中,RNC部分功能、GGSN、SGSN 節點將被融合為一個新的節點,
    發表于 06-16 13:09 ?9637次閱讀

    網絡體系結構,什么是網絡體系結構

    網絡體系結構,什么是網絡體系結構 通過通信信道和設備互連起來的多個不同地理位置的計算機系統,要使其能協同工作實現信息交換和資源共享
    發表于 04-06 16:30 ?1632次閱讀

    XScale體系結構及編譯優化問題

    XScale是一款具有業界領先高性能特性的ARM兼容嵌入式微處理器構架被應用處理 能力要求很高的嵌入式應用領域如PDA、高帶寬網絡交換等。本文分析了RISC、 ARM和XScale體系結構的特點
    發表于 04-18 10:28 ?0次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>