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