繼續(xù)上文GPGPU體系結(jié)構(gòu)優(yōu)化方向 [上],介紹提高并行度和優(yōu)化流水線的方向。
不同的workload因為存在不同的input size和對寄存器以及memory的需要,有時會導致只有少量的活躍thread block,這降低了執(zhí)行單元的利用率。因此可以通過同時運行多個workload,增加并行度來提高利用率。另一種方法則是利用scalar opportunity以及運行的warp之間的value similarity。
具體的子方向:
減少資源碎片化增加并行度
Unifying Primary Cache, Scratch and Register File Memory in a Throughput processor提出不同的workload對資源的需求不同,因此可以動態(tài)的對不同workload的資源進行劃分。
Shared Memory Multiplexing: A Novel Way to ImproveGPGPU Throughput注意到在一個thread block內(nèi)的warp會在不同的時間點結(jié)束,此時,即使是較早完成的warp占用的資源也不會釋放,這導致了資源的低效利用,此時應(yīng)該可以launch新的warp。
他們將資源的低效利用劃分為temporal和spatial:
temporal低效是因為warp的不同時間結(jié)束導致的
spatial的低效則是因為沒有足夠的資源launch新的warp
他們提出了在資源不夠launch一個新的thread block時,只launch部分thread block的方法。GPU Multitaksing
多任務(wù)同時在GPU上執(zhí)行
可以有效的提高GPU的利用率。
有助于操作系統(tǒng)調(diào)用GPU時,對GPU的虛擬化以及在云上deploy GPU
Improving GPGPU Concurrency with Elastic Kernels將task不能夠進行并行化的原因分成了幾類:
Serialization due to Lack of Resources
Serialization due to Inter-stream Scheduling
Serialization due to Memory Transfers
Serialization in the CUDA API
Serialization in the Implementation
他們觀察到如果bfs只占用了部分資源,但是fft和cutcp占用了全部資源,那么即使bfs較晚進入queue中,也可以不按照fifo的調(diào)度順序,將bfs優(yōu)先調(diào)度,空置的資源同時執(zhí)行cutcp,這樣提高了并行度。
此外,觀察到GPU的DMA只能在一個時間段內(nèi)進行拷貝到GPU和拷出GPU中的一種。如果下圖中的bfs等到數(shù)據(jù)的拷貝,但是此時lbm正在將數(shù)據(jù)拷出,會導致bfs的等待,因此可以將DMA的任務(wù)切片,提高并行度。
此外,Increasing GPU throughput using kernel interleaved thread block scheduling等也發(fā)現(xiàn)可以將memory intensive和compute intensive的workloads混合調(diào)度,這樣提高資源的利用效率。
在調(diào)度workloads時,也需要注意到workload的優(yōu)先級,如果優(yōu)先級較高的workload等待時間較長,那么應(yīng)當切換到優(yōu)先級高的workload。Enabling preemptive multiprogramming on GPUs提出了兩種搶占的方式,context swtiching和draning。
Chimera: Collaborative Preemptionfor Multitasking on a Shared GPU提出了被搶占的workload可以不需要保存上下文,直接放棄,在獲得資源后重新從頭開始執(zhí)行。
利用scalar and value similarity opprotunities
Characterizing Scalar Opportunities inGPGPU Applications提出了 scalar opportunity,即在各個threads中同時對相同的數(shù)據(jù)執(zhí)行相同的計算,也就得到相同的結(jié)果,寫回相同的值。AMD將這類計算單獨放在GPU core中的標量單元中進行計算。
“We define a scalar opportunity as a SIMD instructionoperating on the same data in all of its active threads. Atypical example of scalar opportunities is loading a constantvalue when each active thread loads the same value frommemory and then stores it in the corresponding component ofthe destination vector register. Finally those components storethe same value.”
基于這個的工作主要有幾類:
檢測方法:硬件或者軟件編譯器
執(zhí)行方法:單獨的標量單元或者單獨使用一個core計算
專門的寄存器或者和其他指令共用寄存器
取址譯碼執(zhí)行和其他指令的資源共享或者單獨設(shè)計
支持的指令類型
Improving execution pipeling
現(xiàn)代 GPU為了有效地共享資源,在 GPU 管道中插入了buffering和collisionavoidance stage,從而增加指令的讀后寫 (RAW) 延遲。通常大家認為GPU通過warp的調(diào)度可以隱藏RAW延遲,因而GPU沒有設(shè)計data forward networking。但是Exploiting GPUPeak-power and Performance Tradeoffs through Reduced Effective Pipeline Latency觀察到許多 GPGPU 應(yīng)用程序沒有足夠的活動線程來準備發(fā)出指令來隱藏這些 RAW 延遲。
因此他們使用most recent result forwarding(MORF)來實現(xiàn)data forwarding,同時相對于傳統(tǒng)的data forwarding,降低了功耗。
Warped-Preexecution: A GPU Pre-execution Approachfor Improving Latency Hiding文章提出在warp的線程進入長期等待的idle狀態(tài)時,可以進入P-mode。在P-mode模式下,識別出程序中后續(xù)的不存在依賴關(guān)系的指令,先執(zhí)行后續(xù)的指令,也即實現(xiàn)了亂序執(zhí)行。
-
寄存器
+關(guān)注
關(guān)注
31文章
5434瀏覽量
124574 -
gpu
+關(guān)注
關(guān)注
28文章
4949瀏覽量
131279 -
流水線
+關(guān)注
關(guān)注
0文章
124瀏覽量
26634 -
GPGPU
+關(guān)注
關(guān)注
0文章
30瀏覽量
5129
原文標題:GPGPU體系結(jié)構(gòu)優(yōu)化方向 [中]
文章出處:【微信號:處理器與AI芯片,微信公眾號:處理器與AI芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
ARM嵌入式體系結(jié)構(gòu)與接口技術(shù).ARM SoC體系結(jié)構(gòu)(中文版)
嵌入式微處理器體系結(jié)構(gòu)
Microarchitecture指令集體系結(jié)構(gòu)
Arm的DRTM體系結(jié)構(gòu)規(guī)范
LTE體系結(jié)構(gòu)
網(wǎng)絡(luò)體系結(jié)構(gòu),什么是網(wǎng)絡(luò)體系結(jié)構(gòu)
ARM體系結(jié)構(gòu)與程序設(shè)計
XScale體系結(jié)構(gòu)及編譯優(yōu)化問題
軟件體系結(jié)構(gòu)的分析

基于DoDAF的衛(wèi)星應(yīng)用信息鏈體系結(jié)構(gòu)
GPGPU體系結(jié)構(gòu)優(yōu)化方向(2)

評論