專利名稱:面向流處理器并行環(huán)境的數(shù)據(jù)流通信系統(tǒng)及其通信方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信技術(shù),特別是涉及一種面向流處理器并行環(huán)境的數(shù)據(jù)流通信系統(tǒng)及其通信方法的技術(shù)。
背景技術(shù):
隨著信息技術(shù)的飛速發(fā)展和互聯(lián)網(wǎng)技術(shù)應(yīng)用的普及,網(wǎng)絡(luò)已經(jīng)成為人們?nèi)粘I钪兄匾囊徊糠?。近年來?G網(wǎng)絡(luò)和物聯(lián)網(wǎng)技術(shù)應(yīng)用逐步展開為人們的生活、工作帶來了極大的方便。然而,這些新技術(shù)的廣泛應(yīng)用帶來海量信息處理問題以及如何提高大規(guī)模實(shí)時(shí)支持能力的新挑戰(zhàn)。以流處理器為代表的新型計(jì)算裝置為解決這些困難帶來了曙光。 流處理器是GPU走向通用計(jì)算領(lǐng)域的總稱,因其內(nèi)部采用上百個(gè)Mream processor并行架構(gòu)而得名,其性能十分出眾,以GTX480為例其浮點(diǎn)計(jì)算性能已經(jīng)超過Tfloaps。目前世界主流顯卡廠商N(yùn)VIDIA、AMD (ATI)、Intel等公司都積極投入流處理器的研究和通用計(jì)算研究領(lǐng)域。在通用計(jì)算研究領(lǐng)域已經(jīng)成熟的編程模型有NVIDIA的CUDA (Compute Unified Device Architecture)和AMD的CTM (Close To Metal),這些技術(shù)已經(jīng)被廣泛的應(yīng)用到圖像處理、游戲、3D處理、科學(xué)計(jì)算、數(shù)據(jù)挖掘等領(lǐng)域。根據(jù)傳統(tǒng)的并行技術(shù),利用計(jì)算機(jī)網(wǎng)絡(luò)把若干個(gè)配置流處理器的計(jì)算機(jī)連接起來可以構(gòu)建更為強(qiáng)大的并行信息處理系統(tǒng)是一個(gè)十分重要的工作。因而流處理器集群不僅可以構(gòu)建更大規(guī)模的處理系統(tǒng),更主要的是,其可以使用較傳統(tǒng)CPU集群更少的計(jì)算節(jié)點(diǎn)構(gòu)建比CPU集群強(qiáng)大數(shù)百倍的計(jì)算系統(tǒng),而其能源消耗大大降低,且大大增強(qiáng)了系統(tǒng)的穩(wěn)定性。構(gòu)建集群除了物理網(wǎng)絡(luò)外,還需要有效的并行通信協(xié)議的支持,方能發(fā)揮其并行處理的能力。MPI已經(jīng)成為并行環(huán)境構(gòu)建領(lǐng)域一個(gè)重要的通信系統(tǒng),被學(xué)術(shù)界和工業(yè)界廣泛應(yīng)用。但是,現(xiàn)有基于流處理器的網(wǎng)絡(luò)中各計(jì)算節(jié)點(diǎn)的處理環(huán)境及各計(jì)算節(jié)點(diǎn)之間的通信環(huán)境比較復(fù)雜,使得CUDA(Compute Unified Device Architecture)程序員及CTM(Close To Metal)程序員在開發(fā)并行通信程序和并行流處理器程序時(shí)需要先詳細(xì)了解計(jì)算節(jié)點(diǎn)的處理細(xì)節(jié)及各計(jì)算節(jié)點(diǎn)之間的通信細(xì)節(jié),因此不利于系統(tǒng)程序的開發(fā),而且也不利于海量數(shù)據(jù)流(如3G視頻流)的實(shí)時(shí)處理。
發(fā)明內(nèi)容
針對(duì)上述現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明所要解決的技術(shù)問題是提供一種系統(tǒng)程序開發(fā)方便,且利于海量數(shù)據(jù)流實(shí)時(shí)處理的面向流處理器并行環(huán)境的數(shù)據(jù)流通信系統(tǒng)及其通信方法。為了解決上述技術(shù)問題,本發(fā)明所提供的一種面向流處理器并行環(huán)境的數(shù)據(jù)流通信系統(tǒng),其特征在于包括流處理器并行計(jì)算物理環(huán)境、節(jié)點(diǎn)資源表、部件資源表、流通信管道映射表;
所述流處理器并行計(jì)算物理環(huán)境為一個(gè)四元組SPPE (PCS, MASTER, SOFS, NS);其中, SPPE為流處理器并行計(jì)算物理環(huán)境,PCS= {Cl,C2,…,Ce}為SPPE中的計(jì)算節(jié)點(diǎn)的集合,MASTER為SPPE中的主控制計(jì)算節(jié)點(diǎn),SOFS為SPPE中的軟件的集合,NS為SPPE中的互連網(wǎng)絡(luò)的集合,且在NS上配有MPI通信環(huán)境;
所述計(jì)算節(jié)點(diǎn)配置有CPU計(jì)算部件、GPU計(jì)算部件、動(dòng)態(tài)管道池,及用于MPI通信的MPI 接收部件、MPI發(fā)送部件,所述CPU計(jì)算部件、GPU計(jì)算部件、MPI接收部件、MPI發(fā)送部件均為廣義計(jì)算部件,所述GPU計(jì)算部件為流處理計(jì)算設(shè)備;
所述動(dòng)態(tài)管道池為一個(gè)四元組DPP (ID, CPS, PPS, PipeM);其中,DPP為動(dòng)態(tài)管道池,ID 為DPP的標(biāo)識(shí)符,CPS= {CP1,CP2,…,CPm)為DPP中的公有管道的管道集合,PPS= {PN1, PN2,…,PNn}為DPP中的私有管道的管道集合,是廣義計(jì)算部件讀取信息的專有管道, PipeM為DPP的管道管理部件,所述公有管道及私有管道均為單向流動(dòng)的數(shù)據(jù)流通道,所述 CPS分為兩組,分別為CPSM管道組和CPSS管道組,CPSM管道組用于接收消息,CPSS管道組用于發(fā)送消息和數(shù)據(jù)流信息通信的管道綁定,每個(gè)廣義計(jì)算部件均配有一個(gè)私有管道,用于接收消息及數(shù)據(jù)流;
所述廣義計(jì)算部件為一個(gè)五元組GP (ID, RP, WP, PN, SP);其中,GP為廣義計(jì)算部件, ID為GP的部件標(biāo)識(shí)符,RP為GP的讀管道進(jìn)程;WP為GP的寫公有管道進(jìn)程,PN為GP的私有管道,SP= {Pl,p2,p3,…,Pp}為GP中的各狹義計(jì)算部件的集合;
所述節(jié)點(diǎn)資源表為一個(gè)二維表NTA (Nid, Nname, Nip, Ntype),記載有SPPE中所有計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)信息;其中,NTA為節(jié)點(diǎn)資源表,Nid為所記載計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符,Nname 為所記載計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)名字,用于通信標(biāo)識(shí),Nip為所記載計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)IP地址,用于 MPI環(huán)境的配置,Ntype為所記載計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)類型,用于表明所記載計(jì)算節(jié)點(diǎn)的是普通計(jì)算節(jié)點(diǎn)還是主控制計(jì)算節(jié)點(diǎn);
所述部件資源表為一個(gè)二維表PTA (Pid,Pname, Ptype, PN),記載有SPPE中所有廣義計(jì)算部件的部件信息;其中,PTA為部件資源表,Pid為所記載部件的部件標(biāo)識(shí)符,Pname為所記載部件的部件名字,用于通信標(biāo)識(shí),Ptype為所記載部件的部件類型,用于表明該部件是CPU計(jì)算部件、GPU計(jì)算部件,還是通信部件,PN為所記載部件的私有管道;
所述流通信管道映射表為一個(gè)二維表MTA (Pid, group, sno,PipeA,PipeB);其中,MTA 為流通信管道映射表,Pid為標(biāo)識(shí)符,group為數(shù)據(jù)流通信組號(hào),用于通信標(biāo)識(shí),sno為序號(hào), PipeA為數(shù)據(jù)流源管道號(hào),PipeB為數(shù)據(jù)流目標(biāo)管道號(hào);
所述NTA、PTA、MTA在每個(gè)計(jì)算節(jié)點(diǎn)中均保持一個(gè)副本,并采用強(qiáng)一致性維護(hù); 各部件之間的通信均通過數(shù)據(jù)通信單元來承載,所述通信數(shù)據(jù)單元為一個(gè)十元組CDU (id, Sno, Segno, SourceN, SourceP, DestNS, DestPS, type, COM, DATA);其中,CDU 為通信數(shù)據(jù)單元,id為該⑶U的標(biāo)識(shí)符,Sno、Segno均用于數(shù)據(jù)流通信,Sno為該⑶U的數(shù)據(jù)流號(hào), Segno為該⑶U的數(shù)據(jù)段號(hào),SourceN為通信源計(jì)算節(jié)點(diǎn),SourceP為該⑶U的發(fā)出部件, DestNS為該CDU的目標(biāo)計(jì)算節(jié)點(diǎn)的集合,DestPS為該CDU的目標(biāo)部件的集合,是目標(biāo)計(jì)算節(jié)點(diǎn)內(nèi)接收該CDU的部件的集合,type為該CDU的通信數(shù)據(jù)單元類別,共有數(shù)據(jù)流、命令消息、短消息三種類別,COM為通信命令,DATA為消息數(shù)據(jù)。 本發(fā)明所提供的面向流處理器并行環(huán)境的數(shù)據(jù)流通信系統(tǒng)的通信方法,其特征在于
每個(gè)廣義計(jì)算部件中的SP執(zhí)行本地的計(jì)算任務(wù),并接收該廣義計(jì)算部件中的RP送來的信息進(jìn)行處理;設(shè)發(fā)送端的廣義計(jì)算部件為GP1,接收端的廣義計(jì)算部件為GP2,INFO為消息,SINFO為數(shù)據(jù)流;
GPl中的SP要發(fā)送INFO到GP2時(shí),先查詢PTA獲取GP2的ID,再把GP2的ID和INFO 提交給GPl的WP,然后再處理后續(xù)計(jì)算任務(wù);
GPl中的SP要發(fā)送SINFO到GP2時(shí),先查詢PTA獲取GP2的ID,再把GP2的ID和SINFO 提交給GPl的WP,并等待至SINFO通信結(jié)束后再處理后續(xù)計(jì)算任務(wù);
GPl中的WP收到該GP中的SP提交的GP2的ID及通信數(shù)據(jù)后,先判斷收到的通信數(shù)據(jù)的類型,如果GPl中的WP收到的通信數(shù)據(jù)是INF0,則創(chuàng)建一個(gè)⑶U,再根據(jù)GPl的ID從NTA 和PTA中獲取本地計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)信息及GPl的部件信息填寫到⑶U的SourceN及SourceP 中,并將通信命令填入⑶U的COM,將INFO填入⑶U的DATA,將⑶U的type填寫為短消息類別,然后獲取本地動(dòng)態(tài)管道池的一個(gè)公有管道記為CP,并將該CDU寫入CP ;如果GPl中的 WP收到的通信數(shù)據(jù)是SINF0,則根據(jù)GP2的ID從NTA和PTA獲取GP2的私有管道記為PP, 并獲取本地動(dòng)態(tài)管道池的一個(gè)公有管道記為CP,然后把CP、PP及GPl的ID —起發(fā)給本地的PipeM,PipeM收到CP、PP及GPl的ID后在MTA中建立一個(gè)映射元組mtat將CP和PP綁定,并把CP置為繁忙狀態(tài),然后把映射元組mtat發(fā)往GP2所在的計(jì)算節(jié)點(diǎn),然后再將SINFO 分段成多個(gè)數(shù)據(jù)段,并為每個(gè)數(shù)據(jù)段創(chuàng)建一個(gè)CDU,將各數(shù)據(jù)段分別填入各CDU的DATA,根據(jù)分段次序?yàn)楦鲾?shù)據(jù)段依序設(shè)置數(shù)據(jù)流號(hào)及數(shù)據(jù)段號(hào)填入分別填入各CDU的Sno及kgno 中,然后將各個(gè)⑶U按分段次序逐次寫入CP,直至SINFO發(fā)送完畢;SINFO通信結(jié)束后,GPl 中的WP向本地的PipeM發(fā)送一個(gè)請(qǐng)求使PipeM將映射元組mtat撤銷,并釋放CP ;
每個(gè)廣義計(jì)算部件中的RP掃描自己的私有管道,如果RP掃描到自己的私有管道中有命令消息或短消息類別的CDU,則提取CDU中的id和DATA并傳輸給該廣義計(jì)算部件中的 SP,如果RP掃描到自己的私有管道中有數(shù)據(jù)流類別的CDU,并獲取到與該CDU相對(duì)應(yīng)的映射元組mtat,則RP對(duì)每個(gè)接收到的⑶U用映射元組mtat進(jìn)行識(shí)別,并按接收到的⑶U的Sno 及kgno進(jìn)行數(shù)據(jù)流復(fù)原,并逐一傳給本廣義計(jì)算部件中的SP ;
每個(gè)動(dòng)態(tài)管道池中的PipeM循環(huán)掃描本地CPS中的每個(gè)公有管道,如果本地CPS中的公有管道中有CDU,則先判定該CDU中的目標(biāo)部件是否為本地部件,如果該CDU中的目標(biāo)部件為本地部件則根據(jù)該CDU中的DestPS從PTA中獲取目標(biāo)部件所對(duì)應(yīng)的私有管道,然后把該CDU傳輸至目標(biāo)部件所對(duì)應(yīng)的私有管道;如果該CDU的目標(biāo)部件為遠(yuǎn)程部件則將該CDU 寫入本地MPI發(fā)送部件的私有管道中;
每個(gè)MPI接收部件實(shí)時(shí)接收來自SPPE中的NS的⑶U,并根據(jù)收到的⑶U中的DestPS 從PTA中得到目標(biāo)部件的部件信息并獲取其私有管道,然后將收到的CDU寫入目標(biāo)部件的私有管道中;
每個(gè)MPI發(fā)送部件循環(huán)掃描自己的私有管道,如果掃描到自己的私有管道中有待發(fā)送的CDU,則根據(jù)PTA、MTA及該CDU的DestPS獲取目標(biāo)計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)信息及目標(biāo)部件的部件信息,然后將本計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)信息填入該CDU的SourceN,將該CDU發(fā)出部件的部件信息填入該⑶U的SourceP,將目標(biāo)計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)信息填入該⑶U的DestNS,將目標(biāo)部件的部件信息填入該⑶U的DestPS,并填寫該⑶U的type和C0M,然后將該⑶U發(fā)送給目標(biāo)計(jì)算節(jié)點(diǎn)。 本發(fā)明提供的面向流處理器并行環(huán)境的數(shù)據(jù)流通信系統(tǒng)及其通信方法,系統(tǒng)中的每個(gè)計(jì)算節(jié)點(diǎn)均配置有CPU計(jì)算部件、GPU計(jì)算部件、動(dòng)態(tài)管道池,及用于MPI通信的MPI接收部件、MPI發(fā)送部件,且在每個(gè)計(jì)算節(jié)點(diǎn)中均設(shè)有節(jié)點(diǎn)資源表、部件資源表、流通信管道映射表,每個(gè)廣義計(jì)算部件均配有一個(gè)私有管道,各計(jì)算節(jié)點(diǎn)部件之間的通信均通過動(dòng)態(tài)管道池進(jìn)行,方便了各計(jì)算節(jié)點(diǎn)之間的通信,利于海量數(shù)據(jù)流實(shí)時(shí)處理,而且系統(tǒng)程序開發(fā)時(shí)與具體的流處理器編程環(huán)境無關(guān),CUDA及CTM程序員無需了解計(jì)算節(jié)點(diǎn)的處理細(xì)節(jié)及各計(jì)算節(jié)點(diǎn)之間的通信細(xì)節(jié),只需正確填寫通信數(shù)據(jù)包,減少了編程復(fù)雜度,并且流處理器程序和中央處理器程序可以各自獨(dú)立編寫開發(fā),因此也利于系統(tǒng)程序的開發(fā)。
圖1是本發(fā)明實(shí)施例的面向流處理器并行環(huán)境的數(shù)據(jù)流通信系統(tǒng)中的兩個(gè)計(jì)算節(jié)點(diǎn)之間通信的通信示意圖。
具體實(shí)施例方式以下結(jié)合
對(duì)本發(fā)明的實(shí)施例作進(jìn)一步詳細(xì)描述,但本實(shí)施例并不用于限制本發(fā)明,凡是采用本發(fā)明的相似結(jié)構(gòu)及其相似變化,均應(yīng)列入本發(fā)明的保護(hù)范圍。如圖1所示,本發(fā)明實(shí)施例所提供的一種面向流處理器并行環(huán)境的數(shù)據(jù)流通信系統(tǒng),其特征在于包括流處理器并行計(jì)算物理環(huán)境、節(jié)點(diǎn)資源表、部件資源表、流通信管道映射表;
所述流處理器并行計(jì)算物理環(huán)境為一個(gè)四元組SPPE (PCS, MASTER, SOFS, NS);其中, SPPE為流處理器并行計(jì)算物理環(huán)境,PCS= {Cl,C2,…,Ce}為SPPE中的計(jì)算節(jié)點(diǎn)的集合, MASTER為SPPE中的主控制計(jì)算節(jié)點(diǎn),SOFS為SPPE中的軟件的集合,NS為SPPE中的互連網(wǎng)絡(luò)的集合,且在NS上配有MPI通信環(huán)境;
所述計(jì)算節(jié)點(diǎn)配置有CPU計(jì)算部件Np、GPU計(jì)算部件SPP、動(dòng)態(tài)管道池,及用于MPI通信的MPI接收部件MR、MPI發(fā)送部件MS,所述CPU計(jì)算部件Np、GPU計(jì)算部件SPP、MPI接收部件MR、MPI發(fā)送部件MS均為廣義計(jì)算部件,所述GPU計(jì)算部件SPP為流處理計(jì)算設(shè)備;
所述動(dòng)態(tài)管道池為一個(gè)四元組DPP (ID, CPS, PPS, PipeM);其中,DPP為動(dòng)態(tài)管道池,ID 為DPP的標(biāo)識(shí)符,CPS= {CP1,CP2,…,CPm)為DPP中的公有管道的管道集合,PPS= {PN1, PN2,…,PNn}為DPP中的私有管道的管道集合,是廣義計(jì)算部件讀取信息的專有管道, PipeM為DPP的管道管理部件,所述公有管道及私有管道均為單向流動(dòng)的數(shù)據(jù)流通道,所述 CPS分為兩組,分別為CPSM管道組和CPSS管道組,CPSM管道組用于接收消息,CPSS管道組用于發(fā)送消息和數(shù)據(jù)流信息通信的管道綁定,每個(gè)廣義計(jì)算部件均配有一個(gè)私有管道,用于接收消息及數(shù)據(jù)流;
所述廣義計(jì)算部件為一個(gè)五元組GP (ID, RP, WP, PN, SP);其中,GP為廣義計(jì)算部件, ID為GP的部件標(biāo)識(shí)符,RP為GP的讀管道進(jìn)程;WP為GP的寫公有管道進(jìn)程,PN為GP的私有管道,SP= {Pl,p2,p3,…,Pp}為GP中的各狹義計(jì)算部件的集合;
所述節(jié)點(diǎn)資源表為一個(gè)二維表NTA (Nid, Nname, Nip, Ntype),記載有SPPE中所有計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)信息;其中,NTA為節(jié)點(diǎn)資源表,Nid為所記載計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符,Nname 為所記載計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)名字,用于通信標(biāo)識(shí),Nip為所記載計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)IP地址,用于 MPI環(huán)境的配置,Ntype為所記載計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)類型,用于表明所記載計(jì)算節(jié)點(diǎn)的是普通計(jì)算節(jié)點(diǎn)還是主控制計(jì)算節(jié)點(diǎn);
所述部件資源表為一個(gè)二維表PTA (Pid,Pname, Ptype, PN),記載有SPPE中所有廣義計(jì)算部件的部件信息;其中,PTA為部件資源表,Pid為所記載部件的部件標(biāo)識(shí)符,Pname為所記載部件的部件名字,用于通信標(biāo)識(shí),Ptype為所記載部件的部件類型,用于表明該部件是CPU計(jì)算部件Np、GPU計(jì)算部件SPP,還是通信部件,PN為所記載部件的私有管道;
所述流通信管道映射表為一個(gè)二維表MTA (Pid, group, sno,PipeA,PipeB);其中,MTA 為流通信管道映射表,Pid為標(biāo)識(shí)符,group為數(shù)據(jù)流通信組號(hào),用于通信標(biāo)識(shí),sno為序號(hào), PipeA為數(shù)據(jù)流源管道號(hào),PipeB為數(shù)據(jù)流目標(biāo)管道號(hào);
所述NTA、PTA、MTA在每個(gè)計(jì)算節(jié)點(diǎn)中均保持一個(gè)副本,并采用強(qiáng)一致性維護(hù); 各部件之間的通信均通過數(shù)據(jù)通信單元來承載,所述通信數(shù)據(jù)單元為一個(gè)十元組CDU (id, Sno, Segno, SourceN, SourceP, DestNS, DestPS, type, COM, DATA);其中,CDU 為通信數(shù)據(jù)單元,id為該⑶U的標(biāo)識(shí)符,Sno、Segno均用于數(shù)據(jù)流通信,Sno為該⑶U的數(shù)據(jù)流號(hào), Segno為該⑶U的數(shù)據(jù)段號(hào),SourceN為通信源計(jì)算節(jié)點(diǎn),SourceP為該⑶U的發(fā)出部件, DestNS為該CDU的目標(biāo)計(jì)算節(jié)點(diǎn)的集合,DestPS為該CDU的目標(biāo)部件的集合,是目標(biāo)計(jì)算節(jié)點(diǎn)內(nèi)接收該CDU的部件的集合,type為該CDU的通信數(shù)據(jù)單元類別,共有數(shù)據(jù)流、命令消息、短消息三種類別,COM為通信命令,DATA為消息數(shù)據(jù)。圖1是本發(fā)明實(shí)施例的面向流處理器并行環(huán)境的數(shù)據(jù)流通信系統(tǒng)中的兩個(gè)計(jì)算節(jié)點(diǎn)之間通信的通信示意圖,該圖中的實(shí)有向線為私有管道讀方向,虛有向線為公有管道寫方向,粗有向箭頭表示通信信息由公有管道轉(zhuǎn)發(fā)到每個(gè)廣義計(jì)算部件的私有管道中。如圖1所示,本發(fā)明實(shí)施例所提供的面向流處理器并行環(huán)境的數(shù)據(jù)流通信系統(tǒng)的通信方法,其特征在于
每個(gè)廣義計(jì)算部件中的SP執(zhí)行本地的計(jì)算任務(wù),并接收該廣義計(jì)算部件中的RP送來的信息進(jìn)行處理;
設(shè)發(fā)送端的廣義計(jì)算部件為GP1,接收端的廣義計(jì)算部件為GP2,INFO為消息,SINFO為數(shù)據(jù)流;
GPl中的SP要發(fā)送INFO到GP2時(shí),先查詢PTA獲取GP2的ID,再把GP2的ID和INFO 提交給GPl的WP,然后再處理后續(xù)計(jì)算任務(wù);
GPl中的SP要發(fā)送SINFO到GP2時(shí),先查詢PTA獲取GP2的ID,再把GP2的ID和SINFO 提交給GPl的WP,并等待至SINFO通信結(jié)束后再處理后續(xù)計(jì)算任務(wù);
GPl中的WP收到該GP中的SP提交的GP2的ID及通信數(shù)據(jù)后,先判斷收到的通信數(shù)據(jù)的類型,如果GPl中的WP收到的通信數(shù)據(jù)是INF0,則創(chuàng)建一個(gè)CDU,再根據(jù)GPl的ID從NTA 和PTA中獲取本地計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)信息及GPl的部件信息填寫到⑶U的SourceN及SourceP 中,并將通信命令填入⑶U的C0M,將INFO填入⑶U的DATA,將⑶U的type填寫為短消息類別,然后獲取本地動(dòng)態(tài)管道池的一個(gè)公有管道記為CP,并將該CDU寫入CP ;如果GPl中的 WP收到的通信數(shù)據(jù)是SINF0,則根據(jù)GP2的ID從NTA和PTA獲取GP2的私有管道記為PP, 并獲取本地動(dòng)態(tài)管道池的一個(gè)公有管道記為CP,然后把CP、PP及GPl的ID —起發(fā)給本地的PipeM,PipeM收到CP、PP及GPl的ID后在MTA中建立一個(gè)映射元組mtat將CP和PP綁定,并把CP置為繁忙狀態(tài),然后把映射元組mtat發(fā)往GP2所在的計(jì)算節(jié)點(diǎn),然后再將SINFO 分段成多個(gè)數(shù)據(jù)段,并為每個(gè)數(shù)據(jù)段創(chuàng)建一個(gè)CDU,將各數(shù)據(jù)段分別填入各CDU的DATA,根據(jù)分段次序?yàn)楦鲾?shù)據(jù)段依序設(shè)置數(shù)據(jù)流號(hào)及數(shù)據(jù)段號(hào)填入分別填入各CDU的Sno及kgno 中,然后將各個(gè)⑶U按分段次序逐次寫入CP,直至SINFO發(fā)送完畢;SINFO通信結(jié)束后,GPl 中的WP向本地的PipeM發(fā)送一個(gè)請(qǐng)求使PipeM將映射元組mtat撤銷,并釋放CP ;
每個(gè)廣義計(jì)算部件中的RP掃描自己的私有管道,如果RP掃描到自己的私有管道中有命令消息或短消息類別的CDU,則提取CDU中的id和DATA并傳輸給該廣義計(jì)算部件中的 SP,如果RP掃描到自己的私有管道中有數(shù)據(jù)流類別的CDU,并獲取到與該CDU相對(duì)應(yīng)的映射元組mtat,則RP對(duì)每個(gè)接收到的⑶U用映射元組mtat進(jìn)行識(shí)別,并按接收到的⑶U的Sno 及kgno進(jìn)行數(shù)據(jù)流復(fù)原,并逐一傳給本廣義計(jì)算部件中的SP ;
每個(gè)動(dòng)態(tài)管道池中的PipeM循環(huán)掃描本地CPS中的每個(gè)公有管道,如果本地CPS中的公有管道中有CDU,則先判定該CDU中的目標(biāo)部件是否為本地部件,如果該CDU中的目標(biāo)部件為本地部件則根據(jù)該CDU中的DestPS從PTA中獲取目標(biāo)部件所對(duì)應(yīng)的私有管道,然后把該CDU傳輸至目標(biāo)部件所對(duì)應(yīng)的私有管道;如果該CDU的目標(biāo)部件為遠(yuǎn)程部件則將該CDU 寫入本地MPI發(fā)送部件MS的私有管道中;
每個(gè)MPI接收部件MR實(shí)時(shí)接收來自SPPE中的NS的CDU,并根據(jù)收到的CDU中的DestPS 從PTA中得到目標(biāo)部件的部件信息并獲取其私有管道,然后將收到的CDU寫入目標(biāo)部件的私有管道中;
每個(gè)MPI發(fā)送部件MS循環(huán)掃描自己的私有管道,如果掃描到自己的私有管道中有待發(fā)送的CDU,則根據(jù)PTA、MTA及該CDU的DestPS獲取目標(biāo)計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)信息及目標(biāo)部件的部件信息,然后將本計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)信息填入該CDU的SourceN,將該CDU發(fā)出部件的部件信息填入該⑶U的SourceP,將目標(biāo)計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)信息填入該⑶U的DestNS,將目標(biāo)部件的部件信息填入該⑶U的DestPS,并填寫該⑶U的type和COM,然后將該⑶U發(fā)送給目標(biāo)計(jì)算節(jié)點(diǎn)。以下以兩個(gè)計(jì)算節(jié)點(diǎn)之間的通信來進(jìn)一步說明本發(fā)明實(shí)施例的通信過程
設(shè)通信發(fā)送端的計(jì)算節(jié)點(diǎn)為計(jì)算節(jié)點(diǎn)1,通信接收端的計(jì)算節(jié)點(diǎn)為計(jì)算節(jié)點(diǎn)2,計(jì)算節(jié)點(diǎn)1中的CDU發(fā)出部件為GPU計(jì)算部件SPP1,計(jì)算節(jié)點(diǎn)2中的CDU接收部件為GPU計(jì)算部件SPP2,計(jì)算節(jié)點(diǎn)1的GPU計(jì)算部件SPP 1所發(fā)出的⑶U,通過該GPU計(jì)算部件SPP 1的WP 部件發(fā)送至本地計(jì)算節(jié)點(diǎn)的公有管道CP ;本地的PipeM把該⑶U發(fā)送到本地MPI發(fā)送部件 MS的私有管道PN ;本地MPI發(fā)送部件MS讀取自己私有管道PN中的⑶U,填充MPI網(wǎng)絡(luò)通信信息,運(yùn)用MPI發(fā)送原語把⑶U通過MPI網(wǎng)絡(luò)發(fā)送到計(jì)算節(jié)點(diǎn)2的MPI接收部件MR ;計(jì)算節(jié)點(diǎn)2的MPI接收部件MR提取CDU并發(fā)送到計(jì)算節(jié)點(diǎn)2的公有管道CP中,計(jì)算節(jié)點(diǎn)2的 PipeM根據(jù)⑶U頭部信息把它轉(zhuǎn)發(fā)至GPU計(jì)算部件SPP2的私有管道PN ;GPU計(jì)算部件SPP2 的RP讀取GPU計(jì)算部件SPP2的私有管道PN,并提取⑶U后轉(zhuǎn)發(fā)給GPU計(jì)算部件SPP2的 SP。實(shí)際應(yīng)用中,利用本發(fā)明實(shí)施例構(gòu)建了基于流處理器并行環(huán)境的3G網(wǎng)絡(luò)質(zhì)量監(jiān)測(cè)系統(tǒng),該系統(tǒng)由2個(gè)功能集群構(gòu)成9臺(tái)計(jì)算機(jī)構(gòu)成1/0任務(wù)密集型CPU集群,9臺(tái)流處理器機(jī)器構(gòu)成計(jì)算密集型GPU集群,集群通過2臺(tái)基板帶寬為48(ibpS的千兆以太網(wǎng)交換機(jī)連接而成;所有計(jì)算節(jié)點(diǎn)用MPI通信協(xié)議互聯(lián),每個(gè)計(jì)算節(jié)點(diǎn)配置UBANTU10操作系統(tǒng),并都配置了動(dòng)態(tài)管道池、MTA、PTA、NTA、PipeM, MPI接收部件MR、MPI發(fā)送部件MS,流處理器采用 NVIDIA GTX480和配置CUDA驅(qū)動(dòng)程序、開發(fā)環(huán)境,該系統(tǒng)運(yùn)用CPU集群把3G視頻流H. 264參數(shù)提取,然后用GPU集群對(duì)10080個(gè)視頻圖像參數(shù)進(jìn)行計(jì)算(圖像還原成YUV、模糊度、塊效應(yīng)、平滑度分析),實(shí)現(xiàn)了對(duì)10080個(gè)3G視頻流進(jìn)行視頻質(zhì)量分析,實(shí)踐表明對(duì)10080個(gè)視頻圖像的分析處理的平均時(shí)間為1. 5秒,該并行處理環(huán)境已經(jīng)滿足電信對(duì)3G視頻的分析規(guī)模的要求和性能的要求;關(guān)于數(shù)據(jù)流通信,每個(gè)CPU集群節(jié)點(diǎn)有一個(gè)與之對(duì)應(yīng)的GPU集群節(jié)點(diǎn),在這兩個(gè)節(jié)點(diǎn)間有1120個(gè)視頻流進(jìn)行數(shù)據(jù)流傳輸,利用UBANTU的性能監(jiān)視器可以看到,在流數(shù)據(jù)峰值傳輸階段,CPU和GPU節(jié)點(diǎn)對(duì)之間數(shù)據(jù)流的通信帶寬可以達(dá)到SOMBps,即可以達(dá)到640Mbps的通信能力,表明該通信系統(tǒng)已經(jīng)滿足了 3G網(wǎng)絡(luò)質(zhì)量監(jiān)測(cè)系統(tǒng)的通信性能要求。
權(quán)利要求
1. 一種面向流處理器并行環(huán)境的數(shù)據(jù)流通信系統(tǒng),其特征在于包括流處理器并行計(jì)算物理環(huán)境、節(jié)點(diǎn)資源表、部件資源表、流通信管道映射表;所述流處理器并行計(jì)算物理環(huán)境為一個(gè)四元組SPPE (PCS, MASTER, SOFS, NS);其中, SPPE為流處理器并行計(jì)算物理環(huán)境,PCS= {Cl,C2,…,Ce}為SPPE中的計(jì)算節(jié)點(diǎn)的集合, MASTER為SPPE中的主控制計(jì)算節(jié)點(diǎn),SOFS為SPPE中的軟件的集合,NS為SPPE中的互連網(wǎng)絡(luò)的集合,且在NS上配有MPI通信環(huán)境;所述計(jì)算節(jié)點(diǎn)配置有CPU計(jì)算部件、GPU計(jì)算部件、動(dòng)態(tài)管道池,及用于MPI通信的MPI 接收部件、MPI發(fā)送部件,所述CPU計(jì)算部件、GPU計(jì)算部件、MPI接收部件、MPI發(fā)送部件均為廣義計(jì)算部件,所述GPU計(jì)算部件為流處理計(jì)算設(shè)備;所述動(dòng)態(tài)管道池為一個(gè)四元組DPP (ID, CPS, PPS, PipeM);其中,DPP為動(dòng)態(tài)管道池,ID 為DPP的標(biāo)識(shí)符,CPS= {CP1,CP2,…,CPm)為DPP中的公有管道的管道集合,PPS= {PN1, PN2,…,PNn}為DPP中的私有管道的管道集合,是廣義計(jì)算部件讀取信息的專有管道, PipeM為DPP的管道管理部件,所述公有管道及私有管道均為單向流動(dòng)的數(shù)據(jù)流通道,所述 CPS分為兩組,分別為CPSM管道組和CPSS管道組,CPSM管道組用于接收消息,CPSS管道組用于發(fā)送消息和數(shù)據(jù)流信息通信的管道綁定,每個(gè)廣義計(jì)算部件均配有一個(gè)私有管道,用于接收消息及數(shù)據(jù)流;所述廣義計(jì)算部件為一個(gè)五元組GP (ID, RP, WP, PN, SP);其中,GP為廣義計(jì)算部件, ID為GP的部件標(biāo)識(shí)符,RP為GP的讀管道進(jìn)程;WP為GP的寫公有管道進(jìn)程,PN為GP的私有管道,SP= {Pl,p2,p3,…,Pp}為GP中的各狹義計(jì)算部件的集合;所述節(jié)點(diǎn)資源表為一個(gè)二維表NTA (Nid, Nname, Nip, Ntype),記載有SPPE中所有計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)信息;其中,NTA為節(jié)點(diǎn)資源表,Nid為所記載計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符,Nname 為所記載計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)名字,用于通信標(biāo)識(shí),Nip為所記載計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)IP地址,用于 MPI環(huán)境的配置,Ntype為所記載計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)類型,用于表明所記載計(jì)算節(jié)點(diǎn)的是普通計(jì)算節(jié)點(diǎn)還是主控制計(jì)算節(jié)點(diǎn);所述部件資源表為一個(gè)二維表PTA (Pid,Pname, Ptype, PN),記載有SPPE中所有廣義計(jì)算部件的部件信息;其中,PTA為部件資源表,Pid為所記載部件的部件標(biāo)識(shí)符,Pname為所記載部件的部件名字,用于通信標(biāo)識(shí),Ptype為所記載部件的部件類型,用于表明該部件是CPU計(jì)算部件、GPU計(jì)算部件,還是通信部件,PN為所記載部件的私有管道;所述流通信管道映射表為一個(gè)二維表MTA (Pid, group, sno,PipeA,PipeB);其中,MTA 為流通信管道映射表,Pid為標(biāo)識(shí)符,group為數(shù)據(jù)流通信組號(hào),用于通信標(biāo)識(shí),sno為序號(hào), PipeA為數(shù)據(jù)流源管道號(hào),PipeB為數(shù)據(jù)流目標(biāo)管道號(hào);所述NTA、PTA、MTA在每個(gè)計(jì)算節(jié)點(diǎn)中均保持一個(gè)副本,并采用強(qiáng)一致性維護(hù); 各部件之間的通信均通過數(shù)據(jù)通信單元來承載,所述通信數(shù)據(jù)單元為一個(gè)十元組CDU (id, Sno, Segno, SourceN, SourceP, DestNS, DestPS, type, COM, DATA);其中,CDU 為通信數(shù)據(jù)單元,id為該⑶U的標(biāo)識(shí)符,Sno、Segno均用于數(shù)據(jù)流通信,Sno為該⑶U的數(shù)據(jù)流號(hào), Segno為該⑶U的數(shù)據(jù)段號(hào),SourceN為通信源計(jì)算節(jié)點(diǎn),SourceP為該⑶U的發(fā)出部件, DestNS為該CDU的目標(biāo)計(jì)算節(jié)點(diǎn)的集合,DestPS為該CDU的目標(biāo)部件的集合,是目標(biāo)計(jì)算節(jié)點(diǎn)內(nèi)接收該CDU的部件的集合,type為該CDU的通信數(shù)據(jù)單元類別,共有數(shù)據(jù)流、命令消息、短消息三種類別,COM為通信命令,DATA為消息數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的面向流處理器并行環(huán)境的數(shù)據(jù)流通信系統(tǒng)的通信方法,其特征在于每個(gè)廣義計(jì)算部件中的SP執(zhí)行本地的計(jì)算任務(wù),并接收該廣義計(jì)算部件中的RP送來的信息進(jìn)行處理;設(shè)發(fā)送端的廣義計(jì)算部件為GP1,接收端的廣義計(jì)算部件為GP2,INFO為消息,SINFO為數(shù)據(jù)流;GPl中的SP要發(fā)送INFO到GP2時(shí),先查詢PTA獲取GP2的ID,再把GP2的ID和INFO 提交給GPl的WP,然后再處理后續(xù)計(jì)算任務(wù);GPl中的SP要發(fā)送SINFO到GP2時(shí),先查詢PTA獲取GP2的ID,再把GP2的ID和SINFO 提交給GPl的WP,并等待至SINFO通信結(jié)束后再處理后續(xù)計(jì)算任務(wù);GPl中的WP收到該GP中的SP提交的GP2的ID及通信數(shù)據(jù)后,先判斷收到的通信數(shù)據(jù)的類型,如果GPl中的WP收到的通信數(shù)據(jù)是INF0,則創(chuàng)建一個(gè)⑶U,再根據(jù)GPl的ID從NTA 和PTA中獲取本地計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)信息及GPl的部件信息填寫到⑶U的SourceN及SourceP 中,并將通信命令填入⑶U的COM,將INFO填入⑶U的DATA,將⑶U的type填寫為短消息類別,然后獲取本地動(dòng)態(tài)管道池的一個(gè)公有管道記為CP,并將該CDU寫入CP ;如果GPl中的 WP收到的通信數(shù)據(jù)是SINF0,則根據(jù)GP2的ID從NTA和PTA獲取GP2的私有管道記為PP, 并獲取本地動(dòng)態(tài)管道池的一個(gè)公有管道記為CP,然后把CP、PP及GPl的ID —起發(fā)給本地的PipeM,PipeM收到CP、PP及GPl的ID后在MTA中建立一個(gè)映射元組mtat將CP和PP綁定,并把CP置為繁忙狀態(tài),然后把映射元組mtat發(fā)往GP2所在的計(jì)算節(jié)點(diǎn),然后再將SINFO 分段成多個(gè)數(shù)據(jù)段,并為每個(gè)數(shù)據(jù)段創(chuàng)建一個(gè)CDU,將各數(shù)據(jù)段分別填入各CDU的DATA,根據(jù)分段次序?yàn)楦鲾?shù)據(jù)段依序設(shè)置數(shù)據(jù)流號(hào)及數(shù)據(jù)段號(hào)填入分別填入各CDU的Sno及kgno 中,然后將各個(gè)⑶U按分段次序逐次寫入CP,直至SINFO發(fā)送完畢;SINFO通信結(jié)束后,GPl 中的WP向本地的PipeM發(fā)送一個(gè)請(qǐng)求使PipeM將映射元組mtat撤銷,并釋放CP ;每個(gè)廣義計(jì)算部件中的RP掃描自己的私有管道,如果RP掃描到自己的私有管道中有命令消息或短消息類別的CDU,則提取CDU中的id和DATA并傳輸給該廣義計(jì)算部件中的 SP,如果RP掃描到自己的私有管道中有數(shù)據(jù)流類別的CDU,并獲取到與該CDU相對(duì)應(yīng)的映射元組mtat,則RP對(duì)每個(gè)接收到的⑶U用映射元組mtat進(jìn)行識(shí)別,并按接收到的⑶U的Sno 及kgno進(jìn)行數(shù)據(jù)流復(fù)原,并逐一傳給本廣義計(jì)算部件中的SP ;每個(gè)動(dòng)態(tài)管道池中的PipeM循環(huán)掃描本地CPS中的每個(gè)公有管道,如果本地CPS中的公有管道中有CDU,則先判定該CDU中的目標(biāo)部件是否為本地部件,如果該CDU中的目標(biāo)部件為本地部件則根據(jù)該CDU中的DestPS從PTA中獲取目標(biāo)部件所對(duì)應(yīng)的私有管道,然后把該CDU傳輸至目標(biāo)部件所對(duì)應(yīng)的私有管道;如果該CDU的目標(biāo)部件為遠(yuǎn)程部件則將該CDU 寫入本地MPI發(fā)送部件的私有管道中;每個(gè)MPI接收部件實(shí)時(shí)接收來自SPPE中的NS的⑶U,并根據(jù)收到的⑶U中的DestPS 從PTA中得到目標(biāo)部件的部件信息并獲取其私有管道,然后將收到的CDU寫入目標(biāo)部件的私有管道中;每個(gè)MPI發(fā)送部件循環(huán)掃描自己的私有管道,如果掃描到自己的私有管道中有待發(fā)送的CDU,則根據(jù)PTA、MTA及該CDU的DestPS獲取目標(biāo)計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)信息及目標(biāo)部件的部件信息,然后將本計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)信息填入該CDU的SourceN,將該CDU發(fā)出部件的部件信息填入該⑶U的SourceP,將目標(biāo)計(jì)算節(jié)點(diǎn)的節(jié)點(diǎn)信息填入該⑶U的DestNS,將目標(biāo)部件的部件信息填入該⑶U的DestPS,并填寫該⑶U的type和COM,然后將該⑶U發(fā)送給目標(biāo)計(jì)算節(jié)點(diǎn)。
全文摘要
一種面向流處理器并行環(huán)境的數(shù)據(jù)流通信系統(tǒng)及其通信方法,涉及并行通信技術(shù)領(lǐng)域,所解決的是CUDA和MPI混合程序開發(fā)不便且不利于海量數(shù)據(jù)流實(shí)時(shí)處理的技術(shù)問題。該系統(tǒng)中的每個(gè)計(jì)算節(jié)點(diǎn)均配置有CPU計(jì)算部件、GPU計(jì)算部件、動(dòng)態(tài)管道池,及用于MPI通信的MPI接收部件、MPI發(fā)送部件,且在每個(gè)計(jì)算節(jié)點(diǎn)中均設(shè)有節(jié)點(diǎn)資源表、部件資源表、流通信管道映射表,各計(jì)算節(jié)點(diǎn)部件之間的通信均通過動(dòng)態(tài)管道池進(jìn)行,并使用通信數(shù)據(jù)單元來傳輸。本發(fā)明提供的系統(tǒng)及其通信方法,能有效地支持利用MPI和流處理器計(jì)算機(jī)構(gòu)建大規(guī)模信息處理并行環(huán)境,利于程序員開發(fā)系統(tǒng)程序,適用于云計(jì)算節(jié)點(diǎn)的構(gòu)建和大規(guī)模數(shù)據(jù)流的實(shí)時(shí)處理。
文檔編號(hào)G06F15/163GK102201992SQ20111013577
公開日2011年9月28日 申請(qǐng)日期2011年5月25日 優(yōu)先權(quán)日2011年5月25日
發(fā)明者丁曉東, 莊松林, 曹歡歡, 趙海燕, 那麗春, 郝聚濤, 陳慶奎, 霍歡 申請(qǐng)人:上海理工大學(xué)