胡新明,盛沖沖,李佳佳,吳百鋒
?
面向通用計(jì)算GPU集群的任務(wù)自動(dòng)分配系統(tǒng)
胡新明,盛沖沖,李佳佳,吳百鋒
(復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,上海 201023)
當(dāng)前GPU集群的主流編程模型是MPI與CUDA的松散耦合,采用這種編程模型進(jìn)行編程,存在編程復(fù)雜度大、程序的可移植性差、執(zhí)行效率低等問題。為此,提出一種面向通用計(jì)算GPU集群的任務(wù)自動(dòng)分配系統(tǒng)StreamMAP。對(duì)編譯器進(jìn)行改造,以編譯制導(dǎo)的方式提供集群任務(wù)的計(jì)算資源需求,通過運(yùn)行時(shí)系統(tǒng)動(dòng)態(tài)地發(fā)現(xiàn)、建立并維護(hù)系統(tǒng)資源拓?fù)洌O(shè)計(jì)一種較為契合GPU集群應(yīng)用特征的任務(wù)分配策略。實(shí)驗(yàn)結(jié)果表明,StreamMAP系統(tǒng)能降低集群應(yīng)用程序的編程復(fù)雜度,使之較為高效地利用GPU集群的計(jì)算資源,且程序的可移植性和可擴(kuò)展性也得到了保證。
GPU集群;異構(gòu);編程模型;任務(wù)分配;可移植性;可擴(kuò)展性
采用具有大規(guī)模并行計(jì)算能力的GPU作為異構(gòu)加速設(shè)備的GPU集群在科學(xué)計(jì)算領(lǐng)域得到了廣泛的研究和應(yīng)用。文獻(xiàn)[1]采用GPU集群作為底層運(yùn)行平臺(tái)來加速流計(jì)算應(yīng)用。文獻(xiàn)[2]將分子生物學(xué)中蛋白質(zhì)分子場(chǎng)的計(jì)算程序并行化,使之能夠在GPU集群上加速執(zhí)行。此外,GPU集群在仿真學(xué)[3]和分子動(dòng)力學(xué)[4]等領(lǐng)域也有大量應(yīng)用實(shí)現(xiàn)。研究結(jié)果表明,對(duì)于具有數(shù)據(jù)密集型計(jì)算的應(yīng)用,相比較于傳統(tǒng)的計(jì)算平臺(tái),GPU集群能夠提供充分的計(jì)算能力,并帶來可觀的性能加速比。
GPU的加入使得GPU集群呈現(xiàn)節(jié)點(diǎn)內(nèi)部資源的異構(gòu)化,單個(gè)節(jié)點(diǎn)內(nèi)部不僅可以包含單核CPU、多核CPU,甚至GPU計(jì)算資源,而且包含了單GPU或者多GPU。GPU作為面向大規(guī)模數(shù)據(jù)并行計(jì)算的計(jì)算資源使得GPU集群的并行計(jì)算能力呈現(xiàn)多層次化。GPU集群不僅能夠支持常規(guī)粒度的單程序多數(shù)據(jù)(Single Program Multiple Date, SPMD)和多程序多數(shù)據(jù)(Multiple Program Multiple Date, MPMD)計(jì)算能力,而且可以支持更細(xì)粒度的面向大規(guī)模數(shù)據(jù)的SPMD和單指令多數(shù)據(jù)(Single Instruction Multiple Data, SIMD)計(jì)算能力。GPU集群這種異構(gòu)計(jì)算資源和多層次并行計(jì)算能力給并行程序設(shè)計(jì)帶來了巨大的困難。
為了更好地對(duì)GPU集群這種異構(gòu)計(jì)算平臺(tái)[5]進(jìn)行編程,學(xué)術(shù)界在編程模型方面進(jìn)行了大量的研究。文獻(xiàn)[6]和文獻(xiàn)[7]對(duì)基于SMP體系結(jié)構(gòu)的并行編程模型MPI+openMP進(jìn)行了初步的探索。文獻(xiàn)[8]對(duì)現(xiàn)有的消息傳遞系統(tǒng)進(jìn)行了擴(kuò)充,以使其能夠更好地適應(yīng)GPU加入集群帶來的通信要求。當(dāng)前主流的GPU集群編程模型是MPI+CUDA[9],這種編程模給程序員提供了一種使用異構(gòu)計(jì)算資源和發(fā)揮GPU集群多層次并行的能力,但是它不能充分地契合GPU集群系統(tǒng)體系結(jié)構(gòu),并將由此帶來編程復(fù)雜度大、程序可移植性差、執(zhí)行效率低等問題。為此,本文設(shè)計(jì)并實(shí)現(xiàn)了面向節(jié)點(diǎn)異構(gòu)GPU集群的任務(wù)自動(dòng)分配系統(tǒng)StreamMAP,StreamMAP系統(tǒng)包含語言擴(kuò)展(編譯器前端)和運(yùn)行時(shí)系統(tǒng)2個(gè)部分,以在自動(dòng)且高效地將集群任務(wù)映射到計(jì)算節(jié)點(diǎn)的同時(shí),降低編程復(fù)雜度并提高程序的可移植性。
在科學(xué)計(jì)算領(lǐng)域,GPU已經(jīng)成為主流加速部件,各種不同規(guī)模的GPU集群應(yīng)運(yùn)而生。例如NCSA部署的2套基于Tesla s1070系列的GPU集群Lincoln[10]和AC[11]。 Lincoln有192個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)包含2個(gè)四核CPU。每 2個(gè)節(jié)點(diǎn)共享1個(gè)Tesla s1070 GPU,節(jié)點(diǎn)之間通過SDR INFINIBAND總線進(jìn)行互連。AC包含32個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)包含2個(gè)雙核CPU和1個(gè)Tesla s1070系列GPU。上述GPU集群至部署以來已經(jīng)成功地完成了大量的科學(xué)計(jì)算工作,其性能、穩(wěn)定性、可靠性都得到了良好的證實(shí)。
上述GPU集群計(jì)算資源不僅包含CPU還包含GPU,這樣集群系統(tǒng)本身就是系統(tǒng)層面異構(gòu)的。但因?yàn)槊總€(gè)節(jié)點(diǎn)的資源配置完全一致,所以集群系統(tǒng)在節(jié)點(diǎn)層面仍然是同構(gòu)的。然而出于很多原因,在現(xiàn)實(shí)系統(tǒng)中的很多GPU集群都是節(jié)點(diǎn)異構(gòu)的。
典型的GPU集群系統(tǒng)體系結(jié)構(gòu)如圖1所示。在節(jié)點(diǎn)異構(gòu)GPU系統(tǒng)中,每個(gè)節(jié)點(diǎn)可以有一個(gè)或多個(gè)GPU,也可以沒有GPU。隨著CPU和GPU的發(fā)展以及集群節(jié)點(diǎn)擴(kuò)展,新的高性能CPU和GPU加入到GPU集群中,集群的異構(gòu)程度進(jìn)一步加強(qiáng)。可以預(yù)見,在未來,節(jié)點(diǎn)異構(gòu)GPU集群將成為高性能計(jì)算領(lǐng)域的主流系統(tǒng)。

圖1 GPU集群體系結(jié)構(gòu)
消息傳遞接口MPI[12]是一種標(biāo)準(zhǔn)化可移植的消息傳遞系統(tǒng),主要用于基于分布式內(nèi)存的并行計(jì)算機(jī)或集群系統(tǒng)。MPI是為了編寫消息傳遞程序而開發(fā)的廣泛使用的標(biāo)準(zhǔn)。通過編寫配置文件可以自定義地將邏輯進(jìn)程分配到具體的物理執(zhí)行節(jié)點(diǎn)去運(yùn)行。
計(jì)算統(tǒng)一設(shè)備架構(gòu)CUDA是NVIDIA公司研發(fā)的一種針對(duì)面向通用計(jì)算GPU的并行計(jì)算架構(gòu)。通過對(duì)C語言進(jìn)行的擴(kuò)展和限制,CUDA為GPU異構(gòu)計(jì)算環(huán)境提供了一種抽象的編程模型。在這種編程模型中,GPU和CPU分別被稱為device和host。CUDA程序包括2個(gè)部分,一部分在CUDA設(shè)備上執(zhí)行,稱之為內(nèi)核(kernel),另一部分在CPU上運(yùn)行,稱之為主機(jī)進(jìn)程(host process),兩者通過GPU全局內(nèi)存共享和交換數(shù)據(jù)。
當(dāng)前HPC領(lǐng)域GPU集群的主流編程模型是MPI與CUDA的松散耦合,構(gòu)成一個(gè)可行的GPU集群系統(tǒng)并行編程模型MPI+CUDA。
圖2為MPI+CUDA編程模型系統(tǒng)框圖,MPI主要負(fù)責(zé)進(jìn)程的顯示劃分和進(jìn)程間的通信,CUDA負(fù)責(zé)GPU面向數(shù)據(jù)級(jí)并行程序的設(shè)計(jì)和實(shí)現(xiàn)。

圖2 MPI+CUDA編程模型
采用MPI編程模型之所以會(huì)有編程難度大、可移植性差、程序執(zhí)行低效等缺點(diǎn),是因?yàn)楸M管每個(gè)任務(wù)都有可能是一個(gè)CUDA并行程序,需要在GPU上執(zhí)行,但MPI系統(tǒng)以一種平坦的視角對(duì)待每一個(gè)進(jìn)程,即無論是純CPU任務(wù)還是CPU-GPU任務(wù),MPI系統(tǒng)并不關(guān)心每個(gè)任務(wù)的細(xì)節(jié)信息和其對(duì)于資源的需求。同樣在MPI集群系統(tǒng),系統(tǒng)中的每個(gè)節(jié)點(diǎn)對(duì)于MPI系統(tǒng)來說也是透明的,MPI并不關(guān)心這個(gè)節(jié)點(diǎn)的資源狀況。無論是集群任務(wù)對(duì)于資源的需求還是每個(gè)節(jié)點(diǎn)的資源情況,對(duì)于MPI運(yùn)行時(shí)系統(tǒng)都是透明的,即無法進(jìn)行自動(dòng)高效的任務(wù)分配。
通過提供編譯制導(dǎo)指令和運(yùn)行時(shí)系統(tǒng),StreamMAP系統(tǒng)很好地解決了MPI系統(tǒng)的這2個(gè)盲點(diǎn)。StreamMAP系統(tǒng)模型如圖3所示。

圖3 StreamMAP系統(tǒng)模型
StreamMAP對(duì)于傳統(tǒng)的并行編程模型進(jìn)行了2個(gè)層面的擴(kuò)展:
(1)通過對(duì)C語言編譯器進(jìn)行擴(kuò)展,向應(yīng)用程序員提供編譯制導(dǎo)指令。通過編譯制導(dǎo)的方式,程序員可以在程序中顯示地表達(dá)任務(wù)的計(jì)算資源需求。StreamMAP系統(tǒng)提供一個(gè)編譯器前端對(duì)編譯制導(dǎo)指令進(jìn)行解析。使用編譯制導(dǎo)的好處在于,即使在原始編譯器環(huán)境下,程序仍然可以正確地編譯執(zhí)行。
(2)StreamMAP運(yùn)行時(shí)系統(tǒng)完成系統(tǒng)資源的自動(dòng)發(fā)現(xiàn),建立并維護(hù)系統(tǒng)資源數(shù)據(jù)庫,并根據(jù)集群任務(wù)的資源需求,進(jìn)行有效的任務(wù)分配,最終通過生成MPI執(zhí)行配置文件,完成集群任務(wù)到計(jì)算節(jié)點(diǎn)的映射。
StreamMAP的目的是為各種不同的GPU集群體系結(jié)構(gòu)提供一個(gè)通用的、高效的編程環(huán)境。系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)主要考慮了如下方面:
(1)可編程性:應(yīng)用程序員只需要設(shè)計(jì)邏輯上任務(wù)劃 分和進(jìn)程間通信的關(guān)系,而任務(wù)的具體運(yùn)行位置則由StreamMAP系統(tǒng)自動(dòng)完成。這樣應(yīng)用程序員無需了解底層的體系結(jié)構(gòu)細(xì)節(jié),就實(shí)現(xiàn)了邏輯設(shè)計(jì)與物理運(yùn)行的分離。這種系統(tǒng)結(jié)構(gòu)層面的抽象簡化了程序員編程的難度。
(2)可移植性:StreamMAP系統(tǒng)自動(dòng)完成集群系統(tǒng)資源的發(fā)現(xiàn)與分配,應(yīng)用程序員無需了解底層節(jié)點(diǎn)資源狀況。當(dāng)集群節(jié)點(diǎn)資源拓?fù)浣Y(jié)構(gòu)發(fā)生變化時(shí),應(yīng)用程序無需做任何修改即可在新的環(huán)境中正確、高效地運(yùn)行。
(3)高效性:StreamMAP系統(tǒng)采用有效的任務(wù)分配策略,使得對(duì)于計(jì)算資源需求不同的邏輯進(jìn)程能夠高效地映射到異構(gòu)的物理節(jié)點(diǎn)上,保證了集群系統(tǒng)計(jì)算能力得到最大程度的利用。
(4)可擴(kuò)展性:集群平臺(tái)環(huán)境對(duì)于程序員來說是透明的,系統(tǒng)資源的發(fā)現(xiàn)和任務(wù)的分配都由StreamMAP系統(tǒng)自動(dòng)完成,這使得其在應(yīng)用程序是高度可擴(kuò)展的。
如圖3的系統(tǒng)模型所示,StreamMAP包含任務(wù)分析模塊、系統(tǒng)監(jiān)控模塊和任務(wù)自動(dòng)分配模塊3個(gè)部分。
(1)編譯制導(dǎo)是一種通過對(duì)編譯器進(jìn)行改造,提供對(duì)某些自定義編譯指令的支持以實(shí)現(xiàn)某種自定義條件編譯的技術(shù)。在正式編譯開始之前,編譯指令指示編譯器完成某項(xiàng)工作(通常是預(yù)處理工作)。編譯指令的解析需要編譯器的支持,但如果采用原始的編譯器進(jìn)行編譯,將會(huì)忽略編譯偽指令,也可以完成編譯工作。openMP、openACC[13]等并行編程技術(shù)都采用編譯制導(dǎo)的方式對(duì)傳統(tǒng)的串行程序語言進(jìn)行了相應(yīng)的擴(kuò)展,使之能夠支持并行程序的設(shè)計(jì)與實(shí)現(xiàn)。StreamMAP任務(wù)分析模塊通過提供編譯器前端解析程序員提供的編譯制導(dǎo)信息,分析并存儲(chǔ)所有集群任務(wù)的計(jì)算資源需求狀況。StreamMAP系統(tǒng)編譯制導(dǎo)指令格式為:#pragma streamap directive [clause[[,]clause]…] new-line。當(dāng)前實(shí)現(xiàn)的資源指令語法格式為:#pragma streamap resource [tasknum:res[[,]tasknum:res]…] new-line。資源指令表達(dá)了集群任務(wù)對(duì)于資源的需求狀況,其中,tasknum為任務(wù)編號(hào),對(duì)應(yīng)于MPI+CUDA編程模型中的進(jìn)程編號(hào);res可以是 C/c,表示任務(wù)為純CPU任務(wù)(不需要GPU加速設(shè)備的支持),也可以是G/g,表示任務(wù)中含有大規(guī)模并行的cuda kernel程序,需要在GPU設(shè)備上運(yùn)行。為便于使用,任務(wù)分析指令的解析支持正則表達(dá)式實(shí)現(xiàn)。
(2)StreamMAP系統(tǒng)監(jiān)控模塊包含一個(gè)控制節(jié)點(diǎn)和多個(gè)計(jì)算節(jié)點(diǎn),控制節(jié)點(diǎn)本身也可以是計(jì)算節(jié)點(diǎn),并作為進(jìn)行任務(wù)分配的單位。在StreamMAP系統(tǒng)啟動(dòng)和更新期間,控制節(jié)點(diǎn)向所有計(jì)算節(jié)點(diǎn)發(fā)送資源發(fā)現(xiàn)請(qǐng)求消息,每個(gè)計(jì)算節(jié)點(diǎn)中運(yùn)行StreamMAP的資源發(fā)現(xiàn)模塊,通過相關(guān)操作系統(tǒng)調(diào)用和一系列GPU設(shè)備查詢例程獲取本節(jié)點(diǎn)資源信息并反饋給控制節(jié)點(diǎn),由控制節(jié)點(diǎn)存儲(chǔ)并更新所有集群節(jié)點(diǎn)的各種資源信息。StreamMAP運(yùn)行時(shí)系統(tǒng)基于MPI消息傳遞系統(tǒng),完成對(duì)所有集群節(jié)點(diǎn)的輪詢,記錄并維護(hù)所有節(jié)點(diǎn)反饋的系統(tǒng)資源信息,包括CPU資源、GPU資源、系統(tǒng)通信拓?fù)涞取?/p>
圖4為基于StreamMAP系統(tǒng)的邏輯結(jié)構(gòu)和軟硬件層次模型。其中,控制節(jié)點(diǎn)基于MPI scatter模式向各個(gè)計(jì)算節(jié)點(diǎn)發(fā)送資源的發(fā)現(xiàn)請(qǐng)求消息,在每個(gè)計(jì)算節(jié)點(diǎn)的內(nèi)部StreamMAP運(yùn)行時(shí)系統(tǒng)完成CPU、GPU、通信拓?fù)涞认到y(tǒng)資源的發(fā)現(xiàn)。然后所有的這些資源信息以MPI reduce模式聚集到控制節(jié)點(diǎn),控制節(jié)點(diǎn)以此建立并維護(hù)系統(tǒng)資源數(shù) 據(jù)庫。

圖4 StreamMAP運(yùn)行時(shí)系統(tǒng)
(3)在完成任務(wù)資源需求分析和系統(tǒng)資源發(fā)現(xiàn)的基礎(chǔ)上,StreamMAP運(yùn)行時(shí)系統(tǒng)中的任務(wù)分配模塊自動(dòng)地完成集群任務(wù)到物理計(jì)算節(jié)點(diǎn)的映射。現(xiàn)實(shí)中大量的集群應(yīng)用存在廣泛的差異性,一種單一的任務(wù)劃分方式或是任務(wù)分配算法很難保證具體的應(yīng)用能夠最高效地在集群環(huán)境中運(yùn)行。為了滿足集群任務(wù)的資源需求并兼顧系統(tǒng)的負(fù)載均衡狀況,同時(shí)保證系統(tǒng)的通用性,本文采用了較為簡單和典型的Round-Robin資源輪詢算法,并有差異性地區(qū)分GPU和CPU計(jì)算資源。即相比較于CPU能支持多任務(wù)并發(fā)和搶占執(zhí)行等機(jī)制,本文系統(tǒng)將GPU視為不可搶占資源,并因此在任務(wù)分配時(shí)優(yōu)先考慮分配CPU-GPU類任務(wù),以滿足此類任務(wù)的資源需求。即在第1次分配中只考慮CPU-GPU類任務(wù),選擇具有GPU加速器的計(jì)算節(jié)點(diǎn)并考慮這類節(jié)點(diǎn)的負(fù)載情況,并將任務(wù)分配到負(fù)載較小的節(jié)點(diǎn)。第2次分配時(shí),所有需要在GPU設(shè)備上執(zhí)行的任務(wù)已經(jīng)分配完畢,這時(shí)僅需要考慮純CPU類任務(wù)和所有計(jì)算節(jié)點(diǎn),具體分配算法和CPU-GPU類任務(wù)的分配相同。
在本文實(shí)驗(yàn)中,現(xiàn)實(shí)系統(tǒng)是系統(tǒng)和節(jié)點(diǎn)層面異構(gòu)的GPU集群DISPAR,集群平臺(tái)包括4個(gè)節(jié)點(diǎn),系統(tǒng)拓?fù)浣Y(jié)構(gòu)如圖5所示,node0、node1主機(jī)為DELL T410服務(wù)器,分別包含XEON 5606四核CPU以及內(nèi)置的1個(gè)NVIDIA C2075 GPU。node2、node3是2臺(tái)DELL T5600工作站,內(nèi)置雙核CPU。考慮到設(shè)備成本較大,而且本文實(shí)驗(yàn)重點(diǎn)驗(yàn)證StreamMAP系統(tǒng)所實(shí)現(xiàn)的任務(wù)分析、系統(tǒng)監(jiān)控和任務(wù)自動(dòng)分配等功能性目標(biāo),并不追求極致的計(jì)算和通信速度,DISPAR集群系統(tǒng)沒有采用相當(dāng)于萬兆以太網(wǎng)的高速互聯(lián)設(shè)備INFINIBAND,而是采用1 000M以太網(wǎng)代替。

圖5 DISPAR集群拓?fù)浣Y(jié)構(gòu)
所有節(jié)點(diǎn)運(yùn)行64位ubuntu 10.04 LTS操作系統(tǒng),MPI選擇支持多種體系結(jié)構(gòu)的MPICH2開源實(shí)現(xiàn)。NVIDIA driver版本是285.05.33,CUDA Toolkt版本為4.1,CUDA SDK版本為4.1,用于開發(fā)的GCC的版本是4.4.3。
實(shí)驗(yàn)采用的集群應(yīng)用樣例程flowComput共包含12個(gè)任務(wù),其中,task0~task7為純CPU任務(wù);task8~task11為CPU-GPU任務(wù)。
圖6是通過StreamMAP系統(tǒng)最終生成的flowCompute執(zhí)行配置文件,配置文件的前2列是待執(zhí)行集群任務(wù)的數(shù)目,中間2列表示這些任務(wù)執(zhí)行的具體集群節(jié)點(diǎn),最后 1列這是集群應(yīng)用的執(zhí)行程序和數(shù)據(jù)映像。因?yàn)樵谂渲梦募袷街校蝿?wù)的編號(hào)默認(rèn)是按照行的順序進(jìn)行遞增,所以這實(shí)際上是建立了集群任務(wù)到計(jì)算節(jié)點(diǎn)的一個(gè)映射。如圖6所示,第1列表示將task0分配在node0上執(zhí)行,第2列表示將task1在分配node1上執(zhí)行,以此類推。

圖6 MPI執(zhí)行配置文件
表1為本文實(shí)驗(yàn)中MPI和StreamMAP這2種調(diào)度方案的任務(wù)分配結(jié)果,可見MPI采用了一種簡單的隨機(jī)分配方案,任務(wù)按照編號(hào)依次地分配到各個(gè)節(jié)點(diǎn)。其中,MPI運(yùn)行時(shí)調(diào)度系統(tǒng)忽略了任務(wù)10、任務(wù)11對(duì)于GPU計(jì)算資源的需求,而將這2個(gè)具有大規(guī)模數(shù)據(jù)并行的任務(wù)分別分配到?jīng)]有配備GPU加速器的普通計(jì)算節(jié)點(diǎn)2和節(jié)點(diǎn)3。在采用MPI+CUDA,乃至其他包含異構(gòu)GPU內(nèi)核程序的主流GPU集群編程模型中,這種分配方案使得集群應(yīng)用無法在異構(gòu)GPU集群平臺(tái)上正確地運(yùn)行。而采用StreamMAP的分配方案中,4個(gè)CPU-GPU類任務(wù)task8~task11分別被分配到具有并行計(jì)算能力的GPU節(jié)點(diǎn)node0和node1,而純CPU任務(wù)task0~task7則被均勻地分配到集群中的各個(gè)節(jié)點(diǎn)。所有任務(wù)的計(jì)算資源需求都得到了滿足,因此相比之下,streamMAP更能夠契合GPU集群的體系結(jié)構(gòu)特征。

表1 2種方案任務(wù)的分配結(jié)果
為了能夠?qū)PI運(yùn)行時(shí)調(diào)度方案和StreamMAP調(diào)度方案進(jìn)行性能比較,首先需要使得采用MPI運(yùn)行時(shí)系統(tǒng)的集群應(yīng)用程序能夠在GPU集群上正確運(yùn)行,為此使用openACC跨平臺(tái)編譯制導(dǎo)指令對(duì)本文實(shí)驗(yàn)中所用到的集群應(yīng)用進(jìn)行重寫。使用OpenACC編譯制導(dǎo)指令的好處在于,如果一個(gè)具有大規(guī)模數(shù)據(jù)并行性的CPU-GPU任務(wù)沒有獲得其執(zhí)行所需要的GPU計(jì)算資源,就會(huì)通過相應(yīng)的回滾(fallback)操作在CPU處理器上執(zhí)行。
表2是上述2種調(diào)度方案的運(yùn)行時(shí)間開銷。可以看出,在MPI運(yùn)行時(shí)調(diào)度方案中,節(jié)點(diǎn)2和節(jié)點(diǎn)3因?yàn)闆]有配備GPU計(jì)算資源,所以其上運(yùn)行的task10、task11必須通過回滾操作在CPU上運(yùn)行,這大大地增加了運(yùn)行時(shí)間開銷。而采用StreamMAP調(diào)度方案的各個(gè)節(jié)點(diǎn)的負(fù)載更加均衡,沒有明顯的性能瓶頸。在本文實(shí)驗(yàn)中,采用StreamMAP調(diào)度方案帶來了約26x的整體性能提升。

表2 2種方案運(yùn)行時(shí)間開銷的對(duì)比 s
上述所有工作都是由StremMAP系統(tǒng)自動(dòng)完成的,程序員無需了解底層GPU集群體系結(jié)構(gòu)的細(xì)節(jié),降低了集群程序設(shè)計(jì)者的編程負(fù)擔(dān),同時(shí)這樣的程序也具有廣泛的可移植性和可擴(kuò)展性。
本文設(shè)計(jì)并實(shí)現(xiàn)了StreamMAP系統(tǒng),從預(yù)編譯和運(yùn)行時(shí)2個(gè)層面對(duì)現(xiàn)有的集群編程模型hybrid MPI/CUDA進(jìn)行了改進(jìn),使之能夠較好地契合GPU集群體系結(jié)構(gòu)特征。與傳統(tǒng)的hybrid MPI/CUDA編程模型相比,StreamMAP系統(tǒng)有效地降低了集群應(yīng)用程序的編程復(fù)雜度,并保證了程序的可移植性和可擴(kuò)展性。此外,StreamMAP提供了一個(gè)系統(tǒng)性的框架,開發(fā)者可以在此基礎(chǔ)上設(shè)計(jì)針對(duì)于具體集群應(yīng)用特征的任務(wù)劃分方式和分配算法,這也是后續(xù)工作的重點(diǎn)。
[1] Jacobsen D A, Thibault J C, Senocak I. An MPI-CUDA Implementation for Massively Parallel Incompressible Flow Computations on Multi-GPU Clusters[C]//Proc. of the 48th AIAA Aerospace Sciences Meeting and Exhibit. Orlando, USA: [s. n.], 2010: 1065-1072.
[2] 張 繁, 王章野, 姚 建, 等. 應(yīng)用GPU集群加速計(jì)算蛋白質(zhì)分子場(chǎng)[J]. 計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào), 2010, 22(3): 412-419.
[3] 龍桂華, 趙宇波. 三維交錯(cuò)網(wǎng)格有限差分地震波模擬的GPU集群實(shí)現(xiàn)[J]. 地球物理學(xué)進(jìn)展, 2011, 26(6): 1938-1949.
[4] 蘇麗麗. 基于CPU-GPU集群的分子動(dòng)力學(xué)并行計(jì)算研 究[D]. 大連: 大連理工大學(xué), 2009.
[5] 朱曉敏, 陸配忠. 異構(gòu)集群系統(tǒng)中安全關(guān)鍵實(shí)時(shí)應(yīng)用調(diào)度研究[J]. 計(jì)算機(jī)學(xué)報(bào), 2010, 33(12): 2364-2377.
[6] 陳 勇, 陳國良, 李春生, 等. SMP機(jī)群混合編程模型研究[J]. 小型微型計(jì)算機(jī)系統(tǒng), 2004, 25(10): 1763-1767.
[7] 王惠春, 朱定局, 曹學(xué)年, 等. 基于SMP集群的混合并行編程模型研究[J]. 計(jì)算機(jī)工程, 2009, 35(3): 271-273.
[8] Phillips J C, Stone J E, Schulten K. Adapting a Message- driven Parallel Application to GPU-accelerated Clusters[C]// Proc. of ACM/IEEE Conference on Supercomputing. Piscataway, USA: IEEE Press, 2008: 81-89.
[9] 許彥芹,陳慶奎. 基于SMP集群的MPI+CUDA模型的研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2010, 31(15): 3408-3412.
[10]University of Illinois at Urbana-Champaign. Accelerator Cluster Webpage[EB/OL]. [2013-03-12]. http://iacat.illinois. edu/resources/cluster/.
[11] National Center for Supercomputing Applications. Intel 64 Tesla Linux Cluster Lincoln Webpage[EB/OL]. [2013-03-18]. http://www.ncsa.illinois.edu/UserInfo/Resources/Hardware/Intel64TeslaCluster/.
[12] Message Passing Interface Forum. MPI: A Message-passing Interface Standard[EB/OL]. [2013-02-10]. http://www.mcs.anl. gov/rresearch/projects/mpi/.
[13] OpenACC Forum. OpenACC.1.0.pdf[EB/OL]. [2013-02-20]. http://openacc.org/Downloads.
編輯 任吉慧
Automatic Task Assignment System of General Computing Oriented GPU Cluster
HU Xin-ming, SHENG Chong-chong, LI Jia-jia, WU Bai-feng
(School of Computer Science,Fudan University, Shanghai 201203, China)
MPI+CUDA are the mainstream programming models of current GPU cluster architecture. However, by using such a low level programming model, programmers require detailed knowledge of the underlying architecture, which exerts a heavy burden. Besides, the program is less portability and inefficient. This paper proposes StreamMAP, an automatic task assignment system on GPU clusters. It provides powerful, yet concise language extension suitable to describe the compute resource demands of cluster tasks. It develops a run time system to maintain resource information, and supplies an automatic task assignment for GPU cluster. Experiments show that StreamMAP provides programmability, portability and scalability for GPU cluster application.
GPU cluster; heterogeneous; programming model; task assignment; portability; scalability
1000-3428(2014)03-0103-05
A
N945
胡新明(1989-),男,碩士研究生,主研方向:面向GPU的大規(guī)模并行計(jì)算;盛沖沖、李佳佳,碩士研究生;吳百鋒,教授。
2013-02-27
2013-04-18 E-mail:10210240001@fudan.edu.cn
10.3969/j.issn.1000-3428.2014.03.021