專利名稱:在一個分布式存儲器的并行多節(jié)點計算機上的多維快速傅里葉變換的高效實現(xiàn)的制作方法
技術領域:
本發(fā)明因為例如應用于在科學、數(shù)學、工程等等領域中的計算,所以通常涉及一個分布式存儲器、信息傳遞并行多節(jié)點計算機和相關的系統(tǒng)軟件的領域。尤其是,本發(fā)明的目的在于一個用于在分布式存儲器、并行巨型計算機上高效地實現(xiàn)一個多維快速傅里葉變換(即,“FFT”)的系統(tǒng)和方法。
現(xiàn)有技術的描述線性轉換,諸如傅里葉變換(即,“FT”)已經被廣泛地用于解決在科學、數(shù)學、工程等等領域問題的范圍。FT把一個給定問題改變成為一個可以被更容易地解決的問題,而且FT在許多不同的應用中使用。例如對于一個N個變量的系統(tǒng),F(xiàn)T實質上表示該N個變量從坐標空間到動量空間的變化,其中每個變量的新值取決于所有老的變量的值。這樣一個N個變量的系統(tǒng)通常作為一個N個元素的數(shù)組存儲在一臺計算機上。FT通常使用快速傅里葉變換(即,“FFT”)進行計算。該FFT在許多標準課本中進行了描述,諸如出版社出版的數(shù)值方法等(劍橋大學出版社在1986,1992年出版,ISBN0-521-43064-X,由W.H.Press、S.A.Teukolsky、W.A.Vetterling和BrianP Flannery所著的“Fortran數(shù)值方法”中的第490-529頁)。大部分計算機生產商提供了庫函數(shù)調用來為它們的特定的處理器優(yōu)化FFT。例如,在工程和科學子程序庫中,在IBM的RS/6000處理器上對FFT進行了充分的優(yōu)化。這些庫例行程序需要執(zhí)行該FFT所必須的數(shù)據(jù)(即,上述元素)被駐留在一個節(jié)點的本地存儲器中。
在一個多維FFT中,一個多維數(shù)組的N個元素被分布在跨越一個分布式存儲器、并行多節(jié)點計算機的節(jié)點的多個維度中。在分布存儲器、并行多節(jié)點計算機上執(zhí)行的許多應用把它們執(zhí)行時間的一大部分花費在計算該多維FFT上。因為該分布存儲器、并行多節(jié)點計算機的一個動機就是更快的執(zhí)行,所以對該分布數(shù)組多維FFT的快速計算具有關鍵的重要性。該數(shù)組的N個元素最初以某種對于一個應用所特有的任意方式跨越節(jié)點分布。為了計算該多維FFT,則重新分布該元素數(shù)組以便在每個節(jié)點上的數(shù)組的一部分都包含在該x維度中元素的一個完整行。然后執(zhí)行在每個節(jié)點上、在該X維度中每個行上的一個一維FFT。因為該行對于一個節(jié)點來說是本地的,以及因為在每個行上的每個一維FFT與其它無關,在每個節(jié)點上執(zhí)行的一維FFT不須要和任何其它節(jié)點進行通信并且可以使用上述的庫例行程序執(zhí)行。在一維FFT之后,重新分布數(shù)組元素以便在每個節(jié)點上的、該數(shù)組的一部分包含在y維度中的一個完整行。此后,執(zhí)行在每個節(jié)點上、在該y維度中每個行上的一個一維FFT。如果該數(shù)組有超過兩個的維度,則為每個超過該x維度和y維度的連續(xù)數(shù)組維度重復該重新分布和一維FFT。該產生的數(shù)組可以重新分布成為為該應用所特有的某個任意方式。
依次處理x維度和y維度對于多維FFT來說不是很重要的。代之以,該數(shù)組的維度可以以任何次序進行處理。對于某些應用或者某些計算機來說,某種次序可以利用某些性能的優(yōu)點而且因此具有一個比其它次序更快的執(zhí)行速度。例如,數(shù)組以某種為該應用所特有的任意方式跨越該節(jié)點的初始分布,可以符合在y維度中為一維FFT所必須的分布。在這種情況下,讓多維FFT在處理x維度和任何其它的剩余維度之前首先處理y維度可能是更快的。
在如上所述的多維FFT的實現(xiàn)中,在該一維FFT之間的數(shù)組的每次重新分布都是一個“所有-到-所有”通信或者重新分布的一個示例。在所有-到-所有重新分布中,該分布存儲器、并行多節(jié)點計算機中的每個節(jié)點使用多個分組把唯一的數(shù)據(jù)(即,數(shù)組中的元素)發(fā)送到所有其它的節(jié)點。
如上所述,在分布存儲器、并行多節(jié)點計算機上多維FFT的快速計算具有關鍵性的意義。在如上所述的實現(xiàn)中通常執(zhí)行時間的一大部分被花費在跨越該分布存儲器、并行多節(jié)點計算機的節(jié)點的數(shù)組重新分布上。尤其是,執(zhí)行時間的一大部分被花費在跨越該分布存儲器、并行多節(jié)點計算機中的節(jié)點的“所有-到-所有”數(shù)組元素的重新分布上。
因此在本技術領域有一個提供一個用于在該分布式存儲器、并行巨型計算機上高效地實現(xiàn)多維FFT的系統(tǒng)和方法的需要。
特別地,在本技術領域有一個用于提供一個用于在該分布存儲器、并行巨型計算機上高效地實現(xiàn)“所有-到-所有”重新分配來高效地實現(xiàn)多維FFT的系統(tǒng)和方法的需要。
發(fā)明概述因此本發(fā)明的一個目的是提供一個用于在一個分布存儲器、并行巨型計算機上分布的一個數(shù)組上高效地實現(xiàn)多維FFT的系統(tǒng)和方法。
本發(fā)明的另一個目的是提供一個用于通過在該分布存儲器、并行巨型計算機上高效地實現(xiàn)“所有-到-所有”重新分布,來在該數(shù)組上高效地實現(xiàn)多維FFT的系統(tǒng)和方法。
本發(fā)明的還有另一個目的是提供一個用于在不同于在分布存儲器、并行巨型計算機上的多維FFT的應用中高效地實現(xiàn)“所有-到-所有”重新分布的系統(tǒng)和方法。
依據(jù)本發(fā)明的一個實施例,提供了一種用于高效地實現(xiàn)一個多維數(shù)組的多維快速傅里葉變換(FFT)的方法,其中該多維數(shù)組包含多個最初分布在一個包含多個經由一個網絡進行通信的節(jié)點的多節(jié)點計算機系統(tǒng)中的元素,該方法包含經由該網絡,跨越該計算機系統(tǒng)的多個節(jié)點分布在一個第一維度中、該數(shù)組的多個元素,以便于一個第一一維FFT;在第一維度中、分布在每個節(jié)點處的數(shù)組元素上執(zhí)行第一一維FFT;通過網絡,經由跨越該計算機系統(tǒng)的其它節(jié)點、以隨機次序的“所有-到-所有”分布,在一個第二維度中在每個節(jié)點處重新分布一維FFT-轉換了的元素;以及在第二維度中、在每個節(jié)點處重新分布的數(shù)組的元素上執(zhí)行一個第二一維FFT,其中隨機次序便于網絡的高效利用由此高效地實現(xiàn)多維FFT。
依據(jù)本發(fā)明的另一個實施例,提供了一個用于高效地實現(xiàn)一個多維數(shù)組的多維快速傅里葉變換(FFT)的系統(tǒng),其中該多維數(shù)組包含多個最初分布在一個包含多個經由一個網絡進行通信的節(jié)點的多節(jié)點計算機系統(tǒng)中的元素,該系統(tǒng)包含用于經由該網絡,跨越該計算機系統(tǒng)的多個節(jié)點分布在一個第一維度中的、該數(shù)組的多個元素以便于一個第一一維FFT的裝置;用于在在第一維度中、分布在每個節(jié)點處的數(shù)組元素上執(zhí)行第一一維FFT的裝置;用于通過網絡,經由跨越該計算機系統(tǒng)的其它節(jié)點、以隨機次序的“所有-到-所有”分布,在一個第二維度中在每個節(jié)點處重新分布一維FFT-轉換了的元素的裝置;以及用于在在第二維度中、在每個節(jié)點處重新分布的數(shù)組中的元素上執(zhí)行一個第二一維FFT的裝置,其中隨機次序便于網絡的高效利用由此高效地實現(xiàn)多維FFT。
依據(jù)本發(fā)明的還有另一個實施例,提供了一個可觸知地包含指令程序的程序存儲設備,其中的指令程序可由一個機器執(zhí)行來執(zhí)行一種用于高效地實現(xiàn)一個多維數(shù)組的多維快速傅里葉變換(FFT)的方法,其中該多維數(shù)組包含多個最初分布在一個包含多個經由一個網絡進行通信的節(jié)點的多節(jié)點計算機系統(tǒng)中的元素,該方法包含經由該網絡,跨越該計算機系統(tǒng)的多個節(jié)點在一個第一維度中分布該數(shù)組的多個元素,以便于一個第一一維FFT;在在第一維度中、分布在每個節(jié)點處的數(shù)組元素上執(zhí)行第一一維FFT;通過網絡,經由跨越該計算機系統(tǒng)的其它節(jié)點、以隨機次序的“所有-到-所有”分布,在一個第二維度中在每個節(jié)點處重新分布一維FFT-轉換了的元素;以及在第二維度中、在每個節(jié)點處重新分布的數(shù)組中的元素上執(zhí)行一個第二一維FFT,其中隨機次序便于網絡的高效利用由此高效地實現(xiàn)多維FFT。
依據(jù)本發(fā)明的一個進一步實施例,提供了一種用于高效地重新分布一個多維數(shù)組的方法,其中該多維數(shù)組包含多個最初分布在一個包含多個經由一個網絡進行通信的節(jié)點的多節(jié)點計算機系統(tǒng)中的元素,該方法包含通過網絡,經由跨越該計算機系統(tǒng)的其它節(jié)點、以隨機次序的“所有-到-所有”分布,在每個節(jié)點處重新分布這些元素,其中該隨機次序便于網絡的高效利用。
依據(jù)本發(fā)明的還有一個進一步實施例,提供了一個用于高效地重新分布一個多維數(shù)組的系統(tǒng),其中該多維數(shù)組包含多個最初分布在一個包含多個經由一個網絡進行通信的節(jié)點的多節(jié)點計算機系統(tǒng)中的元素,該系統(tǒng)包含一個用于通過網絡,經由跨越該計算機系統(tǒng)的其它節(jié)點、以隨機次序的“所有-到-所有”分布,在每個節(jié)點處重新分布這些元素的裝置,其中該隨機次序便于網絡的高效利用。
依據(jù)本發(fā)明的還有一個進一步實施例,提供了一個可觸知地包含一個指令程序的程序存儲設備,該指令程序可由一個機器執(zhí)行來執(zhí)行一種用于高效地重新分布一個多維數(shù)組的方法,其中該多維數(shù)組包含多個最初分布在一個包含多個經由一個網絡進行通信的節(jié)點的多節(jié)點計算機系統(tǒng)中的元素,該方法包含通過網絡,經由跨越該計算機系統(tǒng)的其它節(jié)點、以隨機次序的“所有-到-所有”分布,在每個節(jié)點處重新分布這些元素,其中該隨機次序便于網絡的高效利用。
附圖簡要說明鑒于以下結合附圖進行的詳細說明,本發(fā)明的目的,特征以及優(yōu)點對于本領域技術人員將變得明顯,其中附圖包含
圖1說明了依據(jù)本發(fā)明的一個示例分布存儲器、并行巨型計算機,該并行巨型計算機包含9個經由一個使用一個2維3x3Torus網絡的多維網格互連的節(jié)點;圖2說明了依據(jù)本發(fā)明,一個來自圖1中的分布存儲器、并行巨型計算機的示例節(jié)點的更詳細表示;圖3說明了依據(jù)本發(fā)明的一個示例二維9行9列數(shù)組,其可以被高效地實現(xiàn)用于多維FFT;圖4說明了依據(jù)本發(fā)明,一個跨越在圖1中的巨型計算機的節(jié)點的、圖3中的二維數(shù)組的示例分布;圖5說明了依據(jù)本發(fā)明,一個跨越在圖1中的巨型計算機的節(jié)點分布的二維數(shù)組的一個示例第一一維FFT;圖6說明了依據(jù)本發(fā)明,一個在圖5中的第一一維FFT之后產生的二維數(shù)組的一個示例重新分布;圖7說明了一個依據(jù)本發(fā)明,圖6中的重新分布數(shù)組的示例第二一維FFT;圖8說明了一個依據(jù)本發(fā)明,描述在圖4-7中說明的二維FFT的實現(xiàn)的示例方法流程圖;圖9說明了一個依據(jù)本發(fā)明,描述用為在該分布存儲器、并行巨型計算機上的其它節(jié)點指定的分組填充在該示例節(jié)點上的輸出隊列的示例方法流程圖;以及圖10說明了一個依據(jù)本發(fā)明,描述在該示例節(jié)點的輸出隊列中的分組為了在該Torus網絡100上的后續(xù)插入,如何被流入FIFO中的示例方法流程圖。
本發(fā)明最佳實施例的詳細說明本發(fā)明的目的是一個用于在分布存儲器、并行巨型計算機上高效地實現(xiàn)多維快速傅里葉變換(即,“FFT”)的系統(tǒng)和方法。尤其是,本發(fā)明實現(xiàn)了分布在該分布存儲器、并行巨型計算機的節(jié)點處的元素的一個高效“所有-到-所有”重新分布以得到多維FFT的一個高效實現(xiàn)。
依據(jù)本發(fā)明,F(xiàn)FT作為一系列一維轉換在該分布存儲器、并行巨型計算機上實現(xiàn),其需要一個或多個跨越該分布存儲器、并行巨型計算機中的節(jié)點的一個多維數(shù)組的“所有-到-所有”重新分布。該分布式存儲器、并行巨型計算機利用一個基于Torus的網絡用于互連該巨型計算機以及在該巨型計算機的節(jié)點之間進行通信。如將在下面描述的那樣,每個節(jié)點實現(xiàn)了一個硬件路由器,用于跨越經由基于Torus的網絡互連的該巨型計算機節(jié)點,高效地路由包含該數(shù)組元素的分組。因此依據(jù)本發(fā)明,本發(fā)明把作為該多維數(shù)組的一系列一維轉換的多維FFT的實現(xiàn)和上述硬件路由連接起來,以獲得高效的FFT實現(xiàn)。
進一步依據(jù)本發(fā)明,該分布存儲器、并行巨型計算機包含多個節(jié)點,每個節(jié)點都包含至少一個在一個本地存儲器上進行操作的處理器。該節(jié)點作為一個多維網格進行互連而且它們經由網格鏈接進行通信。不用損失普遍性以及為了讓這個發(fā)明描述可為本領域的一個技術人員容易地理解,巨型計算機的多維節(jié)點網格將被描述為一個示例2維網格。
盡管在下面描述中僅僅描述了2維節(jié)點網格的事實,但是可以考慮到在本發(fā)明的范圍之內,基于本發(fā)明的示教可以容易地提供其它維度的節(jié)點網格。要注意到該分布存儲器、并行巨型計算機可能使用一個3維或者更大的基于Torus的體系結構。另外,不用損失普遍性以及為了讓這個發(fā)明描述可為本領域的一個技術人員容易地理解,由該多維FFT使用的多維數(shù)組將被描述為一個示例2維數(shù)組。盡管有在下面描述中僅僅描述了2維數(shù)組的事實,但是可以考慮到在本發(fā)明的范圍之內,基于本發(fā)明的示教可以容易地提供附加維度的數(shù)組。要進一步注意到在基于Torus的體系結構的維度數(shù)目和在數(shù)組中的維度數(shù)目之間沒有對應關系。該數(shù)組必須具有足夠的大小以便它能夠跨越該巨型計算機的節(jié)點或者一個節(jié)點子集分布,用于依據(jù)本發(fā)明實現(xiàn)多維FFT。
圖1是依據(jù)本發(fā)明的一個分布存儲器、并行巨型計算機的示例說明,該并行巨型計算機包含9個經由一個使用一個2維3x3Torus網絡100的多維網格互連的節(jié)點。要注意到為了簡單和清楚起見,在示例方式中的節(jié)點數(shù)目局限于9個節(jié)點,以及取決于該分布存儲器、并行巨型計算機的特定體系結構需求,節(jié)點的數(shù)目可以顯著地變化。圖1描述了標記為Q11-Q33的9個節(jié)點,其中的一對通過一個網格鏈接互連??傆?,9個節(jié)點Torus網絡100由18個網格鏈接互連,其中每個節(jié)點經由一個相應的網格鏈接直接互連到在該Torus網絡100中的四個其它節(jié)點。要注意到不同于一個網格,示例2維Torus網絡100不包含邊沿節(jié)點。例如,節(jié)點Q11經由網格鏈接102互連到節(jié)點Q31;經由網格鏈接104互連到節(jié)點Q13;經由網格鏈接106互連到節(jié)點Q21;以及經由網格鏈接108最后互連到節(jié)點Q12。作為另一個示例,節(jié)點Q22經由網格鏈接110互連到節(jié)點Q12;經由網格鏈接112互連到節(jié)點Q21;經由網格鏈接114互連到節(jié)點Q32以及經由網格鏈接116最后互連到節(jié)點Q23。其它的節(jié)點以類似的方式進行互連。
進一步參考圖1,在節(jié)點之間通信的數(shù)據(jù)(即,數(shù)組中的元素)在一個或多個分組中在該網絡上進行傳輸。對于在一對節(jié)點之間的任何給定通信,如果要被通信的數(shù)據(jù)數(shù)量超過了由該Torus網絡100支持的分組大小,則需要多個分組。一個分組包含一個分組標題和由該分組攜帶的數(shù)據(jù)。該分組標題包含由Torus網絡100所需要的從一個源節(jié)點傳輸分組到一個目的節(jié)點的信息。在當前專利申請的分布存儲器、并行巨型計算機中,在該網絡上的每個節(jié)點由一個邏輯地址標識而且該分組標題包含一個目的地址,以便該分組被自動地路由到在該網絡上由一個目標標識的節(jié)點。
圖2是依據(jù)本發(fā)明,來自圖1中的分布存儲器、并行巨型計算機的一個示例節(jié)點,例如節(jié)點Q11的一個更詳細表示200。節(jié)點Q11包含至少一個在本地存儲器204上進行操作的處理器202。該節(jié)點進一步包含一個路由器206,其路由,即發(fā)送和接收,在網格鏈接102、104、106和108上的分組,這些網格鏈接分別把節(jié)點Q11連接到它的鄰居節(jié)點Q31、Q13、Q21和Q12,如同在圖1中特別地說明的那樣。還有進一步,該節(jié)點包含一個接收緩存器208用于緩存由路由器206接收的分組,這些分組的目的地為本地處理器202。本地處理器202可以容易地定期輪詢接收緩存器208以便確定在該接收緩存器中是否有分組,并且然后檢索在該接收緩存器208中緩存的分組。取決于一個特定的應用和分組,本地處理器202可以寫入分組的內容到存儲器204中。
進一步參考圖2,節(jié)點Q11包含四個特別被標記為X+、X-、Y+和Y-的注入先進先出(即,“FIFO”)緩存器810。
處理器把輸出分組放置到本地存儲器2104的一個或多個輸出隊列212中,這些輸出隊列212存儲目的地為其它節(jié)點的分組直到它們能夠被放置到注入FIFO 210中為止。當注入FIFO不是充滿時,處理器把輸出分組放置到該注入FIFO 210中。
依據(jù)到達一個注入FIFO 210標題的一個特定分組,由路由器206把該分組從注入FIFO 210中刪除,并且該路由器206把該分組插入到一個朝向一個用于該特定分組的目的節(jié)點的網格鏈接102、104、106和108上。該四個注入FIFO 210由路由器206以及本地處理器202的硬件相等地處理。
還進一步參考圖2,路由器206包含幾個同時路由的特點。該路由首先表示虛擬的開通式路徑選擇。例如,如果一個在一個網格鏈接上的進來分組的目的地不是節(jié)點Q11的本地處理機202,則路由器206把該分組轉發(fā)到外出網格鏈接102、104、106和108中的一個上。路由器206執(zhí)行該轉發(fā)而不涉及本地處理器202。該路由進一步表示最短路徑路由選擇。例如,一個由節(jié)點Q11發(fā)送到節(jié)點Q13的分組(參見圖1和8)經由表示一個最短路徑路由的網格鏈接104進行傳播。任何其它通路將是相對比較長的。作為另一個示例,由節(jié)點Q11發(fā)送到節(jié)點Q22的分組可以經由網格鏈接106和112進行傳播,或者作為替換經由網格鏈接108和110進行傳播。這類路由表示一個自適應類型的路由選擇。因此,在這里可以有一個網格鏈接的選擇,通過這個網格鏈接選擇,經由基于Torus的網絡100,一個分組可以在傳輸中離開一個節(jié)點前往另一個節(jié)點。在先前的示例中,分組可以經由網格鏈接106或者108離開節(jié)點Q11。自適應路由選擇允許路由器206對一個分組選擇較不忙的外出網格鏈接或者基于某些其它的條件選擇外出網格鏈接。要注意到自適應路由選擇不僅僅在一個分組的源節(jié)點,例如節(jié)點Q11處執(zhí)行,而是在一個分組經由圖1中基于Torus的網絡100去往該分組的目的節(jié)點的路上所通過的每個中間節(jié)點處執(zhí)行。在下面參考圖9和10的描述特別地描述了本發(fā)明如何執(zhí)行分組經由Torus網絡100,跨越巨型計算機的節(jié)點的上述路由。
圖3是一個依據(jù)本發(fā)明的包含81個元素的示例二維9行乘9列數(shù)組300,其可以被高效地實現(xiàn)用于該多維FFT。要注意到示例二維數(shù)組300被容易地擴展到其它包含一個不同的行和列數(shù)的二維數(shù)組(例如,10行乘11列的二維數(shù)組),其可以依據(jù)本發(fā)明被使用用于在分布存儲器、并行巨型計算機上實現(xiàn)FFT。在數(shù)組200中,數(shù)組的第一行包含元素A11、A12...A19,而數(shù)組的第一列包含元素A11、A21...A91。
圖4是一個依據(jù)本發(fā)明,圖3中的二維數(shù)組300如何跨越在圖1中的節(jié)點Q11-Q33分布的示例分布說明400。要注意到該數(shù)組最初以某種對于一個應用所特有的任意方式跨越節(jié)點分布。依據(jù)本發(fā)明,該數(shù)組被重新分布以便在每個節(jié)點Q11...Q33上的一部分數(shù)組都包含在圖4中說明的分布。這個重新分布類似于如下參考圖5和6描述的那樣。如在該分布說明400中特別描述的那樣,圖1中的每個節(jié)點都包含圖3中的二維數(shù)組300的一部分。例如,節(jié)點Q11包含數(shù)組300的第一行,即,元素A11、A12...A19。作為另一個示例,節(jié)點Q12包含數(shù)組300的第二行,即元素A21、A22...A23。要注意到,如在圖4的分布說明400中特別描述的那樣,圖1中的其它節(jié)點Q13-Q33包含數(shù)組300的相應行3到9。在圖4的示例分布中,一個特定節(jié)點到一個數(shù)組元素特定行的分配不是重要的。相反,要注意到任何分配都是可行的。對于各種應用和/或計算機,某些分配可以利用由應用和/或計算機提供的性能的優(yōu)點并且因此產生比其它分配更快的執(zhí)行。例如,執(zhí)行多維FFT最快速的方法可能是把節(jié)點Q1和Q12的分配由在圖4中說明的那些顛倒過來。
圖5是一個描述了在圖4的二維數(shù)組上的一個第一一維FFT的示例說明500,這些二維數(shù)組經由圖1中的二維Torus網絡100跨越節(jié)點Q11-Q33進行分布。如上面特別提及的那樣,依據(jù)本發(fā)明的多維FFT通過執(zhí)行一系列的一維FFT來完成。因此依據(jù)本發(fā)明,二維數(shù)組300的多維FFT可以被實現(xiàn)為一系列的一維FFT。因此,在分布在每個節(jié)點處的每個元素行上執(zhí)行一個一維的FFT。例如,為分布在節(jié)點Q11處的元素,即在被分給節(jié)點Q11的第一行數(shù)組300中的元素執(zhí)行一個一維FFT。為在每個節(jié)點Q12-Q33處的元素(即,元素行)執(zhí)行一維的FFT。該結果是一個由第一一維FFT轉換的元素數(shù)組。更詳細地,在每個節(jié)點處在每一行上的一維FFT的結果是一行和在圖5中特別說明的具有同樣長度的一行。例如,在圖4中的節(jié)點Q11處第一行,其包含元素A11、A12...A19,上執(zhí)行的一個一維FFT產生在圖5的節(jié)點Q11處的一個第一行,其包含元素B11、B12...B19。此外,在每一節(jié)點處在每一行上執(zhí)行的一維FFT與在另一個節(jié)點處在任何其它行上執(zhí)行的一維FFT無關。在圖4中說明的數(shù)據(jù)特定分布允許每一節(jié)點執(zhí)行分布在那個節(jié)點處的元素行上的一維FFT,而不和在圖1的Torus網絡100上的任何其它節(jié)點進行通信。因此,因為不需要在節(jié)點之間的通信,這些一維FFT被快速地執(zhí)行。要注意到在每個節(jié)點除了產生在圖5中的行之外,在圖4中的原有行可以繼續(xù)存在以及為一個特定的應用所感興趣,但是如在圖6和7中詳細說明的那樣,原有的行不再為在一系列為依據(jù)本發(fā)明的多維FFT所需要的FFT中的第二一維FFT所需要。
圖6是一個依據(jù)本發(fā)明的示例“所有-到-所有”重新分布說明600,其描述了每一個經由圖5中的第一維度FFT轉換產生的元素行為執(zhí)行第二維度FFT如何跨越節(jié)點Q11-Q33重新分布。更詳細地,如圖6中詳細地描述的那樣,每一個分布在圖5的每一節(jié)點Q11...Q33處產生的元素行經由該Torus網絡100重新分布以便每一個連續(xù)的節(jié)點接收一個連續(xù)的元素列。這個高效的重新分布是“所有-到-所有”重新分布,其允許依據(jù)本發(fā)明的、在分布存儲器、并行巨型計算機上的多維FFT的一個高效實現(xiàn)。例如,第一節(jié)點Q11接收第一元素列,即來自每一節(jié)點Q11...Q33的第一元素。作為另一個示例,節(jié)點Q12接收第二元素列,即來自每一節(jié)點Q11...Q33的第二元素。為在圖5中的每一列執(zhí)行這個重新分布。在圖6的示例重新分布中,一個特定節(jié)點到一個數(shù)組元素特定行的分配不是重要的。相反,要注意到任何分配都是可行的。對于各種應用和/或計算機,某些分配可以利用由應用和/或計算機提供的性能的優(yōu)點并且因此產生比其它分配更快的執(zhí)行。例如,執(zhí)行多維FFT最快速的方法可能是把節(jié)點Q11和Q12的分配由在圖6中說明的那些顛倒過來。在下面參考圖9和10的描述特別地描述了本發(fā)明如何執(zhí)行數(shù)組元素經由Torus網絡100,跨越巨型計算機的節(jié)點的“所有-到-所有”重新分布。在每一節(jié)點Q11...Q33處的元素的“所有-到-所有”重新分布是快速的,這是因為它利用了Torus網絡100的通信特征的優(yōu)點。在圖6中說明的重新分布中,每一個來自Q11...Q33的節(jié)點發(fā)送單個數(shù)組元素到所有其他節(jié)點。以下描述假定該數(shù)組的每一個元素是一些比由單個分組攜帶的數(shù)據(jù)數(shù)量要大的數(shù)據(jù)量。因此,需要多個分組來經由Torus網絡100把數(shù)組的每一元素傳送到一個目的節(jié)點。這非常類似于典型的現(xiàn)實的重新分布,其中由于非常大的數(shù)組尺寸,每一節(jié)點通常需要許多分組來發(fā)送許多數(shù)組元素到所有其他節(jié)點。
圖7是一個依據(jù)本發(fā)明描述了在圖6的二維數(shù)組上的一個第二一維FFT的示例說明700,這些二維數(shù)組經由圖1中的二維Torus網絡100跨越節(jié)點Q11-Q33進行重新分布。如上面詳細地指出的那樣,依據(jù)本發(fā)明的多維FFT通過執(zhí)行一系列一維的FFT來完成,其中圖7描述了依據(jù)本發(fā)明在那個系列中的第二一維FFT。因此,在被分配給如圖5中說明的每一節(jié)點的元素列上執(zhí)行一個一維的FFT。例如,為分布在節(jié)點Q11處的元素,即作為一行分配給節(jié)點Q11以形成圖5的第一列的、在圖6中的元素B11、B21...B91執(zhí)行一個一維FFT。另外,在每一節(jié)點Q12-Q33處的元素行上執(zhí)行一維的FFT(即,從圖5的連續(xù)元素行中分配)。在每一行上的一維FFT的結果是和在圖7中特別說明的具有同樣長度的行。例如,在圖6中節(jié)點Q11處的第一行上執(zhí)行的一個一維FFT產生在圖7的在節(jié)點Q11處的一個第一行,其中圖6中節(jié)點Q11處的第一行包含元素B11、B21...A91,圖7中在節(jié)點Q11的第一行包含元素C11、C21...C91。
如上參考第一FFT所述的那樣,在每一節(jié)點處在每一行上執(zhí)行的一維FFT與在另一個節(jié)點處在任何其它行上執(zhí)行的一維FFT無關。在圖6中說明的數(shù)據(jù)特定分布允許每一節(jié)點執(zhí)行分布在那個節(jié)點處的元素行上的一維FFT,而不用和在圖1的Torus網絡100上的任何其它節(jié)點進行通信。因此,因為不需要在節(jié)點之間的通信,這些一維FFT被快速地執(zhí)行。
圖8是一個示例方法流程圖,其說明了在圖1中的、利用一個2維Torus網絡100用于在該巨型計算機的節(jié)點Q11...Q33之間的通信的、分布的分布存儲器、并行巨型計算機上的一個數(shù)組的二維FFT實現(xiàn)。在下面的描述中,將基于圖1-7為了高效地執(zhí)行二維FFT對圖8進行描述。在步驟802處,開始在圖3中說明的一個二維數(shù)組在圖1的分布的分布存儲器、并行巨型計算機中的多維FFT。要注意到在步驟702處,在圖3中說明的數(shù)組以某種可能是一個應用所特有的任意方式跨越這些節(jié)點分布。在步驟804處,如在圖4中詳細說明的那樣,數(shù)組300的元素(即,數(shù)據(jù))被高效地跨越節(jié)點Q11...Q33重新分布。在步驟806處,如在圖4說明的那樣,每一個節(jié)點在存儲在那個節(jié)點處的一行數(shù)組元素上執(zhí)行一個第一一維FFT(從一系列的一維FFT當中),并且結果在圖5中進行了詳細的說明。如參考圖5和6進行描述的那樣,在步驟808處,一維FFT轉換的元素列跨越使用圖1中基于Torus的體系結構的巨型計算機中的節(jié)點Q11...Q33進行重新分布。在步驟810處,每一個節(jié)點在一個在圖6中說明的一個第一一維FFT轉換了的元素的連續(xù)列上執(zhí)行一個第二一維FFT,這些元素作為在圖6中分布為一個元素行。第二一維FFT的結果在圖7中進行了說明。在步驟812處,結束在圖3中說明的二維數(shù)組在圖1的巨型計算機中的多維FFT。如上詳細所述的那樣,在兩個一維的FFT之間有一個跨越節(jié)點Q11...Q33的快速元素重新分布。
以上描述的、在一個跨越一個分布存儲器、并行巨型計算機的節(jié)點分布的元素數(shù)組上的多維FFT和跨越這些節(jié)點重新分配元素一起來說明本發(fā)明。更詳細地,本發(fā)明利用基于Torus的體系結構的高效硬件路由和一系列一維FFT一起來實現(xiàn)在分布式存儲器、并行巨型計算機上的多維FFT的一個高效實現(xiàn)。如上所述,依據(jù)本發(fā)明的示教可以被使用用于執(zhí)行在其它數(shù)組維數(shù)數(shù)量中、在其它數(shù)組尺寸中、以及在Torus網絡維度的其它數(shù)量,例如3維Torus中的高效多維FFT。另外,依據(jù)本發(fā)明的示教可以被使用用于在一個任意維度的Torus網絡上,在分布存儲器、并行巨型計算機的節(jié)點之間執(zhí)行“所有-到-所有”通信。
圖9是一個示例方法流程圖900,其描述了依據(jù)本發(fā)明在該分布存儲器、并行巨型計算機上用目的地為其它節(jié)點,例如節(jié)點Q22和Q33的分組填充在圖2的一個示例節(jié)點Q11的一個或多個輸出隊列212。在圖6中說明的“所有-到-所有”重新分配依據(jù)本發(fā)明如下所述實現(xiàn)。假定Qxy表示一個具有一個X坐標值x和一個Y坐標值y(例如,x=1;y=1)的通用節(jié)點(例如,節(jié)點Q11)。因此,依據(jù)“所有-到-所有”重新分布,對于所有可能的值a和b,節(jié)點Qxy(例如,節(jié)點Q11)需要發(fā)送多個總分組(例如,k個分組)到每個節(jié)點Qab(例如,在圖1中說明的Q12、Q13;Q21、Q22、Q23;以及Q31、Q32、Q33;要注意到Q11不把分組發(fā)送到它本身)。為了盡快地執(zhí)行該重新分布,必須高效地使用Torus網絡100的網格鏈接。如果分組沒有以一個高效的次序進行調度,則網格鏈接的使用可能是非常低效率的。例如,如果每個節(jié)點首先僅僅在正X+方向發(fā)送分組,則所有在負X方向的網格鏈接將是空閑的,因此該重新分布不會被盡快地執(zhí)行而且該多域FFT不會被最高效地實現(xiàn)。依據(jù)本發(fā)明,該快速重新分布利用基于Torus網絡100的自適應路徑選擇能力,以便分組調度被高效地實現(xiàn),如下面詳細說明的那樣。
因此參考圖9,有通過Torus網絡100互連的Nx*Ny節(jié)點(即,在圖1中的3×3=9節(jié)點)需要交換分組,這些分組包含二維數(shù)組中的元素。在步驟902處,開始該示例方法。在步驟904處,在每一節(jié)點Q11...Q33處創(chuàng)建一個為在Torus網絡100上的每一節(jié)點分配一個在0,...,Nx*Ny-2之間的唯一編號的數(shù)組(即,random_map[]數(shù)組)。因為一個節(jié)點不把分組發(fā)送給它本身,所以交換分組的節(jié)點總數(shù)是0到Nx*Ny-2。要注意到在步驟904處的分配是隨機地產生的。在這一點上假定一個節(jié)點發(fā)送該數(shù)組的一個元素到另一個節(jié)點所需要的分組總數(shù)是k個分組(例如,6個分組)。此后,假定總共k個分組=d個循環(huán)*b個分組,其中d是必要的循環(huán)數(shù)目以及每次循環(huán)為k個分組總量傳送b個分組。要注意到b可以為性能所必需進行選擇而且可以同樣地等于1。例如,為了傳送總共6個分組,能夠為總數(shù)6個分組選擇在3個循環(huán)中的每一個上讓每個循環(huán)傳送2個分組。因此,在步驟906處,為id從1到d的循環(huán)啟動一次循環(huán)。在步驟908處,一個隊列計數(shù)器被初始化為零。假定有L個輸出隊列212(L大于或等于1)用于存儲分組(或者分組的簡短描述符以便不需要復制實際的分組),以及所有用于一個給定目的地的分組(或者分組的描述符)將被放置到相同的輸出隊列中。在圖9的嵌套循環(huán)內在步驟912處以循環(huán)的次序選擇一個特定輸出隊列iL。在步驟910處,為從節(jié)點0到節(jié)點Nx*Ny-2的iN值初始化一個循環(huán),該iN值作為一個到在步驟904處創(chuàng)建的數(shù)組(即,random_array[])的索引。因為在步驟904中創(chuàng)建的數(shù)組為一個特定iN值進行索引,所以可從該隨機數(shù)組中獲得一個隨機節(jié)點值。在步驟912處,以循環(huán)次序選擇一個第一隊列。在步驟914處,為每個d循環(huán)、從1到b分組的ib初始化一個循環(huán)。隨后,如步驟914和916,多個目的為一個給定隨機節(jié)點iN的b個分組(例如,從上面的示例中b=2個分組)被添加到同分組[node,id,ib]相同的一個輸出隊列iL中。在步驟918處,一旦已經完成了所有d循環(huán),則結束該方法。總而言之參考流程圖900,在一個d循環(huán)期間一個特定節(jié)點“i”(例如,在圖2的節(jié)點Q11上的處理器202)將首先把包含用于目的地為一個節(jié)點模數(shù)(i+1,Nx*Ny-1)的數(shù)組中的一個元素的數(shù)據(jù)的b個數(shù)量的分組放置在一個第一輸出隊列中,然后特定節(jié)點“i”將把包含用于目的地為一個節(jié)點模數(shù)(i+2,Nx*Ny-1)的數(shù)組中的一個元素的數(shù)據(jù)的b個分組放置到下一個輸出隊列中,諸如此類直到到達節(jié)點模數(shù)(i+(Nx*Ny-1),Nx*Ny-1)為止。當為一個給定循環(huán)已經把b個分組插入到該輸出隊列中時,重復這個處理過程直到d循環(huán)已經全部都完成了為止。上述重新分布實現(xiàn)了在圖1的Torus網絡100上非常高的網格鏈接使用,由此高效地實現(xiàn)了依據(jù)本發(fā)明的多維FFT。
圖10是一個示例方法流程圖1000,其描述了依據(jù)本發(fā)明,在一個或多個在圖2中的示例節(jié)點Q11上的輸出隊列212中的分組如何被流入到一個注入FIFO210中用于在該Torus網絡100上的后續(xù)插入。在詳細地描述圖10之前,要注意到圖9中的填充和圖10中的流出可以彼此同時執(zhí)行。在步驟1002處,開始該示例方法。在步驟1004處確定是否全部L輸出隊列212都為空。在步驟1006處,為iL從1到L啟動一個循環(huán),以在所有L輸出隊列上從1至L進行迭代。在步驟1008處確定一個特定輸出隊列iL是否是空的。如果輸出隊列iL是空的,步驟1006處該方法繼續(xù)到下一個iL輸出隊列。否則,在步驟1010處,為在該輸出隊列iL標題的一個分組,獲得用于經由Torus網絡100路由該分組的可能方向。例如參考圖1,假定節(jié)點Q11把一個目的地為節(jié)點Q22的分組放置到一個輸出隊列iL中。該分組可以以X+方向(經由網格鏈接108)從節(jié)點Q11傳播繼之以Y方向(經由網格鏈接110)以到達節(jié)點Q22,或者它可以在Y方向(經由網格鏈接106)傳播繼之以X+方向(經由網格鏈接112)以到達節(jié)點Q22?,F(xiàn)在回到圖10,在步驟1012處,進一步確定是否在用于分組的可能方向中的、在圖2中的全部FIFO 210是滿的。如上所述,每一注入FIFO 210具有一個與它相關聯(lián)的邏輯方向(例如,X+),其表示任何被放置到該注入FIFO 210中的分組能夠在相關的邏輯方向(例如,X+方向)中進行移動。如果用于分組方向的注入FIFO 210是滿的,則該方法跳過當前輸出隊列并且通過在步驟1006處迭代到下一個輸出隊列繼續(xù)。否則,在步驟1014處,該分組在一個用于那個分組的可能方向中,從該輸出隊列移動到一個最不充滿的FIFO 212。要注意到分組以一個循環(huán)次序從輸出隊列中除去,用于插入到在圖2中說明的注入FIFO 210中。在該分組被移動了之后,在步驟1008處為一個在那個輸出隊列中的下一個可用分組繼續(xù)該方法。一旦全部的輸出隊列都是空的,則該方法在步驟1016處結束。
為了更充分地說明描述“全部-到-全部”路由的圖9和10,假定在圖5中的節(jié)點Q11處的元素行,即元素B11、B12...B19,將經由Torus網絡100跨越在圖6中說明的節(jié)點Q12...Q33進行重新分布。假定節(jié)點的隨機映射具有以下在random_map數(shù)組={Q32;Q22;Q13;Q21;Q23;Q33;Q12;和Q31}中的值。因此,來自節(jié)點Q11的數(shù)組元素次序和它們的目的節(jié)點如下{B12到Q12;B13到Q13;B14到Q21;B15到Q22;B16到Q23;B17到Q31;B18到Q32以及B19到Q33}。這些數(shù)組元素被放置到節(jié)點Q11的FIFO 210中,其如下所示{B18經由X+或者Y-到Q32;B15經由X+或者Y+到Q22;B13經由X-到Q13;B14經由Y+到Q21;B16經由Y+或者X-到Q23;B19經由X-或者Y-到Q33;B12經由X+到Q12;以及B17經由Y-到Q31}。因此例如,在節(jié)點Q11上FIFO 210可以如在下面在表格1中說明的那樣進行填充。
表格1
盡管注入FIFO的數(shù)目在上面被描述為等于網格鏈接到一個節(jié)點的數(shù)目(例如,4個FIFO和4個網格鏈接)的事實,一個被局限于至少一個特定網格鏈接的注入FIFO的使用在當注入FIFO的數(shù)量不等于網格鏈接數(shù)目時也是非常適合的。例如,如果有比網格鏈接更少的注入FIFO,則一個緩存器的使用可以被限制到幾個特定網格鏈接中的至少一個。對于另一個示例,如果有比網格鏈接更多的注入FIFO,則那里可以有幾個使用被限于至少同一個特定網格鏈接的注入FIFO。
雖然上面參考多維FFT的高效實現(xiàn)描述了數(shù)組重新分布的實現(xiàn),該“所有-到-所有”重新分布也非常適合于經由圖1中的Torus網絡100的、任何類型的數(shù)組重新分布。
雖然已經通過參考它的最佳實施例詳細地顯示和描述了本發(fā)明,但是本領域的那些技術人員必須理解在其中可以進行上述及其它形式和細節(jié)中的變化而不背離本發(fā)明的精神和范圍。
權利要求
1.一種用于高效地實現(xiàn)一個多維數(shù)組的多維快速傅里葉變換(FFT)的方法,其中該多維數(shù)組包含多個最初分布在一個包含多個經由一個網絡進行通信的節(jié)點的多節(jié)點計算機系統(tǒng)中的元素,該方法包含(a)經由該網絡跨越該計算機系統(tǒng)的多個節(jié)點分布在一個第一維度中的、該數(shù)組的多個元素以便于一個第一一維FFT;(b)在第一維度中、分布在每個節(jié)點處的數(shù)組元素上執(zhí)行第一一維FFT;(c)通過網絡,經由跨越該計算機系統(tǒng)的其它節(jié)點、以隨機次序的“所有-到-所有”分布,在一個第二維度中在每個節(jié)點處重新分布一維FFT-轉換的元素;以及(d)在在第二維度中、在每個節(jié)點處重新分布的數(shù)組中的元素上執(zhí)行一個第二一維FFT,其中隨機次序便于網絡的高效利用由此高效地實現(xiàn)多維FFT。
2.如權利要求1所述用于高效地實現(xiàn)一個多維FFT的方法,其特征在于該方法進一步包含步驟經由通過網絡跨越計算機系統(tǒng)的其它節(jié)點、以隨機次序的“所有-到-所有”分布,在一個第三維度中、在每一節(jié)點處重新分布該數(shù)組中的元素;在第三維度中、在每個節(jié)點處重新分布的數(shù)組中的元素上執(zhí)行一個一維FFT;以及重復跨越節(jié)點以隨機次序重新分布數(shù)組元素的步驟和為后續(xù)維度在每一節(jié)點處在重新分布的元素上執(zhí)行一維FFT的步驟。
3.如權利要求1所述用于高效地實現(xiàn)一個多維FFT的方法,其特征在于該方法包含一個產生其它節(jié)點的一個隨機次序用于在每一節(jié)點處重新分布該一維FFT轉換了的元素的步驟。
4.如權利要求3所述用于高效地實現(xiàn)一個多維FFT的方法,其特征在于多個元素中的每一個經由多個總計分組在計算機系統(tǒng)的節(jié)點之間重新分布。
5.如權利要求4所述用于高效地實現(xiàn)一個多維FFT的方法,其特征在于該方法進一步包含步驟在每一節(jié)點處提供多個輸出隊列;以產生的隨機次序經過其它節(jié)點迭代多次;以及在每一次迭代期間,向一個用于每一其它節(jié)點的一個輸出隊列輸出這多個總計分組中的至少一個分組。
6.如權利要求5所述用于高效地實現(xiàn)一個多維FFT的方法,其特征在于該方法進一步包含步驟提供多個注入先進先出(FIFO)緩存器,每個FIFO緩存器用于在網絡上在至少一個特定方向中傳輸分組;經由一個節(jié)點處的多個輸出隊列進行迭代以標識在每個隊列標題的一個分組;獲得與在每個隊列標題的分組相關聯(lián)的可能路由方向;以及以一個與該分組相關聯(lián)的可能路由方向,把分組從每個隊列的標題移動到一個最不充滿的FIFO緩存器中。
7.一個用于高效地實現(xiàn)一個多維數(shù)組的多維快速傅里葉變換(FFT)的系統(tǒng),其中該多維數(shù)組包含多個最初分布在一個包含多個經由一個網絡進行通信的節(jié)點的多節(jié)點計算機系統(tǒng)中的元素,該系統(tǒng)包含(a)用于經過該網絡跨越該計算機系統(tǒng)的多個節(jié)點分布在一個第一維度中的、該數(shù)組的多個元素以便于一個第一一維FFT的裝置;(b)用于在在第一維度中、分布在每個節(jié)點處的數(shù)組元素上執(zhí)行第一一維FFT的裝置;(c)用于通過網絡,經由跨越該計算機系統(tǒng)的其它節(jié)點、以隨機次序的“所有-到-所有”分布,在一個第二維度中在每個節(jié)點處重新分布一維FFT-轉換的元素的裝置;以及(d)用于在在第二維度中、在每個節(jié)點處重新分布的數(shù)組中的元素上執(zhí)行一個第二一維FFT的裝置,其中隨機次序便于網絡的高效利用由此高效地實現(xiàn)多維FFT。
8.如權利要求7所述用于高效地實現(xiàn)一個多維FFT的系統(tǒng),其特征在于該方法進一步包含步驟用于經由通過網絡跨越計算機系統(tǒng)的其它節(jié)點、以隨機次序的“所有-到-所有”分布,在一個第三維度中、在每一節(jié)點處重新分布該數(shù)組中的元素的裝置;用于在在第三維度中、在每個節(jié)點處重新分布的數(shù)組中的元素上執(zhí)行一個一維FFT的裝置;以及用于重復以隨機次序跨越節(jié)點重新分布數(shù)組元素的步驟,和為后續(xù)維度在每個節(jié)點處、在重新分布的元素上執(zhí)行一維FFT的步驟的裝置。
9.如權利要求7所述用于高效地實現(xiàn)一個多維FFT的系統(tǒng),其特征在于該系統(tǒng)包含一個用于產生其它節(jié)點的一個隨機次序用于在每一節(jié)點處重新分布該一維FFT轉換了的元素的裝置。
10.如權利要求9所述用于高效地實現(xiàn)一個多維FFT的系統(tǒng),其特征在于多個元素中的每一個經由多個總計分組在計算機系統(tǒng)的節(jié)點之間重新分布。
11.如權利要求10所述用于高效地實現(xiàn)一個多維FFT的系統(tǒng),其特征在于該方法進一步包含步驟用于在每一節(jié)點處提供多個輸出隊列的裝置;用于以產生的隨機次序經過其它節(jié)點迭代多次的裝置;以及用于在每一次迭代期間,向一個用于每一其它節(jié)點的一個輸出隊列輸出這多個總計分組中的至少一個分組的裝置。
12.如權利要求11所述用于高效地實現(xiàn)一個多維FFT的系統(tǒng),其特征在于該方法進一步包含步驟用于提供多個注入先進先出(FIFO)緩存器的裝置,其中每個FIFO緩存器用于在網絡上在至少一個特定方向中傳輸分組;用于在一個節(jié)點處的多個輸出隊列上進行迭代以標識在每個隊列標題的一個分組的裝置;用于獲得與在每個隊列標題的分組相關聯(lián)的可能路由方向的裝置;以及用于以一個與該分組相關聯(lián)的可能路由方向,把分組從每個隊列的標題移動到一個最不充滿的FIFO緩存器中的裝置。
13.一個程序存儲設備,可觸知地包含一個指令程序,該指令程序可由一個機器執(zhí)行來執(zhí)行一種用于高效地實現(xiàn)一個多維數(shù)組的多維快速傅里葉變換(FFT)的方法,其中該多維數(shù)組包含多個最初分布在一個包含多個經由一個網絡進行通信的節(jié)點的多節(jié)點計算機系統(tǒng)中的元素,該方法包含(a)經過該網絡跨越該計算機系統(tǒng)的多個節(jié)點,分布在一個第一維度中的、該數(shù)組的多個元素以便于一個第一一維FFT;(b)在在第一維度中、分布在每個節(jié)點處的數(shù)組元素上執(zhí)行第一一維FFT;(c)通過網絡,經由跨越該計算機系統(tǒng)的其它節(jié)點、以隨機次序的“所有-到-所有”分布,在一個第二維度中在每個節(jié)點處重新分布一維FFT-轉換了的元素;以及(d)在在第二維度中、在每個節(jié)點處重新分布的數(shù)組中的元素上執(zhí)行一個第二一維FFT,其中隨機次序便于網絡的高效利用由此高效地實現(xiàn)多維FFT。
14.如權利要求13所述用于高效地實現(xiàn)一個多維FFT的程序存儲設備,其特征在于該方法進一步包含步驟經由通過網絡跨越計算機系統(tǒng)的其它節(jié)點、以隨機次序的“所有-到-所有”分布,在一個第三維度中、在每一節(jié)點處重新分布該數(shù)組中的元素;在第三維度中、在每個節(jié)點處重新分布的數(shù)組中的元素上執(zhí)行一個一維FFT;以及重復跨越節(jié)點以隨機次序重新分布數(shù)組元素的步驟和為后續(xù)維度在在每一節(jié)點處重新分布的元素上執(zhí)行一維FFT的步驟。
15.如權利要求13所述用于高效地實現(xiàn)一個多維FFT的程序存儲設備,其特征在于該方法包含一個產生其它節(jié)點的一個隨機次序用于在每一節(jié)點處重新分布該一維FFT轉換了的元素的步驟。
16.如權利要求15所述用于高效地實現(xiàn)一個多維FFT的程序存儲設備,其特征在于多個元素中的每一個經由多個總計分組在計算機系統(tǒng)的節(jié)點之間重新分布。
17.如權利要求16所述用于高效地實現(xiàn)一個多維FFT的程序存儲設備,其特征在于該方法進一步包含步驟在每一節(jié)點處提供多個輸出隊列;以產生的隨機次序經由其它節(jié)點進行迭代多次;以及在每一次迭代期間,向一個用于每一其它節(jié)點的一個輸出隊列輸出這多個總計分組中的至少一個分組。
18.如權利要求17所述用于高效地實現(xiàn)一個多維FFT的程序存儲設備,其特征在于該方法進一步包含步驟提供多個注入先進先出(FIFO)緩存器,每個FIFO緩存器用于在網絡上在至少一個特定方向中傳輸分組;通過在一個節(jié)點處的多個輸出隊列進行迭代以標識在每個隊列標題的一個分組;獲得與在每個隊列標題的分組相關聯(lián)的可能路由方向;以及以一個與該分組相關聯(lián)的可能路由方向,把分組從每個隊列的標題移動到一個最不充滿的FIFO緩存器中。
19.一種用于高效地重新分布一個多維數(shù)組的方法,其中該多維數(shù)組包含多個最初分布在一個包含多個經由一個網絡進行通信的節(jié)點的多節(jié)點計算機系統(tǒng)中的元素,該方法包含通過網絡、經由以隨機次序跨越該計算機系統(tǒng)的其它節(jié)點的“所有-到-所有”分布在每個節(jié)點處重新分布這些元素,其中該隨機次序便于網絡的高效利用。
20.如權利要求19所述用于高效地重新分布一個多維數(shù)組的方法,其特征在于該方法包含一個產生其它節(jié)點的一個隨機次序用于在每一節(jié)點處重新分布這些元素的步驟。
21.如權利要求20所述用于高效地重新分布一個多維數(shù)組的方法,其特征在于多個元素中的每一個經由多個總計分組在計算機系統(tǒng)的節(jié)點之間重新分布。
22.如權利要求21所述用于高效地重新分布一個多維數(shù)組的方法,其特征在于該方法進一步包含步驟在每一節(jié)點處提供多個輸出隊列;以產生的隨機次序經由其它節(jié)點進行迭代多次;以及在每一次迭代期間,向一個用于每一個其它節(jié)點的一個輸出隊列輸出這多個總計分組中的至少一個分組。
23.如權利要求22所述用于高效地重新分布一個多維數(shù)組的方法,其特征在于該方法進一步包含步驟提供多個注入先進先出(FIFO)緩存器,每個FIFO緩存器用于在網絡上在至少一個特定方向中傳輸分組;通過在一個節(jié)點處的多個輸出隊列上進行迭代以標識在每個隊列標題的一個分組;獲得與在每個隊列標題的分組相關聯(lián)的可能路由方向;以及以一個與該分組相關聯(lián)的可能路由方向,把分組從每個隊列的標題移動到一個最不充滿的FIFO緩存器中。
24.一個用于高效地重新分布一個多維數(shù)組的系統(tǒng),其中該多維數(shù)組包含多個最初分布在一個包含多個經由一個網絡進行通信的節(jié)點的多節(jié)點計算機系統(tǒng)中的元素,該系統(tǒng)包含一個用于通過網絡,經由跨越該計算機系統(tǒng)的其它節(jié)點、以隨機次序的“所有-到-所有”分布,在每個節(jié)點處重新分布這些元素的裝置,其中該隨機次序便于網絡的高效利用。
25.如權利要求24所述用于高效地重新分布一個多維數(shù)組的系統(tǒng),其特征在于該方法包含一個用于產生其它節(jié)點的一個隨機次序用于在每一節(jié)點處重新分布這些元素的裝置。
26.如權利要求25所述用于高效地重新分布一個多維數(shù)組的系統(tǒng),其特征在于多個元素中的每一個經由多個總計分組在計算機系統(tǒng)的節(jié)點之間重新分布。
27.如權利要求26所述用于高效地重新分布一個多維數(shù)組的系統(tǒng),其特征在于該系統(tǒng)進一步包含用于在每一節(jié)點處提供多個輸出隊列的裝置;用于以產生的隨機次序經由其它節(jié)點迭代多次的裝置;以及用于在每一次迭代期間,向一個用于每一個其它節(jié)點的一個輸出隊列輸出這多個總計分組中的至少一個分組的裝置。
28.如權利要求27所述用于高效地重新分布一個多維數(shù)組的系統(tǒng),其特征在于該系統(tǒng)進一步包含用于提供多個注入先進先出(FIFO)緩存器的裝置,其中每個FIFO緩存器用于在網絡上在至少一個特定方向中傳輸分組;用于通過在一個節(jié)點處的多個輸出隊列進行迭代以標識在每個隊列標題的一個分組的裝置;用于獲得與在每個隊列標題的分組相關聯(lián)的可能路由方向的裝置;以及以一個與該分組相關聯(lián)的可能路由方向,把分組從每個隊列的標題移動到一個最不充滿的FIFO緩存器中。
29.一個程序存儲設備,可觸知地包含一個指令程序,該指令程序可由一個機器執(zhí)行來執(zhí)行一種用于高效地重新分布一個多維數(shù)組的方法,其中該多維數(shù)組包含多個最初分布在一個包含多個經由一個網絡進行通信的節(jié)點的多節(jié)點計算機系統(tǒng)中的元素,該方法包含通過網絡、經由以隨機次序跨越該計算機系統(tǒng)的其它節(jié)點的“所有-到-所有”分布,在每個節(jié)點處重新分布這些元素,其中該隨機次序便于網絡的高效利用。
30.如權利要求29所述用于高效地重新分布一個多維數(shù)組的程序存儲設備,其特征在于 該方法包含一個產生其它節(jié)點的一個隨機次序用于在每一節(jié)點處重新分布這些元素的步驟。
31.如權利要求29所述用于高效地重新分布一個多維數(shù)組的程序存儲設備,其特征在于多個元素中的每一個經由多個總計分組在計算機系統(tǒng)的節(jié)點之間重新分布。
32.如權利要求31所述用于高效地重新分布一個多維數(shù)組的程序存儲設備,其特征在于該方法進一步包含步驟在每一節(jié)點處提供多個輸出隊列;以產生的隨機次序經由其它節(jié)點進行迭代多次;以及在每一次迭代期間,向一個用于每一個其它節(jié)點的一個輸出隊列輸出這多個總計分組中的至少一個分組。
33.如權利要求32所述用于高效地重新分布一個多維數(shù)組的程序存儲設備,其特征在于該方法進一步包含步驟提供多個注入先進先出(FIFO)緩存器,每個FIFO緩存器用于在網絡上在至少一個特定方向中傳輸分組;通過在一個節(jié)點處的多個輸出隊列進行迭代以標識在每個隊列標題的一個分組;獲得與在每個隊列標題的分組相關聯(lián)的可能路由方向;以及以一個與該分組相關聯(lián)的可能路由方向,把分組從每個隊列的標題移動到一個最不充滿的FIFO緩存器中。
全文摘要
本發(fā)明的目的在于一種用于高效地實現(xiàn)一個多維數(shù)組的多維快速傅里葉變換(FFT)的方法、系統(tǒng)和程序存儲設備,其中該多維數(shù)組包含多個最初分布在一個包含多個經由一個網絡進行通信的節(jié)點的多節(jié)點計算機系統(tǒng)中的元素,其包含經由該網絡跨越該計算機系統(tǒng)的多個節(jié)點分布在一個第一維度中的、該數(shù)組的多個元素以便于一個第一一維FFT;在第一維度中、分布在每個節(jié)點處的數(shù)組元素上執(zhí)行第一一維FFT;通過網絡,經由跨越該計算機系統(tǒng)的其它節(jié)點、以隨機次序的“所有-到-所有”分布,在一個第二維度中在每個節(jié)點處重新分布一維FFT-轉換了的元素;以及在第二維度中、在每個節(jié)點處重新分布的數(shù)組中的元素上執(zhí)行一個第二一維FFT,其中隨機次序便于網絡的高效利用由此高效地實現(xiàn)多維FFT。該“所有-到-所有”重新分布或者數(shù)組元素在除了在分布存儲器、并行巨型計算機上的多維FFT之外的應用中被進一步更高效地實現(xiàn)。
文檔編號G06F13/24GK1493042SQ02805377
公開日2004年4月28日 申請日期2002年2月25日 優(yōu)先權日2001年2月24日
發(fā)明者蓋恩V·班諾特, 蓋恩V 班諾特, ぜ永, 陳東, ぜ幟放僚, 艾倫G·加拉, 海德伯格, 馬克E·賈姆帕帕, 德D 斯坦馬徹-伯羅, 菲利普·海德伯格, 伯克哈德D·斯坦馬徹-伯羅, 斯M 弗拉納斯, 帕夫羅斯M·弗拉納斯 申請人:國際商業(yè)機器公司