(57)【特許請求の範囲】
【請求項１】
ネットワークにおけるクラス・ネットワーク経路指定の方法であって、前記ネットワークは複数のノードを含み、前記ノードの各々はスイッチを介して対に配置されており、前記ノードの各々は１つまたは複数のプロセッサ、メモリ、及び該ノードを他のノードに接続する１つまたは複数のネットワーク・インターフェースを含み、前記プロセッサがメッセージを他の複数のノードにマルチキャストすることができ、前記メッセージは１以上のメッセージ・パケットに分割されており、前記プロセッサがノードからのメッセージ・パケットを他のノードに経路指定することができ、前記スイッチが前記メッセージ・パケットのコピーを各ノードで預けなければならないかどうかを判定するために使用されるテーブルを含み、当該テーブルはクラス値とそれに関連付けられた保管値とを含み、前記１以上のメッセージ・パケットそれぞれはクラス値のフィールドを含み、前記クラス値は少なくとも１つのテーブルへのインデックスとしてまたはアルゴリズムへの入力として使用されることができ、
前記方法は、
前記ノードが、前記テーブルを使用して前記クラス値から特定される前記保管値に従い、または前記アルゴリズムによって前記クラス値から求められる値に従い、前記メッセージ・パケットを単一の宛先ノードへ受け渡すユニキャスト・メッセージ受渡を実行し又は複数の宛先ノードへ受け渡すマルチドロップ・メッセージ受渡を実行することを含み、それによって他の複数のプロセッサにメッセージをマルチキャストし、
前記方法は、
Ｄ次元キューブの起点ノードからすべてのノードへのＤ相マルチキャストを使用することをさらに含み、第１相において、前記起点ノードが、前記送信側ノードの行の１つにあるすべての他のノードにマルチドロップ・メッセージを送り、第２相において、前記第１相の受信側および前記第１相の前記送信側のそれぞれが、前記第１相の前記行と直交する行のすべての他のノードに同時にマルチドロップ・メッセージを送り、第３相において、前記第２相の前記受信側および前記第２相の前記送信側のそれぞれが、前記第１相および前記第２相の前記行と直交する行のすべての他のノードに同時にマルチドロップ・メッセージを送り、以下同様であり、更なる相で、すべての前記相の後に、前記キューブのすべてのノードがブロードキャスト・メッセージを受け取る、前記方法。
【請求項２】
前記ノードが前記メッセージ・パケットのコピーを預けなければならないかどうかを前記テーブルの値に基づいて判定するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記メッセージ・パケットが、前記ネットワークの行全体または面全体にマルチキャストされる、請求項１に記載の方法。
【請求項４】
ハードウェア・クラス機能マルチキャスト能力を有する分散メモリ並列コンピュータのネットワークで密行列反転を実行し、前記ハードウェア・クラス機能マルチキャスト能力が、到着するメッセージ・パケットをメモリに同時に保管し、そして即座に前記メッセージ・パケットがメモリに保管されつつある間にそのメッセージ・パケットを１つまたは複数のノードに送り、前記密行列反転アルゴリズムの通信パターンが、通信遅延を最小にするために、前記ハードウェア・クラス機能マルチキャスト能力によってサービスされる、請求項１に記載の方法。
【請求項５】
前記スイッチは、３次元トーラスを形成するために接続されており、各スイッチが、６つの他のスイッチにリンクされており、前記リンクが、前記３次元のそれぞれで、正方向のスイッチおよび負方向のスイッチに結合されており、
前記トーラス上のｘ、ｙ、およびｚ論理アドレスが、各スイッチを識別し、各ノードが、そのスイッチの前記アドレスを有し、
前記パケットが前記パケットのヘッダに前記論理アドレス用のフィールド値を含み、それによって宛先ノードを識別することが可能である、請求項１に記載の方法。
【請求項６】
前記ノードは、前記メッセージ・パケットのコピーが、前記Ｄ次元の他のリンクについて、Ｘリンクで外に出るか否かと、Ｙリンクで外に出るか否かと、Ｚリンクで外に出るか否かとを前記クラス値に基づいて判定するステップを含む、請求項１に記載の方法。
【請求項７】
前記ノードのうちの前記一つが、スイッチが異なるテーブルによって示される衝突する処置の間で判断できるようにするために、優先順位が設けられている異なるテーブルを有する、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的にはクラス・ネットワーク経路指定（class networkrouting）に関し、具体的には、ノードの複数の並列計算プロセッサを含むコンピュータ・ネットワークなどのネットワークでクラス経路指定を実施し、計算プロセッサが、１行または１列のプロセッサなどのコンピュータ・ネットワーク内の１つまたは複数の他の計算プロセッサにメッセージをブロードキャストできるようにする、クラス・ネットワーク経路指定に関する。通常、このタイプの動作は、別々のメッセージが各プロセッサに送られることを必要とする。本発明に従うクラス・ネットワーク経路指定では、単一のメッセージで十分であり、これによって、一般に、マルチキャストを行うための、ネットワーク内のメッセージの総数ならびに待ち時間が大幅に減る。
【０００２】
本発明は、メッセージ受渡データ・ネットワーク、たとえば、たとえば生命科学の分野での計算に適用される分散メモリ・メッセージ受渡並列コンピュータに使用されるネットワークの分野に関する。
【０００３】
本発明は、密行列（dense matrix）の計算を行うためのトーラス・コンピュータ・ネットワークでのクラス機能にも使用される。トーラス・コンピュータ・ネットワーク上でハードウェア実施されるクラス機能を使用することによって、高性能密行列計算を行うことが可能になる。
【０００４】
本発明は、たとえば生命科学の分野での計算に適用される、分散メモリ・メッセージ受渡並列コンピュータの設計およびシステム・ソフトウェアの分野にも関する。具体的には、本発明は、分散メモリ並列スーパーコンピュータの高性能線形代数ソフトウェアの分野に関する。
【背景技術】
【０００５】
重要な計算の大きいクラスを、大量並列（massively parallel）コンピュータ・システムによって実行することができる。そのようなシステムは、多数の計算ノードからなり、各計算ノードは、通常は、１つまたは複数のＣＰＵ、メモリ、およびそのノードを他のノードに接続する１つまたは複数のネットワーク・インターフェースからなる。
【０００６】
大量並列スーパーコンピュータに関するコンピュータでは、システムオンアチップ（ＳＯＣ、system-on-a-chip）技術を活用して、高いスループットを有する、スケーラブルでコスト効率のよいコンピューティング・システムが作成される。ＳＯＣ技術によって、集積された第１レベル・キャッシュを伴うＣＰＵコアを含む組込み構成要素のライブラリを使用して、単一のチップ上でマルチプロセッサ・ノード全体を作ることが可能になった。そのようなパッケージ化によって、ノードの構成要素カウントが大きく減り、信頼性がある大スケール計算機の作成が可能になる。
【０００７】
メッセージ受渡データ・ネットワークは、ネットワークのノードの間でメッセージを渡すように働き、ノードのそれぞれは、他のノードと独立にローカル動作を実行することができる。ノードは、ネットワークを介してノード間でメッセージを渡すことによって、協力して働くことができる。そのようなネットワークの例が、ノードのそれぞれが、ローカル・メモリに作用する１つまたは複数のプロセッサを有する分散メモリ並列コンピュータである。そのようなコンピュータの複数のノードを使用するアプリケーションで、ノードの間でメッセージを渡すことによって複数のノードの動作が調整される。本明細書全体を通じて、単語スイッチおよびルータは、交換可能に使用される。
【０００８】
メッセージ受渡データ・ネットワークは、スイッチおよびリンクからなり、リンクは、単に、２つのスイッチの間でデータを渡す。スイッチは、ノードまたはリンクからの着信データを別のノードまたはリンクに経路指定する。スイッチを、任意の数のノードおよびリンクに接続することができる。ネットワーク内での位置に応じて、２つのノードの間のメッセージが、複数のスイッチおよびリンクをトラバースする必要がある場合がある。
【０００９】
従来技術のネットワークでは、あるタイプのメッセージ受渡が効率的にサポートされるが、すべてのタイプが効率的にサポートされるのではない。たとえば、いくつかのネットワークでは、単一の受信ノードへのユニキャスト・メッセージ受渡がサポートされるが、任意の個数の受信ノードへのマルチキャスト・メッセージ受渡はサポートされない。マルチキャスト・メッセージ受渡の効率的なサポートは、本明細書で開示されるクラス機能を使用する密行列反転の必要条件である分散メモリ並列コンピュータで実行される数値アルゴリズムなど、さまざまな情況で必要になる。
【００１０】
多くのユーザ・アプリケーションが、非常に大きいＮ×Ｎ密行列の反転を必要とし、ここで、Ｎは、数千を超える。密行列とは、ほとんどの項目が０でない行列である。通常、そのような行列の反転は、大型分散メモリ並列スーパーコンピュータを使用してのみ行うことができる。密行列反転を実行するアルゴリズムは、周知であり、分散メモリ並列スーパーコンピュータでの使用のために一般化することができる。その場合に、大量のプロセッサ間通信が必要になる。これによって、アプリケーションがかなり低速になる可能性がある。
【特許文献１】米国仮出願番号６０／２７１，１２４
【特許文献２】米国特許第５３３３２７９号
【非特許文献１】D.K.Panda、S.Singal、P.Prabhakaran、「MultidestinationMessage Passing Mechanism Conforming to Base Wormhole Routing Scheme」、PCRCW'94、LNCS853、Springer-Verlag、131〜145ページ、1994年
【非特許文献２】R.Sivaram、R.Kesavan、D.K.Panda、C.B.Stunkel、「ArchitecturalSupport for Efficient Multicasting in Irregular正規 Networks」、IEEE Trans. On Par.And Dist. Systems、Vol.12、No.5、２００１年５月
【非特許文献３】NUMERICAL RECIPES IN FORTRAN, THEART OF SCIENTIFIC COMPUTING, Second Edition、by William H. Press, et al.
【発明の開示】
【発明が解決しようとする課題】
【００１１】
したがって、本発明の主目的は、ネットワーク内でクラス経路指定を実施し、１行または１列のプロセッサなど、ある範囲のプロセッサに計算プロセッサがメッセージをブロードキャストできるようにする、クラス・ネットワーク経路指定を提供することである。通常、このタイプの動作は、別々のメッセージが各プロセッサに送られることを必要とする。本発明に従うクラス経路指定では、単一のメッセージで十分であり、これによって、一般に、ブロードキャストを行うための、ネットワーク内のメッセージの総数ならびに待ち時間が大幅に減る。このクラス・ネットワーク経路指定では、ネットワークが機能強化され、ある追加のタイプのメッセージ受渡がより効率的にサポートされるようになる。
【課題を解決するための手段】
【００１２】
クラス経路指定によって、ネットワークが、追加のタイプのメッセージ受渡をより効率的にサポートするように機能強化される。例によって、メッセージは、１つまたは複数のメッセージ・パケットに分割され、これらのパケットが、ネットワークを介してアトミックに渡される。クラス経路指定によって、各パケットにクラス値が追加される。各スイッチで、クラス値が、１つまたは複数のテーブルへのインデックスとして使用され、このテーブルに保管された値によって、スイッチによってパケットに対して実行される処置が決定される。インデックスベースのテーブル索引は、スイッチを介する最大のスループットおよび最小の待ち時間に必要であるように、高速かつ効率的である。
【００１３】
クラス経路指定は、ネットワークがあるタイプのメッセージ受渡を提供できるようにするために、スイッチがパケットに作用するのに必要な情報の効率的なエンコードおよびデコードと要約することができる。この情報は、パケットのクラス値およびスイッチのテーブルにエンコードされる。この情報は、パケットのクラス値をテーブルへのインデックスとして使用することによってデコードされる。
【００１４】
クラス経路指定のないネットワークを、基本ネットワークと称する。クラス経路指定があるものを、拡張ネットワークと称する。すべてのスイッチのクラス・テーブル内の適当な項目を用いて、拡張ネットワークの１つまたは複数のクラスによって、基本ネットワークのメッセージ受渡タイプが提供される。さらに、テーブルへのインデックスとしてのパケットのクラス値の使用は、高速なので、基本ネットワークのメッセージ受渡タイプは、基本ネットワークと比較した時に、拡張によって大きくは低速にならない。
【００１５】
クラス・テーブルの他の項目によって、基本ネットワークを超えるメッセージ受渡タイプを提供することができる。たとえば、基本ネットワークのユニキャスト・メッセージ受渡タイプを、クラス経路指定によって、複数相マルチキャストのためのパスベースのマルチドロップ・メッセージ受渡に拡張することができる。
【００１６】
上で説明したクラスでは、拡張ネットワークによって、無修正のものまたは機能強化されたもののいずれかの、基本ネットワークのメッセージ受渡タイプが提供される。さらに、拡張ネットワークのいくつかのクラスによって、基本ネットワークをオーバーライドすることができる。たとえば、オーバーライドするクラスは、単一相マルチキャストのための複数宛先メッセージ受渡を提供することができる。クラス経路指定によってメッセージ受渡タイプだけが提供される場合には、基礎となる基本ネットワークは不要である。
【００１７】
本発明は、分散メモリ並列スーパーコンピュータで、ハードウェア・クラス機能能力を用いて密行列反転アルゴリズムをより高速に実行されるようにする。ハードウェア・クラス機能は、クラス経路指定の特定の使用である。これは、密行列反転の通信パターンを、ハードウェア・クラス機能によってサービスできるという事実を活用することによって達成される。これによって、より高速の実行時間がもたらされる。
【００１８】
並列スーパーコンピュータが、ハードウェア・レベルでクラス機能能力を有する場合に、密行列反転の特定の通信パターンを、通信遅延を最小限にするためにクラス機能を使用することによって活用することができる。
【００１９】
クラス・ネットワーク経路指定に関する本発明の上述の目的および長所は、添付図面と共に本発明の複数の実施形態の以下の詳細な説明を参照して、当業者がすぐ理解することができる。添付図面では、類似する要素が、複数の図面を通じて同一の符号によって示される。
【発明を実施するための最良の形態】
【００２０】
分散メモリ並列スーパーコンピュータには、複数のノードが含まれる。ノードのそれぞれに、少なくとも１つのプロセッサが含まれ、このプロセッサは、ローカル・メモリに作用する。ノードは、多次元グリッドとして相互接続され、グリッド・リンクを介して通信する。一般性を失わずに、当業者が本発明の説明を簡単に理解できるようにするために、多次元ノード・グリッドを、例示的な２次元グリッドまたは例示的な３次元グリッドとして説明する。３次元グリッドは、トーラスベースのアーキテクチャによって実施される。２次元ノード・グリッドまたは３次元ノード・グリッドだけが以下の説明で説明されるという事実にかかわらず、本発明の範囲内で、他の次元のグリッドを、本発明の教示に基づいて簡単に提供できることが企図されている。３次元の例は、トーラスベース・アーキテクチャで実施される３次元グリッドである。
【００２１】
図１は、２次元３×３トーラス・ネットワーク１００を使用する多次元グリッドを介して相互接続された９つのノードを含む分散メモリ並列スーパーコンピュータの例示的な図である。図を簡単にし、わかりやすくするために、ノードの数が、例示的な形で９個のノードに制限されていることと、ノードの数を、分散メモリ並列スーパーコンピュータの特定のアーキテクチャ的要件に応じて大幅に変更できることに留意されたい。図１には、Ｑ００からＱ２２としてラベルを付けられた９つのノードが示され、これらのノードの対が、グリッド・リンクによって相互接続される。合計で、９ノードのトーラス・ネットワークが、１８個のグリッド・リンクによって相互接続され、各ノードは、めいめいのグリッド・リンクを介してトーラス・ネットワーク１００内の４つの他のノードに直接に相互接続される。メッシュと異なって、２次元トーラス・ネットワーク１００に、エッジ・ノードが含まれないことに留意されたい。たとえば、ノードＱ００は、グリッド・リンク１０２を介してノードＱ２０に相互接続され、グリッド・リンク１０４を介してノードＱ０２に相互接続され、グリッド・リンク１０６を介してノードＱ１０に相互接続され、最後に、グリッド・リンク１０８を介してノードＱ０１に相互接続される。もう１つの例では、ノードＱ１１は、グリッド・リンク１１０を介してノードＱ０１に相互接続され、グリッド・リンク１１２を介してノードＱ１０に相互接続され、グリッド・リンク１１４を介してノードＱ２１に相互接続され、最後に、グリッド・リンク１１６を介してノードＱ１２に相互接続される。他のノードは、類似する形で相互接続される。
【００２２】
ノードの間のデータ通信は、ネットワーク上で、１つまたは複数のパケットで移送される。所与の通信に関して、データの量が、ネットワークによってサポートされるパケット・サイズを超える場合に、複数のパケットが必要になる。パケットは、パケット・ヘッダと、それに続く、パケットによって搬送されるデータからなる。パケット・ヘッダには、そのパケットをパケットのソース・ノードから宛先ノードへ移送するためにトーラス・ネットワークが必要とする情報が含まれる。本発明の譲受人によって実施される分散メモリ並列スーパーコンピュータでは、ネットワーク上の各ノードが、論理アドレスによって識別され、パケット・ヘッダに、宛先アドレスが含まれ、その結果、パケットが、宛先によって識別されるネットワーク上のノードへ自動的に経路指定されるようになる。
【００２３】
図２は、図１の分散メモリ並列スーパーコンピュータのノードＱ００の例示的な図である。ノードには、ローカル・メモリに作用する１つのプロセッサが含まれる。ノードには、図１に示されているように、それぞれノードＱ００を隣接するノードＱ２０、Ｑ０２、Ｑ１０、およびＱ０１に接続するグリッド・リンク１０２、１０４、１０６、および１０８でパケットを送受信するルータが含まれる。ノードには、受取バッファが含まれる。ルータが、ローカル・プロセッサ宛のパケットを受け取る時に、そのパケットが、受取バッファに置かれ、この受取バッファから、プロセッサがパケットを受け取ることができる。アプリケーションおよびパケットに応じて、プロセッサは、パケットの内容をメモリに書き込むことができる。ノードには、先入れ先出し（ＦＩＦＯ）の形で動作する注入バッファが含まれる。ＣＰＵが、パケットを注入ＦＩＦＯに置く場合に、パケットがＦＩＦＯの頭部に達したならば、そのパケットは、ルータによってＦＩＦＯから除去され、ルータが、パケットを、パケットの宛先ノードに向かってグリッド・リンクに置く。
【００２４】
ルータによって実施される経路指定は、複数の同時特性を有する。経路指定は、バーチャル・カットスルー経路指定である。したがって、グリッド・リンクの１つでの着信パケットが、プロセッサ宛でない場合には、そのパケットは、ルータによって発信リンクの１つに転送される。この転送は、プロセッサの関与なしに、ルータによって実行される。経路指定は、最短パス経路指定である。たとえば、ノードＱ００によってノードＱ０２に送られたパケットは、グリッド・リンク１０４を介して移動する。他のパスは、これよりも長い。もう１つの例として、ノードＱ００によってノードＱ１１に送られたパケットは、グリッド・リンク１０６および１１２、またはグリッド・リンク１０８および１１０を介して移動する。経路指定は、適応経路指定である。パケットがノードを離れる際のグリッド・リンクの選択肢がある場合がある。前の例では、パケットが、グリッド・リンク１０６または１０８を介してノードＱ００から出ることができる。ノードを出るパケットについて、適応経路指定によって、ルータが、より使用されていない発信リンクをパケットのために選択するか、他の判断基準に基づいて発信リンクを選択することができるようになる。適応経路指定は、パケットのソース・ノードでのみ行われるのではなく、適応経路指定は、パケットがパケットの宛先ノードへの途中でカット・スルーする可能性がある各中間ノードでも実行される。
【００２５】
クラス経路指定を使用して、さまざまなタイプのメッセージ受渡を達成することができる。これらのタイプのいくつかを、クラス経路指定の多数の詳細を説明する下記の例で説明する。
【００２６】
例１．パスベースのマルチドロップ・メッセージ受渡：
分散メモリ並列コンピュータのネットワークは、メッセージ受渡データ・ネットワークの例である。そのようなコンピュータの各ノードは、１つまたは複数のプロセッサを有し、これらのプロセッサは、ローカル・メモリに作用する。そのようなコンピュータの複数のノードを使用するアプリケーションは、それらの間でメッセージを渡すことによって処置を調整する。そのコンピュータでは、各単一のノードが、ネットワークの単一のスイッチによって対にされる。そのコンピュータでは、スイッチが、３次元（３Ｄ）トーラスとして互いに接続される。したがって、そのコンピュータでは、各スイッチが、６つの他のスイッチにリンクされる。これらのリンクは、３次元のそれぞれでの、正方向のスイッチへのリンクおよび負方向のスイッチへのリンクである。各スイッチは、３次元トーラスでのその（ｘ、ｙ、ｚ）論理アドレスによって識別される。対照的に、２次元トーラスを使用するコンピュータでは、各スイッチが、その（ｘ、ｙ）論理アドレスによって識別される。図１では、正Ｘ方向が、右に向かう方向であり、正Ｙ方向が、下に向かう方向である。図１では、ノードＱ００が、論理アドレス（０、０）を有し、ノードＱ０１が、論理アドレス（０、１）を有し、以下同様である。各ノードは、単一のスイッチを用いて対にされるので、あるノードが、そのスイッチのアドレスを有する。そのような論理アドレスのフィールドをパケット・ヘッダに含めることによって、パケットによって、効率的かつ便利にその宛先ノードを識別することができる。クラス経路指定がないと、基本ネットワークは、ユニキャスト・メッセージ受渡だけを提供する。スイッチが、着信パケットの宛先である場合には、そのパケットは、ローカル・ノードに与えられる。そうでない場合には、パケットは、宛先ノードに向かうリンクに置かれる。
【００２７】
以下は、クラス経路指定を使用して、マルチドロップ・メッセージ受渡を実施する例である。各パケット・ヘッダが、クラス値のフィールドを有する。この値は、０または１のいずれかである。各スイッチは、パケットの通常のユニキャスト経路指定のほかに、コピーをローカル・ノードで預けるデポジット（deposit）しなければならないかどうか（預けなければならないかどうか）を判定するのに使用されるテーブルを有する。これによって、元のユニキャスト・メッセージ受渡に関して、ルータがパケットを着信リンクの１つから発信リンクの１つに転送する時に、プロセッサが用いられないと仮定される。この仮定は、たとえばバーチャル・カットスルー経路指定によって満足される。これによって、元のユニキャスト・メッセージ受渡に関して、ルータがパケットを着信リンクの１つから発信リンクの１つに転送する時に、プロセッサが用いられないと仮定される。クラス値［０、１］について、このデポジット・テーブルの項目は、［０、１］であり、それぞれ、パケットをデポジットするか否かが要求される。このテーブルを、下に示す。テーブルは、宛先ノード以外のノードにあるパケットだけに適用される。宛先ノードにあるパケットは、通常のユニキャスト経路指定と同様にデポジットされる。したがって、クラス値０を有するパケットは、元のユニキャスト・メッセージ受渡に従う。クラス値１を有するパケットによって、パスベースのマルチドロップ・メッセージ受渡が実行される。
【００２８】
【表１】
0004478390.tif 000002
【００２９】
パスベースのマルチドロップ・メッセージ受渡は、たとえばD.K.Panda、S.Singal、P.Prabhakaran、「MultidestinationMessage Passing Mechanism Conforming to Base Wormhole Routing Scheme」、PCRCW'94、LNCS853、Springer-Verlag、131〜145ページ、1994年に記載のものなどの複数相マルチキャストを実施するのに使用することができる。
【００３０】
本明細書で説明する第１の例は、図１の、３×３トーラスのノード（０、０）から９つのノードへの２相マルチキャストである。第１相で、ノード（０、０）が、宛先が（０、２）のマルチドロップ・メッセージを送る。第２相で、第１相の３つの受信側が、同時に、マルチドロップ・メッセージを送信する。ノード（０、０）は（２、０）に、ノード（０、１）は（２、１）に、ノード（０、２）は（２、２）に送信する。第２相の終りに、２次元トーラスの９つのノードのすべてが、ブロードキャスト・メッセージを受信している。
【００３１】
上では、元のユニキャスト・メッセージ受渡で、ソース・ノードおよび宛先ノードが同一の行にある時に、パケットのパスがその行に沿うことが前提になっている。行は、トーラスまたはメッシュの次元の１つを除いて等しい値を有するノードのグループである。この前提は、たとえば最短パス経路指定によって保証される。上の前提は、その仮出願で実施される決定的経路指定によっても保証される。対照的に、上の前提は、何らかのランダムなノードを介してパケットを経路指定する、他の場合に実施される輻輳回避経路指定によっては満足されない。
【００３２】
本明細書で説明する第２の例は、角（０、０、０）および（４、４、４）を有する５×５×５キューブの１２５個のノードへのノード（０、０、０）からの３相マルチキャストである。第１相で、ノード（０、０、０）が、宛先（０、０、４）を有するマルチドロップ・メッセージを送る。第２相で、第１相の５つの受信側ノードのそれぞれが、マルチドロップ・メッセージを同時に送る。ノード（０、０、０）は（０、４、０）に、ノード（０、０、１）は（０、４、１）に送り、以下同様である。第３相で、第２相の２５個の受信側のそれぞれが、マルチドロップ・メッセージを同時に送る。ノード（０、０、０）は（４、０、０）に、ノード（０、０、１）は（４、０、１）に送り、以下同様である。第３相の終りに、キューブの１２５個のノードのすべてが、ブロードキャスト・メッセージを受け取っている。
【００３３】
３次元キューブの３相マルチキャストの上の例は、次のように簡単に一般化される。Ｄ次元キューブの起点ノードからすべてのノードへのＤ相マルチキャストについて、第１相で、起点ノードが、送信側ノードの行の１つのすべての他のノードにマルチドロップ・メッセージを送り、第２相で、第１相の受信側のそれぞれおよび第１相の送信側が、第１相の行と直交する行のすべての他のノードに同時にマルチドロップ・メッセージを送り、第３相で、第２相の受信側および第２相の送信側のそれぞれが、第１相および第２相の行と直交する行のすべての他のノードに同時にマルチドロップ・メッセージを送り、以下同様にして、将来の相で、すべての相の後に、キューブのすべてのノードがブロードキャスト・メッセージを受け取っている。
【００３４】
クラス経路指定を使用するパスベース・マルチドロップ・メッセージ受渡の実施形態によって、既存の実施形態を超える利益が提供される。たとえば、特定の既存の実施形態では、デポジット値がパケット内に置かれる。その実施形態では、パケットのパス上のすべてのノードが、パケットのコピーを受け取る。対照的に、各スイッチがそのデポジット・テーブル内の異なる項目を有するので、クラス経路指定を用いると、デポジット項目［０、０］を有するノードが、マルチドロップ・パケットのパス上にある場合であっても、パケットのコピーを受け取らないようにすることができる。そのテーブルを、下に示す。たとえば、マルチキャスト用の複数のクラス値を用いると、これによって、それぞれがノードの異なる組に関する、複数のマルチキャスト・グループが可能になる。
【００３５】
【表２】
0004478390.tif 000003
【００３６】
例２．受信側を知らないマルチドロップ・パケットの送信
例１で説明したように、クラス経路指定を用いると、クラス値［０、１］に対するデポジット項目［０、０］を有するノードが、マルチドロップ・パケットのパス上にある場合であってもパケットのコピーを受け取らないようにすることができる。この情報は、マルチドロップ・パケットのソース・ノードが知る必要はない。言い換えると、クラス経路指定を用いると、ノードが、受信側を知らずにマルチドロップ・パケットを供給できるようになる。しかし、図１のネットワークには、１つの例外があり、マルチドロップ・パケットの宛先ノードが、必ずパケットのコピーを受け取る。したがって、宛先ノードが、パケットのコピーを受け取らない場合には、これを、ソース・ノードが別の宛先を使用できるようにするために、ソース・ノードに知らせなければならない。
【００３７】
たとえば、ノード（０、０）が、元々はノード（０、２）宛のマルチドロップ・パケットのソースであると仮定する。これは、３×３のサイズのトーラス・ネットワークの自然な宛先である。というのは、ノード（０、０）から（０、２）が、完全な行になるからである。ノード（０、２）が、コピーを受け取らない場合には、これをノード（０、０）が知らなければならない。ノード（０、０）が、ノード（０、１）がコピーを受け取ることも知っている場合には、（０、１）を、マルチドロップ・パケットの宛先として使用することができる。
【００３８】
宛先ノードによって引き起こされる例外を解決するために、クラス経路指定では、各スイッチが、パケットのコピーが宛先ノードでデポジットされなければならないかどうかを判定する追加のテーブルを有することができる。上の例を解決するために、ノード（０、２）について、この宛先テーブルの項目は、クラス値［０、１］について［１、０］である。クラス１の項目０によって、ノード（０、２）が、それが宛先である場合であってもマルチドロップ・メッセージを受け取らなくなる。クラス０の項目１によって、ノード（０、２）が、ユニキャスト・メッセージを普通に受け取れるようになる。この２つのテーブルを、下に示す。
【００３９】
【表３】
0004478390.tif 000004
【００４０】
【表４】
0004478390.tif 000005
【００４１】
上の例では、ノード（０、２）が、クラス値１のマルチキャストに参加しない。
【００４２】
対照的な例として、ノード（０、１）が、クラス値１のマルチキャストに参加する。ノード（０、１）の対応するテーブルを下に示す。
【００４３】
【表５】
0004478390.tif 000006
【００４４】
【表６】
0004478390.tif 000007
【００４５】
例３．スヌープ：
基本ネットワークのユニキャスト・メッセージに関するクラス値０の使用を含めて、上の例１で示したネットワークを仮定する。ノードは、デポジット・テーブルのクラス値０の項目１を使用することによって、そのスイッチを介して渡されるユニキャスト・パケットの情報をスヌープし、獲得し、保管することができる。
【００４６】
テーブルを、下に示す。この例では、ノードが、クラス値１のマルチキャストに参加する。このテーブルは、宛先ノード以外のノードのパケットだけに適用される。この例では、宛先ノードにあるパケットは、通常のユニキャスト経路指定としてデポジットされる。
【００４７】
【表７】
0004478390.tif 000008
【００４８】
そのようなスヌープの使用の例が、ネットワークの性能の調査である。スヌープがなければ、パケットがソース・ノードでネットワークに入った時と、パケットが宛先ノードでネットワークから出た時に関する情報だけがある可能性がある。スヌープがあれば、パケットが、パケットのパス上のノードを介して渡される時に関する情報を持つことができる。ノードの対の間に複数の有効なパスがある場合があるので、スヌープによって、特定のパスが使用されたかどうかに関する情報も提供することができる。ノードの対の間に複数の有効なパスがある経路指定の例が、たとえば適応経路指定である。
【００４９】
各スイッチが、デポジット・テーブルの異なる項目を有する可能性があるので、クラス経路指定によって、任意の数のノードをスヌープすることができる。ネットワーク内のノードの小さい部分だけがスヌープされる場合には、測定値は、統計的サンプリングである。
【００５０】
スヌープは、特にマルチキャストに関連しないクラス経路指定の使用の例である。
【００５１】
例４．単一相マルチキャスト
単一相マルチキャストでは、メッセージが、ノードの１つによって１回、ネットワークに注入される。対照的に、複数相マルチキャストでは、メッセージが、おそらくは複数のノードによって、複数回ネットワークに注入される。たとえば、上の例１で説明した３×３ノード・トーラスでの複数相マルチキャストでは、メッセージが、３つの異なるノードによって合計１＋３＝４回注入される。たとえば、上の例１で説明した５×５×５ノード・トーラスでの複数相マルチキャストでは、メッセージが、２５個の異なるノードによって合計１＋５＋２５＝３１回注入される。
【００５２】
周知の通り、単一相マルチキャストを提供するためには、スイッチが、着信パケットを複数の発信リンクに複製できなければならない。本質的に、複数相マルチキャストでノードによって実行されるメッセージ複製は、単一相マルチキャストではスイッチによって実行される。
【００５３】
単一相マルチキャストに関してクラス経路指定によって提供される利益は、発信スイッチのどれが特定の着信パケットのコピーを受け取るか否かの効率的なエンコードおよびデコードである。クラス経路指定によって提供されるエンコードおよびデコード方式を説明する単純な例の後で、この方式を既存の方式と比較する。
【００５４】
本明細書で説明する最初の例は、図１に示された３×３トーラスのノード（０、０）から９つのノードへの、例１で説明したものと同一のマルチキャストである。例１では、これが２相マルチキャストであったが、この場合には単一相マルチキャストである。この場合には、ネットワークにまたがるメッセージのパターンが、例１のパターンに似るように選択される。
【００５５】
各パケット・ヘッダが、クラス値のフィールドを有する。この値は、０または１のいずれかである。各スイッチは、パケットの通常のユニキャスト経路指定が実行されるかどうか、または単一相マルチキャスト経路指定の処置が実行されるかどうかを判定するのに使用されるテーブルを有する。このテーブルの各項目は、フォーマットＵＤＸＹのビット・ストリングである。テーブル内の項目Ｕが１である場合には、通常のユニキャスト経路指定が実行され、そうでない場合には実行されない。Ｄが１である場合には、パケットのコピーが、ローカル・ノードでデポジットされ、そうでない場合にはデポジットされない。Ｘが１である場合には、パケットのコピーが、正のＸリンクに進み、そうでない場合には進まない。Ｙが１である場合には、パケットのコピーが、正のＹリンクに進み、そうでない場合には進まない。負のＸ方向およびＹ方向の２つのリンクは、この例には関係なく、説明を簡単にするために、ここでは無視する。
【００５６】
クラス値０について、テーブル内の項目は、すべてのノードで１０００である。したがって、クラス値０を有するパケットは、元のユニキャスト・メッセージ受渡に従う。クラス値１について、テーブル内の項目は、ネットワーク内のスイッチの位置に依存する。各スイッチの項目は、例１の複数相マルチキャストの対応するノードの処置をまねたものになる。
【００５７】
各ノードで、ノードに入るすべてのパケットが、テーブルに従う。パケットが、クラス値０を有する場合に、ＵＤＸＹ＝１０００によって、パケットが、ユニキャスト・パケットとして識別され、その後、パケットの宛先だけが検査される。
【００５８】
クラス値１の場合に、スイッチ（０、０）は、項目００１１を有する。これによって、マルチキャストのソース・ノードが、別のコピーを必要としないことが仮定される。ノード（０、０）のテーブルを下に示す。
【００５９】
【表８】
0004478390.tif 000009
【００６０】
３×３トーラスの他のスイッチのクラス値１について継続すると、スイッチ（０、１）は、項目０１１１を有する。４つのスイッチ（０、２）、（１、０）、（１、１）、および（１、２）は、項目０１０１を有する。３つのスイッチ（２、０）、（２、１）、および（２、２）は、項目０１００を有する。上記は、クラス１を使用する例のマルチキャストに必要な情報の完全なエンコードである。短く言うと、クラス値０を有するパケットは、元のユニキャスト・メッセージ受渡に従う。クラス１を有し、ノード（０、０）から発するパケットによって、単一相マルチキャスト経路指定が実行される。
【００６１】
クラス１を使用するノード（０、０）からのマルチキャストに関する各ノードの上のＵＤＸＹ値を、図３に示す。各ノードで、Ｄ＝０の場合すなわち、パケットのコピーがそのノードでデポジットされない場合に、円が白抜きにされる。各ノードで、Ｄ＝１の場合すなわち、パケットのコピーがそのノードでデポジットされる場合に、円が塗り潰される。各ノードで、Ｘ＝１の場合すなわち、パケットのコピーが正のＸリンクに出る場合に、正のＸ方向の矢印がある。各ノードで、Ｙ＝１の場合すなわち、パケットのコピーが正のＹリンクに出る場合に、正のＹ方向の矢印がある。
【００６２】
本明細書で説明する第２の例は、角（０、０、０）および（４、４、４）を有する５×５×５キューブのノード（０、０、０）から１２５個のノードへの、例１で説明したものと同一のマルチキャストである。例１は、３相マルチキャストがあるが、この場合には単一相マルチキャストがある。この場合には、ネットワークを介するメッセージのパターンが、例１のパターンに類似するように選択される。
【００６３】
各パケット・ヘッダが、クラス値のフィールドを有する。この値は、０または１のいずれかである。各スイッチは、パケットの通常のユニキャスト経路指定が実行されるかどうか、または単一相マルチキャスト経路指定の処置が実行されるかどうかを判定するのに使用されるテーブルを有する。このテーブルの各項目は、フォーマットＵＤＸＹＺのビット・ストリングである。テーブル内の項目Ｕが１である場合には、通常のユニキャスト経路指定が実行され、そうでない場合には実行されない。Ｄが１である場合には、パケットのコピーが、ローカル・ノードでデポジットされ、そうでない場合にはデポジットされない。Ｘが１である場合には、パケットのコピーが、正のＸリンクに進み、そうでない場合には進まない。ビットＹおよびＺに関しても同様である。負のＸ方向、Ｙ方向およびＺ方向の３つのリンクは、この例には関係なく、説明を簡単にするために、ここでは無視する。
【００６４】
クラス値０について、テーブル内の項目は、すべてのノードで１００００である。したがって、クラス値０を有するパケットは、元のユニキャスト・メッセージ受渡に従う。クラス値１について、テーブル内の項目は、ネットワーク内のスイッチの位置に依存する。各スイッチの項目は、例１の複数相マルチキャストの対応するノードの処置をまねたものになる。
【００６５】
クラス値１について、スイッチ（０、０、０）は、項目００１１１を有する。これによって、マルチキャストのソース・ノードが、別のコピーを必要としないと仮定される。３つのスイッチ（０、０、１）から（０、０、３）は、項目０１１１１を有する。スイッチ（０、０、４）は、項目０１１１０を有する。ｘ＝０平面内で角（０、１、０）、（０、１、４）、（０、３、０）、および（０、３、４）を有する１５個のスイッチは、項目０１１１０を有する。５つのスイッチ（０、４、０）から（０、４、４）は、項目０１１００を有する。角（１、０、０）、（１、０、４）、（３、０、０）、および（３、０、４）を有するキューブの７５個のスイッチは、項目０１１００を有する。ｘ＝４平面内で角（４、０、０）、（４、０、４）、（４、４、０）、および（４、４、４）を有する２５個のスイッチは、項目０１０００を有する。上記は、クラス１を使用する例のマルチキャストに必要な情報の完全なエンコードである。短く言うと、クラス値０を有するパケットは、元のユニキャスト・メッセージ受渡に従う。クラス１を有し、ノード（０、０、０）から発するパケットによって、単一相マルチキャスト経路指定が実行される。
【００６６】
単一相マルチキャストに関するクラス経路指定の上の例では、ＵＤＸＹＺビット・ストリングによって、パケットがどの出力ポートに複製されるかが決定される。類似するビット・ストリングが、単一相マルチキャストの既存の実施形態で使用される。１つの例が、R.Sivaram、R.Kesavan、D.K.Panda、C.B.Stunkel、「Architectural Support forEfficient Multicasting in Irregular Networks」、IEEE Trans. On Par. And Dist.Systems、Vol.12、No.5、2001年5月に記載されている。もう１つの例が、米国特許第５３３３２７９号、「Self-timed meshrouting chip with data broadcasting」、D.Dunningに記載されている。これらの既存の実施形態では、スイッチごとの、上のＵＤＸＹＺに似たビット・ストリングが、パケット・ヘッダ内にある。対照的に、上のクラス経路指定実施形態では、パケット・ヘッダに、単に、テーブル内でＵＤＸＹＺ項目をルック・アップするために各スイッチで使用されるクラス値が含まれる。
【００６７】
上の単一相マルチキャストのクラス経路指定実施形態は、いくつかの形で、これらの既存の実施形態より一般的でないが、このクラス経路指定は、いくつかの形で、より効率的である。たとえば、パケット・ヘッダ内で、クラス値のフィールドは、スイッチごとのビット・ストリングのフィールドよりはるかに小さい。上の例では、クラス値が、０または１であり、したがって、ヘッダ内の１ビット・フィールドに保管することができる。対照的に、上のＵＤＸＹＺビット・ストリングは、ヘッダ内の５ビット・フィールドを必要とする。さらに、異なるスイッチが、ＵＤＸＹＺの異なる値を有するので、ＵＤＸＹＺ値の複数のフィールドが必要である。ヘッダ内のより小さいフィールドは、トーラス・ネットワークの物理帯域幅の消費が減り、アプリケーション・データにより多くの帯域幅が残されるので、より効率的である。パケットを転送できるようになる前に、スイッチで、ヘッダ全体を読み取り、エラーについて検査しなければならないので、より小さいフィールドを用いると、待ち時間を短くすることができる。
【００６８】
例５．ネットワーク内の任意のノードからの単一相マルチキャスト
例４で説明したクラス経路指定を使用する単一相マルチキャストを用いると、単一のノードが、メッセージのソースになることができる。２次元３×３トーラスの例では、ソースが、ノード（０、０）である。３次元５×５×５トーラスの例では、ソースが、ノード（０、０、０）である。クラス経路指定テーブルが、異なるノードで異なる値を有するので、これを異種単一相マルチキャスト（heterogeneous single phase multicast）と命名する。テーブルだけが、入力リンクの１つに使用される。
【００６９】
クラス経路指定は、ソースをネットワーク内の任意のノードとすることができる、単一相マルチキャストの実施に使用することもできる。トーラスなどの同種ネットワーク上では、クラス経路指定テーブルが、すべてのノードで同一の値を有するので、これを同種単一相マルチキャスト（homogenous single phase multicast）と命名する。単一のノードで、クラス経路指定テーブルが、異なる着信リンクに対して異なる値を有する。
【００７０】
本明細書で説明する最初の例は、図１に示された３×３トーラスのノード（０、０）から９つのノードへの、例４で説明したものと同一のマルチキャストである。例４では、異種単一相マルチキャストであったが、この場合には同種単一相マルチキャストである。この場合には、ネットワークを介するメッセージのパターンが、例４のパターンに類似するように選択される。
【００７１】
例４の異種単一相マルチキャストでは、着信リンクのいずれかを介してノードに達するパケットは、同一のテーブルを使用して、クラス値に基づいてそのパケットに対してスイッチが実行する処理が決定される。例４で示したように、異種マルチキャストでは、異なるノードがテーブル内の異なる値を有する。対照的に、この例の同種単一相マルチキャストでは、各スイッチの各着信リンクが、着信パケットに対して実行される処置を決定するのに使用されるテーブルを有する。下で示すように、同種マルチキャストでは、異なるノードが、テーブル内の同一の値を有する。
【００７２】
各パケット・ヘッダが、クラス値のフィールドを有する。この値は、０または１のいずれかである。各スイッチの各着信リンクは、パケットの通常のユニキャスト経路指定が実行されるかどうか、または単一相マルチキャスト経路指定が実行されるかどうかを決定するのに使用されるテーブルを有する。このテーブルの各項目は、フォーマットＵＤＸＹのビット・ストリングを有する。テーブル項目のＵが１である場合には、通常のユニキャスト経路指定が実行され、そうでない場合には実行されない。Ｄが１である場合には、パケットのコピーが、ローカル・ノードでデポジットされ、そうでない場合にはデポジットされない。Ｘが１であり、パケットのＸ宛先がノードのＸ位置でない場合には、パケットのコピーが、正のＸリンクに進み、そうでない場合には進まない。Ｙが１であり、パケットのＹ宛先がノードのＹ位置でない場合には、パケットのコピーが、正のＹリンクに進み、そうでない場合には進まない。各ノードについて、負のＸ方向およびＹ方向の２つの発信リンクは、この例には関係なく、説明を簡単にするために、ここでは無視する。各ノードについて、負のＸ方向およびＹ方向の２つの着信リンクは、この例には関係なく、説明を簡単にするために、ここでは無視する。
【００７３】
上で説明したように、パケットのＸ宛先およびＹ宛先が、パケットに対して実行される処置を決定するために判定される。したがって、ノード（０、０）が３×３トーラスの他の８個のノードのすべてにブロードキャストするためには、パケットが、宛先（３、３）を有しなければならない。
【００７４】
一般に、この例のブロードキャストについて、パケットの宛先は、ブロードキャストのソースから正のＸ方向および正のＹ方向で最も遠いノードである。たとえば、ノード（１、０）が３×３トーラスの他の８個のノードのすべてにブロードキャストするためには、パケットが、宛先（０、２）を有しなければならない。
【００７５】
クラス値０について、テーブル内の項目は、すべてのノードのすべてのテーブルで１０００である。したがって、クラス値０のパケットは、元のユニキャスト・メッセージ受渡に従う。クラス値１について、テーブル内の項目は、そのパケットがどの着信リンクに到着したかに依存する。そのテーブルを、下に示す。各着信リンクの項目は、結果の同種マルチキャストが、図４の異種マルチキャストをまねるようになるものである。
【００７６】
【表９】
0004478390.tif 000010
【００７７】
【表１０】
0004478390.tif 000011
【００７８】
上記は、クラス１を使用する例のマルチキャストに必要な情報の完全なエンコードである。短く言うと、クラス値０を有するパケットは、元のユニキャスト・メッセージ受渡に従う。クラス１を有するパケットによって、同種単一相マルチキャスト経路指定が実行される。
【００７９】
上の２次元トーラスの例を与えられれば、この技法が、他のネットワークに簡単に拡張される。上の例のクラス１は、メッシュの正Ｘおよび正Ｙの象限でのマルチキャストをもたらすとみなすことができる。３つの追加の類似するクラス２、３、および４によって、他の３つの象限すなわち、負Ｘおよび正Ｙ、正Ｘおよび負Ｙ、ならびに負Ｘおよび負Ｙでのマルチキャストを提供することができる。これらの４つのクラスを用いると、メッシュ内の任意のノードが、４つのマルチキャストを使用して、メッシュ内のすべての他のノードにパケットを有効にブロードキャストできるようになる。トーラスで同一のブロードキャスト技法を使用すると、上で説明した単一クラス技法の２倍高速になる。２倍速いのは、ソース・ノードと宛先ノードの距離が半分になるからである。この技法が実現可能であるのは、トーラスの任意のノードを、メッシュの中央のノードとして扱うことができるからである。
【００８０】
上記の技法は、Ｄ次元のメッシュまたはトーラスに簡単に一般化される。Ｄ次元のメッシュまたはトーラスでは、２＾Ｄ個のクラスを用いて、メッシュまたはトーラス内の任意のノードが、２＾Ｄ個のマルチキャストを使用して、メッシュまたはトーラス内のすべての他のノードにパケットを有効にブロードキャストできるようになる。トーラスでは、すべてのノードへの代替の単一ブロードキャストが、完了するのにトーラスでの２＾Ｄ個のマルチキャストの２倍を必要とする。というのは、ソース・ノードと最も遠い宛先の間の距離が、単一ブロードキャストで２倍になるからである。
【００８１】
クラス・テーブルの機能強化および代替形態
スイッチでのテーブルの使用の代わりにまたはこれに加えて、クラス値とおそらくはパケットの他の特性を、アルゴリズムに入力することができる。テーブル項目が、すべてのクラス値について同一である場合に、異なるテーブルの相対優先順位を用いてプログラムすることができるように、スイッチが、テーブルによって要求される衝突する処置の間で判断する必要があるかどうかのアルゴリズムを使用することがよりよい場合がある。
【００８２】
他のクラスを作成するためのクラスベースのマルチキャストの使用
例５では、クラス値０が、通常のユニキャストに使用されるが、クラス値１を、トーラス内のすべてのノードへのブロードキャストに使用することができる。ブロードキャスト機構を確立したので、これを使用して、どのようなデータでもブロードキャストすることができる。たとえば、このデータを、他のクラスのクラス・テーブル項目とすることができる。たとえば、例５では、追加のクラス２、３、および４の必要が識別された。どのような手段でも、それによってクラス１でのマルチキャストを確立したならば、クラス１を使用して、クラス２、３、および４を作成することができる。一般に、１つまたは複数の特定のクラス値での通信を確立したならば、その通信を使用して、他のクラス値での通信を確立することができる。
【００８３】
例７．クラス機能を使用する密行列計算
本発明では、トーラス・コンピュータ・ネットワークでクラス機能を使用して、密行列計算も行う。トーラス・コンピュータ・ネットワークでハードウェア実施されるクラス機能を使用することによって、高性能密行列計算を行うことが可能になる。
【００８４】
クラス機能は、この例では、クラス・ネットワーク経路指定に基づくマルチキャストに使用される名前である。しばしば、マルチキャストは、同一行の他のノードに対するものである。非常にしばしば、クラス経路指定によって、例１で説明した、単一相のパスベース・マルチドロップ・メッセージ受渡を実施することで十分である。マルチキャストは、行に対するものでない時に、トーラスまたはメッシュの、平面、立体、またはより高次元のサブセットである。この場合に、最適な性能のために、クラス経路指定によって、例５で説明した単一相マルチキャストなどのより洗練されたマルチキャストを実施する必要がある。
【００８５】
本発明では、ハードウェア・クラス機能能力を有する分散メモリ並列スーパーコンピュータでの密行列反転アルゴリズムをより高速に実行されるようにする。これは、密行列反転の通信パターンを、ハードウェア・クラス機能によってサービスできるという事実を活用することによって達成される。これによって、より高速の実行時間がもたらされる。
【００８６】
本明細書で述べるアルゴリズムは、当技術分野で周知であり、たとえば、NUMERICALRECIPES IN FORTRAN, THE ART OF SCIENTIFIC COMPUTING, Second Edition、by WilliamH. Press, et al.、特に２７ページ以下参照に記載されている。
【００８７】
図４に、各プロセッサが行および列の数字によってラベルを付けられている、プロセッサの４×４グリッドを示す。たとえば、行２列３のプロセッサは、ｐ（２、３）である。列ｉおよび行ｉ（陰付きの区域）ならびにクラス機能を介して行／列を送らなければならない方向も示されている。
【００８８】
ガウス・ジョルダン消去法ならびに他の方法などの標準アルゴリズムを使用して、密線形行列を反転することができる。一般に、必要な入出力は、ハードウェア・クラス機能能力を有する並列スーパーコンピュータの通信機能性によく適する特殊な１対多変形入出力である。クラス機能性を使用して、計算機の行全体または面全体にデータをマルチキャストすることができる。
【００８９】
本発明の説明で使用される用語の一部を、下で説明する。
【００９０】
ガウス・ジョルダン・アルゴリズム：
枢軸演算がないガウス・ジョルダン・アルゴリズムの核を、下に示す。当初は、ｂが、単位行列であり、ａが、逆行列を計算される行列である。
do i=1,N
doj=i,N
do k=1,N; (kはiに等しくない)
b(k,j) = b(k,j) - [a(k,i) / a(i,i)] * b(i,j)
a(k,j) = a(k,j) - [a(k,i) / a(i,i)] * a(i,j)
enddo
enddo
enddo
式１
【００９１】
分散メモリ並列スーパーコンピュータ：
そのようなコンピュータは、多数のノードからなる。各ノードは、ローカル・メモリに作用する１つまたは複数のプロセッサを有する。ノードは、通常は、ｄ次元グリッドとして接続され、グリッド・リンクを介して通信する。グリッドが、Ｐ×Ｐプロセッサを有する２次元である場合に、Ｎ×Ｎ行列を分割し、その結果、そのＬ×Ｌ部分が、各ノードに存在するようにすることができる（Ｌ＝Ｎ／Ｐ）。計算機が、２次元グリッドとして接続されない場合に、行列をグリッドに適当に「折り畳む」ことによって、必ずこの問題をグリッドにマッピングすることができる。一般性を失わず、本発明の提示を単純にするために、プロセッサ・グリッドが、２次元であると仮定する。
【００９２】
ハードウェア・クラス機能：
クラス機能は、マルチキャストのハードウェア実施形態である。プロセッサｐ（１、１）（数字は、グリッドでのプロセッサの位置を示す。図４も参照されたい）が、プロセッサｐ（１、２）、ｐ（１、３）、およびｐ（１、４）にデータの同一のパケットを送ることを求めると仮定する。通常、これは、まず、プロセッサｐ（１、２）にデータを送ることによって行われる。データがｐ（１、２）に達したならば、ソフトウェア・ルーチンによってそのデータが読み取られ、メモリに保管される。その後、ｐ（１、２）が、メモリからデータを読み取り、ｐ（１、３）などに送る。これに関する問題は、データのパケットをメモリに完全に受け取り、それを再送信するのに長い時間がかかることである。ｐ（１、２）に達したデータのパケットが、同時にｐ（１、２）メモリに保管され、即座にｐ（１、３）に送られるようにハードウェアが作られる場合に、遅延が大幅に減る。データのパケットが、それが通過する中間プロセッサのメモリにデポジットされる間に、そのパケットをｐ（１、４）に送るｐ（１、１）のハードウェア機能を、ハードウェア・クラス機能と呼ぶ。
【００９３】
本発明：
本発明では、密行列反転（たとえばガウス・ジョルダン法を使用する）の通信パターンによってクラス機能を使用できるという事実を活用する。これは、ガウス・ジョルダン・アルゴリズムを説明した式１からわかる。
【００９４】
ａ（ｉ、ｉ）が、他の何らかの方法、たとえばグローバル・ブロードキャストを介して通信される。その後、ｂ（ｋ、ｊ）およびａ（ｋ、ｊ）に関する式の右辺で、両方ではなく１つのインデックスだけが（ｋ、ｊ）と異なる要素（ａ（ｋ、ｉ）、ａ（ｉ、ｊ）、およびｂ（ｉ、ｊ））が用いられる。クラス機能通信を使用して、そのような要素を、関連するプロセッサの間で送ることができる。たとえば、所与の行ｋのｂ（ｋ、ｊ）、（１＜ｊ＜Ｎ）を計算するためには、行ｋを含むすべてのプロセッサについてａ（ｋ、ｉ）が既知であることが必要である。したがって、行列の行ｋを含むプロセッサの行に沿って、ａ（ｋ、ｉ）を送らなければならない。これは、クラス機能性を使用して行うことができる。既に述べたように、これによって、総通信時間の大幅な削減がもたらされる。
【００９５】
これによって、本発明の着想の説明を終える。この着想を、ガウス・ジョルダン・アルゴリズムに関して説明したが、この着想は、ガウス・ジョルダン・アルゴリズムに固有ではない。たとえば、この着想は、「枢軸計算があるガウス・ジョルダン」アルゴリズム、「後退代入があるガウス・ジョルダン」アルゴリズム、および「ＬＵ分解」アルゴリズムに適用される。
【００９６】
この着想の実施形態（ガウス・ジョルダン・アルゴリズムを使用する）を、すべての詳細と共に、下で例として提示する。例をわかりやすくするために、最も単純な実施形態を選択した。より大きいデータ・パケットを含む通信をもたらすより複雑な実施形態も、案出されている。プロセッサ・グリッドのサイズおよび行列のサイズに依存して、より大きいパケット・サイズが望ましい場合がある。というのは、これによって、待ち時間を最小にすることによってさらに性能が改善されるからである。しかし、これは、この着想の前提に影響しない。
【００９７】
例のアルゴリズム：
ガウス・ジョルダン・アルゴリズムを使用して、Ｐ×Ｐノードのグリッドに均等に分散されたサイズＮ×Ｎの密行列の逆行列を見つける。したがって、各ノードは、そのメモリに行列のＬ×Ｌ部分を有する（Ｌ＝Ｎ／Ｐ）。ハードウェア・クラス機能を使用して、行および列にデータをマルチキャストする。このアルゴリズムの視覚的な表現については、上の図１を参照されたい。
【００９８】
Ｆｏｒ  ｅａｃｈ  １＜ｉ＜Ｎ
１）クラス機能を使用して、ａの列ｉ（ａ（ｋ、ｉ）、１＜ｋ＜Ｎ）を左から右に送る
２）行ｉの要素ａ、ｂをａ（ｉ、ｉ）によってスケーリングする
３）クラス機能を使用して、新しい行ｉのａおよびｂ（ａ（ｉ、ｊ）およびｂ（ｉ、ｊ）、１＜ｊ＜Ｎ）を上下に送る
４）ここで、すべてのプロセッサが、列ｉに関する標準ガウス・ジョルダン・ステップを行うのに必要な要素を有する。この列の末尾で、ｉは、単位行列の列ｉと同一である。
Ｒｅｐｅａｔ
例の終り：
【００９９】
クラス・ネットワーク経路指定に関する本発明の複数の実施形態および変形形態を、本明細書で詳細に説明したが、本発明の開示および教示によって、多数の代替設計が当業者に示されることは明白である。
【図面の簡単な説明】
【０１００】
【図１】本発明による、２次元３×３トーラス・ネットワークを使用する多次元グリッドを介して相互接続された９つのノードを含む例示的な分散メモリ並列スーパーコンピュータを示す図である。
【図２】図１の分散メモリ並列スーパーコンピュータの９つのノードの例示的なノードＱ００を詳細に示す図である。
【図３】図１に示された分散メモリ並列スーパーコンピュータの、ノードＱ００から他の８つのノードへの例示的な単一相マルチキャストを示す図である。
【図４】各プロセッサが行および列の数字によってラベルを付けられている、プロセッサの４×４グリッドを示す図である。
【図１】
0004478390.tif 000012
【図２】
0004478390.tif 000013
【図３】
0004478390.tif 000014
【図４】
0004478390.tif 000015