繼續(xù)上文GPGPU體系結(jié)構(gòu)優(yōu)化方向 [上],介紹提高并行度和優(yōu)化流水線的方向。
不同的workload因?yàn)榇嬖诓煌膇nput size和對(duì)寄存器以及memory的需要,有時(shí)會(huì)導(dǎo)致只有少量的活躍thread block,這降低了執(zhí)行單元的利用率。因此可以通過(guò)同時(shí)運(yùn)行多個(gè)workload,增加并行度來(lái)提高利用率。另一種方法則是利用scalar opportunity以及運(yùn)行的warp之間的value similarity。
具體的子方向:
減少資源碎片化增加并行度
Unifying Primary Cache, Scratch and Register File Memory in a Throughput processor提出不同的workload對(duì)資源的需求不同,因此可以動(dòng)態(tài)的對(duì)不同workload的資源進(jìn)行劃分。
Shared Memory Multiplexing: A Novel Way to ImproveGPGPU Throughput注意到在一個(gè)thread block內(nèi)的warp會(huì)在不同的時(shí)間點(diǎn)結(jié)束,此時(shí),即使是較早完成的warp占用的資源也不會(huì)釋放,這導(dǎo)致了資源的低效利用,此時(shí)應(yīng)該可以launch新的warp。
他們將資源的低效利用劃分為temporal和spatial:
temporal低效是因?yàn)閣arp的不同時(shí)間結(jié)束導(dǎo)致的
spatial的低效則是因?yàn)闆](méi)有足夠的資源launch新的warp
他們提出了在資源不夠launch一個(gè)新的thread block時(shí),只launch部分thread block的方法。GPU Multitaksing
多任務(wù)同時(shí)在GPU上執(zhí)行
可以有效的提高GPU的利用率。
有助于操作系統(tǒng)調(diào)用GPU時(shí),對(duì)GPU的虛擬化以及在云上deploy GPU
Improving GPGPU Concurrency with Elastic Kernels將task不能夠進(jìn)行并行化的原因分成了幾類(lèi):
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較晚進(jìn)入queue中,也可以不按照f(shuō)ifo的調(diào)度順序,將bfs優(yōu)先調(diào)度,空置的資源同時(shí)執(zhí)行cutcp,這樣提高了并行度。
此外,觀察到GPU的DMA只能在一個(gè)時(shí)間段內(nèi)進(jìn)行拷貝到GPU和拷出GPU中的一種。如果下圖中的bfs等到數(shù)據(jù)的拷貝,但是此時(shí)lbm正在將數(shù)據(jù)拷出,會(huì)導(dǎo)致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時(shí),也需要注意到workload的優(yōu)先級(jí),如果優(yōu)先級(jí)較高的workload等待時(shí)間較長(zhǎng),那么應(yīng)當(dāng)切換到優(yōu)先級(jí)高的workload。Enabling preemptive multiprogramming on GPUs提出了兩種搶占的方式,context swtiching和draning。
Chimera: Collaborative Preemptionfor Multitasking on a Shared GPU提出了被搶占的workload可以不需要保存上下文,直接放棄,在獲得資源后重新從頭開(kāi)始執(zhí)行。
利用scalar and value similarity opprotunities
Characterizing Scalar Opportunities inGPGPU Applications提出了 scalar opportunity,即在各個(gè)threads中同時(shí)對(duì)相同的數(shù)據(jù)執(zhí)行相同的計(jì)算,也就得到相同的結(jié)果,寫(xiě)回相同的值。AMD將這類(lèi)計(jì)算單獨(dú)放在GPU core中的標(biāo)量單元中進(jìn)行計(jì)算。
“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.”
基于這個(gè)的工作主要有幾類(lèi):
執(zhí)行方法:?jiǎn)为?dú)的標(biāo)量單元或者單獨(dú)使用一個(gè)core計(jì)算
專(zhuān)門(mén)的寄存器或者和其他指令共用寄存器
取址譯碼執(zhí)行和其他指令的資源共享或者單獨(dú)設(shè)計(jì)
支持的指令類(lèi)型
Improving execution pipeling
現(xiàn)代 GPU為了有效地共享資源,在 GPU 管道中插入了buffering和collisionavoidance stage,從而增加指令的讀后寫(xiě) (RAW) 延遲。通常大家認(rèn)為GPU通過(guò)warp的調(diào)度可以隱藏RAW延遲,因而GPU沒(méi)有設(shè)計(jì)data forward networking。但是Exploiting GPUPeak-power and Performance Tradeoffs through Reduced Effective Pipeline Latency觀察到許多 GPGPU 應(yīng)用程序沒(méi)有足夠的活動(dòng)線程來(lái)準(zhǔn)備發(fā)出指令來(lái)隱藏這些 RAW 延遲。
因此他們使用most recent result forwarding(MORF)來(lái)實(shí)現(xiàn)data forwarding,同時(shí)相對(duì)于傳統(tǒng)的data forwarding,降低了功耗。
Warped-Preexecution: A GPU Pre-execution Approachfor Improving Latency Hiding文章提出在warp的線程進(jìn)入長(zhǎng)期等待的idle狀態(tài)時(shí),可以進(jìn)入P-mode。在P-mode模式下,識(shí)別出程序中后續(xù)的不存在依賴(lài)關(guān)系的指令,先執(zhí)行后續(xù)的指令,也即實(shí)現(xiàn)了亂序執(zhí)行。
-
寄存器
+關(guān)注
關(guān)注
31文章
5336瀏覽量
120229 -
gpu
+關(guān)注
關(guān)注
28文章
4729瀏覽量
128890 -
流水線
+關(guān)注
關(guān)注
0文章
120瀏覽量
25726 -
GPGPU
+關(guān)注
關(guān)注
0文章
29瀏覽量
4899
原文標(biāo)題:GPGPU體系結(jié)構(gòu)優(yōu)化方向 [中]
文章出處:【微信號(hào):處理器與AI芯片,微信公眾號(hào):處理器與AI芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論