專利名稱:用于并行計(jì)算機(jī)中的集體操作協(xié)議選擇的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的領(lǐng)域是數(shù)據(jù)處理,或者更具體地講是用于并行計(jì)算機(jī)中的集體操作協(xié)議選擇的方法、設(shè)備和產(chǎn)品。
背景技術(shù):
1948年的EDVAC計(jì)算機(jī)系統(tǒng)的開發(fā)常被引述為計(jì)算機(jī)時(shí)代的開啟。從那時(shí)開始,計(jì)算機(jī)系統(tǒng)已經(jīng)演化成極端復(fù)雜的裝置。與例如EDVAC的早期系統(tǒng)相比,今天的計(jì)算機(jī)更加精密復(fù)雜。計(jì)算機(jī)系統(tǒng)通常包括硬件和軟件組件的組合、應(yīng)用程序、操作系統(tǒng)、處理器、總線、存儲(chǔ)器、輸入/輸出裝置等。由于半導(dǎo)體加工和計(jì)算機(jī)架構(gòu)的進(jìn)步將計(jì)算機(jī)的性能推升得越來越高,更加精密復(fù)雜的計(jì)算機(jī)軟件已經(jīng)進(jìn)化為利用硬件的更高性能,使得當(dāng)今的計(jì)算機(jī)系統(tǒng)與僅僅幾年前相比強(qiáng)大得多。并行計(jì)算是經(jīng)歷了進(jìn)步的計(jì)算機(jī)技術(shù)的領(lǐng)域。并行計(jì)算是在多個(gè)處理器上同時(shí)執(zhí)行同一任務(wù)(該任務(wù)被分解并且被專門調(diào)整)以更快獲得結(jié)果。并行計(jì)算基于如下事實(shí):求解一個(gè)問題的過程通常能夠被劃分成多個(gè)更小的任務(wù),這些更小的任務(wù)能夠通過某種協(xié)調(diào)被同時(shí)執(zhí)行。并行計(jì)算機(jī)執(zhí)行并行算法。并行算法能夠被分解從而在許多不同處理裝置上每次執(zhí)行一份,然后最終再次匯總在一起以獲得數(shù)據(jù)處理結(jié)果。一些算法易于分解成多個(gè)份??梢岳缛缦聢?zhí)行對(duì)檢查從I到十萬的所有數(shù)字以查看哪些是質(zhì)數(shù)的作業(yè)進(jìn)行分解:向每個(gè)可用處理器分配這些數(shù)字的子集并且然后將肯定結(jié)果的列表匯總在一起。在本說明書中,執(zhí)行并行程序的各個(gè)份的多個(gè)處理裝置被稱作“計(jì)算節(jié)點(diǎn)”。并行計(jì)算機(jī)由計(jì)算節(jié)點(diǎn)以及例如包括輸入/輸出(I/o)節(jié)點(diǎn)和服務(wù)節(jié)點(diǎn)的其它處理節(jié)點(diǎn)構(gòu)成。并行算法是有價(jià)值的,因?yàn)橛捎诂F(xiàn)代處理器工作的方式使得經(jīng)由并行算法執(zhí)行某些大的計(jì)算任務(wù)與經(jīng)由串行(非并行)算法相比更快。與采用多個(gè)慢速處理器相比,采用單個(gè)快速處理器構(gòu)造相同處理能力(throughput)的計(jì)算機(jī)要困難得多。串行處理器的潛在速度也存在某些理論限制。另一方面,每個(gè)并行算法具有串行部分并且因此并行算法具有飽和點(diǎn)。在該點(diǎn)后,增加更多處理器不會(huì)產(chǎn)生任何更多的處理能力而只會(huì)增加開銷和開銷。并行算法還被設(shè)計(jì)為優(yōu)化并行計(jì)算機(jī)的節(jié)點(diǎn)之間進(jìn)行數(shù)據(jù)通信所要求的又一個(gè)資源。存在兩種并行處理器進(jìn)行通信的方式:共享存儲(chǔ)器或者消息傳遞。共享存儲(chǔ)器處理需要針對(duì)數(shù)據(jù)的額外鎖定并且強(qiáng)加額外處理器和總線周期的開銷并且還將算法的某部分串行化。消息傳遞處理利用高速數(shù)據(jù)通信網(wǎng)絡(luò)和消息緩沖器,但是這種通信增加了數(shù)據(jù)通信網(wǎng)絡(luò)上的傳送開銷、以及消息緩沖器所需的額外存儲(chǔ)器和節(jié)點(diǎn)之間的數(shù)據(jù)通信的等待時(shí)間(latency)。并行計(jì)算機(jī)的設(shè)計(jì)利用專門設(shè)計(jì)的數(shù)據(jù)通信鏈路以使得通信開銷較小,然而正是并行算法決定通信量。許多數(shù)據(jù)通信網(wǎng)絡(luò)架構(gòu)用于并行計(jì)算機(jī)中的節(jié)點(diǎn)之間的消息傳遞。例如,可以在網(wǎng)絡(luò)中將計(jì)算節(jié)點(diǎn)組織為“環(huán)(torus)”或“網(wǎng)格(mesh)”。另外,可以在網(wǎng)絡(luò)中將計(jì)算節(jié)點(diǎn)組織為樹。環(huán)網(wǎng)絡(luò)通過纏繞鏈路以三維網(wǎng)格連接節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)通過這種環(huán)網(wǎng)絡(luò)連接到它的六個(gè)鄰居,并且每個(gè)節(jié)點(diǎn)按其在網(wǎng)格中的x、y和ζ坐標(biāo)來表示地址。按照這種方式,環(huán)網(wǎng)絡(luò)將它自身用于點(diǎn)對(duì)點(diǎn)操作。在樹網(wǎng)絡(luò)中,節(jié)點(diǎn)通常連接成二叉樹:每個(gè)節(jié)點(diǎn)具有一個(gè)父輩和兩個(gè)孩子(但是某些節(jié)點(diǎn)可以僅具有零個(gè)孩子或一個(gè)孩子,這取決于硬件結(jié)構(gòu))。盡管樹網(wǎng)絡(luò)通常在點(diǎn)對(duì)點(diǎn)通信中低效,但是樹網(wǎng)絡(luò)對(duì)所有計(jì)算節(jié)點(diǎn)同時(shí)參與的某些集體操作、消息傳送操作(例如,全收集(allgather)操作),提供高帶寬和低等待時(shí)間。在使用環(huán)網(wǎng)絡(luò)和樹網(wǎng)絡(luò)的計(jì)算機(jī)中,這兩個(gè)網(wǎng)絡(luò)通常彼此獨(dú)立地實(shí)現(xiàn),具有分離的路由回路、分離的物理鏈路和分離的消息緩沖器。并行計(jì)算機(jī)中的計(jì)算節(jié)點(diǎn)還可以被組織成工作組以執(zhí)行集體并行操作。通過工作組的計(jì)算節(jié)點(diǎn)之間的數(shù)據(jù)通信實(shí)現(xiàn)集體操作。集體操作是涉及一個(gè)工作組的所有計(jì)算節(jié)點(diǎn)的那些功能。集體操作是一種同時(shí)(即,近似同一時(shí)間)由計(jì)算節(jié)點(diǎn)的工作組中的所有計(jì)算節(jié)點(diǎn)執(zhí)行的操作、消息傳遞計(jì)算機(jī)程序指令。“廣播”是用于在工作組的計(jì)算節(jié)點(diǎn)之間移動(dòng)數(shù)據(jù)的集體操作的例子?!皻w約(reduce)”操作是對(duì)分布在工作組的計(jì)算節(jié)點(diǎn)之中的數(shù)據(jù)執(zhí)行算術(shù)或邏輯函數(shù)的集體操作的例子。用于集體操作的協(xié)議可以針對(duì)特定操作參數(shù)(執(zhí)行集體操作的參數(shù))進(jìn)行調(diào)整或優(yōu)化。這些參數(shù)的例子可以是:要執(zhí)行的邏輯或者算術(shù)函數(shù)的類型、數(shù)據(jù)類型、數(shù)據(jù)大小、節(jié)點(diǎn)的數(shù)目等。集體操作協(xié)議可以針對(duì)特定的操作參數(shù)集合進(jìn)行優(yōu)化,因?yàn)楸绢I(lǐng)域的讀者可以想到,所述協(xié)議與其它協(xié)議相比更高效,與其它協(xié)議相比在執(zhí)行期間消耗更少功率,與其它協(xié)議相比使用更少資源,與其它協(xié)議相比執(zhí)行得更快等。因此,提高為集體操作選擇優(yōu)化協(xié)議的準(zhǔn)確度有利于并行計(jì)算系統(tǒng)中的數(shù)據(jù)處理。
發(fā)明內(nèi)容
在本說明書中描述了用于并行計(jì)算機(jī)中的集體操作協(xié)議選擇的方法、設(shè)備和產(chǎn)品。并行計(jì)算機(jī)包括許多計(jì)算節(jié)點(diǎn)。這種集體操作協(xié)議選擇包括:調(diào)用具有一個(gè)或多個(gè)操作參數(shù)的集體操作,選擇用于執(zhí)行該集體操作的多個(gè)協(xié)議之一,以及利用選擇的協(xié)議執(zhí)行該集體操作。在本發(fā)明的實(shí)施例中,對(duì)于從第一預(yù)期協(xié)議開始直到滿足預(yù)定性能標(biāo)準(zhǔn)的預(yù)期協(xié)議,反復(fù)執(zhí)行選擇多個(gè)協(xié)議之一,選擇多個(gè)協(xié)議之一包括:向用于該預(yù)期協(xié)議的協(xié)議性能函數(shù)提供集體操作的操作參數(shù);通過該性能函數(shù)確定針對(duì)所述操作參數(shù)該預(yù)期協(xié)議是否滿足預(yù)定性能標(biāo)準(zhǔn),包括針對(duì)該預(yù)期協(xié)議通過所述操作參數(shù)評(píng)估預(yù)定義性能擬合方程以及計(jì)算針對(duì)所述操作參數(shù)的該預(yù)期協(xié)議的性能度量;以及僅當(dāng)計(jì)算的性能度量大于預(yù)定義最小性能閾值時(shí),確定該預(yù)期協(xié)議滿足預(yù)定性能標(biāo)準(zhǔn)并且選擇該預(yù)期協(xié)議作為用于執(zhí)行集體操作的協(xié)議?;诟綀D中所示的本發(fā)明的示例性實(shí)施例的下面更加具體的描述,本發(fā)明的上述以及其它目標(biāo)、特征和優(yōu)點(diǎn)將變得清楚,在附圖中相似標(biāo)號(hào)一般表示本發(fā)明的示例性實(shí)施例的相似部件。
圖1示出了根據(jù)本發(fā)明的實(shí)施例的用于并行計(jì)算機(jī)中的集體操作協(xié)議選擇的示例性系統(tǒng)。圖2闡述了用于并行計(jì)算機(jī)中的能夠執(zhí)行根據(jù)本發(fā)明的實(shí)施例的集體操作協(xié)議選擇的示例計(jì)算節(jié)點(diǎn)(102)的框圖。圖3A闡述了用于根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的系統(tǒng)中的示例點(diǎn)對(duì)點(diǎn)適配器的框圖。圖3B闡述了用于根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的系統(tǒng)中的示例全局組合網(wǎng)絡(luò)適配器的框圖。圖4闡述了示出用于能夠執(zhí)行根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的系統(tǒng)的針對(duì)點(diǎn)對(duì)點(diǎn)操作進(jìn)行優(yōu)化的示例數(shù)據(jù)通信網(wǎng)絡(luò)的線路圖。圖5闡述了示出用于能夠執(zhí)行根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的系統(tǒng)的示例全局組合網(wǎng)絡(luò)的線路圖。圖6闡述了示出用于根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的示例方法的流程圖。圖7闡述了示出用于根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的另一示例方法的流程圖。圖8闡述了示出用于根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的另一示例方法的流程圖。
具體實(shí)施例方式從圖1開始,參照附圖描述根據(jù)本發(fā)明的用于并行計(jì)算機(jī)中的集體操作協(xié)議選擇的示例性方法、設(shè)備和產(chǎn)品。圖1示出了根據(jù)本發(fā)明的實(shí)施例的用于并行計(jì)算機(jī)中的集體操作協(xié)議選擇的示例性系統(tǒng)。圖1的系統(tǒng)包括并行計(jì)算機(jī)(100)、數(shù)據(jù)存儲(chǔ)裝置(118)形式的計(jì)算機(jī)的非易失性存儲(chǔ)器、打印機(jī)(120)形式的計(jì)算機(jī)的輸出裝置、和計(jì)算機(jī)終端(122)形式的計(jì)算機(jī)的輸入/輸出裝置。圖1的示例中的并行計(jì)算機(jī)(100)包括多個(gè)計(jì)算節(jié)點(diǎn)(102)。通過多個(gè)獨(dú)立的數(shù)據(jù)通信網(wǎng)絡(luò)(包括高速以太網(wǎng)(174)、聯(lián)合測(cè)試行動(dòng)組(JTAG)網(wǎng)絡(luò)(104)、使用二叉樹網(wǎng)絡(luò)拓?fù)溽槍?duì)集體操作進(jìn)行優(yōu)化的全局組合網(wǎng)絡(luò)(106)和使用環(huán)網(wǎng)絡(luò)拓?fù)溽槍?duì)點(diǎn)對(duì)點(diǎn)操作進(jìn)行優(yōu)化的點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)(108)),計(jì)算節(jié)點(diǎn)(102)進(jìn)行耦合以進(jìn)行數(shù)據(jù)通信。全局組合網(wǎng)絡(luò)(106)是包括連接到計(jì)算節(jié)點(diǎn)(102)以把計(jì)算節(jié)點(diǎn)(102)組織為二叉樹的數(shù)據(jù)通信鏈路的數(shù)據(jù)通信網(wǎng)絡(luò)。通過計(jì)算節(jié)點(diǎn)(102)之間的數(shù)據(jù)通信鏈路實(shí)現(xiàn)每個(gè)數(shù)據(jù)通信網(wǎng)絡(luò)。數(shù)據(jù)通信鏈路為并行計(jì)算機(jī)(100)的計(jì)算節(jié)點(diǎn)(102)之間的并行操作提供數(shù)據(jù)通信。并行計(jì)算機(jī)(100)的計(jì)算節(jié)點(diǎn)(102)被組織成用于并行計(jì)算機(jī)(100)上的集體并行操作的計(jì)算節(jié)點(diǎn)的至少一個(gè)工作組(132)。計(jì)算節(jié)點(diǎn)的每個(gè)工作組(132)是執(zhí)行集體并行操作的計(jì)算節(jié)點(diǎn)的集合。工作組(132)中的每個(gè)計(jì)算節(jié)點(diǎn)被分配唯一級(jí)別,用于識(shí)別工作組(132)中的特定計(jì)算機(jī)節(jié)點(diǎn)。通過工作組的計(jì)算節(jié)點(diǎn)之間的數(shù)據(jù)通信實(shí)現(xiàn)集體操作。集體操作是涉及一個(gè)工作組(132)的所有計(jì)算節(jié)點(diǎn)的那些功能。集體操作是一種同時(shí)(即,近似同一時(shí)間)由計(jì)算節(jié)點(diǎn)的工作組(132)中的所有計(jì)算節(jié)點(diǎn)執(zhí)行的操作、消息傳遞計(jì)算機(jī)程序指令。這種工作組(132)可以包括并行計(jì)算機(jī)(100)中的所有計(jì)算節(jié)點(diǎn)(102)或者所有計(jì)算節(jié)點(diǎn)(102)的子集。常常圍繞點(diǎn)對(duì)點(diǎn)操作建立集體操作。集體操作要求工作組(132)內(nèi)的所有計(jì)算節(jié)點(diǎn)上的所有處理調(diào)用具有匹配參數(shù)的同一集體操作。“廣播”是在工作組的計(jì)算節(jié)點(diǎn)之間移動(dòng)數(shù)據(jù)的集體操作的示例?!皻w約”操作是對(duì)分布在工作組(132)的計(jì)算節(jié)點(diǎn)之中的數(shù)據(jù)執(zhí)行算術(shù)或邏輯函數(shù)的集體操作的示例。例如,工作組(132)可被實(shí)現(xiàn)為MPI “通信器”。“MPI”是指“消息傳遞接口(Message Passing Interface)”、現(xiàn)有技術(shù)的并行通信庫、并行計(jì)算機(jī)上進(jìn)行數(shù)據(jù)通信的計(jì)算機(jī)程序指令的模塊??杀桓倪M(jìn)以應(yīng)用于根據(jù)本發(fā)明的實(shí)施例構(gòu)造的系統(tǒng)中的現(xiàn)有技術(shù)并行通信庫的示例包括MPI和“并行虛擬機(jī)”(PVM)庫。PVM是由田納西大學(xué)、Oak Ridge國家實(shí)驗(yàn)室和埃默里大學(xué)開發(fā)的。MPI由MPI論壇進(jìn)行發(fā)布,MPI論壇是一個(gè)具有來自定義并維護(hù)MPI標(biāo)準(zhǔn)的許多組織的代表的開放群。撰寫此文時(shí)的MPI是在分布式存儲(chǔ)器并行計(jì)算機(jī)上運(yùn)行并行程序的計(jì)算節(jié)點(diǎn)之間進(jìn)行通信的事實(shí)標(biāo)準(zhǔn)。為了易于進(jìn)行解釋,本說明書有時(shí)使用MPI術(shù)語,但是這樣使用MPI不是本發(fā)明的要求或限制。某些集體操作具有在工作組(132)中的特定計(jì)算節(jié)點(diǎn)上運(yùn)行的一個(gè)發(fā)起或接收過程。例如,在“廣播”集體操作中,向所有其它計(jì)算節(jié)點(diǎn)分發(fā)數(shù)據(jù)的計(jì)算節(jié)點(diǎn)上的過程是發(fā)起過程。在“收集(gather)”操作中,例如,從其它計(jì)算節(jié)點(diǎn)接收所有數(shù)據(jù)的計(jì)算節(jié)點(diǎn)上的過程是接收過程。運(yùn)行這種發(fā)起或接收過程的計(jì)算節(jié)點(diǎn)被稱作邏輯根。大多數(shù)集體操作是如下四種基本操作的變型或組合:廣播、收集、分散和歸約。用于這些集體操作的接口在由MPI論壇發(fā)布的MPI標(biāo)準(zhǔn)中進(jìn)行定義。然而,用于執(zhí)行集體操作的算法沒有在MPI標(biāo)準(zhǔn)中進(jìn)行定義。在廣播操作中,所有過程指定其緩沖器內(nèi)容將被發(fā)送的同一根過程。除根之外的過程指定接收緩沖器。在該操作后,所有緩沖器包含來自根過程的消息。與廣播操作一樣,分散操作也是一對(duì)多集體操作。在分散操作中,邏輯根將根上的數(shù)據(jù)劃分成段并且將不同段分配給工作組(132)中的各個(gè)計(jì)算節(jié)點(diǎn)。在分散操作中,所有過程通常指定相同接收計(jì)數(shù)。發(fā)送參數(shù)只對(duì)其緩沖器實(shí)際包含給定數(shù)據(jù)類型的發(fā)送計(jì)數(shù)(sendCOunt)*N個(gè)元素的根過程有意義,其中,N是給定的計(jì)算節(jié)點(diǎn)組中的過程的數(shù)目。發(fā)送緩沖器被分割并且分散給所有過程(包括邏輯根上的過程)。每個(gè)計(jì)算節(jié)點(diǎn)被分配稱作“級(jí)別(rank)”的連續(xù)標(biāo)識(shí)符。在該操作后,根已經(jīng)按照上升級(jí)別順序向每個(gè)過程發(fā)送了sendcount個(gè)數(shù)據(jù)元素。級(jí)別O從發(fā)送緩沖器接收前sendcount個(gè)數(shù)據(jù)元素。級(jí)別I從發(fā)送緩沖器接收接下來的sendcount個(gè)數(shù)據(jù)元素,依此類推。收集操作是多對(duì)一集體操作,即,分散操作的說明的完全逆轉(zhuǎn)。也就是說,收集是一種多對(duì)一集體操作,其中,一數(shù)據(jù)類型的元素被從分級(jí)別的計(jì)算節(jié)點(diǎn)收集到根節(jié)點(diǎn)中的接收緩沖器中。歸約操作也是一種多對(duì)一集體操作,包括對(duì)兩個(gè)數(shù)據(jù)元素執(zhí)行的算術(shù)或邏輯函數(shù)。所有過程指定相同“計(jì)數(shù)(count)”和相同算術(shù)或邏輯函數(shù)。在歸約后,所有過程已經(jīng)將count個(gè)數(shù)據(jù)元素從計(jì)算節(jié)點(diǎn)發(fā)送緩沖器發(fā)送到根過程。在歸約操作中,來自對(duì)應(yīng)發(fā)送緩沖器位置的數(shù)據(jù)元素通過算術(shù)或邏輯運(yùn)算被成對(duì)組合以在根過程的接收緩沖器中生成單個(gè)對(duì)應(yīng)元素。專用歸約操作能夠在運(yùn)行時(shí)進(jìn)行定義。并行通信庫可以支持預(yù)定義操作。例如,MPI提供下面的預(yù)定義歸約操作:MPI_MAX 最大MPI_MIN 最小MPI_SUM 和
MPI_PR0D 乘積MPI_LAND 邏輯與MPI_BAND 位與MPI_L0R 邏輯或MPI_B0R 位或MPI_LX0R 邏輯異或MPI_BX0R 位異或除了計(jì)算節(jié)點(diǎn)以外,并行計(jì)算機(jī)(100)包括經(jīng)由全局組合網(wǎng)絡(luò)(106)與計(jì)算節(jié)點(diǎn)
(102)耦合的輸入/輸出(I/O)節(jié)點(diǎn)(110、114)。并行計(jì)算機(jī)(100)中的計(jì)算節(jié)點(diǎn)(102)可以被劃分成多個(gè)處理組以使得一個(gè)處理組中的每個(gè)計(jì)算節(jié)點(diǎn)為進(jìn)行數(shù)據(jù)通信而連接到同一 I/O節(jié)點(diǎn)。因此,每個(gè)處理組由一個(gè)I/O節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)(102)的子集構(gòu)成。整個(gè)系統(tǒng)中的計(jì)算節(jié)點(diǎn)的數(shù)目與I/O節(jié)點(diǎn)的數(shù)目的比率通常取決于并行計(jì)算機(jī)(102)的硬件結(jié)構(gòu)。例如,在一些結(jié)構(gòu)中,每個(gè)處理組可由八個(gè)計(jì)算節(jié)點(diǎn)和一個(gè)I/o節(jié)點(diǎn)構(gòu)成。在一些其它結(jié)構(gòu)中,每個(gè)處理組可由64個(gè)計(jì)算節(jié)點(diǎn)和一個(gè)I/O節(jié)點(diǎn)構(gòu)成。這些示例僅僅用于說明,而非用于限制。每個(gè)I/O節(jié)點(diǎn)在它的處理組的計(jì)算節(jié)點(diǎn)(102)與一組I/O裝置之間提供I/O服務(wù)。在圖1的示例中,I/O節(jié)點(diǎn)(110、114)經(jīng)由使用高速以太網(wǎng)實(shí)現(xiàn)的局域網(wǎng)(LAN) (130)連接到I/O裝置(118、120、122)以進(jìn)行數(shù)據(jù)通信。圖1的并行計(jì)算機(jī)(100)還包括經(jīng)由網(wǎng)絡(luò)之一(104)耦合到計(jì)算節(jié)點(diǎn)的服務(wù)節(jié)點(diǎn)
(116)。服務(wù)節(jié)點(diǎn)(116)提供對(duì)多個(gè)計(jì)算節(jié)點(diǎn)相同的服務(wù),管理計(jì)算節(jié)點(diǎn)的配置,向計(jì)算節(jié)點(diǎn)中加載程序,啟動(dòng)計(jì)算節(jié)點(diǎn)上的程序執(zhí)行,取回計(jì)算節(jié)點(diǎn)上程序操作的結(jié)果,等等。服務(wù)節(jié)點(diǎn)(116)運(yùn)行服務(wù)應(yīng)用(124)并且經(jīng)由在計(jì)算機(jī)終端(122)上運(yùn)行的服務(wù)應(yīng)用接口(126)與用戶(128)進(jìn)行通信。圖1的并行計(jì)算機(jī)(100)通常采用根據(jù)本發(fā)明的實(shí)施例的許多計(jì)算節(jié)點(diǎn)進(jìn)行操作以進(jìn)行集體操作協(xié)議選擇。為了清楚地進(jìn)行說明,在本文中作為工作組中的一個(gè)計(jì)算節(jié)點(diǎn)的示例描述了計(jì)算節(jié)點(diǎn)(102a)。本技術(shù)領(lǐng)域的讀者應(yīng)該明白,工作組中的其它計(jì)算節(jié)點(diǎn)將具有相似的級(jí)別、數(shù)據(jù)元素、數(shù)據(jù)結(jié)構(gòu)、過程、函數(shù),并且將按照與該示例計(jì)算節(jié)點(diǎn)(102a)相似的方式工作。計(jì)算節(jié)點(diǎn)(102a)包括級(jí)別(212)_MPI通信器(即工作組(132))中的過程。級(jí)別
(212)調(diào)用具有一個(gè)或多個(gè)操作參數(shù)(214)的集體操作(220)。作為在本說明書中使用的術(shù)語的操作參數(shù)可以是為了執(zhí)行集體操作的目的而被傳遞給該集體操作的任何參數(shù)。這些操作參數(shù)的示例包括本技術(shù)領(lǐng)域的讀者可以想到的消息大小、數(shù)據(jù)類型、目標(biāo)節(jié)點(diǎn)的數(shù)目和標(biāo)識(shí)符等。集體操作(220)(這里未示出的計(jì)算機(jī)程序指令的某其它模塊)然后可以選擇用于執(zhí)行集體操作的多個(gè)協(xié)議(222)之一。根據(jù)本發(fā)明的實(shí)施例,對(duì)于從第一預(yù)期協(xié)議開始直到滿足預(yù)定的性能標(biāo)準(zhǔn)的預(yù)期協(xié)議的每個(gè)協(xié)議(222),反復(fù)地執(zhí)行這種選擇。預(yù)定的性能標(biāo)準(zhǔn)是可被預(yù)定用于表示“性能”的可接受水平的任何值。各個(gè)性能標(biāo)準(zhǔn)類型的示例包括本技術(shù)領(lǐng)域的讀者可以想到的執(zhí)行速度、執(zhí)行中利用的資源的數(shù)目等。協(xié)議選擇的每次重復(fù)包括:向用于該預(yù)期協(xié)議的協(xié)議性能函數(shù)(228)提供集體操作的操作參數(shù)(214),并且通過該性能函數(shù)(228)確定該預(yù)期協(xié)議(222)針對(duì)所述操作參數(shù)是否滿足預(yù)定義性能標(biāo)準(zhǔn)。協(xié)議的性能函數(shù)是一個(gè)計(jì)算機(jī)程序指令的函數(shù)或者子例程,當(dāng)被執(zhí)行時(shí)確定該協(xié)議針對(duì)一組特定操作參數(shù)是否生成優(yōu)化性能結(jié)果。在一些實(shí)施例中,例如,協(xié)議的性能函數(shù)的返回值是“良好擬合(good fit)”或“較差擬合(bad fit)”結(jié)果。在圖1的示例中,集體操作根據(jù)用于預(yù)期協(xié)議的或者與預(yù)期協(xié)議關(guān)聯(lián)的元數(shù)據(jù)
(224),識(shí)別并調(diào)用協(xié)議性能功能(228)。S卩,通過元數(shù)據(jù)在圖1的示例中描述可供選擇的每個(gè)協(xié)議。這種元數(shù)據(jù)可描述協(xié)議的許多不同屬性。在本發(fā)明的實(shí)施例中,例如,每個(gè)協(xié)議的元數(shù)據(jù)(224)可以包括指向協(xié)議的性能函數(shù)(228)的指針。通過針對(duì)該預(yù)期協(xié)議利用操作參數(shù)(214)評(píng)估預(yù)定義性能擬合方程(230)從而計(jì)算針對(duì)所述操作參數(shù)的預(yù)期協(xié)議的性能度量,性能函數(shù)(228)可以確定針對(duì)所述操作參數(shù),預(yù)期協(xié)議(222)是否滿足預(yù)定義性能標(biāo)準(zhǔn)。通過擬合方程描述、指定或定義通過該協(xié)議的性能函數(shù)(228)的在圖1的示例中的相對(duì)于操作參數(shù)組的每個(gè)協(xié)議的性能??梢酝ㄟ^先前測(cè)量的性能數(shù)據(jù)的線性、二次或四次回歸分析產(chǎn)生這種擬合方程。即,利用多個(gè)不同的操作參數(shù)組,每個(gè)協(xié)議可以被執(zhí)行許多次,測(cè)量并存儲(chǔ)每次執(zhí)行所產(chǎn)生的性能數(shù)據(jù)。然后,可以采用測(cè)量和存儲(chǔ)的性能數(shù)據(jù)執(zhí)行回歸分析以建立近似描述協(xié)議的性能質(zhì)量的擬合方程。每個(gè)擬合方程然后返回針對(duì)一組特定操作參數(shù)的計(jì)算的性能度量(218)。在實(shí)時(shí)協(xié)議選擇期間,如果計(jì)算的性能度量(218)大于預(yù)定義的最小性能閾值(圖1的示例中的性能標(biāo)準(zhǔn)(216)),則集體協(xié)議(220)確定該預(yù)期協(xié)議滿足預(yù)定性能標(biāo)準(zhǔn)并且選擇該預(yù)期協(xié)議作為用于執(zhí)行集體操作的協(xié)議。如果計(jì)算的性能度量(218)不大于預(yù)定義的最小性能閾值,則選擇過程針對(duì)另一個(gè)預(yù)期協(xié)議進(jìn)行下一次重復(fù)。一旦被選擇,集體操作(220)利用所選擇的協(xié)議執(zhí)行。組成圖1中所示的示例設(shè)備的節(jié)點(diǎn)、網(wǎng)絡(luò)以及I/O裝置的布置只是用于解釋本發(fā)明而非進(jìn)行限制。被構(gòu)造為用于根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的系統(tǒng)可以包括本領(lǐng)域技術(shù)人員可想到的圖1未示出的另外的節(jié)點(diǎn)、網(wǎng)絡(luò)、裝置和架構(gòu)。圖1的示例中的并行計(jì)算機(jī)(100)包括16個(gè)計(jì)算節(jié)點(diǎn)(102);被構(gòu)造為用于根據(jù)本發(fā)明的實(shí)施例的集體操作協(xié)議選擇的并行計(jì)算機(jī)有時(shí)候包括幾千個(gè)計(jì)算節(jié)點(diǎn)。除了以太網(wǎng)(174)和JTAG (104)以外,這種數(shù)據(jù)處理系統(tǒng)中的網(wǎng)絡(luò)可以支持許多數(shù)據(jù)通信協(xié)議,例如包括TCP(傳輸控制協(xié)議)、IP (互聯(lián)網(wǎng)協(xié)議)、以及本領(lǐng)域技術(shù)人員可想到的其它協(xié)議。還可以在圖1所示的硬件平臺(tái)之外的各種硬件平臺(tái)上實(shí)現(xiàn)本發(fā)明的各種實(shí)施例。通常在包括通過至少一個(gè)數(shù)據(jù)通信網(wǎng)絡(luò)組織用于集體操作的多個(gè)計(jì)算節(jié)點(diǎn)的并行計(jì)算機(jī)上實(shí)現(xiàn)根據(jù)本發(fā)明的實(shí)施例的集體操作協(xié)議選擇。實(shí)際上,這些計(jì)算機(jī)可以包括成千個(gè)這種計(jì)算節(jié)點(diǎn)。每個(gè)計(jì)算節(jié)點(diǎn)自身又是一種由一個(gè)或多個(gè)計(jì)算機(jī)處理核、它自己的計(jì)算機(jī)存儲(chǔ)器和它自己的輸入/輸出適配器組成的計(jì)算機(jī)。因此,為了進(jìn)一步的說明,圖2闡述了用于能夠進(jìn)行根據(jù)本發(fā)明的實(shí)施例的集體操作協(xié)議選擇的并行計(jì)算機(jī)中的示例計(jì)算節(jié)點(diǎn)(102)的框圖。圖2的計(jì)算節(jié)點(diǎn)(102)包括多個(gè)處理核(165)以及RAM (156)??梢栽谝粋€(gè)或多個(gè)集成電路芯片上構(gòu)造圖2的處理核(165)。處理核(165)通過高速內(nèi)存總線(155)連接到RAM(156)并且通過總線適配器(194)和擴(kuò)展總線(168)連接到計(jì)算節(jié)點(diǎn)的其它部件。在RAM(156)中存儲(chǔ)了應(yīng)用程序(159),即,使用并行算法執(zhí)行并行、用戶級(jí)數(shù)據(jù)處理的計(jì)算機(jī)程序指令的模塊。在RAM (156)中還存儲(chǔ)了并行通信庫(161),即,在計(jì)算節(jié)點(diǎn)之間執(zhí)行并行通信(包括點(diǎn)對(duì)點(diǎn)操作和集體操作)的計(jì)算機(jī)程序指令的庫??梢允褂美鏑編程語言的常規(guī)編程語言以及使用常規(guī)編程方法編寫在兩個(gè)獨(dú)立數(shù)據(jù)通信網(wǎng)絡(luò)上在節(jié)點(diǎn)之間發(fā)送和接收數(shù)據(jù)的并行通信例程,從頭開發(fā)并行通信例程的庫以用于根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)中。或者,可以改進(jìn)現(xiàn)存的現(xiàn)有庫以根據(jù)本發(fā)明的實(shí)施例進(jìn)行工作。現(xiàn)有并行通信庫的示例包括“消息傳遞接口,Message Passing Interface”(MPI)庫和“并行虛擬機(jī),Parallel VirtualMachine” (PVM)庫。在RAM中還存儲(chǔ)了級(jí)別(212),即MPI通信器中的過程。當(dāng)級(jí)別(212)和并行通信庫(161)被執(zhí)行時(shí),使得計(jì)算節(jié)點(diǎn)(102)總體上工作以進(jìn)行根據(jù)本發(fā)明的實(shí)施例的集體操作協(xié)議選擇。在圖2的示例中,級(jí)別(212)調(diào)用具有一個(gè)或多個(gè)操作參數(shù)(214)的集體操作
(220)并且并行通信庫(161)開始針對(duì)該集體操作(220)的協(xié)議(222)選擇。并行通信庫
(161)可以在反復(fù)過程中選擇用于執(zhí)行該集體操作的協(xié)議(222)之一,從第一預(yù)期協(xié)議開始,一直持續(xù)到滿足預(yù)定性能標(biāo)準(zhǔn)的預(yù)期協(xié)議。選擇過程的每次重復(fù)包括向用于由存儲(chǔ)在協(xié)議的元數(shù)據(jù)(224)中的指針(226)引用的預(yù)期協(xié)議的協(xié)議性能函數(shù)(228)提供所述集體操作(220)的操作參數(shù)(214)。通過針對(duì)預(yù)期協(xié)議(222)采用所述操作參數(shù)(214)評(píng)估預(yù)定義性能擬合方程(230)從而計(jì)算針對(duì)所述操作參數(shù)(214)的該預(yù)期協(xié)議(222)的性能度量
(218),性能函數(shù)(228)確定針對(duì)所述操作參數(shù)(214)該預(yù)期協(xié)議是否滿足預(yù)定義性能標(biāo)準(zhǔn)
(216)。如果計(jì)算的性能度量(218)大于在性能標(biāo)準(zhǔn)(216)中闡述的預(yù)定義最小性能閾值,則性能函數(shù)確定該預(yù)期協(xié)議滿足預(yù)定性能標(biāo)準(zhǔn)(216)并且選擇該預(yù)期協(xié)議(222)作為用于執(zhí)行所述集體操作(220)的協(xié)議。并行通信庫(161)然后利用所選擇的協(xié)議執(zhí)行所述集體操作。在RAM (156)中還存儲(chǔ)了操作系統(tǒng)(162),即,用于應(yīng)用程序訪問計(jì)算節(jié)點(diǎn)的其它資源的計(jì)算機(jī)程序指令和例程的模塊。通常,并行計(jì)算機(jī)的計(jì)算機(jī)節(jié)點(diǎn)中的應(yīng)用程序和并行通信庫在無用戶登錄且無安全問題的情況下進(jìn)行單線程執(zhí)行,因?yàn)樵摼€程被授權(quán)完全訪問該節(jié)點(diǎn)的所有資源。因此,要由并行計(jì)算機(jī)中的計(jì)算節(jié)點(diǎn)上的操作系統(tǒng)執(zhí)行的任務(wù)的數(shù)目和復(fù)雜度要比許多線程同時(shí)運(yùn)行的串行計(jì)算機(jī)上的操作系統(tǒng)的情況更少和更簡(jiǎn)單。此夕卜,在圖2的計(jì)算節(jié)點(diǎn)(102)上沒有視頻1/0,這是降低對(duì)操作系統(tǒng)的需求的另一個(gè)因素。因此,與通用計(jì)算機(jī)的操作系統(tǒng)(精簡(jiǎn)版本)或特別為特定并行計(jì)算機(jī)上的操作開發(fā)的操作系統(tǒng)相比,操作系統(tǒng)(162)可以是非常輕載的。可有用地進(jìn)行改進(jìn)、簡(jiǎn)化以應(yīng)用于計(jì)算節(jié)點(diǎn)的操作系統(tǒng)包括UNIX 、Linux 、Windows XP 、AIX 、IBM的i5/0S 以及本領(lǐng)域技術(shù)人員可想到的其它操作系統(tǒng)。圖2的示例計(jì)算節(jié)點(diǎn)(102)包括與并行計(jì)算機(jī)的其它節(jié)點(diǎn)進(jìn)行數(shù)據(jù)通信的幾個(gè)通信適配器(172、176、180、188)。這些數(shù)據(jù)通信可以通過RS-232連接、通過例如USB的外部總線、通過例如IP網(wǎng)絡(luò)的數(shù)據(jù)通信網(wǎng)絡(luò)以及本領(lǐng)域技術(shù)人員可以想到的其它方式串行地執(zhí)行。通信適配器實(shí)現(xiàn)硬件水平的數(shù)據(jù)通信,通過該通信適配器,一個(gè)計(jì)算機(jī)直接或通過網(wǎng)絡(luò)向另一個(gè)計(jì)算機(jī)發(fā)送數(shù)據(jù)通信??蓱?yīng)用于能夠執(zhí)行并行計(jì)算機(jī)中的集體操作協(xié)議選擇的設(shè)備中的通信適配器的示例包括用于有線通信的調(diào)制解調(diào)器、用于有線網(wǎng)絡(luò)通信的以太網(wǎng)(IEEE 802.3)適配器和用于無線網(wǎng)絡(luò)通信的802.1lb適配器。圖2的示例中的數(shù)據(jù)通信適配器包括吉比特以太網(wǎng)適配器(172),用于將示例計(jì)算節(jié)點(diǎn)(102)耦合到吉比特以太網(wǎng)(174)以進(jìn)行數(shù)據(jù)通信。吉比特以太網(wǎng)是在IEEE 802.3標(biāo)準(zhǔn)中定義的提供每秒十億比特(一吉比特)的數(shù)據(jù)率的網(wǎng)絡(luò)傳輸標(biāo)準(zhǔn)。吉比特以太網(wǎng)是在多模光纖光纜、單模光纖光纜或未屏蔽雙絞線上工作的以太網(wǎng)的變型。圖2的示例中的數(shù)據(jù)通信適配器包括JTAG從電路(176),用于將示例計(jì)算節(jié)點(diǎn)
(102)耦合到JTAG主電路(178)以進(jìn)行數(shù)據(jù)通信。JTAG是用于使用邊界掃描來測(cè)試印刷線路板的測(cè)試訪問端口的、標(biāo)題為標(biāo)準(zhǔn)測(cè)試訪問端口和邊界掃描架構(gòu)的IEEE 1149.1標(biāo)準(zhǔn)的常用名稱。JTAG的適用范圍如此廣泛以致此時(shí)邊界掃描或多或少與JTAG同義。JTAG不僅用于印刷線路板,還用于執(zhí)行集成電路的邊界掃描,并且還用作用于調(diào)試嵌入式系統(tǒng)、在該系統(tǒng)中提供便利的另選接入點(diǎn)的機(jī)制。圖2的示例計(jì)算節(jié)點(diǎn)可以是所有這三個(gè):它通常包括安裝在印刷線路板上的一個(gè)或多個(gè)集成電路并且可以被實(shí)現(xiàn)為具有它自己的處理核、它自己的存儲(chǔ)器和它自己的I/O能力的嵌入式系統(tǒng)。通過JTAG從(176)的JTAG邊界掃描可高效地配置計(jì)算節(jié)點(diǎn)(102)中的處理核寄存器和存儲(chǔ)器,用于動(dòng)態(tài)地向用于根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的系統(tǒng)中的一批計(jì)算節(jié)點(diǎn)重分配連接的節(jié)點(diǎn)。圖2的示例中的數(shù)據(jù)通信適配器包括點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)適配器(180),用于將示例計(jì)算節(jié)點(diǎn)(102)耦合到對(duì)于進(jìn)行點(diǎn)對(duì)點(diǎn)消息傳遞操作最優(yōu)的網(wǎng)絡(luò)(108)(例如,被構(gòu)造為三維環(huán)或網(wǎng)格的網(wǎng)絡(luò))以進(jìn)行數(shù)據(jù)通信。點(diǎn)對(duì)點(diǎn)適配器(180)通過6個(gè)雙向鏈路+X(181)、-x(182)、+y (183)、-y (184)、+z (185)和-z (186),在三個(gè)通信軸x、y和z上的6個(gè)方向上提供數(shù)據(jù)通信。圖2的示例中的數(shù)據(jù)通信適配器包括全局組合網(wǎng)絡(luò)適配器(188),用于將示例計(jì)算節(jié)點(diǎn)(102)耦合到對(duì)于集體消息傳遞操作最佳的全局組合網(wǎng)絡(luò)(106)(例如被構(gòu)造為二叉樹的網(wǎng)絡(luò))以進(jìn)行數(shù)據(jù)通信。全局組合網(wǎng)絡(luò)適配器(188)經(jīng)由三個(gè)雙向鏈路為全局組合網(wǎng)絡(luò)適配器(188)支持的每個(gè)全局組合網(wǎng)絡(luò)(106)提供數(shù)據(jù)通信。在圖2的示例中,全局組合網(wǎng)絡(luò)適配器(188)通過三個(gè)雙向鏈路為全局組合網(wǎng)絡(luò)(106)提供數(shù)據(jù)通信:兩個(gè)到達(dá)孩子節(jié)點(diǎn)(190),一個(gè)到達(dá)父節(jié)點(diǎn)(192)。示例計(jì)算節(jié)點(diǎn)(102)包括多個(gè)算術(shù)邏輯單元(ALU)。每個(gè)處理核(165)包括ALU(166),并且單獨(dú)的ALU(170)專用于全局組合網(wǎng)絡(luò)適配器(188)以用于執(zhí)行包括allreduce操作的歸約操作的算術(shù)和邏輯函數(shù)。并行通信庫(161)中的歸約例程的計(jì)算機(jī)程序指令可以將算術(shù)或邏輯函數(shù)的指令鎖存到指令寄存器(169)。當(dāng)歸約操作的算術(shù)或邏輯函數(shù)是“和”或“邏輯或”時(shí),例如,集體操作適配器(188)可以通過使用處理核(165)中的ALU
(166)執(zhí)行算術(shù)或邏輯操作或者通過使用專用ALU (170)使用由全局組合網(wǎng)絡(luò)(106)上的節(jié)點(diǎn)(190、192)提供的數(shù)據(jù)和由計(jì)算節(jié)點(diǎn)(102)上的處理核(165)提供的數(shù)據(jù)通常快得多地執(zhí)行算術(shù)或邏輯操作。然而,常常當(dāng)在全局組合網(wǎng)絡(luò)適配器(188)中執(zhí)行算術(shù)操作時(shí),全局組合網(wǎng)絡(luò)適配器(188)僅僅用于組合從孩子節(jié)點(diǎn)(190)接收的數(shù)據(jù)并且將結(jié)果沿網(wǎng)絡(luò)(106)向上傳遞給父節(jié)點(diǎn)(192)。類似地,全局組合網(wǎng)絡(luò)適配器(188)可以僅僅用于發(fā)送從父節(jié)點(diǎn)(192)接收的數(shù)據(jù)并且將數(shù)據(jù)沿網(wǎng)絡(luò)(106)向下傳遞給孩子節(jié)點(diǎn)(190)。即,計(jì)算節(jié)點(diǎn)(102)上的處理核(165)都沒有貢獻(xiàn)改變ALU (170)的輸出并且然后被向上或向下通過全局組合網(wǎng)絡(luò)(106)傳遞的數(shù)據(jù)。由于ALU (170)通常直到ALU (170)從處理核(165)之一接收到輸入才在網(wǎng)絡(luò)(106)上輸出數(shù)據(jù),所以處理核(165)可以將身份元素注入專用ALU (170)以用于在ALU
(170)中執(zhí)行特定算術(shù)操作以防止ALU (170)的輸出被改變。然而,將身份元素注入ALU常常消耗大量處理周期。為了進(jìn)一步增強(qiáng)這些情況下的性能,示例計(jì)算節(jié)點(diǎn)(102)包括專用硬件(171),用于將身份元素注入ALU (170)以減少防止ALU輸出的改變所需的處理核資源的量。專用硬件(171)注入與由ALU執(zhí)行的特定算術(shù)操作對(duì)應(yīng)的身份元素。例如,當(dāng)全局組合網(wǎng)絡(luò)適配器(188)對(duì)從孩子節(jié)點(diǎn)(190)接收的數(shù)據(jù)執(zhí)行位或時(shí),專用硬件(171)可以將零注入到ALU (170)以提高整個(gè)全局組合網(wǎng)絡(luò)(106)的性能。為了進(jìn)一步進(jìn)行解釋,圖3A闡述了用于根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的系統(tǒng)的示例點(diǎn)對(duì)點(diǎn)適配器(180)的框圖。點(diǎn)對(duì)點(diǎn)適配器(180)被設(shè)計(jì)用于針對(duì)點(diǎn)對(duì)點(diǎn)操作而優(yōu)化的數(shù)據(jù)通信網(wǎng)絡(luò)、以三維環(huán)或網(wǎng)格組織計(jì)算機(jī)節(jié)點(diǎn)的網(wǎng)絡(luò)。圖3A的示例中的點(diǎn)對(duì)點(diǎn)適配器(180)沿X軸經(jīng)由四個(gè)單向數(shù)據(jù)通信鏈路,向以及自-X方向(182)上的下一個(gè)節(jié)點(diǎn)提供數(shù)據(jù)通信,并且向以及自+X方向(181)上的下一個(gè)節(jié)點(diǎn)提供數(shù)據(jù)通信。圖3A的點(diǎn)對(duì)點(diǎn)適配器(180)還沿y軸通過四個(gè)單向數(shù)據(jù)通信鏈路,向以及自-y方向(184)上的下一個(gè)節(jié)點(diǎn)提供數(shù)據(jù)通信并且向以及自+y方向(183)上的下一個(gè)節(jié)點(diǎn)提供數(shù)據(jù)通信。圖3A的點(diǎn)對(duì)點(diǎn)適配器(180)還沿z軸通過四個(gè)單向數(shù)據(jù)通信鏈路,向以及自-Z方向(186)上的下一個(gè)節(jié)點(diǎn)提供數(shù)據(jù)通信并且向以及自+z方向(185)上的下一個(gè)節(jié)點(diǎn)提供數(shù)據(jù)通信。為了進(jìn)一步解釋,圖3B闡述了用于根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的系統(tǒng)中的示例全局組合網(wǎng)絡(luò)適配器(188)的框圖。全局組合網(wǎng)絡(luò)適配器(188)被設(shè)計(jì)用于針對(duì)集體操作進(jìn)行優(yōu)化的網(wǎng)絡(luò)、以二叉樹組織并行計(jì)算機(jī)的計(jì)算節(jié)點(diǎn)的網(wǎng)絡(luò)。圖3B的示例中的全局組合網(wǎng)絡(luò)適配器(188)通過四個(gè)單向數(shù)據(jù)通信鏈路(190)提供去往和來自全局組合網(wǎng)絡(luò)的孩子節(jié)點(diǎn)的數(shù)據(jù)通信,還通過兩個(gè)單向數(shù)據(jù)通信鏈路(192)提供去往和來自全局組合網(wǎng)絡(luò)的父節(jié)點(diǎn)的數(shù)據(jù)通信。為了進(jìn)一步解釋,圖4闡述了示出用于能夠執(zhí)行根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的系統(tǒng)的針對(duì)點(diǎn)對(duì)點(diǎn)操作進(jìn)行優(yōu)化的示例數(shù)據(jù)通信網(wǎng)絡(luò)(108)的線路圖。在圖4的示例中,點(diǎn)表示并行計(jì)算機(jī)的計(jì)算節(jié)點(diǎn)(102),點(diǎn)之間的虛線表示計(jì)算節(jié)點(diǎn)之間的數(shù)據(jù)通信鏈路(103)。通過與例如圖3A所示相似的點(diǎn)對(duì)點(diǎn)數(shù)據(jù)通信適配器實(shí)現(xiàn)所述數(shù)據(jù)通信鏈路,其中,所述數(shù)據(jù)通信鏈路在三個(gè)軸x、y和z上并且在+X (181)、-x (182)、+y (183),-y (184),+z (185)和-z (186)這六個(gè)方向上往返。這些鏈路和計(jì)算節(jié)點(diǎn)被針對(duì)點(diǎn)對(duì)點(diǎn)操作進(jìn)行優(yōu)化的這個(gè)數(shù)據(jù)通信網(wǎng)絡(luò)組織成三維網(wǎng)格(105)。網(wǎng)格(105)具有每個(gè)軸上的纏繞鏈路,用于連接網(wǎng)格(105)的相對(duì)側(cè)的網(wǎng)格(105)中的最外計(jì)算節(jié)點(diǎn)。這些纏繞鏈路形成環(huán)(107)。環(huán)中的每個(gè)計(jì)算節(jié)點(diǎn)在環(huán)中的位置由一個(gè)X、y和z坐標(biāo)組唯一指定。讀者將明白,為了清楚,y和z方向的纏繞鏈路已經(jīng)被省去,但是以與在X方向上所示的纏繞鏈路相似的方式構(gòu)造。為了清楚地進(jìn)行解釋,圖4的數(shù)據(jù)通信網(wǎng)絡(luò)僅僅示出了 27個(gè)計(jì)算節(jié)點(diǎn),但是讀者應(yīng)該明白,用于根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的針對(duì)點(diǎn)對(duì)點(diǎn)操作進(jìn)行優(yōu)化的數(shù)據(jù)通信網(wǎng)絡(luò)可以僅僅包含幾個(gè)計(jì)算節(jié)點(diǎn)或者可以包含幾千個(gè)計(jì)算節(jié)點(diǎn)。為了易于進(jìn)行解釋,圖4的數(shù)據(jù)通信網(wǎng)絡(luò)僅僅以三維示出,但是讀者應(yīng)該明白,用于根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的針對(duì)點(diǎn)對(duì)點(diǎn)操作進(jìn)行優(yōu)化的數(shù)據(jù)通信網(wǎng)絡(luò)實(shí)際上能夠以二維、四維、五維等進(jìn)行實(shí)現(xiàn)。幾個(gè)超級(jí)計(jì)算機(jī)現(xiàn)在使用五維網(wǎng)格或環(huán)網(wǎng)絡(luò),例如包括IBM的Blue Gene QTM。為了進(jìn)一步進(jìn)行解釋,圖5闡述了示出用于能夠執(zhí)行根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的系統(tǒng)中的示例全局組合網(wǎng)絡(luò)(106)的線路圖。圖5的示例數(shù)據(jù)通信網(wǎng)絡(luò)包括連接到計(jì)算節(jié)點(diǎn)以將計(jì)算節(jié)點(diǎn)組織成樹的數(shù)據(jù)通信鏈路(103)。在圖5的示例中,點(diǎn)表示并行計(jì)算機(jī)的計(jì)算節(jié)點(diǎn)(102),點(diǎn)之間的虛線(103)表示計(jì)算節(jié)點(diǎn)之間的數(shù)據(jù)通信鏈路。通過與例如圖3B中所示相似的全局組合網(wǎng)絡(luò)適配器實(shí)現(xiàn)所述數(shù)據(jù)通信鏈路,其中,除了一些例外情況,每個(gè)節(jié)點(diǎn)通常提供去往和來自兩個(gè)孩子節(jié)點(diǎn)的數(shù)據(jù)通信以及去往和來自父節(jié)點(diǎn)的數(shù)據(jù)通信。全局組合網(wǎng)絡(luò)(106)中的節(jié)點(diǎn)可以被刻畫為物理根節(jié)點(diǎn)
(202)、分支節(jié)點(diǎn)(204)和葉節(jié)點(diǎn)(206)。物理根(202)具有兩個(gè)孩子但沒有父輩并且之所以如此稱呼是因?yàn)槲锢砀?jié)點(diǎn)(202)是在二叉樹的頂部物理構(gòu)造的節(jié)點(diǎn)。葉節(jié)點(diǎn)(206)均具有父輩但葉節(jié)點(diǎn)沒有孩子。分支節(jié)點(diǎn)(204)均具有父輩和兩個(gè)孩子。這些鏈路和計(jì)算節(jié)點(diǎn)由此被針對(duì)集體操作進(jìn)行優(yōu)化的這個(gè)數(shù)據(jù)通信網(wǎng)絡(luò)組織成二叉樹(106)。為了清楚地進(jìn)行解釋,圖5的數(shù)據(jù)通信網(wǎng)絡(luò)僅僅示出了 31個(gè)計(jì)算節(jié)點(diǎn),但是讀者應(yīng)該明白,用于根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的針對(duì)集體操作進(jìn)行優(yōu)化的全局組合網(wǎng)絡(luò)(106)可以僅僅包含幾個(gè)計(jì)算節(jié)點(diǎn)或者可以包含幾千個(gè)計(jì)算節(jié)點(diǎn)。在圖5的示例中,樹中的每個(gè)節(jié)點(diǎn)被分配稱作“級(jí)別”(250)的單元標(biāo)識(shí)符。該級(jí)別實(shí)際上識(shí)別執(zhí)行根據(jù)本發(fā)明的實(shí)施例的并行操作的任務(wù)或過程。使用級(jí)別來識(shí)別節(jié)點(diǎn)假定了在每個(gè)節(jié)點(diǎn)上正在執(zhí)行僅僅一個(gè)這樣的任務(wù)。在超過一個(gè)參與任務(wù)在一個(gè)節(jié)點(diǎn)上執(zhí)行的程度上,該級(jí)別如此識(shí)別任務(wù)而不是節(jié)點(diǎn)。級(jí)別唯一地識(shí)別用于樹網(wǎng)絡(luò)中的點(diǎn)對(duì)點(diǎn)操作和集體操作兩者的樹網(wǎng)絡(luò)中的任務(wù)的位置。這個(gè)示例中的級(jí)別被分配為從O開始的整數(shù),其中,O被分配給根任務(wù)或根節(jié)點(diǎn)(202),I被分配給樹的第二層中的第一節(jié)點(diǎn),2被分配給樹的第二層中的第二節(jié)點(diǎn),3被分配給樹的第三層中的第一節(jié)點(diǎn),4被分配給樹的第三層中的第二節(jié)點(diǎn),依此類推。為了易于進(jìn)行顯示,這里僅僅示出了樹的前三層的級(jí)別,但是樹網(wǎng)絡(luò)中的所有計(jì)算節(jié)點(diǎn)都被分配一個(gè)唯一級(jí)別。為了進(jìn)一步進(jìn)行解釋,圖6闡述了示出用于根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的示例方法的流程圖。在例如與圖1所示的并行計(jì)算機(jī)(100)相似的包括多個(gè)計(jì)算節(jié)點(diǎn)的并行計(jì)算機(jī)中執(zhí)行圖6的方法。圖6的方法包括調(diào)用(602)具有一個(gè)或多個(gè)操作參數(shù)的集體操作。通過對(duì)由并行通信庫提供的函數(shù)執(zhí)行函數(shù)調(diào)用可以執(zhí)行調(diào)用(602)具有一個(gè)或多個(gè)操作參數(shù)的集體操作,其中,所述函數(shù)表示特定類型的集體操作。集體操作的示例包括歸約操作、廣播操作、收集操作等。每個(gè)集體操作可以以各種方式執(zhí)行。執(zhí)行集體操作的每種方式被稱作協(xié)議。即,每個(gè)集體操作可以包括多個(gè)協(xié)議,其中,每個(gè)協(xié)議被構(gòu)造為實(shí)現(xiàn)或執(zhí)行該集體操作。為此,圖6的方法包括選擇(604)用于執(zhí)行集體操作的多個(gè)協(xié)議之一。這種選擇(604)是反復(fù)的過程,該反復(fù)過程針對(duì)集體操作的每個(gè)預(yù)期協(xié)議執(zhí)行一次,從第一預(yù)期協(xié)議開始并且當(dāng)一個(gè)預(yù)期協(xié)議滿足預(yù)定性能標(biāo)準(zhǔn)時(shí)結(jié)束。為此,圖6的方法包括向用于預(yù)期協(xié)議的協(xié)議性能函數(shù)提供集體操作的操作參數(shù)(606)。向用于預(yù)期協(xié)議的性能函數(shù)提供集體操作的操作參數(shù)(606)可以通過傳遞操作參數(shù)作為對(duì)性能函數(shù)的函數(shù)調(diào)用的參數(shù)來執(zhí)行??紤]對(duì)歸約集體操作的第一預(yù)期協(xié)議的性能函數(shù)進(jìn)行下面的示例函數(shù)調(diào)用:bool ProtocolFit= (*Perf_Func_Reduce_Protocoll) (MsgSize, MsgType);在以上的示例函數(shù)調(diào)用中,指針*Perf_Func_Reduce_Protocoll是指向歸約操作的第一協(xié)議的性能函數(shù)的指針。這個(gè)指針可以存儲(chǔ)在與該預(yù)期協(xié)議關(guān)聯(lián)并且描述該預(yù)期協(xié)議的元數(shù)據(jù)中。執(zhí)行協(xié)議的選擇(604)的并行通信庫可以從協(xié)議的元數(shù)據(jù)取回函數(shù)指針以執(zhí)行函數(shù)調(diào)用。向性能函數(shù)傳遞的參數(shù)包括MsgSize (即,在歸約操作中傳遞的消息的消息大小)和MsgType (即,在歸約操作中傳遞的消息的類型)。在這個(gè)示例中,MsgSize和MsgType是集體操作自身的相同操作參數(shù)。性能函數(shù)的返回值是作為變量“ProtocolFit”進(jìn)行存儲(chǔ)的布爾值。ProtocolFit的值為真指示針對(duì)該集體操作和參數(shù)組該協(xié)議滿足預(yù)定義性能標(biāo)準(zhǔn),并且ProtocolFit的值為假指示針對(duì)該集體操作和參數(shù)組該協(xié)議不滿足預(yù)定義性能標(biāo)準(zhǔn)。性能函數(shù)通過確定(608)針對(duì)所述操作參數(shù)該預(yù)期協(xié)議是否滿足預(yù)定義性能標(biāo)準(zhǔn)來確定是返回真值還是假值。預(yù)定義性能標(biāo)準(zhǔn)可以是表示特定協(xié)議的優(yōu)選最小性能水平的任何標(biāo)準(zhǔn)??墒褂玫男阅艿念愋偷氖纠前w操作的執(zhí)行時(shí)間、執(zhí)行集體操作的網(wǎng)絡(luò)帶寬利用率、執(zhí)行集體操作的存儲(chǔ)器資源利用率、執(zhí)行集體操作的處理器資源利用率等的標(biāo)準(zhǔn)。預(yù)定義性能標(biāo)準(zhǔn)的值可以被提供給性能函數(shù),作為對(duì)性能標(biāo)準(zhǔn)的函數(shù)調(diào)用的參數(shù)。即,對(duì)于協(xié)議選擇,每個(gè)集體操作或者每個(gè)集體操作的每個(gè)實(shí)例可以具有要滿足的獨(dú)立的不同的性能標(biāo)準(zhǔn)。或者,預(yù)定義性能標(biāo)準(zhǔn)可以是所有集體操作的所有協(xié)議的性能函數(shù)可用的單個(gè)全局可訪問值。在圖6的方法中,針對(duì)操作參數(shù)確定(608)預(yù)期協(xié)議是否滿足預(yù)定義性能標(biāo)準(zhǔn)包括通過所述操作參數(shù)評(píng)估預(yù)期協(xié)議的預(yù)定義性能擬合方程。預(yù)定義性能擬合方程是定義在一定范圍的不同操作參數(shù)組上的協(xié)議的性能度量的方程。該擬合方程可以是通過回歸分析(即,實(shí)際性能的近似)建立的方程。在圖6的方法中評(píng)估(610)這種擬合方程包括計(jì)算(612)針對(duì)所述操作參數(shù)的該預(yù)期協(xié)議的性能度量。通過確定(614)計(jì)算的性能度量是否大于預(yù)定義最小性能閾值,確定(608)針對(duì)所述操作參數(shù)該預(yù)期協(xié)議是否滿足預(yù)定義性能標(biāo)準(zhǔn)的操作繼續(xù)。預(yù)定義最小性能閾值是由預(yù)定性能標(biāo)準(zhǔn)指定的值。即,在大多數(shù)實(shí)施例中,預(yù)定性能標(biāo)準(zhǔn)是預(yù)定義最小性能閾值。如果計(jì)算的性能度量不大于預(yù)定義最小性能閾值,則圖6的方法在選擇(604)過程的另一次反復(fù)中利用另一個(gè)預(yù)期協(xié)議繼續(xù)(616)。如果計(jì)算的性能度量大于預(yù)定義最小性能閾值,則圖6的方法通過選擇(618)該預(yù)期協(xié)議作為用于執(zhí)行集體操作的協(xié)議并且利用選擇的協(xié)議執(zhí)行(620)集體操作而繼續(xù)。為了進(jìn)一步進(jìn)行解釋,圖7闡述了示出用于根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的另一個(gè)示例方法的流程圖。圖7的示例方法與圖6的示例方法的相似之處在于也包括:調(diào)用(602)具有操作參數(shù)的集體操作;選擇(604)協(xié)議,包括:向協(xié)議性能函數(shù)提供(606)操作參數(shù),確定(608)預(yù)期協(xié)議是否滿足預(yù)定義性能標(biāo)準(zhǔn),評(píng)估(610)預(yù)定義性能擬合方程,計(jì)算(612)性能度量,僅當(dāng)計(jì)算的性能度量大于預(yù)定義最小性能閾值才選擇(618)該預(yù)期協(xié)議;以及利用選擇的協(xié)議執(zhí)行(620)集體操作。然而,圖7的方法與圖6的方法的不同之處在于,圖7的方法包括在實(shí)際協(xié)議選擇之前(即,在調(diào)用集體操作之前)執(zhí)行的協(xié)議性能確定的緩存過程。換言之,在協(xié)議選擇(604)之前針對(duì)集體操作的一組或多組操作參數(shù)以及一個(gè)或多個(gè)預(yù)期協(xié)議執(zhí)行圖7的方法中的緩存過程。對(duì)于每組操作參數(shù)和每個(gè)預(yù)期協(xié)議,圖7的方法包括確定(702)預(yù)期協(xié)議是否滿足預(yù)定性能標(biāo)準(zhǔn)。在計(jì)算節(jié)點(diǎn)的工作組的建立(704)過程中,圖7的方法包括緩存(708)滿足預(yù)定性能標(biāo)準(zhǔn)的預(yù)期協(xié)議的每個(gè)確定,而不緩存(708)不滿足預(yù)定性能標(biāo)準(zhǔn)的預(yù)期協(xié)議的確定。作為示例考慮在建立(704)計(jì)算節(jié)點(diǎn)的工作組之前用戶利用10組操作參數(shù)針對(duì)單個(gè)集體操作(即,歸約操作)啟動(dòng)緩存過程。對(duì)于歸約操作的每個(gè)協(xié)議以及對(duì)于10組操作參數(shù)中的每一組,圖7的緩存過程將確定針對(duì)該組操作參數(shù)該協(xié)議是否滿足預(yù)定義性能標(biāo)準(zhǔn)。對(duì)于每個(gè)肯定確定(即,協(xié)議針對(duì)一組特定操作參數(shù)滿足預(yù)定義性能標(biāo)準(zhǔn)的確定),在建立(704)計(jì)算節(jié)點(diǎn)的工作組時(shí),緩存過程將緩存該確定??梢酝ㄟ^各種方式執(zhí)行緩存確定,這些方式例如包括,將每個(gè)確定存儲(chǔ)在存儲(chǔ)器中并且將指向該確定的指針插入到對(duì)應(yīng)協(xié)議的元數(shù)據(jù)中,將確定插入存儲(chǔ)在公知的存儲(chǔ)位置的表或其它數(shù)據(jù)結(jié)構(gòu)中,以及本技術(shù)領(lǐng)域的讀者可以想到的其它等等。—旦計(jì)算節(jié)點(diǎn)的工作組被建立(704)并且滿足性能標(biāo)準(zhǔn)的集體操作的協(xié)議的肯定確定已經(jīng)被緩存,選擇(604)用于執(zhí)行集體操作的協(xié)議的過程包括針對(duì)集體操作的操作參數(shù)確定是否存在緩存的滿足預(yù)定性能標(biāo)準(zhǔn)的預(yù)期協(xié)議的確定。如果存在緩存的滿足預(yù)定性能標(biāo)準(zhǔn)的預(yù)期協(xié)議的確定,則選擇(604)選擇(712)該預(yù)期協(xié)議作為用于執(zhí)行集體操作的協(xié)議,而不在協(xié)議選擇過程中計(jì)算針對(duì)操作參數(shù)的預(yù)期協(xié)議的性能度量。即,不是完成向性能函數(shù)提供(606)操作參數(shù)、評(píng)估性能函數(shù)、計(jì)算性能度量等這樣的一個(gè)個(gè)反復(fù),圖7的方法包括基于緩存的確定選擇協(xié)議(繞開這些反復(fù))。當(dāng)緩存的確定可用時(shí),這里在圖7中闡述的緩存確定可以通過繞開一次或多次反復(fù)而提高選擇(604)用于執(zhí)行集體操作的協(xié)議的速度和效率。為了進(jìn)一步進(jìn)行解釋,圖8闡述了示出根據(jù)本發(fā)明的實(shí)施例的并行計(jì)算機(jī)中的集體操作協(xié)議選擇的另一個(gè)示例方法的流程圖。圖8的示例方法與圖6的示例方法的相似之處在于也包括:調(diào)用(602)具有操作參數(shù)的集體操作;選擇(604)協(xié)議,包括:向協(xié)議性能函數(shù)提供(606)操作參數(shù),確定(608)預(yù)期協(xié)議是否滿足預(yù)定義性能標(biāo)準(zhǔn),評(píng)估(610)預(yù)定義性能擬合方程,計(jì)算(612)性能度量,僅當(dāng)計(jì)算的性能度量大于預(yù)定義最小性能閾值才選擇(618)該預(yù)期協(xié)議;以及利用選擇的協(xié)議執(zhí)行(620)集體操作。然而,圖8的方法與圖6的方法不同,在圖8的方法中包括為集體操作的每個(gè)協(xié)議建立(802)預(yù)定義性能擬合方程。在圖8的方法中,建立(802)預(yù)定義性能擬合方程包括:對(duì)于多組操作參數(shù)中的每一組執(zhí)行一次該協(xié)議,對(duì)每次執(zhí)行記錄(806)性能度量,以及針記錄的性能度量計(jì)算(808)擬合方程??梢酝ㄟ^各種方式執(zhí)行針對(duì)記錄的性能度量計(jì)算(808)擬合方程,這些方式例如包括計(jì)算線性近似擬合方程、立方近似擬合方程和四次近似擬合方程。可以執(zhí)行回歸分析以計(jì)算擬合方程。本技術(shù)領(lǐng)域的讀者將認(rèn)識(shí)到,當(dāng)特定協(xié)議的性能有些可變時(shí),這種通過擬合方程的近似是有用的。與之相比,在一些情形下,可以確切地知道特定協(xié)議的性能。即,一些協(xié)議的性能實(shí)質(zhì)上是確定性的。在這種實(shí)施例中,針對(duì)記錄的性能度量計(jì)算(808)擬合方程可以包括針對(duì)所有可能的操作參數(shù)計(jì)算確切函數(shù)。本領(lǐng)域技術(shù)人員應(yīng)該明白,本發(fā)明的各方面可以被實(shí)施為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明的各方面可以采取完全硬件實(shí)施例、完全軟件實(shí)施例(包括固件、駐留軟件、微碼等)或組合軟件和硬件方面的實(shí)施例的形式,在這里它們?nèi)靠傮w上可以被稱作“電路”、“模塊”或“系統(tǒng)”。另外,本發(fā)明的各方面可以采取計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)程序產(chǎn)品在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中實(shí)施,在該計(jì)算機(jī)可讀介質(zhì)上實(shí)施有計(jì)算機(jī)可讀程序代碼。可以利用一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任何組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀傳輸介質(zhì)或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是但不限于電子、磁性、光學(xué)、電磁、紅外或半導(dǎo)體系統(tǒng)、設(shè)備、或裝置或者上述的任何合適組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體示例(非窮盡性列表)將包括如下:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦除可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊盤只讀存儲(chǔ)器(⑶-ROM)、光存儲(chǔ)裝置、磁存儲(chǔ)裝置或者上述的任何合適組合。在本文的上下文中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是能夠包含或存儲(chǔ)由指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用或者與它們結(jié)合使用的程序的任何有形介質(zhì)。計(jì)算機(jī)可讀傳輸介質(zhì)可以包括例如在基帶中或者作為載波的一部分傳播的數(shù)據(jù)信號(hào),在該數(shù)據(jù)信號(hào)內(nèi)實(shí)施了計(jì)算機(jī)可讀程序碼。這種傳播的信號(hào)可以采用各種形式的任何一種,包括但不限于電磁、光學(xué)、或者它們的任何合適組合。計(jì)算機(jī)可讀傳輸介質(zhì)可以是并非計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)并且能夠傳送、傳播或傳輸由指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用或與它們結(jié)合使用的程序的任何計(jì)算機(jī)可讀介質(zhì)??梢允褂萌魏芜m合的介質(zhì)發(fā)送在計(jì)算機(jī)可讀介質(zhì)上實(shí)施的程序碼,該介質(zhì)包括但不限于無線、有線、光纖、RF等或者上述的任何合適組合??梢酝ㄟ^一種或多種編程語言的任何組合編寫用于執(zhí)行本發(fā)明的各方面的操作的計(jì)算機(jī)程序碼,這些編程語言包括諸如Java、Smalttalk, C++等的面向?qū)ο缶幊陶Z言和諸如“C”編程語言或相似編程語言的傳統(tǒng)過程編程語言。該程序碼可以完全在用戶的計(jì)算機(jī)上、部分在用戶的計(jì)算機(jī)上、作為單機(jī)軟件包、部分在用戶的計(jì)算機(jī)上且部分在遠(yuǎn)程計(jì)算機(jī)上或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后者的情形下,遠(yuǎn)程計(jì)算機(jī)可以通過包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)的任何類型的網(wǎng)絡(luò)連接到用戶的計(jì)算機(jī),或者可以連接到外部計(jì)算機(jī)(例如,使用互聯(lián)網(wǎng)服務(wù)提供商通過互聯(lián)網(wǎng))。在上文中參照根據(jù)本發(fā)明的實(shí)施例的方法、設(shè)備(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明的各方面。應(yīng)該明白,流程圖和/或框圖的每個(gè)塊以及流程圖和/或框圖中的塊的組合能夠由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或者其它可編程數(shù)據(jù)處理設(shè)備的處理器以生成一機(jī)器,從而經(jīng)由計(jì)算機(jī)或其它可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令建立實(shí)現(xiàn)在流程圖和/或框圖塊中指定的功能/動(dòng)作的裝置。這些計(jì)算機(jī)程序指令還可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中以能夠引導(dǎo)計(jì)算機(jī)、其它可編程數(shù)據(jù)處理設(shè)備或其它裝置以特定方式工作,從而存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令生成包括實(shí)現(xiàn)在流程圖和/或框圖塊中指定的功能/動(dòng)作的指令的制品。計(jì)算機(jī)程序指令還可以加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理設(shè)備或其它裝置上以使得在計(jì)算機(jī)、其它可編程設(shè)備或其它裝置上執(zhí)行一系列操作步驟以生成計(jì)算機(jī)實(shí)現(xiàn)的過程,從而在計(jì)算機(jī)或其它可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖和/或框圖塊中指定的功能/動(dòng)作的過程。附圖中的流程圖和框圖示出了根據(jù)本發(fā)明的各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)方式的架構(gòu)、功能和操作。關(guān)于此,流程圖或框圖中的每個(gè)塊可以表示包括用于實(shí)現(xiàn)指定的邏輯功能的一個(gè)或多個(gè)可執(zhí)行指令的代碼的模塊、段或部分。還應(yīng)該注意,在一些另選實(shí)施方式中,塊中注釋的功能可以不按附圖中注釋的順序發(fā)生。例如,接連示出的兩個(gè)塊實(shí)際上可以基本上同時(shí)執(zhí)行,或者這些塊有時(shí)候可以以相反順序執(zhí)行,這取決于涉及的功能。還應(yīng)注意,框圖和/或流程圖的每個(gè)塊以及框圖和/或流程圖中的塊的組合能夠由執(zhí)行指定功能或動(dòng)作的基于專用硬件的系統(tǒng)或者專用硬件和計(jì)算機(jī)指令的組合進(jìn)行實(shí)現(xiàn)。從上述描述應(yīng)該明白,在不脫離本發(fā)明的真實(shí)精神的情況下可以在本發(fā)明的各種實(shí)施例中執(zhí)行變型和改變。本說明書中的說明僅僅用于例示的目的而非以限制意義進(jìn)行解釋。本發(fā)明的范圍僅由權(quán)利要求的語言進(jìn)行限制。
權(quán)利要求
1.一種用于并行計(jì)算機(jī)中的集體操作協(xié)議選擇的方法,所述并行計(jì)算機(jī)包括多個(gè)計(jì)算節(jié)點(diǎn),所述方法包括: 調(diào)用具有一個(gè)或多個(gè)操作參數(shù)的集體操作; 選擇用于執(zhí)行該集體操作的多個(gè)協(xié)議之一,包括針對(duì)從第一預(yù)期協(xié)議開始直到滿足預(yù)定性能標(biāo)準(zhǔn)的預(yù)期協(xié)議的每個(gè)協(xié)議,反復(fù)地執(zhí)行如下操作: 向用于該預(yù)期協(xié)議的協(xié)議性能函數(shù)提供所述集體操作的操作參數(shù); 通過性能函數(shù)確定針對(duì)所述操作參數(shù)該預(yù)期協(xié)議是否滿足預(yù)定義性能標(biāo)準(zhǔn),包括利用所述操作參數(shù)評(píng)估針對(duì)該預(yù)期協(xié)議的預(yù)定義性能擬合方程,計(jì)算針對(duì)所述操作參數(shù)的該預(yù)期協(xié)議的性能度量;以及 僅當(dāng)計(jì)算的性能度量大于預(yù)定義最小性能閾值時(shí),確定該預(yù)期協(xié)議滿足預(yù)定性能標(biāo)準(zhǔn)并且選擇該預(yù)期協(xié)議作為用于執(zhí)行所述集體操作的協(xié)議;以及利用選擇的協(xié)議執(zhí)行所述集體操作。
2.權(quán)利要求1的方法,其中: 集體操作的每個(gè)協(xié)議與元數(shù)據(jù)關(guān)聯(lián),針對(duì)每個(gè)集體操作的元數(shù)據(jù)包括指向協(xié)議的性能函數(shù)的指針;以及 向用于該預(yù)期協(xié)議的協(xié)議性能函數(shù)提供所述集體操作的操作參數(shù)還包括從該預(yù)期協(xié)議的元數(shù)據(jù)取回指向該預(yù)期協(xié)議的性能函數(shù)的指針。
3.權(quán)利要求1的方法,還包括: 在協(xié)議選擇之前,針對(duì)所述集體操作的一組或多組操作參數(shù)以及一個(gè)或多個(gè)預(yù)期協(xié)議:確定該預(yù)期協(xié)議是否滿足預(yù)定性能標(biāo)準(zhǔn);以及 當(dāng)建立計(jì)算節(jié)點(diǎn)的工作組時(shí)緩存滿足預(yù)定性能標(biāo)準(zhǔn)的預(yù)期協(xié)議的每個(gè)確定, 其中,選擇用于執(zhí)行所述集體操作的多個(gè)協(xié)議之一還包括: 針對(duì)所述集體操作的操作參數(shù),確定是否存在緩存的滿足預(yù)定性能標(biāo)準(zhǔn)的預(yù)期協(xié)議的確定;以及 如果存在緩存的滿足預(yù)定性能標(biāo)準(zhǔn)的預(yù)期協(xié)議的確定,則選擇該預(yù)期協(xié)議作為用于執(zhí)行所述集體操作的協(xié)議,而不在協(xié)議選擇期間計(jì)算針對(duì)所述操作參數(shù)的預(yù)期協(xié)議的性能度量。
4.權(quán)利要求1的方法,還包括: 針對(duì)所述集體操作的每個(gè)協(xié)議,建立預(yù)定義性能擬合方程,包括: 針對(duì)多組操作參數(shù)中的每一組執(zhí)行一次該協(xié)議; 針對(duì)每次執(zhí)行,記錄性能度量;以及 為記錄的性能度量計(jì)算擬合方程。
5.權(quán)利要求1的方法,其中,為記錄的性能度量計(jì)算擬合方程還包括計(jì)算以下之一: 線性近似擬合方程; 立方近似擬合方程;以及 四次近似擬合方程。
6.權(quán)利要求1的方法,其中,為記錄的性能度量計(jì)算擬合方程還包括為所有可能的操作參數(shù)計(jì)算確切函數(shù)。
7.一種用于并行計(jì)算機(jī)中的集體操作協(xié)議選擇的設(shè)備,所述并行計(jì)算機(jī)包括多個(gè)計(jì)算節(jié)點(diǎn),所述設(shè)備包括計(jì)算機(jī)處理器、可操作地耦合到計(jì)算機(jī)處理器的計(jì)算機(jī)存儲(chǔ)器,該計(jì)算機(jī)存儲(chǔ)器內(nèi)設(shè)置有計(jì)算機(jī)程序指令,所述計(jì)算機(jī)程序指令當(dāng)由計(jì)算機(jī)處理器執(zhí)行時(shí)使得所述設(shè)備執(zhí)行如下步驟: 調(diào)用具有一個(gè)或多個(gè)操作參數(shù)的集體操作; 選擇用于執(zhí)行該集體操作的多個(gè)協(xié)議之一,包括針對(duì)從第一預(yù)期協(xié)議開始直到滿足預(yù)定性能標(biāo)準(zhǔn)的預(yù)期協(xié)議的每個(gè)協(xié)議,反復(fù)地執(zhí)行如下操作: 向用于該預(yù)期協(xié)議的協(xié)議性能函數(shù)提供所述集體操作的操作參數(shù); 通過性能函數(shù)確定針對(duì)所述操作參數(shù)該預(yù)期協(xié)議是否滿足預(yù)定義性能標(biāo)準(zhǔn),包括利用所述操作參數(shù)評(píng)估針對(duì)該預(yù)期協(xié)議的預(yù)定義性能擬合方程,計(jì)算針對(duì)所述操作參數(shù)的該預(yù)期協(xié)議的性能度量;以及 僅當(dāng)計(jì)算的性能度量大于預(yù)定義最小性能閾值時(shí),確定該預(yù)期協(xié)議滿足預(yù)定性能標(biāo)準(zhǔn)并且選擇該預(yù)期協(xié)議作為用于執(zhí)行所述集體操作的協(xié)議;以及利用選擇的協(xié)議執(zhí)行所述集體操作。
8.權(quán)利要求7的設(shè)備,其中: 集體操作的每個(gè)協(xié)議與元數(shù)據(jù)關(guān)聯(lián),針對(duì)每個(gè)集體操作的元數(shù)據(jù)包括指向協(xié)議的性能函數(shù)的指針;以及 向用于該預(yù)期協(xié)議的協(xié)議性能函數(shù)提供所述集體操作的操作參數(shù)還包括從該預(yù)期協(xié)議的元數(shù)據(jù)取回指向該預(yù)期協(xié)議的性能函數(shù)的指針。
9.權(quán)利要求7的設(shè)備,還包括計(jì)算機(jī)程序指令,所述計(jì)算機(jī)程序指令當(dāng)由計(jì)算機(jī)處理器執(zhí)行時(shí)使所述設(shè)備執(zhí)行如下步驟: 在協(xié)議選擇之前,針對(duì)所述集體操作的一組或多組操作參數(shù)以及一個(gè)或多個(gè)預(yù)期協(xié)議:確定該預(yù)期協(xié)議是否滿足預(yù)定性能標(biāo)準(zhǔn);以及 當(dāng)建立計(jì)算節(jié)點(diǎn)的工作組時(shí)緩存滿足預(yù)定性能標(biāo)準(zhǔn)的預(yù)期協(xié)議的每個(gè)確定, 其中,選擇用于執(zhí)行所述集體操作的多個(gè)協(xié)議之一還包括: 針對(duì)所述集體操作的操作參數(shù),確定是否存在緩存的滿足預(yù)定性能標(biāo)準(zhǔn)的預(yù)期協(xié)議的確定;以及 如果存在緩存的滿足預(yù)定性能標(biāo)準(zhǔn)的預(yù)期協(xié)議的確定,則選擇該預(yù)期協(xié)議作為用于執(zhí)行所述集體操作的協(xié)議,而不在協(xié)議選擇期間計(jì)算針對(duì)所述操作參數(shù)的預(yù)期協(xié)議的性能度量。
10.權(quán)利要求7的設(shè)備,還包括計(jì)算機(jī)程序指令,所述計(jì)算機(jī)程序指令當(dāng)由計(jì)算機(jī)處理器執(zhí)行時(shí)使所述設(shè)備執(zhí)行如下步驟: 針對(duì)所述集體操作的每個(gè)協(xié)議,建立預(yù)定義性能擬合方程,包括: 針對(duì)多組操作參數(shù)中的每一組執(zhí)行一次該協(xié)議; 針對(duì)每次執(zhí)行,記錄性能度量;以及 為記錄的性能度量計(jì)算擬合方程。
11.權(quán)利要求7的設(shè)備,其中,為記錄的性能度量計(jì)算擬合方程還包括計(jì)算以下之一: 線性近似擬合方程; 立方近似擬合方程;以及 四次近似擬合方程。
12.權(quán)利要求7的設(shè)備,其中,為記錄的性能度量計(jì)算擬合方程還包括為所有可能的操作參數(shù)計(jì)算確切函數(shù)。
全文摘要
本發(fā)明涉及用于并行計(jì)算機(jī)中的集體操作協(xié)議選擇的方法和系統(tǒng)??梢酝ㄟ^調(diào)用具有操作參數(shù)的集體操作、選擇用于執(zhí)行該操作的協(xié)議以及利用選擇的協(xié)議執(zhí)行該操作,來執(zhí)行包括計(jì)算節(jié)點(diǎn)的并行計(jì)算機(jī)中的集體操作協(xié)議選擇。選擇協(xié)議包括反復(fù)執(zhí)行如下操作直到一個(gè)預(yù)期協(xié)議滿足預(yù)定性能標(biāo)準(zhǔn)向用于該預(yù)期協(xié)議的協(xié)議性能函數(shù)提供所述操作參數(shù);通過評(píng)估預(yù)定義性能擬合方程以及計(jì)算針對(duì)所述操作參數(shù)的協(xié)議的性能度量,來確定該預(yù)期協(xié)議是否滿足預(yù)定義性能標(biāo)準(zhǔn);僅當(dāng)計(jì)算的性能度量大于預(yù)定義最小性能閾值時(shí),才確定該預(yù)期協(xié)議滿足預(yù)定性能標(biāo)準(zhǔn)并且選擇該協(xié)議用于執(zhí)行所述操作。
文檔編號(hào)G06F9/38GK103150144SQ20121028140
公開日2013年6月12日 申請(qǐng)日期2012年8月9日 優(yōu)先權(quán)日2011年8月9日
發(fā)明者C·J·阿奇, M·A·布勞克瑟姆, J·D·拉特曼, B·E·史密斯 申請(qǐng)人:國際商業(yè)機(jī)器公司