專利名稱::在并行計算機上執行全收集操作的方法和系統的制作方法
技術領域:
:本發明涉及數據處理領域,更具體地說,本發明涉及在并行計算機上執行全收集操作(allgatheroperation)的方法和產品。
背景技術:
:1948年EDVAC計算機系統的出現通常被稱為計算機時代的開始。從那以后,計算機系統已演化成極其復雜的設備。目前的計算機比早期的系統,比如EDVAC復雜得多。計算機系統一般包括硬件和軟件組件、應用程序、操作系統、處理器、總線、存儲器、輸入/輸出裝置等的組合。隨著半導體處理和計算機體系結構方面的進展使計算機的性能越來越高,更復雜的計算機軟件發展成利用硬件的更高性能,形成今天的比僅僅幾年前的計算機系統強大得多的計算機系統。并行計算是已經歷發展的計算機技術的一個領域。并行計算是相同任務(被分解和特別修改)在多個處理器上的同時執行,以便更快得到結果。并行計算以解決一個問題的處理通常可被分成較小的任務的事實為基礎,在進行一定協調的情況下,所述較小的任務可被同時執行。并行計算機執行并行算法。并行算法可被分解,以便同時在許多不同的處理裝置上執行一部分,最后被重新合并起來,從而獲得數據處理結果。一些算法易于分成多個部分。通過把從l到100000的數字的一個子集分配給每個可用處理器,隨后把明確結果的列表合并起來,可完成分解檢查從1到100000的全部數字,以了解哪些數字是質數的作業。在本說明書中,執行并行程序的單一部分的多處理裝置被稱為'計算節點,。并行計算機由計算節點以及其它處理節點,例如包括輸入/輸出('i/o,)節點和服務節點構成。并行算法頗有價值,因為由于現代處理器工作的方式的緣故,與通過串行(非并行)算法執行某些種類的大型計算任務相比,通過并行算法執行所述某些種類的大型計算任務會更快。與利用具有相同吞吐量的許多慢速處理器構成計算機相比,利用單個快速處理器構成計算機要困難得多。另外對于串行處理器的可能速度,存在一定的理論極限。另一方面,每個并行算法具有一個串行部分,從而并行算法具有飽和點。在所述飽和點之后增加更多的處理器不會產生更高的吞吐量,只會增大開銷和成本。并行算法還被用來優化并行計算機的節點之間的數據通信需要的一個以上的資源。并行處理器的通信方式有兩種,共用存儲器或者消息傳遞。共用存儲器處理需要對數據的附加鎖定,強加附加處理器和總線周期的開銷,另外還使算法的某一部分串行化。消息傳遞處理使用高速數據通信網絡和消息緩沖區,但是這種通信在數據通信網絡上增加傳送開銷,以及消息緩沖區需要的附加存儲器和節點間的數據通信中的等待時間。并行計算機的設計使用專門設計的數據通信鏈路,以致通信開銷將較小,但是決定通信量的是并行算法。許多數據通信網絡體系結構被用于并行計算機中的節點之間的消息傳遞。計算節點可被組織成'環形,(torus)網或'網格,(mesh)網。另外,計算節點可被組織成樹形網。環形網利用回繞鏈路把節點連接成三維網格。每個節點通過該環形網與其六個相鄰節點連接,每個節點由其在網格中的x,y,z坐標尋址。在樹形網中,節點一般被連接成二叉樹每個節點具有一個父節點,和兩個子節點(不過一些節點可能沒有子節點或者只具有一個子節點,取決于硬件配置)。在使用環形網和樹形網的計算機中,一般利用獨立的路由電路,獨立的物理鏈路,和獨立的消息緩沖區相互獨立地實現這兩種網絡。環形網適合于點對點操作,但是樹形網在點對點通信方面效率一般不高。但是,樹形網為其中所有計算節點同時參與的一些集合操作,消息傳遞操作,比如全收集操作提供高帶寬和低的等待時間。全收集操作是一種關于計算節點的工作組的集合操作,該操作從工作組中的所有計算節點收集數據,按照等級次序把收集的數據串聯到存儲緩沖區中,并把存儲緩沖區的整個內容提供給工作組中的所有計算節點。由于成千上萬的節點可能參與并行計算機上的集合操作,因此執行并行計算機上的全收集操作始終是一個挑戰。現有的執行全收集操作的一種典型算法是工作組中的每個計算節點向工作組中的所有計算節點廣播它的數據貢獻。如果工作組較大,并且這樣的工作組可能包含成千上萬個計算節點的話,那么這種算法的數據通信成本是相當大的。
發明內容公開了在并行計算機上執行全收集操作的方法和計算機程序產品,包括利用發送位移(senddisplacement)的列表執行alltoallv操作,其中每個發送位移是一個發送緩沖區分段指針,每個發送位移指向發送緩沖區的相同分段,并行計算機包括多個計算節點,每個計算節點包括一個發送緩沖區,計算節點被組織成用于集合操作的計算節點的至少一個工作組(operationalgroup),工作組中的每個計算節點被分配唯一的序號(rank),每個發送緩沖區按照所述序號被分割。根據如附圖中圖解說明的本發明的例證實施例的下述更詳細說明,本發明的前述和其它目的、特征和優點將是明顯的,附圖中,相同的附圖標記一般表示本發明的例證實施例的相同部分。圖1圖解說明執行根據本發明實施例的并行計算機上的全收集操作的計算機的例證系統。圖2是可用于執行根據本發明實施例的并行計算機上的全收集操作的例證計算節點的方框圖。圖3A圖像說明可用在執行根據本發明實施例的并行計算機上的全收集操作的系統中的例證點對點適配器。圖3B圖解說明可用在執行根據本發明實施例的并行計算機上的全收集操作的系統中的例證集合操作適配器。圖4圖解說明為點對點操作優化的例證數據通信網絡。圖5圖解說明為集合操作優化的例證數據通信網絡。圖6是圖解說明執行根據本發明實施例的并行計算機上的全收集操作的例證方法的流程圖。圖7A圖解說明如MPI標準中定義的全收集操作的函數。圖7B圖解說明如MPI標準中定義的alltoallv操作的函數。圖7C是根據本發明的實施例,借助alltoallv執行的例證全收集操作的方框圖。圖7D是根據本發明的實施例,借助alltoallv執行的另一例證全收集操作的方框圖。圖8是圖解說明根據本發明的實施例,在并行計算機的一個計算節點上的例證alltoallv操作的執行的方框圖。圖9是圖解說明根據本發明的實施例,在并行計算機中執行全收集操作的另一例證方法的流程圖。圖10是圖9的alltoallv可在其上實現的并行計算機的例證數據通信網絡的繪線圖。具體實施例方式下面從圖1開始,參考根據本發明的實施例的在并行計算機上執行全收集操作的例證方法和計算機程序產品。圖1圖解說明執行根據本發明實施例的并行計算機上的全收集操作的例證系統。圖1的系統包括并行計算機(100),呈數據存儲裝置(118)形式的計算機用非易失性存儲器,呈打印機(12)形式的計算機用輸出裝置,和呈計算機終端(122)形式的計算機用輸入/輸出裝置。圖1的例子中的并行計算機(100)還包括多個計算節點(102)。每個計算節點是一個自動計算裝置,該自動計算裝置由一個或多個計算機處理器,它自己的計算機存儲器,以及它自己的輸入/輸出功能構成。計算節點(102)由幾個獨立的數據通信網絡耦接以便進行數據通信,所述數據通信網絡包括高速以太網(174),聯合測試行動小組(MTAG,)網絡(104),為集合操作優化的樹形網(106),和為點對點操作優化的環形網(108)。樹形網(106)是包括與計算節點連接的數據通信鏈路,以便把計算節點組織成樹形結構的數據通信網絡。用計算節點(102)之間的數據通信鏈路實現每個數據通信網絡。數據通信鏈路為并行計算機的計算節點間的并行操作提供數據通信。并行計算機的計算節點(102)被組織成用于并行計算機(100)上的集合并行操作的至少一個計算節點工作組(132)。一個計算節點工作組是其上執行集合并行操作的一組計算節點。利用工作組的計算節點之間的數據通信實現集合操作。集合操作(collectiveoperation)是涉及某一工作組的全部計算節點的那些功能(function)。集合操作是由一個計算節點工作組中的全部計算節點同時執行的,即,在幾乎相同的時間執行的操作,消息傳遞計算機程序指令。這樣的工作組可包括并行計算機(100)中的全部計算節點,或者全部計算節點的子集。通常圍繞點對點操作建立集合操作。集合操作要求工作組內的全部計算節點上的進程用相配的變元調用相同的集合操作。'廣播,是在工作組的計算節點之間移動數據的集合操作的一個例子。'歸約(reduce),操作是對分布在工作組的計算節點之間的數據執行算術函數或者邏輯函數的集合操作的例子。工作組可被實現成例如MPI'通信子,(communicator)。'MPI,指的是'消息傳遞接口,,一種現有的并行通信庫,一種用于并行計算機上的數據通信的計算機程序指令的模塊。可被改進以便執行根據本發明實施例的并行計算機上的全收集操作的現有并行通信庫的例子包括MPI和'并行虛擬機,('PVM,)庫。PVM由田納西州立大學、橡樹嶺國家實驗室和埃默里(Emory)大學開發。MPI由PMI論壇(代表來自于定義和維護MPI標準的許多組織的一個開放團體)發布。目前MPI是在分布式存儲器并行計算機上運行并行程序的計算節點之間的事實通信標準。本說明書有時使用MP1術語,以便于說明,不過這樣的MPI的使用不是本發明的要求或者限制。工作組的每個計算節點被分配一個稱為4序號,的單元標識符(圖1中未示出)。計算節點的序號唯一地識別該計算節點在數據通信網絡中的位置,以供點對點操作和集合操作之用。序號一般被指派為從序號0、序號l、序號2等開始的整數。圖1的例子中的每個計算節點(102)包括一個發送緩沖區。每個發送緩沖區是按照工作組中的計算節點的序號分割的計算機存儲器的至少一個區域。許多集合操作是四種基本操作的變異或者組合廣播、收集、分散和歸約。在廣播操作中,所有進程指定相同的根進程,其緩沖區內容將被發送。除根進程之外的進程指定接收緩沖區。在該操作之后,所有緩沖區包含來自根進程的消息。類似于廣播操作,分散操作也是一種一對多集合操作。所有進程指定相同的接收計數。發送變元只對根進程有意義,根進程的緩沖區實際包含指定數據類型的sendcount*N個元素,其中N是指定一組計算節點中的進程的數目。發送緩沖區被均分,并被分散給所有進程(包括它自己)。每個計算節點被分配一個稱為'序號,的連續標識符。在該操作之后,根進程已按照遞增的序號順序,把sendcount數據元素發送給每個進程。序號0從發送緩沖區接收第一sendcount數據元素。序號1從發送緩沖區接收第二sendcount數據元素,等等。收集操作是多對一集合操作,它與分散操作的描述完全相反。即,收集是其中把數據類型的元素從排序的計算節點收集到根節點中的接收緩沖區中的多對一集合操作。歸約操作也是一個多對一集合操作,它包括對兩個數據元素執行的算術或邏輯函數。所有進程指定相同的'計數,,以及相同的算術或邏輯函數。在歸約之后,所有進程都已把計數數據元素從計算節點發送緩沖區發給根進程。在歸約操作中,借助算術或邏輯運算成對地組合來自對應的發送緩沖區單元的數據元素,從而在根進程的接收緩沖區中產生單一的對應元素。在運行時可定義專用歸約操作。并行通信庫可支持預定的操作。例如,MPI提供下述預定的歸約操作MPI一MAX最大值MPIMIN最小值MPI—SUM求和MPI_PROD乘積MPILAND邏輯與MPIBAND按位與MPILOR邏輯或MPIBOR按位或MPILXOR邏輯異或MPIBXOR按位異或圖1的系統一般通過利用發送位移的列表執行alltoallv操作,執行根據本發明實施例的并行計算機上的全收集操作,每個發送位移被實現成發送緩沖區分段指針,每個發送位移指向發送緩沖區的相同分段。全收集操作和alltoallv操作的函數在MPI論壇發布的MPI標準中定義。在MPI標準中沒有定義用于執行集合操作的算法,包括全歸約操作和全收集操作的函數。全收集操作是關于按照序號順序,把數據從所有計算節點的發送緩沖區收集到所有計算節點的接收緩沖區中的一個計算節點工作組的集合,作。每個計算節點把其發送緩沖區的內容傳送給工作組的所有節點,包括它自己。當收到該數據時,每個計算節點按照序號順序把數據放入其接收緩沖區中。當全收集操作結束時,每個計算節點的接收緩沖區包含按照從其發出和接收數據的計算節點的序號,順序保存在接收緩沖區中的所有傳送數據。全收集的效果是工作組中的所有計算節點中的接收緩沖區包含相同的數據。下面更詳細討論的圖7圖解說明如在MPI標準中定義的全收集操作的函數。alltoallv操作是關于把數據從所有計算節點的發送緩沖區的排序分段按照序號次序發送到所有計算節點中的接收緩沖區中的一個計算節點工作組的集合操作。發送緩沖區的每個排序分段的大小可變化。每個計算節點只把其發送緩沖區的每個排序分段的內容傳送給對應排序的計算節點。排序分段o的內容到達序號o的計算節點。排序分段1的內容到達序號1的計算節點,依次類推。發送緩沖區的每個排序分段的大小可變化。當收到數據時,每個計算節點按照發送計算節點的序號,按序號順序把所述數據放入其接收緩沖區的排序分段中。來自序號0的計算節點的數據進入排序分段O中。來自序號1的計算節點的數據進入排序分段l中,依次類推。當alltoallv結束時,每個計算節點的接收緩沖區按照序號順序包含來自工作組中的全部計算節點的發送緩沖區的對應排序分段的所有數據。alltoallv的效果在于工作組的所有計算節點中的全部接收緩沖區包含不同的數據,從發送緩沖區發送的數據的矩陣求逆。下面詳細討論的圖7B圖解說明如在MPI標準中定義的alltoallv操作的函數。除了計算節點之外,計算機(100)包括通過數據通信網絡之一(174)與計算節點(102)耦接的輸入/輸出('I/O,)節點(110、114)。1/0節點(IIO、114)提供計算節點(102)和I/O裝置(118、120、122)之間的1/0服務。I/O節點(IIO、114)通過局域網('LAN,)(130)被連接以便與I/O裝置(118、120、122)數據通信。計算機(100)還包括通過網絡之一(104)與計算節點耦接的服務節點(116)。服務節點(116)提供多個計算節點所共有的服務,把程序裝入計算節點中,在計算節點上開始程序執行,取回計算機節點上的程序運算的結果等等。服務節點(116)運行服務應用程序(124),并通過在計算機終端(122)上運行的服務應用界面(126)與用戶(128)通信。構成圖1中圖解說明的例證系統的節點、網絡和i/o裝置的排列只是用于說明目的,而不是對本發明的限制。能夠執行按照本發明實施例的并行計算機的全收集操作的數據處理系統可包括本領域的技術人員想到的圖1中未示出的其它節點,網絡,裝置和體系結構。圖1的例子中的并行計算機(100)包括16個計算節點(102);能夠執行按照本發明實施例的全收集操作的并行計算機有時包括成千上萬個計算節點。除了以太網和JTAG之外,這種數據處理系統中的網絡可支持許多數據通信協議,例如包括TCP(傳輸控制協議)、IP(網際協議)和本領域的技術人員想到的其它協議。除了圖1中圖解說明的那些硬件平臺之外,可在各種硬件平臺上實現本發明的各個實施例。執行根據本發明實施例的全收集操作一般在包括多個計算節點的并行計算機上實現。事實上,這樣的并行計算機可包括成千上萬個這樣的計算節點。每個計算節點本身又是一種由一個或多個計算機處理器、它自己的計算機存儲器和它自己的輸入/輸出適配器構成的計算機。于是為了進一步說明,圖2是可用在能夠執行根據本發明實施例的全收集操作的并行計算機中的例證計算節點的方框圖。圖2的計算節點(152)包括至少一個計算機處理器(164)以及隨機存取存儲器('RAM,)(156)。處理器(164)通過高速存儲總線(154)與RAM(156)連接,并通過總線適配器(194)和擴展總線(168)與計算節點的其它組件連接。保存在RAM(156)中的是應用程序(158),一個利用并行算法執行并行的用戶級數據處理的計算機程序指令的模塊。另外保存在RAM(156)中的還有并行通信庫(160),一個執行計算節點間的并行通信,包括點對點操作以及集合操作的計算機程序指令庫。應用程序(158)通過調用并行通信庫(160)中的軟件例程,執行點對點和集合并行操作。通過利用傳統的編程語言,比如C編程語言,以及利用傳統的編程方法來編寫在兩個獨立的數據通信網絡上的節點之間發送和接收數據的并行通信例程,可從零開始開發并行通信例程庫,供執行根據本發明實施例的并行計算機上的全收集操作之用。另一方面,可以使用現有庫。可被改進以便執行根據本發明實施例的并行計算機上的全收集操作的現有并行通信庫的例子包括'消息傳遞接口,('MPI,)庫和4并行虛擬機,('PVM,)庫。不論它們是如何產生的,并行通信庫(160)的并行通信例程被改進,以便通過利用發送位移的列表執行alltoallv操作,執行根據本發明實施例的全收集操作,其中每個發送位移被實現成一個發送緩沖區分段指針,每個發送位移指針指向發送緩沖區的相同分段。圖2的例證RAM配置(156)包括發送位移的列表(196),以及發送緩沖區(197)和接收緩沖區(198)。發送位移被實現成發送緩沖區分段指針的數組,其中該數組的每個元素指向發送緩沖區的一個排序分段。在發送緩沖區的分段按照計算節點工作組中的計算節點的序號被排序的意義上,發送緩沖區的分段是'有序的,。從而,這種數組中的第一發送位移指向發送緩沖區的第一排序分段,這種數組中的第二發送位移指向發送緩沖區的第二排序分段,這種數組中的第三發送位移指向發送緩沖區中的第三排序分段,依次類推。排序分段可位于發送緩沖區中的任意地方。不要求排序分段是連續的或者具有相同的大小。另外保存在RAM(156)中的還有操作系統(162),一個供應用程序訪問計算節點的其它資源的計算機程序指令和例程的模塊。并行計算機的計算節點中的應用程序和并行通信庫一般運行沒有用戶登錄和安全性問題的單一執行線程,因為該線程有權完成對節點的所有資源的訪問。于是,與同時運行多個線程的串行計算機上的操作系統相比,將由并行計算機中的計算節點上的操作系統執行的任務的數量較少并且復雜性較低。另外,圖2的計算節點(152)上沒有任何視頻I/O,這是降低對操作系統的要求的另一因素。于是,與通用計算機的操作系統相比,操作系統可以相當輕便,可以說是通用計算機的操作系統的一個縮減版本,或者為特定并行計算機上的操作專門開發的操作系統。可被有效地改進、簡化,以供計算節點之用的操作系統包括UNIX,LinuxTM,MicrosoftXPTM,AIXtm,IBM的i5/OSTM,以及本領域的技術人員想到的其它操作系統。圖2的例證計算節點(152)包括用于實現與并行計算機的其它節點的數據通信的幾個通信適配器(172、176、180、188)。通過RS-232連接,通過諸如USB之類的外部總線,通過諸如IP網絡之類的數據通信網絡,以及按照本領域的技術人員想到的其它方法,能夠連續進行這樣的數據通信。通信適配器實現硬件層次的數據通信,通過硬件層次的數據通信,一個計算機直接地或者經由網絡向另一計算機發送數據通信。可用在執行根據本發明實施例的全收集操作的系統中的通信適配器的例子包括有線通信用調制解調器,有線網絡通信用以太網(IEEE802.3)適配器,和無線網絡通信用802.11b適配器。圖2的例子中的數據通信適配器包括一個使數據通信用例證計算節點(152)與千兆位以太網(174)耦接的千兆位以太網適配器(172)。千兆位以太網是一種在IEEE802.3標準中定義的提供1千兆位/秒(1千兆位)的傳輸速率的網絡傳輸標準。千兆位以太網是通過多模光纜、單模光纜或者無屏蔽雙絞線工作的以太網的變形。圖2的例子中的數據通信適配器包括一個使數據通信用例證計算節點(152)與JTAG主電路(178)耦接的JTAG從屬電路(176)。JTAG是用于關于測試訪問端口的IEEE1149.1標準"StandardTestAccessPortandBoundary-ScanArchitecture,,的常見名稱,所述測試訪問端口用于通過使用邊界掃描,測試印刷電路板。JTAG被如此廣泛地使用,以致目前邊界掃描或多或少地與JTAG同義。JTAG不僅用于印刷電路板,而且還用于進行集成電路的邊界掃描,還可用作調試嵌入系統,在系統中設置方便的'后門,的機制。圖2的例證計算節點可以是所有這三種它一般包括安裝在印刷電路板上的一個或多個集成電路,并且可被實現成具有它自己的處理器、它自己的存儲器和它自己的I/O能力的嵌入系統。通過JTAG從屬電路(176)的JTAG邊界掃描能夠有效地配置供執行根據本發明實施例的全收集操作之用的計算節點(152)中的處理器寄存器和存儲器。圖2的例子中的數據通信適配器包括一個使數據通信用例證計算節點(152)與最適合于點對點消息傳遞操作的網絡(108),例如,配置成三維環形網中網格網的網絡耦接的點對點適配器(180)。點對點適配器(180)通過六個雙向鏈路+x(181)、-x(182)、+y(183)、-y(184)、+z(185)和-z(186),提供三個通信軸x、y和z上的六個方向的數據通信。圖2的例子中的數據通信適配器包括一個使數據通信用例證計算節點(152)與最適合于集合消息傳遞操作的網絡(106),例如配置成二叉樹的網絡耦接的集合操作適配器(188)。集合操作適配器(188)通過三個雙向鏈路到子節點的兩個鏈路(190)和到父節點的一個鏈路(l92)提供數據通信。例證的計算節點(152)包括兩個算術邏輯單元('ALU,)。ALU(166)是處理器(164)的一個組件,一個獨立的ALU(170)專供用于執行歸約操作的算術函數和邏輯函數的集合操作適配器(188)使用。并行通信庫(160)中的歸約例程的計算機程序指令可把關于算術或邏輯函數的指令鎖存到指令寄存器(169)中。例如,當歸約操作的算術或邏輯函數是'求和,或者'邏輯或,時,集合操作適配器(188)可通過利用處理器(164)中的ALU(166),或者通過利用專用ALU(170)(—般要快得多)執行算術或邏輯運算。為了進一步說明,圖3A圖解說明可用在執行根據本發明實施例的全收集操作的系統中的例證點對點適配器(180)。點對點適配器(180)用來供為點對點操作而優化的數據通信網絡(一種以三維環形網或網格網的形式組織計算節點的網絡)之用。圖3A的例子中的點對點適配器(180)通過四個單向數據通信鏈路,往來于-x方向上的下一節點的通信鏈路(182)和往來于+x方向上的下一節點的通信鏈路(181)提供沿x軸的數據通信。點對點適配器(180)還通過四個單向數據通信鏈路,往來于-y方向上的下一節點的通信鏈路(184)和往來于+y方向上的下一節點的通信鏈路(183)提供沿y軸的數據通信。點對點適配器(180)還通過四個單向數據通信鏈路,往來于-z方向上的下一節點的通信鏈路(186)和往來于+z方向上的下一節點的通信鏈路(185)提供沿z軸的數據通信。為了進一步說明,圖3B圖解說明可用在執行根據本發明實施例的全收集操作的系統中的例證集合操作適配器(188)。集合操作適配器(188)用來供為集合操作而優化的網絡(一種以二叉樹形式組織并行計算機的計算節點的網絡)之用。圖3B的例子中的集合操作適配器(188)通過四個單向數據通信鏈路(190),提供往來于兩個子節點(190)的數據通信。集合操作適配器(188)還通過兩個單向數據通信鏈路(192)提供往來于父節點的數據通信。為了進一步說明,圖4圖解說明為點對點操作而優化的例證數據通信網絡(106)。在圖4的例子中,點代表并行計算機的計算節點(102),點之間的虛線代表計算節點之間的數據通信鏈路(103)。利用和圖3中圖解說明的類似的點對點數據通信適配器,并利用三個軸x、y和z上往來于六個方向的數據通信鏈路+x(181)、-x(182)、+y(183)、-y(184)、+2(185)和-:2(186)實現所述數據通信鏈路。所述鏈路和計算節點被為點對點操作而優化的數據通信網絡組織成三維網格(105),所述三維網格(105)回繞從而形成環形(107)。該環形中的每個計算節點在該環形中具有由一組x、y、z坐標唯一指定的位置。每個計算節點被分配一個稱為'序號,的單元標識符(圖4中未示出)。計算節點的序號唯一地識別該計算節點,并且直接映射到該計算節點在環形網中的x、y、z坐標,供環形網以及樹形網中的點對點操作和集合操作之用。序號一般被分配成整數O、1、2等等。為了說明的清楚起見,只用27個計算節點圖解說明了圖4的數據通信網絡,但是讀者會認識到為供執行根據本發明實施例的全收集操作之用的點對點操作而優化的數據通信網絡可能只包含幾個計算節點,或者可能包含成千上萬上計算節點。為了進一步說明,圖5圖解說明通過把計算節點組織成樹形,為集合操作而優化的例證數據通信網絡(108)。圖5的例證數據通信網絡包括與計算節點連接,從而把計算節點組織成樹形的數據通信鏈路。在圖5的例子中,點代表并行計算機的計算節點(102),點之間的虛線(103)代表計算節點之間的數據通信鏈路。數據通信鏈路用與在圖3B中圖解說明的類似的集合操作數據通信適配器來實現,同時每個節點一般提供往來于兩個子節點的數據通信,和往來于父節點的數據通信,但存在一些例外。二叉樹中的節點可被表征成根節點(202)、支節點(204)和葉節點(206)。根節點(202)具有兩個子節點,而是沒有父節點。葉節點(206)均具有一個父節點,但是葉節點沒有子節點。支節點(204)都既具有一個父節點,又具有兩個子節點。鏈路和計算節點從而由為集合操作而優化的這種數據通信網絡組織成二叉樹(108)。為了說明的清楚起見,只用31個計算節點圖解說明了圖5的數據通信網絡,但是讀者會認識到為供執行根據本發明實施例的全收集操作之用的集合操作而優化的數據通信網絡可能只包含幾個計算節點,或者可能包含成千上萬上計算節點。在圖5的例子中,每個計算節點被分配一個序號(250),一個唯一地識別供樹形網中的點對點操作和集合操作之用的每個計算節點在樹形網中的位置的單元標識符。如上所述,雖然這兩個網絡一般獨立工作,每個計算節點的序號也映射到計算節點在環形網中的x、y、z坐標。本例中的序號被分配成整數,首先0被分配給根節點(202),l被分配給樹形結構的第二層中的第一個節點,2被分配給樹形結構的第二層中的第二個節點,3被分配給樹形結構的第三層中的第一個節點,4被分配給樹形結構的第三層中的第二個節點,依次類推。為了便于圖解說明,這里只表示了樹形結構的前三層的序號,但是所有計算節點都被分配一個唯一的序號。為了進一步說明,圖6是圖解說明根據本發明的實施例,在并行計算機中執行全收集操作的例證方法的流程圖。在和上面參考圖1圖解說明的并行計算機類似的并行計算機(100)上執行圖6的方法。這樣的并行計算機包括多個計算節點,每個計算節點包括一個發送緩沖區,計算節點被組織成用于集合操作的至少一個計算節點工作組,該工作組中的每個計算節點被分配一個唯一序號,每個發送緩沖區按照所述序號被分割。通過利用發送位移的列表執行(304)alltoallv操作(其中每個發送位移被實現成一個發送緩沖區分段指針,每個發送位移指向發送緩沖區的相同分段),實現圖6的方法。利用發送位移的列表執行(304)alltoallv操作(其中每個發送位移可被實現成一個發送緩沖區分段指針,每個發送位移指向發送緩沖區的相同分段)可如下面的偽代碼段中舉例說明的那樣實現。Datatypesendtype=char;Datatyperecvtype=chu「,charsendbufTer[l0000001;imallgather(void*sendbufffer,intsendcount,Datatypesendtype,void*recvbuf,intrecvcount,Datatyperecvtype,OpGro叩opGro叩ID)intsendcounts[3〗={sendcount,sendcount,sendcount};intsenddisplacements[3=(sendbuffer,sendbuffer,sendbuffer};/*initializeremainingalltoallv()parameters*/intalltoallv(void*sendbuffer,int*sendcounts,int*senddisplacements,Datatypesendtype,void*recvbufffer,int*recvcounts,int*recvdisplacements,Datatyperecvtype,OpGroupopGrouplD))在該例程代碼段是代碼格式方面的解釋,而不是實際的計算機程序列表的意義上,該例證代碼段是'偽代碼,。代碼格式與c編程語言的代碼格式類似。在本例中,'sendbuffer,是1000000字符的數組。如果一個字符的大小為兩個字節,那么sendbuffer代表2兆字節的發送緩沖區。'Sendtype,聲明將保存在發送緩沖區中并從發送緩沖區傳送的數據類型,在本例中為字符。'Sendcounts,是三個整數發送計數的數組,每個數組元素被初始化成'sendcount,的全收集參數值。每個發送計數表示在發送緩沖區的每個排序分段中的許多sendtype的數據元素,即字符。發送緩沖區的第j個排序分段的大小為sendcount[j'sizeof(char)。'Senddisplacements,是三個發送位移,發送緩沖區分段指針的數組。senddisplacements[I是包含發送緩沖區的對應排序分段中的第一地址的指針。本例中的senddisplacements數組被初始化成intsenddisplacements[31={sendbuffer,sendbuffer,sendbuffer};而不是,皮初始化成for(i=0,i=2,i++)senddisplacements[i=&sendbuffer[i;同時senddisplacements數組的每個元素指向發送緩沖區的第一分段。alltoallv()迭代地步進通過發送緩沖區的排序分段,由senddisplacements數組中的指針值引導到排序分段,并依次把每個排序分段的內容發送給工作組中的每個計算節點。這種情況下,當alltoallv()在senddisplacements數組中迭代時,alltoallv()將在每次迭代時繼續發送來自發送緩沖區的相同排序分段的數據。即,在本例中,alltoallv()將迭代把數據從發送緩沖區的第一排序分段發送給工作組的計算節點。為了進一步說明,圖7A陳述了現有全收集操作(320)的方框圖。通過從排序為0-5的6個計算節點的工作組中的計算節點的發送緩沖區(312)傳送數據,執行圖7A的全收集操作。每個發送緩沖區被分成6個排序的分段(314)0-5。在圖7A的例子中,只從發送緩沖區的第一分段傳送數據。每個數據元素被傳送給該工作組中的每個計算節點。每個傳送的數據元素被該工作組中的每個計算節點接收,并按照傳送數據的計算節點的序號被放入接收緩沖區(309)中的適當位置。A。(來自序號為0的計算節點的數據)進入每個計算節點的接收緩沖區的第一位置,即O位置。B。(來自序號為1的計算節點的數據)進入每個計算節點的接收緩沖區的第二位置,即1位置。依次類推。為了進一步說明,圖7B陳述了現有的alltoallv操作(322)的方框圖。通過從排序為0-5的6個計算節點的工作組中的計算節點的發送緩沖區(312)傳送數據,執行圖7B的alltoallv操作。alltoallv操作按照序號順序把數據從所有計算節點的發送緩沖區的排序分段發送到所有計算節點中的接收緩沖區中。發送緩沖區的每個排序分段的大小可變化。每個計算節點只把其發送緩沖區的每個排序分段的內容傳送給對應排序的計算節點。排序分段O的內容到達序號為0的計算節點。排序分段l的內容到達序號為1的計算節點,依次類推。發送緩沖區的每個排序分段的大小可變化。當收到數據時,每個計算節點按照發送計算節點的序號,按序號順序把數據放入其接收緩沖區的排序分段中。來自序號為0的計算節點的數據進入排序分段O。來自序號為1的計算節點的數據進入排序分段l,依次類推。更具體地說,在本例中Ao(來自序號為0的計算節點的發送緩沖區的排序分段0的數據)被傳送給序號為0的計算節點。A。(從序號為0的計算節點接收的數據)被保存在序號為0的計算節點的接收緩沖區的排序分段0中。A"來自序號為0的計算節點的發送緩沖區的排序分段1的數據)被傳送給序號為1的計算節點。A,(從序號為0的計算節點接收的數據)被保存在序號為1的計算節點的接收緩沖區的排序分段O中。A2(來自序號為0的計算節點的發送緩沖區的排序分段2的數據)被傳送給序號為2的計算節點。A2(從序號為0的計算節點接收的數據)被保存在序號為2的計算節點的接收緩沖區的排序分段O中,依次類推。類似地B"來自序號為1的計算節點的發送緩沖區的排序分段O的數據)被傳送給序號為0的計算節點。B。(從序號為1的計算節點接收的數據)被保存在序號為0的計算節點的接收緩沖區的排序分段l中。B^來自序號為1的計算節點的發送緩沖區的排序分段l的數據)被傳送給序號為1的計算節點。B"從序號為1的計算節點接收的數據)被保存在序號為1的計算節點的接收緩沖區的排序分段l中。82(來自序號為1的計算節點的發送緩沖區的排序分段2的數據)被傳送給序號為2的計算節點。82(從序號為1的計算節點接收的數據)被保存在序號為2的計算節點的接收緩沖區的排序分段l中。對于工作組中的所有計算節點的所有發送緩沖區的全部排序分段中的所有數據,依次類推。當alltoallv操作(322)結束時,每個計算節點的接收緩沖區按照序號順序包含來自工作組中的所有計算節點的發送緩沖區的對應排序分段的全部數據。alltoallv操作(322)的效果在于工作組的所有計算節點中的所有接收緩沖區包含不同的數據,從發送緩沖區發送的數據的矩陣求逆。為了進一步說明,圖7C表示根據本發明的實施例,借助alltoallv執行的例證全收集操作(324)的方框圖。利用發送位移的列表執行圖7C的alltoallv操作,其中每個發送位移是一個發送緩沖區分段指針,每個發送位移指向發送緩沖區的相同分段。在本例中,列表中的所有發送位移指向排序的發送緩沖區分段0(316)。于是,alltoallv操作迭代地遍歷該列表,試圖發出發送緩沖區的不同排序分段的一系列傳輸,而不是反復發出發送緩沖區的相同分段的內容。通過比較圖7C和7A可看出,效果與全收集的效果完全相同。緩沖區分段0的內容被alltoallv全收集到工作組的所有計算節點的所有接收緩沖區(309)中。為了進一步說明,圖7D表示根據本發明的實施例,借助alltoallv執行的另一例證全收集操作(326)的方框圖。利用發送位移的列表執行圖7D的alltoallv操作,其中每個發送位移是一個發送緩沖區分段指針,每個發送位移指向發送緩沖區的相同分段。圖7D的例子舉例說明雖然所有發送位移指向發送緩沖區的相同分段,但是并不要求發送位移指向發送緩沖區的第一分段的事實。在本例中,列表中的所有發送位移指向排序的發送緩沖區分段1,發送緩沖區的第二分段(318)。alltoallv操作迭代地遍歷該列表,試圖發出發送緩沖區的不同排序分段的一系列傳輸,而不是反復發出發送緩沖區的相同分段的內容。通過比較圖7D和7A可看出,效果與全收集的效果完全相同。緩沖區分段1的內容被alltoallv全收集到工作組的所有計算節點的所有接收緩沖區(309)中。在圖6的方法中,執行(304)alltoallv操作包括傳送(306)計算節點的發送緩沖區的排序分段的內容,按照隨機順序選取排序分段。通過首先把先前按照序號順序排列的發送緩沖區的分段重新排列成隨機順序,隨后按照重新排列的順序傳送發送緩沖區的每個分段的內容,能夠實現在按照隨機順序選取排序分段的時候,傳送計算節點的發送緩沖區的排序分段的內容。表1<table>tableseeoriginaldocumentpage23</column></row><table>表1以表格形式圖解說明與對應的發送計數和發送緩沖區分段序號相關的發送位移的列表。先前按照序號順序排列的分段序號現在按照任意順序排列。每一個被分配一個隨機數,并且表l的記錄已按照隨機數被排序。鑒于上述說明,讀者會認識到在按照隨機順序選取排序分段的時候,傳送計算節點的發送緩沖區的排序分段的內容的好處是大大降低執行alltoallv操作期間的網絡擁塞。例如考慮圖5的網絡。在傳統alltoallv操作的第一階段中,每個計算節點把其第一個緩沖區分段的內容傳送給序號為0的計算節點(本例中為根節點(202))。于是,這期間網絡上的所有數據通信流過序號為0、1和2的計算節點之間的鏈路(203,205),在這些鏈路上造成很高程度的網絡擁塞。在傳統alltoallv操作的第二階段中,每個計算節點把其第一個緩沖區分段的內容傳送給序號為1的計算節點,從而嚴重擁塞與序號為1的計算節點連接的三條鏈路,依次類推。在所有節點都具有六條入站鏈路的環形網上,該問題稍不明顯,但是總體問題是相同的。alltoallv是一種由工作組的所有計算節點同時執行的集合操作,在所述工作組中可能存在成千上萬個計算節點。但是,在根據本發明的實施例按照隨機順序選取排序分段的時候,當每個計算節點上的每個alltoallv傳送計算節點的發送緩沖區的排序分段的內容時,幾乎沒有計算節點將首先向序號為0的計算節點傳輸。相反,第一傳輸的目的地,第二傳輸的目的地等等將隨機分散在網絡內,從而降低網絡擁塞的風險。在圖6的方法中,執行(304)alltoallv操作還包括從發送緩沖區的每個分段迭代傳輸(310)數據的網絡包(networkpacket),每個迭代傳輸包括比發送緩沖區的一個分段的全部內容少的內容。發送緩沖區的分段可包含非常大量的數據。試圖把發送緩沖區的整個分段同時發送給接收計算節點冒著在接收節點周圍的網絡中造成網絡擁塞的風險。從發送緩沖區的每個分段迭代傳輸(310)數據的網絡包(每個迭代傳輸包括比發送緩沖區的一個分段的全部內容少的內容)意味著在所有緩沖區分段內,從發送緩沖區的分段o向接收計算節點o發送一些而不是全部的數據,從發達緩沖區的分段l向接收計算節點l發送一些而不是全部的數據,依次類推,隨后返回從分段o發送更多的數據,從分段l發送更多的數據,依次類推,直到所有數據被發送為止。從分段發送少于全部數據的數據意味著跟蹤最后的傳輸在數據中結束于何處,這可通過把一個附加指針(這里稱為'當前指針,)用在發送緩沖區的每個分段上來實現。表2以表格形式舉例說明與對應的發送計數,發送緩沖區分段序號,和當前指針有關的發送位移的列表。表2隨機數分段序號發送位移發送計數當前指針0303218950362851503218950362852103218903628530032189503628544032189036285520321895036285將從每個分段發送的數據的數量是發送計數乘以待發送的數據類型的大小。在先前迭代中發送的數據的數量是當前指針的值減去分段的發送位移的值。每次迭代可比較待發送的總量與在先前迭代中發送的數量。在每次傳輸之后,迭代碼可更新當前指針。在圖6的方法中,執行(304)alltoallv操作還包括從發送緩沖區的每個分段迭代傳輸(308)數據的網絡包,每個迭代傳輸包括一個以上的網絡包。例如,在使用256字節的網絡包大小的并行計算機的數據通信網絡中,從發送緩沖區的每個分段傳輸(308)數據的網絡包,以致每個迭代傳輸包括一個以上的網絡包可通過在每個迭代傳輸中,至少以512字節,或者1K字節或者2K字節的速率進行傳輸來實現。增大傳輸大小會增大網絡擁塞的風險。降低傳輸大小會增大存儲器超高速緩存過載的風險。通過監視超高速緩存交換和應用程序執行速度,可通過實驗容易地確定最佳的傳輸大小。在圖6的方法中,執行(304)alltoallv操作還包括當發送緩沖區的一個分段的全部內容已被傳送時,從發送位移的列表中除去(312)指向已傳送分段的發送位移。為了進一步說明,圖8是圖解說明根據本發明的實施例,在并行計算機(100)的計算節點(152)上的例證alltoallv操作的執行的方框圖。圖8的alltoallv利用發送位移的列表(328)來執行,發送位移中的三個分別命名為senddisplacement[O、senddisplacement[l和senddisplacement[2。每個發送位移是一個發送緩沖區分段指針,在本例中,每個發送位移指向發送緩沖區(312)的一個不同的排序分段。發送緩沖區的排序分段分別被命名為'排序分段0,、'排序分段1,和'排序分段2,。senddisplacement[0指向排序分段0中的第一地址(336);senddisplacementll指向排序分段1中的第一地址(338);senddisplacement[2I指向排序分段2中的第一地址(340)。本例中的排序分段由不同的發送計數指定,于是具有不同的大小,顯然排序分段1是這三個分段中的最小者。圖8的alltoallv使用當前指針(330、332、334)來跟蹤已從發送緩沖區(312)的每個排序分段發送了多少數據。圖8的alltoallv從發送緩沖區的每個分段迭代傳輸數據的網絡包,每個迭代傳輸包括比發送緩沖區的一個分段的所有內容少的內容。顯然將在其它兩個分段的全部數據被發送之前發送排序分段l中的所有數據。如果每次迭代時迭代算法檢查留待從每個分段發送的數量while(!Finished)char*get_next—senddisplacemenl(char"ist);calculatetotalquantitytobesentassendcounttimes'sizeofsenddatatype;calculateamountsentascurrentpointerminussenddisplacement;if(amounisentislessthantotaltobesent)sendmoredaia;updatecurrentpointer,那么在排序分段l中的全部數據已被發送之后,在關于排序分段1的檢查中涉及的數據處理是每次迭代中的不必要開銷。另外,其它分段通常遠遠大于較小的分段,使對其數據已被發送的分段的反復迭代處理變得極其低效。于是,當排序分段l的全部內容都已被傳送時,圖8的例證alkoallv從發送位移的列表(328)中除去senddisplacement[ll,以致諸如char*get—next_senddisplacement(char*list)之類的函數將不再從列表(328)找出和返回senddisplacement[l。為了進一步說明,圖9是圖解說明根據本發明的實施例,在并行計算機中執行全收集操作的另一例證方法的流程圖。圖9的方法與圖6的方法類似。類似于圖6的方法,在和上面參考圖1舉例說明的并行計算機類似的并行計算機(100)上執行圖9的方法。這樣的并行計算機包括多個計算節點,每個計算節點包括一個發送緩沖區,計算節點被組織成用于集合操作的計算節點的至少一個工作組,該工作組中的每個計算節點被分配一個唯一序號,每個發送緩沖區按照所述序號被分割。類似于圖6方法,通過利用發送位移的列表執行(304)alltoallv操作,實現圖9的方法,其中每個發送位移被實現成一個發送緩沖區分段指針,每個發送位移指向發送緩沖區的相同分段。類似于圖6的方法,在圖9的方法中.執行(304)alltoallv操作包括在按照隨機順序選取排序分段的時候,傳送(306)計算節點的發送緩沖區的排序分段的內容;.執行(304)alltoallv操作還包括迭代從發送緩沖區的每個分段傳送(308)數據的網絡包,每個迭代傳輸包括一個以上的網絡包;和.執行(304)alltoallv操作還包括迭代從發送緩沖區的每個分段傳送(310)數據的網絡包,每個迭代傳輸包括比發送緩沖區的一個分段的全部內容少的內容。但是,不同于圖6的方法,在圖9的方法中,執行(304)alltoallv操作包括把環面不連續點(discontinuity)周圍的網絡分組傳輸(350)給目的地計算節點。在和參考圖4圖解說明的并行計算機類似的并行計算機的環形網中的一個計算節點工作組的計算節點上實現圖9的方法-除了其中執行圖9的alltoallv的工作組包括一個環面不連續點之外。為了進一步說明,圖10是圖9的alltoallv可在其上實現的并行計算機(100)的例證數據通信網絡的繪線圖。環形網(106)包括計算節點的一個工作組(132),該工作組包括在節點(344)的環面不連續點。環面不連續點是包含在工作組的物理范圍內,但是排除在該工作組的定義之外的計算節點。工作組中的計算節點上的集合操作,比如alltoallv在該組中的所有計算節點上執行,從而該組中的所有計算節點必須相互傳遞消息。未被定義成工作組(132)的一部分的計算節點(344)并不期待來自工作組(132)中的計算節點的消息通信量。在計算節點(344)正在執行部分的并行應用程序這個意義上,接收意外的消息通信量會造成混亂。在不期待來自工作組(132)中的計算節點的消息通信量的情況下,計算節點(344)不能正確地轉發這樣的通信量。于是,計算節點(346)和計算節點(342)之間的消息通信量可有效地在計算節點(344)周圍被發送,而不是試圖通過計算節點(344)發送這樣的通信量。事實上,出于這些相同的原因,一些并行計算機體系結構禁止定義包含這種不連續點的工作組。但是,圖10的環形網支持把環面不連續點(344)周圍的網絡包傳輸(圖9上的350)給目的地計算節點(342)。如上所述,alltoallv操作中發送緩沖區的排序分段并不要求都具有相同的大小。在全收集操作中,所有傳送分段大小相同。在allgatherv操作中,同樣不要求緩沖區分段的所有傳輸具有相同的大小。可利用這種原型定義allgatherv:intallgatherv(void*sendbuffer,intsendcount,Datatypesendtype,void*recvbuf,int*recvcounts,'mt*recvdisplacements,Datatyperecvtype,OpGro叩opGrouplD),本文中利用alltoallv執行全收集操作的全部所述功能和結構完全適用于allgatherv。即,本文中所述的利用alltoallv執行全收集操作的例證方法也是利用alltoallv執行allgatherv的例證方法。主要在執行并行計算機中的全收集操作的全功能計算機系統的方面說明了本發明的例證實施例。但是,本領域的技術人員會認識到本發明還可被具體體現成置于供任何適當的數據處理系統之用的信號承載介質上的計算機程序產品。這種信號承栽介質可以是用于機器可讀信息的傳輸介質或者可記錄介質,包括磁介質、光介質或其它適當的介質。可記錄介質的例子包括磁盤驅動器中的磁盤或者軟磁盤,光驅動器用光盤,磁帶,以及本領域的技術人員想到的其它介質。傳輸介質的例子包括用于語音通信的電話網和數字數據通信網,比如EthernetsTM和與網際協議和萬維網通信的網絡。本領域的技術人員會立即認識到具有適當編程裝置的任何計算機系統能夠執行具體體現成程序產品的本發明的方法的步驟。本領域的技術人員會立即認識到雖然本說明書中描述的一些例證實施例面向安裝在計算機硬件上,并在計算機硬件上執行的軟件,不過實現成固件或者硬件的備選實施例也在本發明的范圍內。根據上述說明,在不脫離本發明的精神的情況下,在本發明的各個實施例中顯然可做出許多修改和變化。本說明書中的描述只是為了舉例說明,而不是對本發明的限制。本發明的范圍只由下述權利要求限定。權利要求1、一種在并行計算機上執行全收集操作的方法,所述方法包括利用發送位移的列表執行alltoallv操作,每個發送位移包括一個發送緩沖區分段指針,每個發送位移指向發送緩沖區的相同分段,其中執行alltoallv操作還包括在按照隨機順序取得排序分段的情況下,傳輸計算節點的發送緩沖區的排序分段的內容,和并行計算機包括多個計算節點,每個計算節點包括一個發送緩沖區,計算節點被組織成用于集合操作的計算節點的至少一個工作組,工作組中的每個計算節點被分配唯一的序號,每個發送緩沖區按照所述序號被分割。2、按照權利要求1所述的方法,其中執行alltoallv操作還包括從發送緩沖區的每個分段迭代傳輸數據的網絡包,每個迭代傳輸包括一個以上的網絡包。3、按照權利要求1所述的方法,其中執行alltoallv操作還包括從發送緩沖區的每個分段迭代傳輸數據的網絡包,每個迭代傳輸包括比發送緩沖區的一個分段的全部內容少的內容。4、一種在并行計算機上執行allgatherv操作的方法,所述方法包括利用發送位移的列表執行alltoallv操作,每個發送位移包括一個發送緩沖區分段指針,每個發送位移指向發送緩沖區的相同分段,其中執行alltoallv操作還包括在按照隨機順序取得排序分段的情況下,傳輸計算節點的發送緩沖區的排序分段的內容,和并行計算機包括多個計算節點,每個計算節點包括一個發送緩沖區,計算節點被組織成用于集合操作的計算節點的至少一個工作組,工作組中的每個計算節點被分配唯一的序號,每個發送緩沖區按照所述序號被分割。5、按照權利要求1所述的方法,其中執行alltoallv操作還包括從發送緩沖區的每個分段迭代傳輸數據的網絡包,每個迭代傳輸包括一個以上的網絡包。6、按照權利要求1所述的方法,其中執行alltoallv操作還包括從發送緩沖區的每個分段迭代傳輸數據的網絡包,每個迭代傳輸包括比發送緩沖區的一個分段的全部內容少的內容。7、一種在并行計算機中執行全收集操作的系統,所述系統被置于信號承栽介質之上,所述系統包括利用發送位移的列表執行alltoallv操作的裝置,每個發送位移包括一個發送緩沖區分段指針,每個發送位移指向發送緩沖區的相同分段,其中執行alltoallv操作的裝置還包括在按照隨機順序取得排序分段的情況下,傳輸計算節點的發送緩沖區的排序分段的內容的裝置,和并行計算機包括多個計算節點,每個計算節點包括一個發送緩沖區,計算節點被組織成用于集合操作的計算節點的至少一個工作組,工作組中的每個計算節點被分配唯一的序號,每個發送緩沖區按照所述序號被分割。8、按照權利要求7所述的系統,其中信號承載介質包括可記錄介質。9、按照權利要求7所述的系統,其中信號承載介質包括傳輸介質。10、按照權利要求7所述的系統,其中執行alltoallv操作的裝置還包括從發送緩沖區的每個分段迭代傳輸數據的網絡包的裝置,每個迭代傳輸包括一個以上的網絡包。11、按照權利要求7所述的系統,其中執行alltoallv操作的裝置還包括從發送緩沖區的每個分段迭代傳輸數據的網絡包的裝置,每個迭代傳輸包括比發送緩沖區的一個分段的全部內容少的內容。12、一種在并行計算機上執行alltoallv操作的方法,其中并行計算機包括多個計算節點,每個計算節點包括一個發送緩沖區,計算節點被組織成用于集合操作的計算節點的至少一個工作組,工作組中的每個計算節點被分配唯一的序號,每個發送緩沖區按照所述序號被分割,alltoallv操作包括發送位移的列表,每個發送位移包括一個發送緩沖區分段指針,所述方法包括按照隨機順序傳輸計算節點的發送緩沖區的排序分段;和當發送緩沖區的一個分段的全部內容已被傳輸時,從發送位移的列表中除去指向已傳送分段的發送位移。13、按照權利要求12所述的方法,還包括從發送緩沖區的每個分段迭代傳輸數據的網絡包,每個迭代傳輸包括一個以上的網絡包。14、按照權利要求12所述的方法,還包括從發送緩沖區的每個分段迭代傳輸數據的網絡包,每個迭代傳輸包括比發送緩沖區的一個分段的全部內容少的內容。15、按照權利要求12所述的方法,其中并行計算機還包括用于節點之間的數據通信的數據通信網絡,所述網絡有效地把節點組織成環形;計算節點的工作組包括一個環形網不連續點;和所述方法還包括把不連續點周圍的網絡包傳送給目的地計算節點。16、一種在并行計算機中執行alltoallv操作的系統,其中并行計算機包括多個計算節點,每個計算節點包括一個發送緩沖區,計算節點被組織成用于集合操作的計算節點的至少一個工作組,工作組中的每個計算節點被分配唯一的序號,每個發送緩沖區按照所述序號被分割,alltoallv操作包括發送位移的列表,每個發送位移包括一個發送緩沖區分段指針,所述系統被置于信號承載介質之上,所述系統包括按照隨機順序傳輸計算節點的發送緩沖區的排序分段的裝置;和當發送緩沖區的一個分段的全部內容已被傳輸時,從發送位移的列表中除去指向已傳送分段的發送位移的裝置。17、按照權利要求16所述的系統,其中信號承載介質包括可記錄介質。18、按照權利要求16所述的系統,其中信號承載介質包括傳輸介質。19、按照權利要求16所述的系統,還包括從發送緩沖區的每個分段迭代傳輸數據的網絡包的裝置,每個迭代傳輸包括一個以上的網絡包。20、按照權利要求16所述的系統,還包括從發送緩沖區的每個分段迭代傳輸數據的網絡包的裝置,每個迭代傳輸包括比發送緩沖區的一個分段的全部內容少的內容。全文摘要在并行計算機上執行全收集操作,包括利用發送位移的列表執行alltoallv操作,其中每個發送位移是一個發送緩沖區分段指針,每個發送位移指向發送緩沖區的相同分段,并行計算機包括多個計算節點,每個計算節點包括一個發送緩沖區,計算節點被組織成用于集合操作的計算節點的至少一個工作組,工作組中的每個計算節點被分配唯一的序號,每個發送緩沖區按照所述序號被分割。文檔編號H04L29/06GK101114273SQ20071009701公開日2008年1月30日申請日期2007年4月17日優先權日2006年7月24日發明者查爾斯·J.·阿奇,約瑟·E.·莫雷拉,約瑟夫·D.·拉特曼,菲利普·黑德爾博格申請人:國際商業機器公司