蔣智恩
(福建信息職業(yè)技術(shù)學(xué)院,福建 福州 350003)
多GPU節(jié)點(diǎn)已成為科學(xué)應(yīng)用的首選平臺(tái).在多GPU節(jié)點(diǎn)中,GPU通過不同的通信通道互連在一起[1]. GPU之間的節(jié)點(diǎn)內(nèi)通信可以以不同的延遲和帶寬特性穿越不同的路徑. 隨著多GPU節(jié)點(diǎn)內(nèi)的GPU數(shù)量的增加,GPU互連的物理拓?fù)渫哂懈鄬蛹?jí),這反過來又增加了GPU通信通道的異構(gòu)性[2].多GPU節(jié)點(diǎn)已被證明是加速不同領(lǐng)域應(yīng)用的有前途的平臺(tái),已經(jīng)得到廣泛應(yīng)用,如計(jì)算流體動(dòng)力學(xué)、分子動(dòng)力學(xué)和天氣預(yù)報(bào)模型.
在多GPU節(jié)點(diǎn)中,不同的GPU之間可能存在各種遍歷路徑. 因此,不同GPU對(duì)之間的通信可能會(huì)經(jīng)歷不同的通信通道[3].圖1是用作實(shí)驗(yàn)測(cè)試平臺(tái)的多GPU節(jié)點(diǎn)的示例配置. 根據(jù)圖1可知,GPU可以通過不同的路徑相互通信. 通常,不同GPU對(duì)之間的通信路徑可以遍歷4個(gè)拓?fù)浼?jí)別,稱之為級(jí)別0、級(jí)別1、級(jí)別2和級(jí)別3.在0級(jí),GPU對(duì)之間的通信路徑穿過PCIe內(nèi)部交換機(jī),該路徑存在于單個(gè)GPU加速器(例如,GPU 0與GPU 1之間的路徑)的GPU之中;級(jí)別1的通信路徑經(jīng)過多個(gè)PCIe交換機(jī)(例如,GPU 0和GPU 2之間的路徑);在級(jí)別2處,通信路徑穿過根聯(lián)合體(RC)設(shè)備(例如,GPU 0和GPU 4之間的路徑),RC將PCIe交換機(jī)光纖連接到插座;級(jí)別3通過諸如Intel QPI之類的插座間(IS)鏈路(例如,GPU 0和GPU 8之間的路徑)[4].不同拓?fù)浼?jí)別的這種多種通信信道可能導(dǎo)致不同的GPU通信延遲和帶寬.通過各種消息大小來測(cè)量16 GPU節(jié)點(diǎn)中所有可能GPU對(duì)的通信延遲和帶寬.
圖1 多GPU各層通信示意圖
提出了一種拓?fù)涓兄狦PU選擇方案,以便根據(jù)應(yīng)用的GPU通信模式以及目標(biāo)多GPU節(jié)點(diǎn)的物理拓?fù)鋵PU設(shè)備分配給MPI進(jìn)程.使用三種不同的指標(biāo)來模擬物理拓?fù)涮卣鳎貉舆t、帶寬和距離.使用這些度量來區(qū)分多GPU節(jié)點(diǎn)內(nèi)的不同GPU與GPU之間的通信路徑.
在本節(jié)中,提出了拓?fù)涓兄狦PU選擇方案,以便將內(nèi)部節(jié)點(diǎn)GPU有效地分配給MPI進(jìn)程,從而提高節(jié)點(diǎn)內(nèi)部進(jìn)程間GPU通信性能. 在方法中,利用GPU通信模式和節(jié)點(diǎn)的物理特性,并將拓?fù)涓兄狦PU選擇方案建模為GPU通信圖被映射到GPU物理拓?fù)鋱D上的圖映射問題. 這個(gè)映射問題的一個(gè)給定的解決方案將指定一個(gè)特定的GPU分配給MPI進(jìn)程.
通過在初始運(yùn)行中剖析應(yīng)用程序來提取GPU通信模式. 在這方面,測(cè)試MPI庫(kù)以收集GPU進(jìn)程間通信,并保存為方形矩陣. 矩陣捕獲每對(duì)進(jìn)程之間傳輸?shù)腉PU消息的總體積. 使用這個(gè)矩陣,構(gòu)造一個(gè)GPU虛擬拓?fù)鋱D,表示應(yīng)用程序的GPU通信模式. 在該圖中,頂點(diǎn)代表MPI進(jìn)程,加權(quán)邊代表每對(duì)進(jìn)程之間GPU通信的存在和意義. 因此,邊緣權(quán)重越高,關(guān)聯(lián)的GPU對(duì)等體之間的通信量就越高.
使用三種不同的度量來反映不同拓?fù)浼?jí)別在多GPU節(jié)點(diǎn)中的影響:延遲、帶寬和距離. 對(duì)于每個(gè)度量標(biāo)準(zhǔn),執(zhí)行一系列測(cè)試來提取關(guān)聯(lián)的物理拓?fù)渚仃囄募?請(qǐng)注意,沒有一個(gè)測(cè)試需要root訪問權(quán)限). 使用生成的文件,構(gòu)建GPU物理拓?fù)鋱D. 此圖中的頂點(diǎn)代表GPU設(shè)備索引,邊代表兩個(gè)GPU之間的連接強(qiáng)度. 所有的內(nèi)節(jié)點(diǎn)GPU都能夠相互通信,因此GPU物理拓?fù)鋱D將是一個(gè)完整的圖. 較高的邊緣值分別表示基于等待時(shí)間,基于帶寬和基于距離的物理拓?fù)鋱D中的較低等待時(shí)間,較高帶寬和較低通信距離.最后,對(duì)于基于距離的度量,使用NVML庫(kù)中的一組API來提取節(jié)點(diǎn)上可用的不同GPU對(duì)的通信距離.根據(jù)檢測(cè)到的最大拓?fù)浼?jí)數(shù)(本文中為4),對(duì)于每個(gè)GPU對(duì),將該最大值與該對(duì)拓?fù)浼?jí)別值之間的差異存儲(chǔ)到物理拓?fù)渚仃囄募?
實(shí)驗(yàn)在一臺(tái)6節(jié)點(diǎn)K80 Helios超級(jí)計(jì)算機(jī)的一個(gè)節(jié)點(diǎn)上進(jìn)行.每個(gè)K80節(jié)點(diǎn)配備16個(gè)GPU,256 GB內(nèi)存和兩個(gè)Intel Xeon Ivy Bridge E5-2697 v2處理器. 每個(gè)Xeon處理器都提供12個(gè)內(nèi)核,以2.7 GHz時(shí)鐘速度運(yùn)行. 因此,每個(gè)節(jié)點(diǎn)總共有24個(gè)核心. 此外,每個(gè)節(jié)點(diǎn)都運(yùn)行一個(gè)64位的CentOS 6.7作為操作系統(tǒng),使用Open MPI 1.10.2、CUDA 7.5和SCOTCH 5.8.最后,運(yùn)行了16個(gè)MPI進(jìn)程(每個(gè)GPU一個(gè)進(jìn)程)的所有實(shí)驗(yàn),這些進(jìn)程均勻分布在兩個(gè)插座的核心之間.
圖2至圖3顯示了每個(gè)微基準(zhǔn)通信時(shí)間改進(jìn)的結(jié)果. 報(bào)告了拓?fù)涓兄桨冈谀J(rèn)GPU選擇上所取得的改進(jìn). 在每種情況下,報(bào)告四次運(yùn)行的平均值,并包括標(biāo)準(zhǔn)差.
根據(jù)圖2,對(duì)于沒有環(huán)繞的未加權(quán)的2D和3D微基準(zhǔn),主要針對(duì)大于64 kB的消息大小實(shí)現(xiàn)了性能改進(jìn). 通過環(huán)繞連接,在2D情況下(圖2(b)),對(duì)于任何度量標(biāo)準(zhǔn),都不能實(shí)現(xiàn)性能改進(jìn). 還可以使用距離度量觀察一些性能下降. 對(duì)于3D案例(圖2(d)),所有指標(biāo)在所有消息中都有相同的改進(jìn).
相反,在環(huán)繞連接中看不到相同的行為.實(shí)際上,雖然增加環(huán)繞連接將導(dǎo)致3D微基準(zhǔn)標(biāo)記的進(jìn)一步改進(jìn),但沒有觀察到對(duì)2D微基準(zhǔn)標(biāo)記的任何改進(jìn),甚至可以看到一些性能下降.為了進(jìn)一步研究這一點(diǎn),分析了這些微基準(zhǔn)的通信模式,有無環(huán)繞連接.注意到在3D微基準(zhǔn)標(biāo)記中的環(huán)繞連接將導(dǎo)致進(jìn)程之間的通信彼此遠(yuǎn)離(按照默認(rèn)方法分配給它們的GPU).一方面,兩顆GPU之間距離越遠(yuǎn),其通信性能就越低.另一方面,在2D情況下,增加環(huán)繞連接將導(dǎo)致大多數(shù)通信發(fā)生在GPU之間,并且它們之間具有更強(qiáng)的連接.總之,增加環(huán)繞連接使默認(rèn)的GPU分配成為2D微基準(zhǔn)標(biāo)記通信模式的已經(jīng)很好地匹配,而與3D微基準(zhǔn)標(biāo)記相反.
圖2 拓?fù)涓兄狦PU選擇實(shí)現(xiàn)通信時(shí)間改進(jìn)的選擇方案圖
圖3 拓?fù)涓兄狦PU選擇通過子通信器的選擇方案實(shí)現(xiàn)的改進(jìn)圖
一般來說,可以觀察到拓?fù)涓兄桨笇?duì)大消息(大于16 kB)更有利.原因在于,不同級(jí)別小消息的延遲差異不如大消息帶寬的差異.更具體地說,小消息的級(jí)別1、級(jí)別2和級(jí)別3到級(jí)別0的等待時(shí)間比率分別是1.01,1.17和1.57.對(duì)于大消息,級(jí)別0到級(jí)別1、級(jí)別2和級(jí)別3的帶寬比率分別是2.47,4.22和4.47.因此,不同層次的頻道之間的主要區(qū)別在于它們的帶寬.對(duì)于較大的消息,不同拓?fù)浼?jí)別的性能更加多樣化,因?yàn)樗鼈冎饕艿讓油ㄐ磐ǖ赖膸捥匦杂绊?對(duì)于小消息,改進(jìn)的空間要小得多(1.57的延遲比與4.47的帶寬比相比).此外,小型消息通信受啟動(dòng)延遲的影響很大,這不受拓?fù)涓兄陀糜贕PU分配的特定策略的影響.考慮到這一點(diǎn),仍然可以通過三個(gè)微觀基準(zhǔn)來獲得小信息的性能改進(jìn).在另一些情況下,發(fā)現(xiàn)小消息的性能會(huì)有輕微下降.對(duì)這一趨勢(shì)進(jìn)行進(jìn)一步的調(diào)查,以便為未來的工作發(fā)送小信息.設(shè)計(jì)一個(gè)針對(duì)小消息通信進(jìn)行精細(xì)調(diào)整的方案屬于未來工作的范圍.