一種集群系統(tǒng)設(shè)備間數(shù)據(jù)通信方法與系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及高性能計(jì)算領(lǐng)域,特別是設(shè)及一種集群系統(tǒng)設(shè)備間數(shù)據(jù)通信方法與系 統(tǒng)。
【背景技術(shù)】
[0002] 當(dāng)前社會(huì)數(shù)據(jù)大爆炸,信息數(shù)據(jù)越來(lái)越多,人們對(duì)信息數(shù)據(jù)處理能力的要求也越 來(lái)越高,不僅石油勘探、氣象預(yù)報(bào)、航天國(guó)防、科學(xué)研究等需求高性能計(jì)算,金融、政府信息 化、教育、企業(yè)、網(wǎng)絡(luò)游戲、人工智能等更廣泛的領(lǐng)域?qū)Ω咝阅苡?jì)算的需求迅猛增長(zhǎng)。
[0003] 計(jì)算速度對(duì)于高性能計(jì)算尤為重要,高性能計(jì)算朝多核、眾核發(fā)展,采用異構(gòu)并行 提升應(yīng)用計(jì)算速度,目前CPU+GPU是非常成熟的異構(gòu)協(xié)同計(jì)算模式,適合高度并行計(jì)算的 應(yīng)用或算法。在大規(guī)模集群系統(tǒng)中,數(shù)據(jù)的并行計(jì)算是主要的并行計(jì)算的應(yīng)用方式,但是由 于數(shù)據(jù)并行計(jì)算的計(jì)算設(shè)備需要彼此間相互通信,而受限于網(wǎng)絡(luò)帶寬、總線帶寬等原因,對(duì) 于通信量較大,計(jì)算需要較長(zhǎng)時(shí)間的等待數(shù)據(jù)的傳輸,而使得系統(tǒng)整體性能無(wú)法提高。因 此,當(dāng)前有限的傳輸帶寬已經(jīng)無(wú)法滿足系統(tǒng)設(shè)備的通信需求,而現(xiàn)有的硬件通信能力也無(wú) 法在短期內(nèi)得到大幅度的提升,所W需要設(shè)計(jì)一種根據(jù)現(xiàn)有有限的通信能力的條件下提高 系統(tǒng)設(shè)備的通信效率的方法,從而避免因等待數(shù)據(jù)傳輸而浪費(fèi)計(jì)算資源。
【發(fā)明內(nèi)容】
[0004] 有鑒于此,本發(fā)明的主要目的在于提供一種集群系統(tǒng)設(shè)備間數(shù)據(jù)通訊方法與系 統(tǒng),可W高效地進(jìn)行GPU設(shè)備間的通信。 陽(yáng)〇化]為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種集群系統(tǒng)設(shè)備間數(shù)據(jù)通信方法,包括:
[0006] 獲取每個(gè)節(jié)點(diǎn)內(nèi)GPU的數(shù)量N,為所述每個(gè)節(jié)點(diǎn)內(nèi)的所有GPU進(jìn)行GPU編號(hào),將GPU 的計(jì)算結(jié)果等分為N個(gè)數(shù)據(jù)塊,并將每個(gè)結(jié)果數(shù)據(jù)塊根據(jù)所述的GPU進(jìn)行數(shù)據(jù)塊編號(hào);
[0007] 令每個(gè)GPU將自己的結(jié)果數(shù)據(jù)塊根據(jù)數(shù)據(jù)塊編號(hào)發(fā)送至其他各GPU;
[0008] 令每個(gè)GPU根據(jù)此時(shí)自己的結(jié)果數(shù)據(jù)塊與其他GPU發(fā)送的結(jié)果數(shù)據(jù)塊通過(guò)第一預(yù) 設(shè)規(guī)則更新節(jié)點(diǎn)內(nèi)的數(shù)據(jù);
[0009] 令每個(gè)節(jié)點(diǎn)內(nèi)的目標(biāo)GPU分別將其他節(jié)點(diǎn)內(nèi)與所述目標(biāo)GPU對(duì)應(yīng)的GPU進(jìn)行規(guī)約 操作,根據(jù)第二預(yù)設(shè)規(guī)則完成節(jié)點(diǎn)間數(shù)據(jù)更新;
[0010] 令每個(gè)GPU將對(duì)應(yīng)更新完成的結(jié)果數(shù)據(jù)塊散發(fā)至所在節(jié)點(diǎn)內(nèi)的其他GPU。
[0011] 優(yōu)選地,所述第一預(yù)設(shè)規(guī)則為將每個(gè)GPU內(nèi)此時(shí)所有的結(jié)果數(shù)據(jù)塊進(jìn)行求和。
[0012] 優(yōu)選地,所述第二預(yù)設(shè)規(guī)則為將每個(gè)節(jié)點(diǎn)內(nèi)此時(shí)所有的GPU的所有結(jié)果數(shù)據(jù)塊進(jìn) 行求和。
[0013] 本發(fā)明還提供了一種集群系統(tǒng)設(shè)備間數(shù)據(jù)通信系統(tǒng),包括:
[0014] 分塊模塊,用于獲取每個(gè)節(jié)點(diǎn)內(nèi)GPU的數(shù)量N,為所述每個(gè)節(jié)點(diǎn)內(nèi)的所有GPU進(jìn)行 GPU編號(hào),將GPU的計(jì)算結(jié)果等分為N個(gè)數(shù)據(jù)塊,并將每個(gè)結(jié)果數(shù)據(jù)塊根據(jù)所述的GPU進(jìn)行 數(shù)據(jù)塊編號(hào);
[0015] 節(jié)點(diǎn)內(nèi)收集模塊,用于令每個(gè)GPU將自己的結(jié)果數(shù)據(jù)塊根據(jù)數(shù)據(jù)塊編號(hào)發(fā)送至其 他各GPU;
[0016] 節(jié)點(diǎn)內(nèi)計(jì)算模塊,用于令每個(gè)GPU根據(jù)此時(shí)自己的結(jié)果數(shù)據(jù)塊與其他GPU發(fā)送的 結(jié)果數(shù)據(jù)塊通過(guò)第一預(yù)設(shè)規(guī)則更新節(jié)點(diǎn)內(nèi)的數(shù)據(jù);
[0017] 節(jié)點(diǎn)間規(guī)約模塊,用于令每個(gè)節(jié)點(diǎn)內(nèi)的目標(biāo)GPU分別將其他節(jié)點(diǎn)內(nèi)與所述目標(biāo) GPU對(duì)應(yīng)的GPU進(jìn)行規(guī)約操作,根據(jù)第二預(yù)設(shè)規(guī)則完成節(jié)點(diǎn)間數(shù)據(jù)更新;
[0018] 節(jié)點(diǎn)內(nèi)散發(fā)模塊,用于令每個(gè)GPU將對(duì)應(yīng)更新完成的結(jié)果數(shù)據(jù)塊散發(fā)至所在節(jié)點(diǎn) 內(nèi)的其他GPU。
[0019] 優(yōu)選地,所述第一預(yù)設(shè)規(guī)則為將每個(gè)GPU內(nèi)此時(shí)所有的結(jié)果數(shù)據(jù)塊進(jìn)行求和。
[0020] 優(yōu)選地,所述第二預(yù)設(shè)規(guī)則為將每個(gè)節(jié)點(diǎn)內(nèi)此時(shí)所有的GPU的所有結(jié)果數(shù)據(jù)塊進(jìn) 行求和。
[0021] 應(yīng)用本發(fā)明提供的一種集群系統(tǒng)設(shè)備間數(shù)據(jù)通信方法與系統(tǒng),獲取每個(gè)節(jié)點(diǎn)內(nèi) GPU的數(shù)量,為所述每個(gè)節(jié)點(diǎn)內(nèi)的所有GPU進(jìn)行編號(hào),將GPU的計(jì)算結(jié)果進(jìn)行分塊,并將每個(gè) 結(jié)果數(shù)據(jù)塊根據(jù)所述的GPU進(jìn)行編號(hào),每個(gè)GPU將自己的結(jié)果數(shù)據(jù)塊根據(jù)數(shù)據(jù)塊編號(hào)發(fā)送 至其他各GPU,每個(gè)GPU根據(jù)此時(shí)自己的結(jié)果數(shù)據(jù)塊與其他GPU發(fā)送的結(jié)果數(shù)據(jù)塊通過(guò)第一 預(yù)設(shè)規(guī)則更新節(jié)點(diǎn)內(nèi)的數(shù)據(jù),每個(gè)節(jié)點(diǎn)內(nèi)的目標(biāo)GPU分別將其他節(jié)點(diǎn)內(nèi)與所述目標(biāo)GPU對(duì) 應(yīng)的GPU進(jìn)行規(guī)約操作,根據(jù)第二預(yù)設(shè)規(guī)則完成節(jié)點(diǎn)間數(shù)據(jù)更新,每個(gè)GPU將對(duì)應(yīng)更新完成 的結(jié)果數(shù)據(jù)塊散發(fā)至所在節(jié)點(diǎn)內(nèi)的其他GPU,每個(gè)GPU處理一個(gè)數(shù)據(jù)塊,充分利用了系統(tǒng)網(wǎng) 絡(luò)帶寬,均衡了GPU負(fù)載,可W高效地實(shí)現(xiàn)GPU間的數(shù)據(jù)通信。
【附圖說(shuō)明】
[0022] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本 發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可W根據(jù) 提供的附圖獲得其他的附圖。
[0023]圖1為本發(fā)明一種集群系統(tǒng)設(shè)備間數(shù)據(jù)通信方法實(shí)施例一的原理示意圖;
[0024] 圖2為本發(fā)明一種集群系統(tǒng)設(shè)備間數(shù)據(jù)通信方法實(shí)施例一的流程圖;
[00巧]圖3為本發(fā)明一種集群系統(tǒng)設(shè)備間數(shù)據(jù)通信方法實(shí)施例一的又一原理示意圖; [00%] 圖4為本發(fā)明一種集群系統(tǒng)設(shè)備間數(shù)據(jù)通信方法實(shí)施例一的又一原理示意圖;
[0027]圖5為本發(fā)明一種集群系統(tǒng)設(shè)備間數(shù)據(jù)通信方法實(shí)施例一的又一原理示意圖;
[0028] 圖6為本發(fā)明一種集群系統(tǒng)設(shè)備間數(shù)據(jù)通信系統(tǒng)實(shí)施例二的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0029] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于 本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0030] 本發(fā)明提供了一種集群系統(tǒng)設(shè)備間數(shù)據(jù)通信方法,集群節(jié)點(diǎn)間通過(guò)高速網(wǎng)絡(luò)相互 連接,如圖1所示,系統(tǒng)為CPU(中央處理器)+GPU(圖形處理器)異構(gòu)集群系統(tǒng),集群由若 干node節(jié)點(diǎn)組成,節(jié)點(diǎn)內(nèi)有若干計(jì)算設(shè)備GPU,GPU間可W同過(guò)總線直接相互通信。節(jié)點(diǎn)間 通過(guò)IB網(wǎng)絡(luò)相互連接,節(jié)點(diǎn)間的GPU可W通過(guò)IB網(wǎng)絡(luò)直接相互通信,IB即InfiniBand,是 一個(gè)統(tǒng)一的互聯(lián)結(jié)構(gòu),既可W處理存儲(chǔ)I/O、網(wǎng)絡(luò)1/0,也能夠處理進(jìn)程間通信,本實(shí)施例通 信方法首先在節(jié)點(diǎn)內(nèi)部更新計(jì)算結(jié)果,然后再在節(jié)點(diǎn)間更新計(jì)算結(jié)果,圖2示出了本發(fā)明 集群系統(tǒng)設(shè)備間數(shù)據(jù)通信方法實(shí)施例一的流程圖,包括:
[0031] 步驟S101 :獲取每個(gè)節(jié)點(diǎn)內(nèi)GPU的數(shù)量N,為所述每個(gè)節(jié)點(diǎn)內(nèi)的所有GPU進(jìn)行GPU 編號(hào),將GPU的計(jì)算結(jié)果等分為N個(gè)數(shù)據(jù)塊,并將每個(gè)結(jié)果數(shù)據(jù)塊根據(jù)所述的GPU進(jìn)行數(shù)據(jù) 塊編號(hào); 陽(yáng)0巧如將GPU的計(jì)算結(jié)果命名為Wi,假設(shè)節(jié)點(diǎn)內(nèi)有N塊GPU計(jì)算設(shè)備,則將每個(gè)計(jì)算結(jié) 果Wi等分成N塊,每塊大小為Wi/N,每塊分別命名為Wii_j,(i為GPU號(hào),j為塊號(hào))。如 圖3所示,節(jié)點(diǎn)內(nèi)有4塊GPU,則分塊為,將每個(gè)Wi等分成4塊:
[0033]GPU0 的 4 塊AW0 分別命名為AW00_0,AW00_1,AW00_2,AW00_3,
[0034]GPUl 的 4 塊AWI分別命名為AW11_0,AW11_1,AWll_2,AW11_3,
[0035]GPU2 的 4 塊AW2 分別命名為AW22_0,AW22_l,AW22_2,AW22_3,
[0036]GPUS 的 4 塊AW3 分別命名為AW33_0,AW33_l,AW33_2,AW33_3。
[0037] 步驟S102 :令每個(gè)GPU將自己的結(jié)果數(shù)據(jù)塊根據(jù)數(shù)據(jù)塊編號(hào)發(fā)送至其他各GPU;
[0038] 每個(gè)GPU將自己的結(jié)果Wi塊平均發(fā)送給不同的GPU,GPU0將自己的3個(gè)GPU塊 AW00_1,AW00_2,AW00_3,分別發(fā)送給GPU1,GPU2,GPU3 ;GPU1 類似,將自己的 3 個(gè)GPU 塊AW11_0,AWll_2,AWll_3,分別發(fā)送給GPUO,GPU2,GPU3 ;GPU2 將自己的 3 個(gè)GPU塊 AW22_0,AW22_l,AW22_3,分別發(fā)送給GPUO,GPUl,GPUS;GPU3 將自己的 3 個(gè)GPU塊 AW33_0,AW33_l,AW33_2,分別發(fā)送個(gè)GPUO,GPUl,GPU2 ;發(fā)送完成后如圖4所示:
[0039]GPUO中存儲(chǔ)有每個(gè)卡的 0 號(hào)W塊:W00_0、W11_0、W22_0、W33_0 ;
[0040] 6口111中存儲(chǔ)有每個(gè)卡的1號(hào)¥塊:胖00_1、胖11_1、胖22_1、胖33_1;
[0041]GPU2 中存儲(chǔ)有每個(gè)卡的 2 號(hào)W塊:W00_2、Wll_2、W22_2、W33_2 ;
[0042]GPU3 中存儲(chǔ)有每個(gè)卡的 3 號(hào)W塊:W00_3、Wll_3、W22_3、W33_3。
[00創(chuàng)步驟S103 :令每個(gè)GPU根據(jù)此時(shí)自己的結(jié)果數(shù)據(jù)塊與其他GPU發(fā)送的結(jié)果數(shù)據(jù)塊 通過(guò)第一預(yù)設(shè)規(guī)則更新節(jié)點(diǎn)內(nèi)的數(shù)據(jù); 陽(yáng)044] 第一預(yù)設(shè)規(guī)則為將每個(gè)GPU內(nèi)此時(shí)所有的結(jié)果數(shù)據(jù)塊進(jìn)行求和,每塊GPU將自己 的結(jié)果數(shù)據(jù)塊與接收到的其它GPU的結(jié)果數(shù)據(jù)塊做相應(yīng)的更