(57)【特許請求の範囲】
【請求項１】
ネットワークを介して通信する複数のノードを含むマルチノード・コンピュータ・システムで当初に分配される複数の要素を含む多次元配列の多次元高速フーリエ変換（ＦＦＴ）を実施する方法であって、
（ａ）前記マルチノード・コンピュータ・システムが、前記多次元ＦＦＴの第１の次元の１次元ＦＦＴを実施するために、前記配列の前記複数の要素を第１次元で前記コンピュータ・システムの前記複数のノードにまたがって前記ネットワークを介して分配することと、
（ｂ）前記複数のノードの各ノードが、分配された前記配列の前記要素に対して前記第１次元で前記第１の１次元ＦＦＴを実行することと、
（ｃ）前記各ノードが、各ノードの１次元ＦＦＴ変換された要素の単一の配列要素を第２次元で前記ネットワークを介する前記コンピュータ・システムの自ノードを除くすべての他のノードのそれぞれに分配することであって、当該分配の実行順序が前記すべての他のノードがランダムに配列された実行順序であるように分配することである「すべて対すべて」分配を介して再分配することと、
（ｄ）各ノードが再分配された前記配列の要素に対する前記多次元ＦＦＴの第２の次元の１次元ＦＦＴを前記第２次元で実行することと
を含む、多次元ＦＦＴを実施する方法。
【請求項２】
前記方法が、さらに、
各ノードが前記配列の前記要素の単一の配列要素を、前記ネットワークを介する前記コンピュータ・システムのすべての他のノードに分配するランダムな順序での「すべて対すべて」分配を介して第３次元で再分配するステップと、
各ノードが再分配された前記配列の要素に対して前記第３次元で１次元ＦＦＴを実行するステップと、
前記マルチノード・コンピュータ・システムが、ノードにまたがるランダムな順序で前記配列の前記要素を再分配する前記ステップおよび各ノードで後続の次元について前記再分配された要素に対して前記１次元ＦＦＴを実行する前記ステップとを繰り返すステップと
を含む、請求項１に記載の多次元ＦＦＴを実施する方法。
【請求項３】
前記方法が、前記マルチノード・コンピュータ・システムが、各ノードの前記１次元ＦＦＴ変換された要素を再分配するために他のノードのランダムな順序を生成するステップを含む、請求項１に記載の多次元ＦＦＴを実施する方法。
【請求項４】
前記複数の要素のそれぞれが、複数の総パケットを介して前記コンピュータ・システムのノードの間で再分配される、請求項３に記載の多次元ＦＦＴを実施する方法。
【請求項５】
前記方法が、さらに、
各ノードが複数の出力キューを設けるステップと、
前記各ノードが、他のノードごとに、各繰返し中に前記複数の総パケットの少なくとも１つのパケットを出力キューに出力するステップと
を含む、請求項４に記載の多次元ＦＦＴを実施する方法。
【請求項６】
前記方法が、さらに、
前記各ノードが、複数の注入先入れ先出し（ＦＩＦＯ）バッファを設けるステップであって、各ＦＩＦＯバッファが、前記ネットワーク上の少なくとも特定の方向でパケットを送出する、ステップと、
前記各ノードが、前記複数の出力キューを通して各キューの頭部にあるパケットの識別を繰り返すステップと、
前記各ノードが、各キューの頭部にある前記パケットに関連する可能な経路指定方向を得るステップと、
前記各ノードが、前記パケットを、各キューの頭部から、前記パケットに関連する前記可能な経路指定方向の１つの最も満杯でないＦＩＦＯバッファに移動するステップと
を含む、請求項５に記載の多次元ＦＦＴを実施する方法。
【請求項７】
ネットワークを介して通信する複数のノードを含むマルチノード・コンピュータ・システムで当初に分配される複数の要素を含む多次元配列の多次元高速フーリエ変換（ＦＦＴ）を実施するシステムであって、
（ａ）前記多次元ＦＦＴの第１の次元の１次元ＦＦＴを実施するために、前記配列の前記複数の要素を第１次元で前記コンピュータ・システムの前記複数のノードにまたがって前記ネットワークを介して分配する手段と、
（ｂ）各ノードで、分配された前記配列の前記要素に対して前記第１次元で前記第１の１次元ＦＦＴを実行する手段と、
（ｃ）各ノードで、１次元ＦＦＴ変換された要素の単一の配列要素を第２次元で前記ネットワークを介する前記コンピュータ・システムの自ノードを除くすべての他のノードのそれぞれに分配することであって、当該分配の実行順序が前記すべての他のノードがランダムに配列された実行順序であるように分配することである「すべて対すべて」分配を介して再分配する手段と、
（ｄ）各ノードで、再分配された前記配列の要素に対する前記多次元ＦＦＴの第２の次元の１次元ＦＦＴを前記第２次元で実行する手段と
を含む、多次元ＦＦＴを実施するシステム。
【請求項８】
前記システムが、さらに、
各ノードで、前記配列の前記要素の単一の配列要素を、前記ネットワークを介する前記コンピュータ・システムのすべての他のノードに分配することであって、当該分配の実行順序が前記すべての他のノードがランダムに配列された実行順序であるように分配することである「すべて対すべて」分配を介して第３次元で再分配する手段と、
各ノードで、再分配された前記配列の要素に対して前記第３次元で１次元ＦＦＴを実行する手段と、
ノードにまたがるランダムな順序で前記配列の前記要素を再分配する前記ステップおよび各ノードで後続の次元について前記再分配された要素に対して前記１次元ＦＦＴを実行する前記ステップとを繰り返す手段と
を含む、請求項７に記載の多次元ＦＦＴを実施するシステム。
【請求項９】
前記システムが、各ノードの前記１次元ＦＦＴ変換された要素を再分配するために他のノードのランダムな順序を生成する手段を含む、請求項７に記載の多次元ＦＦＴを実施するシステム。
【請求項１０】
前記複数の要素のそれぞれが、複数の総パケットを介して前記コンピュータ・システムのノードの間で再分配される、請求項９に記載の多次元ＦＦＴを実施するシステム。
【請求項１１】
前記システムが、さらに、
各ノードで複数の出力キューを設ける手段と、
各ノードで、他のノードごとに、各繰返し中に前記複数の総パケットの少なくとも１つのパケットを出力キューに出力する手段と
を含む、請求項１０に記載の多次元ＦＦＴを実施するシステム。
【請求項１２】
前記システムが、さらに、
前記各ノードで、複数の注入先入れ先出し（ＦＩＦＯ）バッファを設ける手段であって、各ＦＩＦＯバッファが、前記ネットワーク上の少なくとも特定の方向でパケットを送出する、手段と、
ノードで前記複数の出力キューを通して各キューの頭部にあるパケットの識別を繰り返す手段と、
前記各ノードで、各キューの頭部にある前記パケットに関連する可能な経路指定方向を得る手段と、
前記各ノードで、前記パケットを、各キューの頭部から、前記パケットに関連する前記可能な経路指定方向の１つの最も満杯でないＦＩＦＯバッファに移動する手段と
を含む、請求項１１に記載の多次元ＦＦＴを実施するシステム。
【請求項１３】
請求項１乃至６のいずれか１項に記載の方法の各ステップを前記マルチノード・コンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的には、たとえば科学、数学、工学、および類似する分野での計算に適用される、分散メモリ・メッセージ受渡並列マルチノード・コンピュータおよび関連システム・ソフトウェアに関する。具体的には、本発明は、分散メモリ並列スーパーコンピュータでの多次元高速フーリエ変換（すなわち「ＦＦＴ」）を効率的に実施するシステムおよび方法に関する。
【背景技術】
【０００２】
フーリエ変換（すなわち「ＦＴ」）などの線形変換は、科学、数学、工学、および類似する分野でのある範囲の問題を解くのに広く使用されてきた。ＦＴでは、所与の問題が、より簡単に解ける問題に変えられ、ＦＴは、多くの異なる応用分野で使用される。たとえば、Ｎ変数の系について、ＦＴは、本質的に、座標空間から運動量空間へのＮ個の変数の変更を表し、各変数の新しい値は、古い変数のすべての値に依存する。そのようなＮ空間の系は、通常は、コンピュータではＮ要素の配列として保管される。ＦＴは、一般に、高速フーリエ変換（すなわち「ＦＦＴ」）を使用して計算される。ＦＦＴは、Press他によるNumerical Recipes（W. H. Press、S. A. Teukolsky、W. A.Vetterling、Brian P Flannery、「Numerical Recipes in Fortran」、Cambridge UniversityPress, 1986, 1992, ISBN: 0-521-43064-X、490〜529頁）などの多数の標準テキストに記載されている。ほとんどのコンピュータ製造業者が、その業者の特定のプロセッサのためにＦＦＴを最適化するライブラリ関数呼出しを提供する。たとえば、ＦＦＴは、ＩＢＭ社のＲＳ／６０００プロセッサ上で、Engineeringand Scientific Subroutine Libraryで完全に最適化される。これらのライブラリ・ルーチンは、ＦＦＴの実行に必要なデータ（すなわち、前述の要素）が、ノードにローカルなメモリに常駐することを必要とする。
【０００３】
多次元ＦＦＴでは、多次元配列のＮ個の要素が、分散メモリ並列マルチノード・コンピュータのノードにまたがる複数の次元に分配される。分散メモリ並列マルチノード・コンピュータで実行される多くのアプリケーションは、実行時間の大きい部分を多次元ＦＦＴの計算に費やす。分散メモリ並列マルチノード・コンピュータの動機づけが、より高速の実行なので、分配された配列の多次元ＦＦＴの高速計算が、非常に重要である。配列のＮ個の要素は、当初は、アプリケーションに固有のある任意の形でノードに分配される。多次元ＦＦＴを計算するために、要素の配列を再分配して、アレイの各ノード上の部分が、ｘ次元の要素の完全な行からなるようにする。その後、各ノードのｘ次元の各行に対する１次元ＦＦＴを実行する。この行は、ノードにローカルであり、各行の各１次元ＦＦＴが、互いに独立なので、各ノードで実行される１次元ＦＦＴは、他のノードとの通信を必要とせず、上で述べたライブラリ・ルーチンを使用して実行することができる。１次元ＦＦＴの後に、配列要素を再分配し、配列の各ノード上の部分を、ｙ次元の完全な行からなるようにする。その後、各ノードでｙ次元の各行に対するＦＦＴを実行する。配列に３つ以上の次元がある場合には、ｘ次元およびｙ次元を超える配列の連続する次元ごとに、再分配および１次元ＦＦＴを繰り返す。結果の配列を、アプリケーションに固有のある任意の形で再分配することができる。
【０００４】
順番でのｘ次元およびｙ次元の扱いは、多次元ＦＦＴにとって重要ではない。そうではなく、配列の次元は、どの順序でも扱うことができる。あるアプリケーションまたはあるコンピュータについて、ある順序によってある効率を利用することができ、したがって、他の順序より高速の実行を有することができる。たとえば、ノードにまたがる配列の初期分配は、アプリケーションに固有の任意の形であるが、ｙ次元での１次元ＦＦＴに必要な分配と一致する場合がある。この場合には、多次元ＦＦＴで、ｘ次元および残りの他の次元を扱う前に、まずｙ次元を扱うことが最も高速になる可能性がある。
【０００５】
上で説明した多次元ＦＦＴの実施形態では、１次元ＦＦＴの間の配列の再分配のそれぞれが、「すべて対すべて」通信または再分配の例である。すべて対すべての再分配では、分散メモリ並列マルチノード・コンピュータの各ノードが、複数のパケットを使用して他のすべてのノードに一意のデータ（すなわち配列の要素）を送る。上で述べたように、分散メモリ並列マルチノード・コンピュータでの多次元ＦＦＴの高速計算は、非常に重要である。上で説明した実施形態では、通常は、実行時間の大きい部分が、分散メモリ並列マルチノード・コンピュータのノードにまたがる配列の再分配に費やされる。具体的に言うと、実行時間の大きい部分が、分散メモリ並列マルチノード・コンピュータのノードにまたがる配列の要素の「すべて対すべて」再分配に費やされる。
【０００６】
したがって、当技術分野には、分散メモリ並列スーパーコンピュータで多次元ＦＦＴを効率的に実施するシステムおよび方法を提供する必要がある。具体的に言うと、当技術分野には、多次元ＦＦＴを効率的に実施する、分散メモリ並列スーパーコンピュータで「すべて対すべて」再分配を効率的に実施するシステムおよび方法を提供する必要がある。
【非特許文献１】W. H. Press、S. A. Teukolsky、W. A.Vetterling、Brian P Flannery、「Numerical Recipes in Fortran」、Cambridge UniversityPress, 1986, 1992, ISBN: 0-521-43064-X、490〜529頁
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、本発明の目的は、分散メモリ並列スーパーコンピュータで分配される配列に対する多次元ＦＦＴを効率的に実施するシステムおよび方法を提供することである。
【０００８】
本発明のもう１つの目的は、分散メモリ並列スーパーコンピュータでの「すべて対すべて」再分配を効率的に実施することによって、配列に対する多次元ＦＦＴを効率的に実施するシステムおよび方法を提供することである。
【０００９】
本発明のもう１つの目的は、分散メモリ並列スーパーコンピュータでの多次元ＦＦＴ以外のアプリケーションで「すべて対すべて」再分配を効率的に実施するシステムおよび方法を提供することである。
【課題を解決するための手段】
【００１０】
本発明の１実施形態によれば、ネットワークを介して通信する複数のノードを含むマルチノード・コンピュータ・システムで当初に分配される複数の要素を含む多次元配列の多次元高速フーリエ変換（ＦＦＴ）を効率的に実施する方法であって、第１の１次元ＦＦＴを容易にするために、前記配列の前記複数の要素を第１次元で前記コンピュータ・システムの前記複数のノードにまたがって前記ネットワークを介して分配することと、各ノードの分配された前記配列の前記要素に対して前記第１次元で前記第１の１次元ＦＦＴを実行することと、各ノードの１次元ＦＦＴ変換された要素を第２次元で前記ネットワークを介する前記コンピュータ・システムの他のノードにまたがるランダムな「すべて対すべて」分配を介して再分配することと、各ノードの再分配された前記配列の要素に対する第２の１次元ＦＦＴを前記第２次元で実行することであって、前記ランダムな順序が、前記ネットワークの効率的な利用を容易にし、これによって前記多次元ＦＦＴが効率的に実施される、実行することとを含む、多次元ＦＦＴを効率的に実施する方法が提供される。
【００１１】
本発明のもう１つの態様によれば、ネットワークを介して通信する複数のノードを含むマルチノード・コンピュータ・システムで当初に分配される複数の要素を含む多次元配列の多次元高速フーリエ変換（ＦＦＴ）を効率的に実施するシステムであって、第１の１次元ＦＦＴを容易にするために、前記配列の前記複数の要素を第１次元で前記コンピュータ・システムの前記複数のノードにまたがって前記ネットワークを介して分配する手段と、各ノードの分配された前記配列の前記要素に対して前記第１次元で前記第１の１次元ＦＦＴを実行する手段と、各ノードの１次元ＦＦＴ変換された要素を第２次元で前記ネットワークを介する前記コンピュータ・システムの他のノードにまたがるランダムな「すべて対すべて」分配を介して再分配する手段と、各ノードの再分配された前記配列の要素に対する第２の１次元ＦＦＴを前記第２次元で実行する手段であって、前記ランダムな順序が、前記ネットワークの効率的な利用を容易にし、これによって前記多次元ＦＦＴが効率的に実施される、実行する手段とを含む、多次元ＦＦＴを効率的に実施するシステムが提供される。
【００１２】
本発明のもう１つの実施形態によれば、ネットワークを介して通信する複数のノードを含むマルチノード・コンピュータ・システムで当初に分配される複数の要素を含む多次元配列の多次元高速フーリエ変換（ＦＦＴ）を効率的に実施する方法を実行するために計算機によって実行可能な命令のプログラムを有形に実施するプログラム記憶装置であって、前記方法が、第１の１次元ＦＦＴを容易にするために、前記配列の前記複数の要素を第１次元で前記コンピュータ・システムの前記複数のノードにまたがって前記ネットワークを介して分配することと、各ノードの分配された前記配列の前記要素に対して前記第１次元で前記第１の１次元ＦＦＴを実行することと、各ノードの１次元ＦＦＴ変換された要素を第２次元で前記ネットワークを介する前記コンピュータ・システムの他のノードにまたがるランダムな「すべて対すべて」分配を介して再分配することと、各ノードの再分配された前記配列の要素に対する第２の１次元ＦＦＴを前記第２次元で実行することであって、前記ランダムな順序が、前記ネットワークの効率的な利用を容易にし、これによって前記多次元ＦＦＴが効率的に実施される、実行することとを含む、多次元ＦＦＴを効率的に実施するプログラム記憶装置が提供される。
【００１３】
本発明のもう１つの実施形態によれば、ネットワークを介して通信する複数のノードを含むマルチノード・コンピュータ・システムで当初に分配される複数の要素を含む多次元配列を効率的に再分配する方法であって、前記方法が、前記ネットワークを介する前記コンピュータ・システムの他のノードにまたがるランダムな順序での「すべて対すべて」分配を介して各ノードの前記要素を再分配することを含み、前記ランダムな順序が、前記ネットワークの効率的利用を容易にする、多次元配列を効率的に再分配する方法が提供される。
【００１４】
本発明のもう１つの実施形態によれば、ネットワークを介して通信する複数のノードを含むマルチノード・コンピュータ・システムで当初に分配される複数の要素を含む多次元配列を効率的に再分配するシステムであって、前記システムが、前記ネットワークを介する前記コンピュータ・システムの他のノードにまたがるランダムな順序での「すべて対すべて」分配を介して各ノードの前記要素を再分配する手段を含み、前記ランダムな順序が、前記ネットワークの効率的利用を容易にする、多次元配列を効率的に再分配するシステムが提供される。
【００１５】
本発明のもう１つの実施形態によれば、ネットワークを介して通信する複数のノードを含むマルチノード・コンピュータ・システムで当初に分配される複数の要素を含む多次元配列を効率的に再分配する方法を実行するために計算機によって実行可能な命令のプログラムを有形に実施するプログラム記憶装置であって、前記方法が、前記ネットワークを介する前記コンピュータ・システムの他のノードにまたがるランダムな順序での「すべて対すべて」分配を介して各ノードの前記要素を再分配することを含み、前記ランダムな順序が、前記ネットワークの効率的利用を容易にする、多次元配列を効率的に再分配する記憶装置が提供される。
【００１６】
本発明の目的、特徴、および利点は、添付図面と組み合わせて解釈される以下の詳細な説明に鑑みて、当業者に明白になる。
【発明を実施するための最良の形態】
【００１７】
本発明は、分散メモリ並列スーパーコンピュータで多次元高速フーリエ変換（すなわち「ＦＦＴ」）を効率的に実施するシステムおよび方法を対象とする。具体的には、本発明によって、多次元ＦＦＴの効率的な実施を達成するために、分散メモリ並列スーパーコンピュータのノードに分配された要素の効率的な「すべて対すべて」再分配が実施される。
【００１８】
本発明によれば、ＦＦＴは、一連の１次元変換として、分散メモリ並列スーパーコンピュータで実施され、この１次元変換は、分散メモリ並列スーパーコンピュータのノードにまたがる多次元配列の１つまたは複数の「すべて対すべて」再分配を必要とする。この分散メモリ並列スーパーコンピュータでは、スーパーコンピュータのノードの相互接続およびノード間の通信に、トーラスベースのネットワークが使用される。下で説明するように、各ノードによって、トーラスベースのネットワークを介して相互接続されるスーパーコンピュータのノードにまたがる配列の要素を含むパケットを効率的に経路指定するハードウェア・ルータが実施される。したがって、本発明では、多次元配列の一連の１次元変換としての多次元ＦＦＴの実施形態を、前述のハードウェア経路指定と結合して、本発明による効率的なＦＦＴ実施形態を得る。
【００１９】
さらに、本発明によれば、分散メモリ並列スーパーコンピュータに、複数のノードが含まれ、このノードのそれぞれに、ローカル・メモリを操作する少なくとも１つのプロセッサが含まれる。ノードは、多次元グリッドとして相互接続され、グリッド・リンクを介して通信する。一般性を失わずに、当業者が本発明の説明を簡単に理解できるようにするために、スーパーコンピュータの多次元ノード・グリッドを、例示的な２次元グリッドとして説明する。２次元ノード・グリッドだけが以下の説明で説明されるという事実にかかわらず、本発明の範囲内で、他の次元のノード・グリッドを、本発明の教示に基づいて簡単に提供できることが企図されている。分散メモリ並列スーパーコンピュータで、３次元以上のトーラスベース・アーキテクチャを使用できることに留意されたい。さらに、一般性を失わずに、当業者が本発明の説明を簡単に理解できるようにするために、多次元ＦＦＴによって使用される多次元配列を、例示的な２次元配列として説明する。２次元配列だけが以下の説明で説明されるという事実にかかわらず、本発明の範囲内で、追加の次元の配列を、本発明の教示に基づいて簡単に提供できることが企図されている。さらに、トーラスベース・アーキテクチャの次元の数と配列の次元の数の間に対応がないことに留意されたい。配列は、本発明による多次元ＦＦＴを実施するスーパーコンピュータのノードまたはノードのサブセットにまたがって分配できるのに十分なサイズでなければならない。
【００２０】
図１は、本発明による、２次元３×３トーラス・ネットワーク１００を使用する多次元グリッドを介して相互接続された９つのノードを含む分散メモリ並列スーパーコンピュータの例示的な図である。図を簡単にし、わかりやすくするために、ノードの数が、例示的な形で９個のノードに制限されていることと、ノードの数を、分散メモリ並列スーパーコンピュータの特定のアーキテクチャ的要件に応じて大幅に変更できることに留意されたい。図１には、Ｑ１１からＱ３３としてラベルを付けられた９つのノードが示され、これらのノードの対が、グリッド・リンクによって相互接続される。合計で、９ノードのトーラス・ネットワーク１００が、１８個のグリッド・リンクによって相互接続され、各ノードは、めいめいのグリッド・リンクを介してトーラス・ネットワーク１００内の４つの他のノードに直接に相互接続される。メッシュと異なって、例示的な２次元トーラス・ネットワーク１００に、エッジ・ノードが含まれないことに留意されたい。たとえば、ノードＱ１１は、グリッド・リンク１０２を介してノードＱ３１に相互接続され、グリッド・リンク１０４を介してノードＱ１３に相互接続され、グリッド・リンク１０６を介してノードＱ２１に相互接続され、最後に、グリッド・リンク１０８を介してノードＱ１２に相互接続される。もう１つの例では、ノードＱ２２は、グリッド・リンク１１０を介してノードＱ１２に相互接続され、グリッド・リンク１１２を介してノードＱ２１に相互接続され、グリッド・リンク１１４を介してノードＱ３２に相互接続され、最後に、グリッド・リンク１１６を介してノードＱ２３に相互接続される。他のノードは、類似する形で相互接続される。
【００２１】
さらに図１に関して、ノードの間で通信されるデータ（すなわち、配列の要素）は、ネットワーク上で１つまたは複数のパケットで搬送される。ノードの対の間の所与の通信について、通信されるデータの量が、トーラス・ネットワーク１００によってサポートされるパケットサイズを超える場合には、複数のパケットが必要である。パケットには、パケット・ヘッダと、パケットによって担持されるデータが含まれる。パケット・ヘッダには、パケットをソース・ノードから宛先ノードに搬送するためにトーラス・ネットワーク１００が必要とする情報が含まれる。本発明の応用例の分散メモリ並列スーパーコンピュータでは、ネットワーク上の各ノードが、論理アドレスによって識別され、パケット・ヘッダに、宛先アドレスが含まれ、その結果、パケットが、宛先によって識別されるネットワーク上のノードに自動的に経路指定される。
【００２２】
図２は、本発明による、図１の分散メモリ並列スーパーコンピュータからの例示的ノード、たとえばノードＱ１１の詳細な表現２００を示す図である。ノードＱ１１には、ローカル・メモリ２０４を操作する少なくとも１つのプロセッサ２０２が含まれる。ノードには、さらに、グリッド・リンク１０２、１０４、１０６、および１０８でパケットを経路指定するすなわち送出し、受け取る、ルータ２０６が含まれ、これらのグリッド・リンクは、図１に特に示されているように、ノードＱ１１を、それぞれ隣接するノードＱ３１、Ｑ１３、Ｑ２１、およびＱ１２に接続する。さらに、ノードには、ルータ２０６によって受け取られた、ローカル・プロセッサ２０２宛のパケットをバッファリングする受取バッファ２０８が含まれる。ローカル・プロセッサ２０２は、受け取りバッファ内にパケットがあるかどうかを判定するために、簡単に周期的に受取バッファ２０８をポーリングし、受取バッファ２０８でバッファリングされるパケットを取り出す。特定のアプリケーションおよびパケットに応じて、ローカル・プロセッサ２０２は、パケットの内容をローカル・メモリ２０４に書き込むことができる。
【００２３】
さらに図２に関して、ノードＱ１１に、４つの注入先入れ先出し（すなわち「ＦＩＦＯ」）バッファ２１０があり、これらのそれぞれに、Ｘ＋、Ｘ−、Ｙ＋、およびＹ−というラベルが付けられている。プロセッサは、アウトバウンド・パケットを、ローカル・メモリ２０４の１つまたは複数の出力キュー２１２に置き、出力キュー２１２は、他のノード宛のパケットを、注入ＦＩＦＯ２１０に置くことができるようになるまで保管する。注入ＦＩＦＯが満杯でない間は、プロセッサは、アウトバウンド・パケットを注入ＦＩＦＯ２１０に置く。特定のパケットが、注入ＦＩＦＯ２１０の頭部に達する時に、そのパケットは、ルータ２０６によって注入ＦＩＦＯ２１０から除去され、ルータ２０６は、そのパケットを、特定のパケットの宛先ノードに向けてグリッド・リンク１０２、１０４、１０６、および１０８に挿入する。４つの注入ＦＩＦＯ２１０は、ルータ２０６によって、およびローカル・プロセッサ２０２のハードウェアによって、同等に扱われる。
【００２４】
さらに図２に関して、ルータ２０６に、複数同時経路指定特性が含まれる。経路指定は、まず、バーチャル・カットスルー経路指定を表す。たとえば、グリッド・リンクの１つの着信パケットが、ノードＱ１１のローカル・プロセッサ２０２宛でない場合に、ルータ２０６は、発信グリッド・リンク１０２、１０４、１０６、および１０８の１つにそのパケットを転送する。ルータ２０６は、ローカル・プロセッサ２０２を伴わずにこの転送を実行する。経路指定は、さらに、最短パス経路指定を表す。たとえば、グリッド・リンク１０４を介して移動する、ノードＱ１１によってノードＱ１３（図１および８参照）に送られるパケットは、最短パス経路を表す。他のすべてのパスが、これより長いはずである。もう１つの例として、ノードＱ１１によってノードＱ２２に送られたパケットは、グリッド・リンク１０６および１１２またはその代わりにグリッド・リンク１０８および１１０を介して移動することができる。このタイプの経路指定は、適応タイプの経路指定を表す。したがって、パケットが、トーラスベース・ネットワーク１００を介して別のノードへの移動でノードを出ることができるグリッド・リンクの選択肢がある場合がある。前の例では、パケットは、グリッド・リンク１０６または１０８を介してノードＱ１１から出ることができる。適応経路指定を用いると、ルータ２０６が、パケットのためにより忙しくない発信グリッド・リンク選択するか、なんらかの他の判断基準に基づいて発信グリッド・リンクを選択できるようになる。適応経路指定は、パケットのソース・ノード、たとえばノードＱ１１で実行されるだけではなく、図１のトーラスベース・ネットワーク１００を介するパケットの宛先ノードへの途中でパケットが通り抜ける中間ノードのそれぞれでも実行されることに留意されたい。図９および１０に関する下の説明で、本発明がトーラスベース・ネットワーク１００上でスーパーコンピュータのノードにまたがってパケットの前述の経路指定をどのように実行するかを特に説明する。
【００２５】
図３は、本発明による、多次元ＦＦＴについて効率的に実施することができる、８１個の要素を含む例示的な２次元の９行×９列配列３００である。例示的な２次元配列３００が、異なる行数および列数を含む他の２次元配列（たとえば１０行×１１列の２次元配列）に簡単に拡張され、この配列を使用して、本発明に従って分散メモリ並列スーパーコンピュータでＦＦＴを実施できることに留意されたい。配列２００では、配列の最初の行に、要素Ａ１１、Ａ１２、…、Ａ１９が含まれ、配列の最初の列に、要素Ａ１１、Ａ２１、…、Ａ９１が含まれる。
【００２６】
図４は、本発明による、図３の２次元配列３００が図１のノードＱ１１からＱ３３にまたがってどのように分配されるかの例示的な分配の図４００である。配列を、当初は、アプリケーションに固有の任意の形でノードにまたがって分配できることに留意されたい。本発明によれば、配列が、再分配され、配列の、各ノードＱ１１、…、１３３上の部分に、図４に示された分配が含まれるようになる。この再分配は、図５および６に関して下で説明するものに類似する。分配の図４００に特に示されているように、図１の各ノードに、図３の２次元配列３００の一部が含まれる。たとえば、ノードＱ１１に、配列３００の最初の行すなわち、要素Ａ１１、Ａ１２、…、Ａ１９が含まれる。もう１つの例として、ノードＱ１２に、配列３００の第２の行すなわち、要素Ａ２１、Ａ２２、…、Ａ２９が含まれる。図４の分配の図４００に特に示されているように、図１の他のノードＱ１３からＱ３３に、それぞれ配列３００の行３から９が含まれることに留意されたい。図４の例示的な分配では、配列要素の特定の行への特定のノードの割当は、重要ではない。そうではなく、割当が実行可能であることに留意されたい。さまざまなアプリケーションおよび／またはコンピュータについて、ある割当で、そのアプリケーションおよび／またはコンピュータによって提供される効率を利用でき、したがって、他の割当より高速の実行が生ずる可能性がある。たとえば、多次元ＦＦＴを実行する最も高速の方法が、ノードＱ１１およびＱ１２の割当を、図４に示された割当の逆にすることである場合がある。
【００２７】
図５は、図１の２次元トーラスベース・ネットワーク１００のノードＱ１１からＱ３３にまたがって分配された図４の２次元配列に対する最初の１次元ＦＦＴを示す例示的な図５００である。上で特に注記したように、本発明による多次元ＦＦＴは、一連の１次元ＦＦＴを実行することによって達成される。したがって、本発明によれば、２次元配列３００の多次元ＦＦＴを、一連の１次元ＦＦＴとして実施することができる。したがって、１次元ＦＦＴが、各ノードに分配された要素の各行に対して実行される。たとえば、１次元ＦＦＴは、ノードＱ１１に分配された要素すなわち、ノードＱ１１に分配された配列３００の最初の行の要素について実行される。１次元ＦＦＴは、各ノードＱ１２からＱ３３の要素（すなわち要素の行）について実行される。結果は、最初の１次元ＦＦＴによって変換された要素の配列である。具体的に言うと、各ノードの各行に対する１次元ＦＦＴの結果は、図５に特に示されたものと同一の長さの行である。たとえば、図４のノードＱ１１の最初の行（要素Ａ１１、Ａ１２、…、Ａ１９を含む）に対して実行される１次元ＦＦＴは、図５のノードＱ１１の最初の行をもたらし、これには、要素Ｂ１１、Ｂ１２、…、Ｂ１９が含まれる。さらに、各ノードで各行に対して実行される１次元ＦＦＴは、別のノードの他の行に対して実行される１次元ＦＦＴと独立である。図４に示されたデータの特定の分配によって、各ノードが、図１のトーラス・ネットワーク１００の他のノードと通信せずに、そのノードに分配された要素の行に対して１次元ＦＦＴを実行できるようになる。したがって、ノードの間の通信が必要ではないので、これらの１次元ＦＦＴが、すばやく実行される。各ノードで、図５の結果の行のほかに、図４の元の行が、存在し続け、特定のアプリケーションには重要であるが、図６および７に特に示されているように、元の行が、本発明による多次元ＦＦＴに必要な一連のＦＦＴの第２の１次元ＦＦＴにはもはや不要であることに留意されたい。
【００２８】
図６は、本発明による、第２次元ＦＦＴを実行するために、図５の第１次元ＦＦＴを介して変換された要素の結果の行のそれぞれが、ノードＱ１１からＱ３３にどのように再分配されるかを示す、例示的な「すべて対すべて」再分配の図６００である。具体的に言うと、図５の各ノードＱ１１、…、Ｑ３３で分配される要素の結果の行のそれぞれは、トーラス・ネットワーク１００上で再分配され、その結果、各連続するノードが、図６に特に示されているように、要素の連続する列を受け取るようになる。この効率的な再分配は、「すべて対すべて」再分配であり、これによって、本発明による、分散メモリ並列スーパーコンピュータでの多次元ＦＦＴの効率的な実施が可能になる。たとえば、最初のノードＱ１１は、要素の最初の列すなわち、ノードＱ１１、…、Ｑ３３のそれぞれから最初の要素を受け取る。もう１つの例として、ノードＱ１２は、要素の第２の列すなわち、ノードＱ１１、…、Ｑ３３のそれぞれから第２の要素を受け取る。この再分配は、図５の列ごとに行われる。図６の例示的な再分配では、配列要素の特定の行への特定のノードの割当が、重要ではない。そうではなく、割当が実行可能であることに留意されたい。さまざまなアプリケーションおよび／またはコンピュータについて、ある割当で、そのアプリケーションまたはコンピュータあるいはその両方によって提供される効率を利用でき、したがって、他の割当より高速の実行が生ずる可能性がある。たとえば、多次元ＦＦＴを実行する最も高速の方法が、ノードＱ１１およびＱ１２の割当を、図６に示された割当の逆にすることである場合がある。図９および１０に関する下の説明で、特に、本発明で、トーラス・ネットワーク１００上のスーパーコンピュータのノードにまたがる配列要素の「すべて対すべて」再分配がどのように実行されるかを特に説明する。各ノードＱ１１、…、Ｑ３３での要素の「すべて対すべて」再分配は、トーラス・ネットワーク１００の通信特性を利用するので高速である。図６に示された再分配では、Ｑ１１、…、Ｑ３３ノードからの各ノードが、すべての他のノードに単一の配列要素を送る。以下の説明では、配列の各要素が、単一のパケットによって担持されるデータの量より多い量のデータであると仮定する。したがって、トーラス・ネットワーク１００を介して配列の各要素を宛先ノードに送信するのに、複数のパケットが必要である。これは、はるかに大きい配列サイズに起因して、各ノードが多数の配列要素を他のすべてのノードに送り、通常は多数のパケットが必要になる、通常の実世界の再分配によく似ている。
【００２９】
図７は、本発明による、図１の２次元トーラス・ネットワーク１００のノードＱ１１からＱ３３にまたがって分配された、図６の２次元配列に対する第２の１次元ＦＦＴを示す例示的な図７００である。上で特に注記したように、本発明による多次元ＦＦＴは、一連の１次元ＦＦＴを実行することによって達成され、図７は、本発明による一連のＦＦＴの第２の１次元ＦＦＴを示す図である。したがって、１次元ＦＦＴは、図５に示された各ノードに分配された要素の列に対して実行される。たとえば、１次元ＦＦＴは、ノードＱ１１に分配された要素すなわち、図６の、図５の第１列からノードＱ１１に行として分配された要素Ｂ１１、Ｂ２１、…、Ｂ９１について実行される。さらに、１次元ＦＦＴは、各ノードＱ１２からＱ３３の要素の行（すなわち、図５の要素の連続する列から分配された）に対して実行される。各行に対する１次元ＦＦＴの結果は、特に図７に示されたものと同一の長さの行である。たとえば、要素Ｂ１１、Ｂ２１、…、Ｂ９１を含む図６のノードＱ１１の最初の行に対して実行される１次元ＦＦＴは、要素Ｃ１１、Ｃ２１、…、Ｃ９１を含む図７のノードＱ１１の最初の行をもたらす。第１のＦＦＴに関して上で説明したように、各ノードで各行に対して実行される１次元ＦＦＴは、別のノードで他の行に対して実行される１次元ＦＦＴと独立である。図６に示されたデータの特定の分配によって、各ノードが、図１のトーラス・ネットワーク１００で他のノードと通信せずに、そのノードに分配された要素の行に対して１次元ＦＦＴを実行できるようになる。したがって、ノードの間の通信が不要なので、これらの１次元ＦＦＴは、すばやく実行される。
【００３０】
図８は、スーパーコンピュータのノードＱ１１、…、Ｑ３３の間の通信に２次元トーラス・ネットワーク１００を使用する、図１の分散メモリ並列スーパーコンピュータの配列の２次元ＦＦＴの実施形態を示す例示的な方法の流れ図である。以下の説明では、図８を、２次元ＦＦＴを効率的に実行するために、図１から７を基礎として説明する。ステップ８０２で、図１の分散メモリ並列スーパーコンピュータ内で、図３に示された２次元配列の多次元ＦＦＴが開始される。ステップ８０２で、図３に示された配列が、アプリケーションに固有とすることができる任意の形でノードにまたがって分配されることに留意されたい。ステップ８０４で、配列３００の要素（すなわちデータ）が、特に図４に示されているように、ノードＱ１１、…、Ｑ３３にまたがって効率的に再分配される。ステップ８０６で、各ノードが、図４に示されているように、そのノードに保管された配列の要素の行に対して最初の１次元ＦＦＴ（一連の１次元ＦＦＴのうちの）を実行し、その結果は、特に図５に示されている。図５および６に関して説明したように、ステップ８０８で、１次元ＦＦＴによって変換された要素の列が、図１のトーラスベース・アーキテクチャを使用して、スーパーコンピュータのノードＱ１１、…、Ｑ３３にまたがって再分配される。ステップ８１０で、各ノードが、図６の要素の行として分配された、図６に示された第１の１次元ＦＦＴ変換された要素の連続する列に対して第２の１次元ＦＦＴを実行する。第２の１次元ＦＦＴの結果は、図７に示されている。ステップ８１２で、図１のスーパーコンピュータの図３に示された２次元配列の多次元ＦＦＴが終了する。上で特に説明したように、２つの１次元ＦＦＴの間に、ノードＱ１１、…、Ｑ３３にまたがる要素の高速再分配がある。
【００３１】
ノードにまたがる要素の再分配と結合される、分散メモリ並列スーパーコンピュータのノードにまたがって分配された要素の配列に対する上で説明した多次元ＦＦＴが、本発明の実例である。具体的に言うと、本発明は、一連の１次元ＦＦＴと結合された、トーラスベース・アーキテクチャの効率的なハードウェア経路指定を使用して、分散メモリ並列スーパーコンピュータでの多次元ＦＦＴの効率的な実施形態を達成する。上で注記したように、本発明による教示を使用して、他の数の配列次元、他の配列サイズ、および他の数のトーラス・ネットワーク次元、たとえば３次元トーラスで、効率的な多次元ＦＦＴを実行することができる。さらに、本発明による教示を使用して、任意の次元のトーラス・ネットワーク上の分散メモリ並列スーパーコンピュータのノードの間で「すべて対すべて」通信を実行することができる。
【００３２】
図９は、本発明による、図２の例示的ノードＱ１１上の１つまたは複数の出力キュー２１２への、分散メモリ並列スーパーコンピュータ上の他のノード、たとえばノードＱ２２およびＱ３３宛のパケットの充てんを示す、例示的な方法流れ図９００である。上の図６に示された「すべて対すべて」再分配は、本発明に従って、下記のように実施される。Ｑｘｙが、ｘ座標値ｘおよびｙ座標値ｙ（たとえば、ｘ＝１；ｙ＝１）を有する包括的なノード（たとえばノードＱ１１）を表すと仮定する。したがって、「すべて対すべて」再分配に従って、ノードＱｘｙ（たとえばノードＱ１１）は、複数のすべてのパケット（たとえばｋ個のパケット）を、ａおよびｂの可能なすべての値について、すべてのノードＱａｂに送る必要がある（たとえば、Ｑａｂは、図１に示された、Ｑ１２、Ｑ１３；Ｑ２１、Ｑ２２、Ｑ２３；およびＱ３１、Ｑ３２、Ｑ３３である；Ｑ１１がそれ自体にパケットを送る必要がないことに留意されたい）。この再分配をできる限り高速に実行するために、トーラス・ネットワーク１００のグリッド・リンクを、効率的に使用しなければならない。パケットが、効率的な順序でスケジューリングされない場合には、グリッド・リンク使用状況も、非常に非効率的になる可能性がある。たとえば、すべてのノードが、まず、正Ｘ＋方向だけにパケットを送る場合に、負Ｘ−方向のすべてのグリッド・リンクが、遊休状態になり、したがって、再分配が、できる限り高速には実行されず、多次元ＦＦＴが、できる限り効率的には実施されなくなる。本発明によれば、高速再分配で、トーラスベース・ネットワーク１００の適応経路指定機能が利用され、パケット・スケジューリングが、特に下で示すように、効率的に実施される。
【００３３】
したがって、図９を参照すると、パケットを交換する必要があり、２次元配列の要素を含む、トーラス・ネットワーク１００によって相互接続されたＮｘ×Ｎｙ個のノードがある（すなわち、図１の３×３＝９個のノード）。ステップ９０２で、例示的方法が開始される。ステップ９０４で、各ノードＱ１１、…、Ｑ３３で、トーラス・ネットワーク１００の各ノードに、０、…、Ｎｘ×Ｎｙ−２の間の一意の番号を割り当てる配列（すなわち、ｒａｎｄｏｍ＿ｍａｐ［］配列）が作成される。ノードは、それ自体にパケットを送らないので、パケットを交換するノードの総数は、０からＮｘ×Ｎｙ−２までである。ステップ９０４の割当が、ランダムに生成されることに留意されたい。この時点で、ノードが別のノードに配列の要素を送る必要があるパケットの総数が、ｋパケット（たとえば６パケット）であると仮定する。その後、合計ｋ個のパケット＝ｄ回の繰返し×ｂ個のパケットと仮定し、ここで、合計ｋ個のパケットについて、ｄは、必要な繰返しの回数であり、繰返しごとにｂ個のパケットが送信される。ｂを、効率の必要に応じて選択でき、同様に、１と等しくすることができることに留意されたい。たとえば、合計６個のパケットを送るために、合計６個のパケットについて３回の繰返しのそれぞれで繰返しごとに２パケットを送るように、ｂを選択することができる。したがって、ステップ９０６で、１からｄまでのｉｄの繰返しについて、ループを初期化する。ステップ９０８で、キュー・カウンタを０に初期化する。パケット（または、実際のパケットをコピーする必要がなくなるように、パケットの短い記述子）を保管するＬ個の出力キュー２１２（Ｌは、１以上である）があり、所与の宛先に関するすべてのパケット（またはパケットの記述子）が、同一の出力キューに置かれると仮定する。特定の出力キューｉＬは、図９の入れ子になったループ内のステップ９１２で、ラウンドロビン順序で選択される。ステップ９１０で、ステップ９０４で作成された配列（すなわちｒａｎｄｏｍ＿ａｒｒａｙ［］）のインデックスとして、ノード０からノードＮｘ×Ｎｙ−２までのｉＮ値について、ループを初期化する。ステップ９０４で作成された配列が、特定のｉＮ値についてインデクシングされる時に、ランダムなノード値が、ｒａｎｄｏｍ＿ａｒｒａｙから得られる。ステップ９１２で、ラウンドロビン順序で最初のキューを選択する。ステップ９１４で、ｄ回の繰返しごとに、１からｂ個までのパケットのｉｂについてループを初期化する。その後、ステップ９１４および９１６として、所与のランダム・ノードｉＮ宛の複数のｂ個のパケット（たとえば、上の例からのｂ＝２パケット）が、ｐａｃｋｅｔ［ノード、ｉｄ、ｉｂ］として同一の出力キューｉＬに追加される。ステップ９１８で、ｄ回のすべての繰返しが完了したならば、この方法が終了する。要するに、流れ図９００に関して、あるｄの反復中に、特定のノード「ｉ」（たとえば、図２のノードＱ１１のプロセッサ２０２）が、まず、第１の出力キューにノードＭｏｄｕｌｕｓ（ｉ＋１、Ｎｘ×Ｎｙ−１）宛の配列の要素のデータを含むｂ個のパケットを置き、次に、特定のノード「ｉ」が、次の出力キューにノードＭｏｄｕｌｕｓ（ｉ＋���、Ｎｘ×Ｎｙ−１）宛の配列の要素のデータを含むｂ個のパケットを置き、ノードＭｏｄｕｌｕｓ（ｉ＋（Ｎｘ×Ｎｙ−１）、Ｎｘ×Ｎｙ−１）に達するまでこれを繰り返す。ｂパケットが、所与の繰り返しで出力キューに置かれた時に、この処理が、ｄ回の繰り返しのすべてが完了するまで繰り返される。前述の再分配によって、図１のトーラス・ネットワーク１００上で極端に高いグリッド・リンク使用率が達成され、これによって、本発明による多次元ＦＦＴが効率的に実施される。
【００３４】
図１０は、図２の例示的ノードＱ１１の１つまたは複数の出力キュー２１２内のパケットが、本発明に従って、トーラス・ネットワーク１００での後続の挿入のために注入ＦＩＦＯ２１０にどのようにドレーンされるかを示す、例示的な方法の流れ図１０００である。図１０を詳細に説明する前に、図９の充てんおよび図１０のドレーンを、互いに並行に実行できることに留意されたい。ステップ１００２で、例示的な方法が開始される。ステップ１００４で、Ｌ個の出力キュー２１２のすべてが空であるかどうかを判定する。ステップ１００６で、Ｌ個の出力キューのすべてについて反復するために、１からＬまでのｉＬについてループを初期化する。ステップ１００８で、特定の出力キューｉＬが空であるかどうかを判定する。出力キューｉＬが空である場合には、この方法は、ステップ１００６で次のｉＬ出力キューに継続する。そうでない場合には、ステップ１０１０で、出力キューｉＬの頭部にあるパケットについて、そのパケットをトーラス・ネットワーク１００を介して経路指定することが可能な方向を得る。たとえば、図１に関して、ノードＱ１１が、出力キューｉＬにノードＱ２２宛のパケットを置いたと仮定する。パケットは、ノードＱ１１からＸ＋方向で（グリッド・リンク１０８を介して）およびその後にＹ−方向で（グリッド・リンク１１０を介して）移動して、ノードＱ２２に達することができ、あるいは、Ｙ−方向で（グリッド・リンク１０６を介して）およびその後にＸ＋方向で（グリッド・リンク１１２を介して）移動して、ノードＱ２２に達することができる。図１０に戻って、ステップ１０１２で、さらに、パケットの可能な方向の図２のすべてのＦＩＦＯ２１０が満杯であるかどうかを判定する。上で説明したように、各注入ＦＩＦＯ２１０は、それに関連する論理方向（たとえばＸ＋）を有し、これによって、その注入ＦＩＦＯ２１０に置かれたパケットが、関連する論理方向（たとえばＸ＋方向）に移動できることが表される。パケット方向の注入ＦＩＦＯ２１０が満杯である場合には、この方法は、現在の出力キューをスキップし、ステップ１００６で次の週力キューに反復することによって継続する。そうでない場合には、ステップ１０１４で、パケットを、出力キューから、そのパケットの可能な方向の１つの最も満杯でないＦＩＦＯ２１０に移動する。パケットは、図２に示された注入ＦＩＦＯ２１０への挿入に関して、ラウンドロビン順序で出力キューから除去されることに留意されたい。パケットが移動された後に、この方法は、その出力キューの次に使用可能なパケットについて、ステップ１００８で継続する。すべての出力キューが空になったならば、この方法はステップ１０１６で終了する。
【００３５】
「すべて対すべて」経路指定を説明する、図９および１０をより完全に示すために、図５のノードＱ１１の要素の行すなわち要素Ｂ１１、Ｂ１２、…、Ｂ１９が、トーラス・ネットワーク１００上で、図６に示されたノードＱ１２、…、Ｑ３３にまたがって再分配されると仮定する。ノードのランダム・マッピングが、ｒａｎｄｏｍ＿ｍａｐ配列＝｛Ｑ３２；Ｑ２２；Ｑ１３；Ｑ２１；Ｑ２３；Ｑ３３；Ｑ１２；およびＱ３１｝という値を有すると仮定する。したがって、配列要素の順序およびノードＱ１１からの宛先ノードは、｛Ｂ１２からＱ１２へ；Ｂ１３からＱ１３へ；Ｂ１４からＱ２１へ；Ｂ１５からＱ２２へ；Ｂ１６からＱ２３へ；Ｂ１７からＱ３１へ；Ｂ１８からＱ３２へ、およびＢ１９からＱ３３へ｝になる。配列要素は、ノードＱ１１のＦＩＦＯ２１０に、｛Ｂ１８からＸ＋またはＹ−を介してＱ３２へ；Ｂ１５からＸ＋またはＹ＋を介してＱ２２へ；Ｂ１３からＸ−を介してＱ１３へ；Ｂ１４からＹ＋を介してＱ２１へ；Ｂ１６からＹ＋またはＸ−を介してＱ２３へ；Ｂ１９からＸ−またはＹ−を介してＱ３３へ；Ｂ１２からＸ＋を介してＱ１２へ；およびＢ１７からＹ−を介してＱ３１へ｝配置される。したがって、たとえば、ノードＱ１１のＦＩＦＯ２１０は、下の表１に示されているように充てんされる。
【００３６】
【表１】
0004652666.tif 000002
【００３７】
注入ＦＩＦＯの数が、上ではノードへのグリッド・リンクの数と等しいと説明されたが（たとえば、４つのＦＩＦＯと４つのグリッド・リンク）、少なくとも特定のグリッド・リンクに制限される注入ＦＩＦＯの使用も、注入ＦＩＦＯの数がグリッド・リンクの数と等しくない時に、十分に適する。たとえば、グリッドより少数の注入ＦＩＦＯがある場合に、バッファの使用を、複数の特定のグリッド・リンクの少なくとも１つに制限することができる。もう１つの例として、グリッド・リンクより多数の注入ＦＩＦＯがある場合に、その使用が少なくとも同一の特定のグリッド・リンクに制限される複数のＦＩＦＯを設けることができる。
【００３８】
配列再分配の実施形態を、上で多次元ＦＦＴの効率的な実施形態に関して説明したが、「すべて対すべて」再分配は、図１のトーラス・ネットワーク１００での任意のタイプの配列再分配にも十分に適する。
【００３９】
本発明の好ましい実施形態に関して本発明を具体的に図示し、説明してきたが、形態および詳細における前述の変更および他の変更を、本発明の趣旨および範囲から逸脱せずに行えることを、当業者は理解するであろう。
【図面の簡単な説明】
【００４０】
【図１】本発明による、２次元３×３トーラス・ネットワークを使用する多次元グリッドを介して相互接続された９つのノードを含む例示的な分散メモリ並列スーパーコンピュータを示す図である。
【図２】本発明による、図１の分散メモリ並列スーパーコンピュータからの例示的ノードの詳細な表現を示す図である。
【図３】本発明による、多次元ＦＦＴについて効率的に実施することができる、例示的な２次元の９行×９列配列を示す図である。
【図４】本発明による、図１のスーパーコンピュータのノードにまたがる図３の２次元配列の例示的分配を示す図である。
【図５】本発明による、図１のスーパーコンピュータのノードにまたがって分配された２次元配列の例示的な第１の１次元ＦＦＴを示す図である。
【図６】本発明による、図５の第１の２次元ＦＦＴの後の結果の２次元配列の例示的な再分配を示す図である。
【図７】本発明による、図６の再分配された配列の例示的な第２の１次元ＦＦＴを示す図である。
【図８】本発明による、図４から７に示された２次元ＦＦＴの実施形態を示す例示的な方法の流れ図である。
【図９】本発明による、分散メモリ並列スーパーコンピュータの他のノード宛のパケットによる例示的なノードの出力キューの充てんを示す例示的な方法の流れ図である。
【図１０】本発明による、トーラス・ネットワーク１００での後続の挿入のために例示的なノードの出力キューのパケットが注入ＦＩＦＯにどのようにドレーンされるかを示す例示的な方法の流れ図である。
【図１】
0004652666.tif 000003
【図２】
0004652666.tif 000004
【図３】
0004652666.tif 000005
【図４】
0004652666.tif 000006
【図５】
0004652666.tif 000007
【図６】
0004652666.tif 000008
【図７】
0004652666.tif 000009
【図８】
0004652666.tif 000010
【図９】
0004652666.tif 000011
【図１０】
0004652666.tif 000012