(57)【特許請求の範囲】
【請求項１】
複数の入力ポートと該入力ポートにそれぞれ対応づけられた複数の出力ポートとを有し、前記出力ポートからマルチキャストパケットを出力するネットワークスイッチにおいて、
前記複数の出力ポートのうちから前記マルチキャストパケットを出力するための出力ポートを指定する情報であるマルチキャスト制御情報を保持するマルチキャスト制御情報保持部と、
前記マルチキャスト制御情報保持部に対して、前記マルチキャストパケットの転送経路を設定する転送経路設定を行うマルチキャスト制御部とを有し、
前記マルチキャスト制御部は、当該ネットワークスイッチに対して転送経路設定を指示する経路設定コマンドを受信したときに、該経路設定コマンドを受信した入力ポートに対応する出力ポートおよび、該経路設定コマンドが指定する宛先に届くように該経路設定コマンドを出力する出力ポートを、前記マルチキャストパケットを転送する出力ポートとして設定し、マルチキャストパケットを受信した場合、前記マルチキャスト制御情報保持部が保持するマルチキャスト制御情報が指定する出力ポートのうち、該マルチキャストパケットを受信した入力ポートに対応する出力ポート以外の出力ポートに対して該マルチキャストパケットを出力することを特徴とするネットワークスイッチ。
【請求項２】
請求項１に記載のネットワークスイッチであって、
経路設定が完了したことを通知する経路設定完了通知を生成する完了通知生成部と、
前記入力ポートに前記経路設定コマンドが入力されたときに、該経路設定コマンドの転送先情報が示す宛先と、該経路設定コマンドが入力されたネットワークスイッチとが一致するか否かを判別する宛先一致判定部と、を有し、
前記宛先一致判定部が一致すると判別したネットワークスイッチでは、経路設定完了時において、前記完了通知生成部にて前記経路設定完了通知を生成し、
該生成した経路設定完了通知を、前記マルチキャスト制御情報保持部が保持するマルチキャスト制御情報が指定する出力ポートに対して出力することを特徴とするネットワークスイッチ。
【請求項３】
前記入力ポートの１つに前記経路設定完了通知が入力されたときに、前記マルチキャスト制御情報保持部が保持するマルチキャスト制御情報が指定する出力ポートのうち、該経路設定完了通知を受信した入力ポートに対応する出力ポート以外の出力ポートに対して該経路設定完了通知を出力することを特徴とする請求項２に記載のネットワークスイッチ。
【請求項４】
前記マルチキャスト制御部が前記転送経路設定を完了したプロセス数である経路設定完了プロセス数をカウントするプロセス数カウンタ部と、
前記プロセス数カウンタ部がカウントした経路設定完了プロセス数と、マルチキャスト通信に参加するプロセス数であるグループ所属プロセス数が一致するかどうかを比較する比較部とを有し、
前記経路設定完了通知を受信したときに、前記比較部にて一致判定を行い、一致するとしたときに、前記マルチキャスト制御情報保持部が保持するマルチキャスト制御情報を、該経路設定完了通知を受信した入力ポートに対応する出力ポートにはマルチキャストパケットを出力しないように修正を行うマルチキャスト情報修正部を有することを特徴とする請求項３に記載のネットワークスイッチ。
【請求項５】
前記マルチキャスト制御部が前記転送経路設定を完了したプロセス数である経路設定完了プロセス数をカウントするプロセス数カウンタ部と、
前記プロセス数カウンタ部がカウントした経路設定完了プロセス数と、マルチキャスト通信に参加するプロセス数であるグループ所属プロセス数が一致するかどうかを比較する比較部とを有し、
前記経路設定コマンドを受信したときに、前記比較部にて一致判定を行い、一致するとしたときに、前記マルチキャスト制御情報保持部が保持するマルチキャスト制御情報を、該経路設定コマンドが指定する宛先に届くように該経路設定コマンドを出力する出力ポートにはマルチキャストパケットを出力しないように修正を行うマルチキャスト情報修正部を有することを特徴とする請求項１に記載のネットワークスイッチ。
【請求項６】
前記プロセス数カウンタ部は、前記入力ポートに前記経路設定コマンドが入力されたときに、前記経路設定完了プロセス数をカウントすることを特徴とする請求項４または５に記載のネットワークスイッチ。
【請求項７】
前記マルチキャスト制御情報保持部は、前記複数の出力ポートにそれぞれ対応付けられた複数のビットを含むマルチキャスト制御情報を保持し、
前記ビットに設定されている値の更新により、該更新したビットに対応する出力ポートを、前記マルチキャストパケットを出力する出力ポートとして指定することを特徴とする請求項１から６のいずれかに記載のネットワークスイッチ。
【請求項８】
前記マルチキャスト制御情報保持部は、前記更新の対象とするビットを含むマルチキャスト制御情報を、マルチキャスト通信を識別する識別情報であるマルチキャストＩＤで指定することを特徴とする請求項７に記載のネットワークスイッチ。
【請求項９】
複数の入力ポートと該入力ポートにそれぞれ対応づけられた複数の出力ポートとを有し、前記出力ポートからマルチキャストパケットを出力するネットワークスイッチにおけるマルチキャスト経路設定方法であって、
前記複数の出力ポートのうちから前記マルチキャストパケットを出力するための出力ポートを指定する情報であるマルチキャスト制御情報を保持するマルチキャスト制御情報保持処理と、
前記マルチキャスト制御情報保持処理に対して、前記マルチキャストパケットの転送経路を設定する転送経路設定を行うマルチキャスト制御処理とを有し、
前記マルチキャスト制御処理は、前記ネットワークスイッチに対して転送経路設定を指示する経路設定コマンドをネットワークスイッチが受信したときに、該経路設定コマンドを受信した入力ポートに対応する出力ポートおよび、該経路設定コマンドが指定する宛先に届くように該経路設定コマンドを出力する出力ポートを、前記マルチキャストパケットを転送する出力ポートとして設定し、
ネットワークスイッチがマルチキャストパケットを受信した場合に、前記マルチキャスト制御情報保持処理が保持するマルチキャスト制御情報が指定する出力ポートのうち、該マルチキャストパケットを受信した入力ポートに対応する出力ポート以外の出力ポートに対して該マルチキャストパケットを出力するマルチキャスト転送処理を有することを特徴とするマルチキャスト経路設定方法。
【請求項１０】
請求項９に記載のマルチキャスト経路設定方法であって、
経路設定が完了したことを通知する経路設定完了通知を生成する完了通知生成処理と、
前記入力ポートに前記経路設定コマンドが入力されたときに、該経路設定コマンドの転送先情報が示す宛先と、該経路設定コマンドが入力されたネットワークスイッチとが一致するか否かを判別する宛先一致判定処理と、を有し、
前記宛先一致判定処理が一致すると判別したネットワークスイッチでは、経路設定完了時において、前記完了通知生成処理にて前記経路設定完了通知を生成し、
該生成した経路設定完了通知を、前記マルチキャスト制御情報保持処理が保持するマルチキャスト制御情報が指定する出力ポートに対して出力することを特徴とする経路設定方法。
【請求項１１】
前記入力ポートの１つに前記経路設定完了通知が入力されたときに、前記マルチキャスト制御情報保持処理が保持するマルチキャスト制御情報が指定する出力ポートのうち、該経路設定完了通知を受信した入力ポートに対応する出力ポート以外の出力ポートに対して該経路設定完了通知を出力することを特徴とする請求項１０に記載の経路設定方法。
【請求項１２】
前記マルチキャスト制御処理が前記転送経路設定を完了したプロセス数である経路設定完了プロセス数をカウントするプロセス数カウント処理と、
前記プロセス数カウント処理がカウントした経路設定完了プロセス数と、マルチキャスト通信に参加するプロセス数であるグループ所属プロセス数が一致するかどうかを比較する比較処理とを有し、
前記経路設定完了通知を受信したときに、前記比較処理にて一致判定を行い、一致するとしたときに、前記マルチキャスト制御情報保持処理が保持するマルチキャスト制御情報を、該経路設定完了通知を受信した入力ポートに対応する出力ポートにはマルチキャストパケットを出力しないように修正を行うマルチキャスト情報修正処理を有することを特徴とする請求項１１に記載の経路設定方法。
【請求項１３】
前記マルチキャスト制御処理が前記転送経路設定を完了したプロセス数である経路設定完了プロセス数をカウントするプロセス数カウント処理と、
前記プロセス数カウント処理がカウントした経路設定完了プロセス数と、マルチキャスト通信に参加するプロセス数であるグループ所属プロセス数が一致するかどうかを比較する比較処理とを有し、
前記経路設定コマンドを受信したときに、前記比較処理にて一致判定を行い、一致するとしたときに、前記マルチキャスト制御情報保持処理が保持するマルチキャスト制御情報を、該経路設定コマンドが指定する宛先に届くように該経路設定コマンドを出力する出力ポートにはマルチキャストパケットを出力しないように修正を行うマルチキャスト情報修正処理を有することを特徴とする請求項９に記載の経路設定方法。
【請求項１４】
前記プロセス数カウント処理は、前記入力ポートに前記経路設定コマンドが入力されたときに、前記経路設定完了プロセス数をカウントすることを特徴とする請求項１２または１３に記載の経路設定方法。
【請求項１５】
前記マルチキャスト制御情報保持処理は、前記複数の出力ポートにそれぞれ対応付けられた複数のビットを含むマルチキャスト制御情報を保持し、
前記ビットに設定されている値の更新により、該更新したビットに対応する出力ポートを、前記マルチキャストパケットを出力する出力ポートとして指定することを特徴とする請求項９から１４のいずれかに記載の経路設定方法。
【請求項１６】
前記マルチキャスト制御情報保持処理は、前記更新の対象とするビットを含むマルチキャスト制御情報を、マルチキャスト通信を識別する識別情報であるマルチキャストＩＤで指定することを特徴とする請求項１５に記載の経路設定方法。
【請求項１７】
並列計算機システムに実行させるプログラムであって、
ネットワークスイッチが具備する複数の入力ポートと該入力ポートにそれぞれ対応づけられた複数の出力ポートのうちからマルチキャストパケットを出力するための出力ポートを指定する情報であるマルチキャスト制御情報を保持するマルチキャスト制御情報保持手順と、
前記マルチキャスト制御情報保持手順に対して、前記マルチキャストパケットの転送経路を設定する転送経路設定を行うマルチキャスト制御手順とを並列計算機システムに実行させ、
前記マルチキャスト制御手順は、前記ネットワークスイッチに対して転送経路設定を指示する経路設定コマンドをネットワークスイッチが受信したときに、該経路設定コマンドを受信した入力ポートに対応する出力ポートおよび、該経路設定コマンドが指定する宛先に届くように該経路設定コマンドを出力する出力ポートを、前記マルチキャストパケットを転送する出力ポートとして設定し、
ネットワークスイッチがマルチキャストパケットを受信した場合に、前記マルチキャスト制御情報保持手順にて保持するマルチキャスト制御情報が指定する出力ポートのうち、該マルチキャストパケットを受信した入力ポートに対応する出力ポート以外の出力ポートに対して該マルチキャストパケットを出力するマルチキャスト転送手順を実行させることを特徴とするプログラム。
【請求項１８】
請求項１７に記載のプログラムであって、
経路設定が完了したことを通知する経路設定完了通知を生成する完了通知生成手順と、
前記入力ポートに前記経路設定コマンドが入力されたときに、該経路設定コマンドの転送先情報が示す宛先と、該経路設定コマンドが入力されたネットワークスイッチとが一致するか否かを判別する宛先一致判定手順と、を有し、
前記宛先一致判定手順が一致すると判別したネットワークスイッチでは、経路設定完了時において、前記完了通知生成手順にて前記経路設定完了通知を生成し、
該生成した経路設定完了通知を、前記マルチキャスト制御情報保持手順にて保持するマルチキャスト制御情報が指定する出力ポートに対して出力することを特徴とするプログラム。
【請求項１９】
前記入力ポートの１つに前記経路設定完了通知が入力されたときに、前記マルチキャスト制御情報保持手順にて保持するマルチキャスト制御情報が指定する出力ポートのうち、該経路設定完了通知を受信した入力ポートに対応する出力ポート以外の出力ポートに対して該経路設定完了通知を出力することを特徴とする請求項１８に記載のプログラム。
【請求項２０】
前記マルチキャスト制御手順が前記転送経路設定を完了したプロセス数である経路設定完了プロセス数をカウントするプロセス数カウント手順と、
前記プロセス数カウント手順がカウントした経路設定完了プロセス数と、マルチキャスト通信に参加するプロセス数であるグループ所属プロセス数が一致するかどうかを比較する比較手順とを有し、
前記経路設定完了通知を受信したときに、前記比較手順にて一致判定を行い、一致するとしたときに、前記マルチキャスト制御情報保持手順が保持するマルチキャスト制御情報を、該経路設定完了通知を受信した入力ポートに対応する出力ポートにはマルチキャストパケットを出力しないように修正を行うマルチキャスト情報修正手順を有することを特徴とする請求項１９に記載のプログラム。
【請求項２１】
前記マルチキャスト制御手順が前記転送経路設定を完了したプロセス数である経路設定完了プロセス数をカウントするプロセス数カウント手順と、
前記プロセス数カウント手順がカウントした経路設定完了プロセス数と、マルチキャスト通信に参加するプロセス数であるグループ所属プロセス数が一致するかどうかを比較する比較手順とを有し、
前記経路設定コマンドを受信したときに、前記比較手順にて一致判定を行い、一致するとしたときに、前記マルチキャスト制御情報保持手順が保持するマルチキャスト制御情報を、該経路設定コマンドが指定する宛先に届くように該経路設定コマンドを出力する出力ポートにはマルチキャストパケットを出力しないように修正を行うマルチキャスト情報修正手順を有することを特徴とする請求項１７に記載のプログラム。
【請求項２２】
前記プロセス数カウント手順は、前記入力ポートに前記経路設定コマンドが入力されたときに、前記経路設定完了プロセス数をカウントすることを特徴とする請求項２０または２１に記載のプログラム。
【請求項２３】
前記マルチキャスト制御情報保持手順は、前記複数の出力ポートにそれぞれ対応付けられた複数のビットを含むマルチキャスト制御情報を保持し、
前記ビットに設定されている値の更新により、該更新したビットに対応する出力ポートを、前記マルチキャストパケットを出力する出力ポートとして指定することを特徴とする請求項１７から２２のいずれかに記載のプログラム。
【請求項２４】
前記マルチキャスト制御情報保持手順は、前記更新の対象とするビットを含むマルチキャスト制御情報を、マルチキャスト通信を識別する識別情報であるマルチキャストＩＤで指定することを特徴とする請求項２３に記載のプログラム。
【請求項２５】
複数の計算ノードを相互結合網で接続した並列計算機システムであって、
前記相互結合網は、請求項１から８のいずれかに記載のネットワークスイッチで構成され、
前記複数の計算ノード間におけるマルチキャスト通信機能を有する並列計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークスイッチ、経路設定方法、プログラムおよび並列計算機システムに関する。
【背景技術】
【０００２】
一般的に大規模な問題を高速に処理するために、複数の計算ノードを相互結合網で接続した並列計算機システムが用いられる。この並列計算機システムでは、対象となる問題の処理に付随する演算を複数の計算ノードで分割して行うが、その際、各計算ノード間で演算に必要なデータや演算結果のデータを相互に通信する必要がある。そのため、１つの計算ノードから別の計算ノードに対するデータ転送は、相互結合網を介して行われる。【０００３】
１つの計算ノードから複数の計算ノードに同一のデータを含むパケットを送信する場合、転送元の計算ノードから互いに異なる転送先の各計算ノードにパケットをそれぞれ送信すれば、所定の目的を達成できる。しかし、データ転送されるパケットを複製して複数の計算ノードに送信する機能を相互結合網が有しているのであれば、転送元の計算ノードが相互結合網に与える負荷が低減され、データ転送に要するデータ転送時間の短縮が可能になる。このように１つの計算ノードから複数の計算ノードに同一のデータを送信する機能をマルチキャスト通信機能と呼ぶ。【０００４】
並列計算機上で実行するプログラムを記述する一般的な方式として知られるＭＰＩ（Message  Passing  Interface）では、互いに通信を行うプロセスの集合をコミュニケータとして管理し、このコミュニケータに含まれるプロセスに対してマルチキャスト通信を行う関数が複数準備されている。【０００５】
例えば、ＭＰＩが定める「MPI_Bcast」は、あるプロセスが保持するデータを、同一のコミュニケータに含まれる全プロセスに送る関数である。このコミュニケータは、システム全体のプロセスの集合を指定することもあるが、プロセスの部分集合を指定することもある。また、「MPI_Allgather」は、指定されたデータを、コミュニケータ内のいずれかのプロセスから同一のコミュニケータに含まれる全プロセスに送る関数である。【０００６】
「MPI_Bcast」や「MPI_Allgather」のようなマルチキャスト通信を行う関数が有する機能は、１対１の通信であるユニキャスト通信を複数回実行することでも実現できるが、相互結合網がパケットを複製して複数の計算ノードに送信する機能を有している場合、相互結合網が有する機能を利用することが望ましい。これによって、データ転送時間の短縮を図り、プログラム全体の実行性能を向上させる観点からである。【０００７】
このようなデータ転送時間を低減し、プログラム全体の実行性能を向上させるための各種技術が提案されている。【０００８】
例えば、非特許文献１では、マルチキャスト通信機能を備えた相互結合網が開示されている。この方法では、図１４に示すネットワークスイッチ１１００−１〜１１００−４とネットワークスイッチ１２００とが、ツリー構造のネットワークを構成するように接続されている。また、計算ノード１３００−１〜１３００−４とネットワークスイッチ１１００−１とが接続され、計算ノード１４００−１〜１４００−４とネットワークスイッチ１１００−２とが接続され、計算ノード１５００−１〜１５００−４とネットワークスイッチ１１００−３とが接続され、計算ノード１６００−１〜１６００−４とネットワークスイッチ１１００−４とが接続されている。この場合、例えば、計算ノード１３００−１から送信されたマルチキャストパケットは、ネットワークスイッチ１１００−１を介して、ツリー構造の根（root）にあたるネットワークスイッチ１２００のような特定のネットワークスイッチを宛先として送信される。そして、宛先であるネットワークスイッチ１２００が、常時、マルチキャストパケットを受信する。そして、ネットワークスイッチ１２００が、そのマルチキャストパケットを、マルチキャストパケットを伝送するための通信経路情報に従って、マルチキャスト通信を行うプロセスグループに含まれる各計算ノードへ転送する。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】"Hardware-  and  Software-Based  Collective  Communication  on  the  Quadrics  Network"  ,  Proceedings  of  NCA  2001.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
非特許文献１で開示された技術では、例えば、図１４で示すように、ネットワークスイッチ１１００−１とネットワークスイッチ１２００の間で、マルチキャストパケットが往復しており、ネットワークスイッチ１１００−１にはマルチキャストパケットを上りと下りの２度経由していることになり、ネットワークを効率的に使用することができないという問題がある。【００１１】
本発明は、上述した課題を解決するネットワークスイッチ、経路設定方法、プログラムおよび並列計算機システムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明のネットワークスイッチは、複数の入力ポートと該入力ポートにそれぞれ対応づけられた複数の出力ポートとを有し、前記出力ポートからマルチキャストパケットを出力するネットワークスイッチにおいて、前記複数の出力ポートのうちから前記マルチキャストパケットを出力するための出力ポートを指定する情報であるマルチキャスト制御情報を保持するマルチキャスト制御情報保持部と、前記マルチキャスト制御情報保持部に対して、前記マルチキャストパケットの転送経路を設定する転送経路設定を行うマルチキャスト制御部とを有し、前記マルチキャスト制御部は、当該ネットワークスイッチに対して転送経路設定を指示する経路設定コマンドを受信したときに、該経路設定コマンドを受信した入力ポートに対応する出力ポートおよび、該経路設定コマンドが指定する宛先に届くように該経路設定コマンドを出力する出力ポートを、前記マルチキャストパケットを転送する出力ポートとして設定し、マルチキャストパケットを受信した場合、前記マルチキャスト制御情報保持部が保持するマルチキャスト制御情報が指定する出力ポートのうち、該マルチキャストパケットを受信した入力ポートに対応する出力ポート以外の出力ポートに対して該マルチキャストパケットを出力する。【００１３】
上記課題を解決するために、本発明の経路設定方法は、複数の入力ポートと該入力ポートにそれぞれ対応づけられた複数の出力ポートとを有し、前記出力ポートからマルチキャストパケットを出力するネットワークスイッチにおけるマルチキャスト経路設定方法であって、前記複数の出力ポートのうちから前記マルチキャストパケットを出力するための出力ポートを指定する情報であるマルチキャスト制御情報を保持するマルチキャスト制御情報保持処理と、前記マルチキャスト制御情報保持処理に対して、前記マルチキャストパケットの転送経路を設定する転送経路設定を行うマルチキャスト制御処理とを有し、前記マルチキャスト制御処理は、前記ネットワークスイッチに対して転送経路設定を指示する経路設定コマンドをネットワークスイッチが受信したときに、該経路設定コマンドを受信した入力ポートに対応する出力ポートおよび、該経路設定コマンドが指定する宛先に届くように該経路設定コマンドを出力する出力ポートを、前記マルチキャストパケットを転送する出力ポートとして設定し、ネットワークスイッチがマルチキャストパケットを受信した場合に、前記マルチキャスト制御情報保持処理が保持するマルチキャスト制御情報が指定する出力ポートのうち、該マルチキャストパケットを受信した入力ポートに対応する出力ポート以外の出力ポートに対して該マルチキャストパケットを出力するマルチキャスト転送処理を有する。【００１４】
また、コンピュータに実行させるプログラムであって、並列計算機システムに実行させるプログラムであって、ネットワークスイッチが具備する複数の入力ポートと該入力ポートにそれぞれ対応づけられた複数の出力ポートのうちからマルチキャストパケットを出力するための出力ポートを指定する情報であるマルチキャスト制御情報を保持するマルチキャスト制御情報保持手順と、前記マルチキャスト制御情報保持手順に対して、前記マルチキャストパケットの転送経路を設定する転送経路設定を行うマルチキャスト制御手順とを並列計算機システムに実行させ、前記マルチキャスト制御手順は、前記ネットワークスイッチに対して転送経路設定を指示する経路設定コマンドをネットワークスイッチが受信したときに、該経路設定コマンドを受信した入力ポートに対応する出力ポートおよび、該経路設定コマンドが指定する宛先に届くように該経路設定コマンドを出力する出力ポートを、前記マルチキャストパケットを転送する出力ポートとして設定し、ネットワークスイッチがマルチキャストパケットを受信した場合に、前記マルチキャスト制御情報保持手順にて保持するマルチキャスト制御情報が指定する出力ポートのうち、該マルチキャストパケットを受信した入力ポートに対応する出力ポート以外の出力ポートに対して該マルチキャストパケットを出力するマルチキャスト転送手順を実行させる。
【発明の効果】
【００１５】
本発明によれば、ネットワークを効率的に使用することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に従った並列計算機システムの構成を示す図である。
【図２】ユニキャストパケットのデータ構造の一例と、経路設定コマンドのデータ構造の一例と、設定完了通知のデータ構造の一例と、マルチキャストパケットのデータ構造の一例とを示す図である。
【図３】図１に示したネットワークスイッチの構成を示す図である。
【図４】図３に示したマルチキャスト制御部の構成を示す図である。
【図５】マルチキャスト制御情報のデータ構造の一例を示す図である。
【図６】ネットワークスイッチが、経路設定コマンドや経路設定完了通知を受信したときの動作を示すフローチャートである。
【図７】並列計算機システムにて、マルチキャストパケットを出力する出力ポートを設定する場合の動作シーケンスを示す図である。
【図８】第１の動作例における、並列計算機システム内で送信される経路設定コマンドの流れを示す図である。
【図９】第１の動作例における、並列計算機システム内で送信される設定完了通知の流れを示す図である。
【図１０】第１の動作例における、並列計算機システム内で送信されるマルチキャストパケットの流れを示す図である。
【図１１】第２の動作例における、並列計算機システム内で送信される経路設定コマンドの流れを示す図である。
【図１２】第２の動作例における、並列計算機システム内で送信される設定完了通知の流れを示す図である。
【図１３】第２の動作例における、並列計算機システム内で送信されるマルチキャストパケットの流れを示す図である。
【図１４】非特許文献１で開示される、マルチキャスト機能を備えたツリー構造のネットワークにて送信されるマルチキャストパケットの流れの一例を示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態に従った並列計算機システム（ネットワークスイッチ、経路設定方法、プログラムを含む）を説明する。
【００１８】
まず、本実施形態の並列計算機システムの構成を、図１を参照して説明する。図１に示すように、この並列計算機システムは、計算ノード群１と相互結合網２とから構成されている。
【００１９】
計算ノード群１に含まれる各計算ノード１１−１〜１１−４，１２−１〜１２−４，１３−１〜１３−４，１４−１〜１４−４は、相互結合網２とそれぞれ接続されている。
【００２０】
相互結合網２は、複数のネットワークスイッチ２１−１〜２１−４，２２から構成されている。相互結合網２の形態は任意であり、例えば、多段結合網でもよい。本実施形態では、相互結合網２は、ツリー構造のネットワークである。
【００２１】
各ネットワークスイッチ２１−１〜２１−４、２２には、各ネットワークスイッチ２１−１〜２１−４、２２を固有に識別するための「スイッチ識別情報」がそれぞれ付与されている。
【００２２】
ネットワークスイッチ２１−１〜２１−４は、計算ノード群１と直接接続されている。また、ネットワークスイッチ２２は、各ネットワークスイッチ２１−１〜２１−４と相互に接続されている。ネットワークスイッチ２２の数は複数でもよい。
【００２３】
各計算ノード１１−１〜１１−４，１２−１〜１２−４，１３−１〜１３−４，１４−１〜１４−４は、演算器とメモリとをそれぞれ有する互いに独立した「端末」である。
【００２４】
各計算ノード１１−１〜１１−４，１２−１〜１２−４，１３−１〜１３−４，１４−１〜１４−４上では、この並列計算機システムが解決する問題に付随する演算処理などを含む所定の処理を実行するプロセスが動作している。本実施形態では、各計算ノード１１−１〜１１−４，１２−１〜１２−４，１３−１〜１３−４，１４−１〜１４−４において、それぞれ１つのプロセスが動作している場合を例に挙げて説明する。
【００２５】
また、各計算ノード１１−１〜１１−４，１２−１〜１２−４，１３−１〜１３−４，１４−１〜１４−４は、特定の複数の宛先へ送信されるマルチキャストパケットを生成する。
【００２６】
このマルチキャストパケットには、マルチキャスト通信を実行する計算ノードから構成される「プロセスグループ」に固有に付与された「グループ識別情報」であるマルチキャストＩＤが含まれる。プロセスグループの例としては、ＭＰＩ通信にて通信を行うプロセスの集合として扱われるコミュニケータなどが挙げられる。
【００２７】
また、計算ノードのそれぞれは、当該計算ノード上で動作するプロセスが属するプロセスグループのグループ識別情報を記憶している。グループ識別情報は、プロセスグループを固有に識別可能な情報であれば、任意でよい。
【００２８】
また、各計算ノード１１−１〜１１−４，１２−１〜１２−４，１３−１〜１３−４，１４−１〜１４−４のうちマルチキャストパケットを送信する計算ノードは、マルチキャストパケットを転送する経路を設定するための「経路設定コマンド」を生成してマルチキャスト制御スイッチへ送信する。
【００２９】
ここで、「マルチキャスト制御スイッチ」とは、マルチキャストパケットの転送を制御するネットワークスイッチである。
【００３０】
なお、本実施形態では、各ネットワークスイッチ２１−１〜２１−４、２２は、ある計算ノードから送信されてきたマルチキャストパケットを、その送信元の計算ノードを含むプロセスグループのうち送信元以外の計算ノードすべてへ転送する。
【００３１】
なお、１つのプロセスグループごとに、各ネットワークスイッチ２１−１〜２１−４，２２のうちのいずれか１つのネットワークスイッチがマルチキャスト制御スイッチとして指定される。
【００３２】
本実施形態では、各計算ノード１１−１〜１１−４，１２−１〜１２−４，１３−１〜１３−４，１４−１〜１４−４上で動作するプロセスが、ネットワークスイッチ２２をマルチキャスト制御スイッチとして指定した経路設定コマンドを送信する場合を例に挙げて説明する。
【００３３】
つぎに、本実施形態の並列計算機システムにおいて伝送されるパケットデータについて、図２を参照して説明する。
【００３４】
本実施形態の並列計算機システムは、図２に示すユニキャストパケット、経路設定コマンド、設定完了通知およびマルチキャストパケットの４種類の「パケットデータ」を扱う。以下では、これらのパケットデータのそれぞれが、ビット数が３２ビットのパケットデータである場合を例に挙げて説明する。
【００３５】
これら４種類のパケットデータは、それぞれのパケットデータの先頭２ビットに割り当てられたコマンド情報により、当該パケットデータがユニキャストパケットと経路設定コマンドと設定完了通知とマルチキャストパケットとのうちのどのパケットデータであるかを識別することができる。
【００３６】
ユニキャストパケットは、各計算ノード１１−１〜１１−４，１２−１〜１２−４，１３−１〜１３−４，１４−１〜１４−４のうち特定の１計算ノードと他の１計算ノードとの間で行われる１対１の通信にて送受信されるパケットデータである。
【００３７】
本実施形態では、ユニキャストパケットは、ビット数が２ビットのコマンド情報「００」と、送信先の計算ノードを固有に識別するための４ビットの行先情報と、残り２６ビットのデータ部とからなる。
【００３８】
「経路設定コマンド」は、上述したようにマルチキャストパケットを転送する経路を設定するためのパケットデータである。
【００３９】
本実施形態では、経路設定コマンドは、ビット数が２ビットのコマンド情報「０１」と、ビット数が４ビットのマルチキャストＩＤと、ビット数が６ビットの「宛先情報」と、ビット数が６ビットの「グループ所属プロセス数」とを含む。
【００４０】
「宛先情報」は、経路設定コマンドの宛先を示す情報である。本実施形態では、宛先情報として、マルチキャスト制御スイッチであるネットワークスイッチに付与されたスイッチ識別情報と同じ情報が指定される。
【００４１】
「グループ所属プロセス数」は、ある１つのプロセスグループに含まれる各プロセスが動作する計算ノードの数である。例えば、各計算ノード１１−１、１１−２、１２−１、１３−１，１４−１上でそれぞれ動作する１つのプロセスが同じプロセスグループに所属する場合、グループ所属プロセス数は「５」である。
【００４２】
なお、経路設定コマンドは、マルチキャスト通信を行う同じプロセスグループに所属する各計算ノードがそれぞれ生成する。そのため、これらのプロセスを含む各計算ノード１１−１〜１１−４，１２−１〜１２−４，１３−１〜１３−４，１４−１〜１４−４は、経路設定コマンドへ書込むためのマルチキャストＩＤと、宛先情報と、グループ所属プロセス数とをあらかじめ記憶している。
【００４３】
「設定完了通知」は、マルチキャストパケットの転送経路の設定が完了した際、マルチキャスト制御スイッチが生成するものであり、当該設定が完了した旨を示す「経路設定コマンドに対する応答信号」である。
【００４４】
本実施形態では、設定完了通知は、ビット数が２ビットのコマンド情報「１０」と、ビット数が４ビットのマルチキャストＩＤとを含む。
【００４５】
設定完了通知は、設定完了通知内のマルチキャストＩＤが付与されたプロセスグループのマルチキャスト通信に関わるネットワークスイッチを介して、そのプロセスグループに含まれる計算ノードへ送信される。
【００４６】
マルチキャストパケットは、「マルチキャスト通信されるパケットデータ」である。
【００４７】
本実施形態では、マルチキャストパケットは、ビット数が２ビットのコマンド情報「１１」と、ビット数が４ビットのマルチキャストＩＤと、ビット数が２６ビットのデータ部とから成る。
【００４８】
設定完了通知を受信した計算ノードから送信されたマルチキャストパケットは、そのマルチキャストパケット内のマルチキャストＩＤが示すプロセスグループに含まれる全プロセスに届く。つまり、マルチキャストＩＤでインデキシングすることにより、複数のマルチキャスト通信の経路設定やマルチキャスト通信自体を並行に実行することが可能になる。
【００４９】
なお、本実施形態では並列計算機システムにおいて送受信されるパケットの種類を上述の４種類のみとしたが、それ以外の種類のパケットデータが存在してもよい。また、パケットデータのフォーマット（パケットデータのサイズや制御情報など）は、図２に示した例に限らず任意でよい。
【００５０】
つぎに、ネットワークスイッチ２１−１〜２１−４，２２の構成について、図３を参照して説明する。なお、各ネットワークスイッチ２１−１〜２１−４，２２の構成は互いに同じであるため、以下では、ネットワークスイッチ２１−１を例に挙げて説明する。
【００５１】
図３に示すように、ネットワークスイッチ２１−１は、入力バッファ部２０１−１〜２０１−５と、出力バッファ部２０２−１〜２０２−５と、クロスバスイッチ部２０３と、クロスバ制御部２０４と、マルチキャスト制御部２０５とを有する。
【００５２】
クロスバスイッチ部２０３、マルチキャスト制御部２０５は、複数の入力ポートと複数の出力ポートとをそれぞれ有している。入力ポート数および出力ポート数は任意でよい。この説明例では、各ネットワークスイッチ２１−１〜２１−４，２２がそれぞれ有するクロスバスイッチ部２０３、マルチキャスト制御部２０５は、入力ポート数が「５」であり、出力ポート数が「５」（以下、「５入力５出力」と呼ぶ）である。
【００５３】
また、本実施形態では、各ネットワークスイッチ２１−１〜２１−４，２２がそれぞれ有する各入力ポートと各出力ポートとが、互いに１対１で対応付けられており、さらに、各入力ポートには１〜５の番号がそれぞれ付与され、各出力ポートには１〜５の番号がそれぞれ付与されている場合を例に挙げて説明する。例えば、１番目の入力ポートは１番目の出力ポートと対応している。入力ポートと出力ポートとを対応付ける方法は一般的な方法でよい。
【００５４】
なお、図１に示した例では、各ネットワークスイッチ２１−１〜２１−４，２２が有する５つの入力ポートのうち１番目〜４番目の入力ポートは、図１における上り方向（ネットワークスイッチ２１−１〜２１−４からネットワークスイッチ２２へ向かう方向）に接続されている。また、各ネットワークスイッチ２１−１〜２１−４，２２が有する５つの出力ポートのうち１番目〜４番目の出力ポートは、図１における下り方向（ネットワークスイッチ２２からネットワークスイッチ２１−１〜２１−４へ向かう方向）に接続されている。また、ネットワークスイッチ２２が有する５番目の入力ポートおよび５番目の出力ポートは未使用となっている。また、各ネットワークスイッチ２１−１〜２１−４が有する５番目の入力ポートは、図１における下り方向に接続されている。また、各ネットワークスイッチ２１−１〜２１−４が有する５番目の出力ポートは、図１における上り方向に接続されている。
【００５５】
本実施形態では、各入力バッファ部２０１−１〜２０１−５は、図４に示すマルチキャスト制御部２０５が有する各入力ポートＩ１〜Ｉ５と１対１で対応して接続されている。
【００５６】
また、本実施形態では、各入力バッファ部２０１−１〜２０１−５は、クロスバスイッチ部２０３が有する５つの入力ポート（図示せず）のそれぞれと、クロスバ制御部２０４が有する５つの入力ポート（図示せず）のそれぞれとに１対１で対応して接続されている。
【００５７】
入力バッファ部２０１−１〜２０１−５は、外部からパケットが送信されてきた場合、そのパケット内のコマンド情報に基づいて、そのパケットがユニキャストパケットと経路設定コマンドと設定完了通知とマルチキャストパケットとのうちどのパケットであるかを識別する。そして、入力バッファ部２０１−１〜２０１−５は、外部から送信されてきたパケットを、識別したパケットの種類に応じて、クロスバスイッチ部２０３またはマルチキャスト制御部２０５へ出力する。
【００５８】
より具体的には、入力バッファ部２０１−１〜２０１−５は、外部から送信されてきたパケットがユニキャストパケットであると識別した場合、そのユニキャストパケットをクロスバスイッチ部２０３へ出力する。
【００５９】
また、入力バッファ部２０１−１〜２０１−５は、外部から送信されてきたパケットが経路設定コマンドと設定完了通知とマルチキャストパケットとのいずれかであると識別した場合、識別したそのパケット（経路設定コマンドと設定完了通知とマルチキャストパケットとのいずれか）をマルチキャスト制御部２０５へ出力する。
【００６０】
本実施形態では、各出力バッファ部２０２−１〜２０２−５は、図４に示すマルチキャスト制御部２０５が有する各出力ポートＯ１〜Ｏ５に１対１で対応して接続されている。
【００６１】
また、本実施形態では、各出力バッファ部２０２−１〜２０２−５は、クロスバスイッチ部２０３が有する５つの出力ポート（図示せず）のそれぞれと１対１で対応して接続されている。
【００６２】
出力バッファ部２０２−１〜２０２−５は、ユニキャストパケットが当該出力バッファ部２０２−１〜２０２−５と接続されているクロスバスイッチ部２０３が有する出力ポート（図示せず）から出力されてきた場合、そのユニキャストパケットを当該出力バッファ部２０２−１〜２０２−５と接続されているネットワークスイッチ２２および各計算ノード１１−１〜１１−４へ出力する。
【００６３】
また、出力バッファ部２０２−１〜２０２−５は、経路設定コマンド、設定完了通知またはマルチキャストパケットが当該出力バッファ部２０２−１〜２０２−５と１対１で接続されているマルチキャスト制御部２０５が有する出力ポートＯ１〜Ｏ５から出力されてきた場合、その経路設定コマンド、設定完了通知またはマルチキャストパケットを、当該出力バッファ部２０２−１〜２０２−５と接続されているネットワークスイッチ２２および各計算ノード１１−１〜１１−４へ出力する。
【００６４】
クロスバスイッチ部２０３は、入力バッファ部２０１−１〜２０１−５から出力されてきたユニキャストパケットを、クロスバ制御部２０４から通知された出力バッファ部２０２−１〜２０２−５へ出力する。
【００６５】
クロスバ制御部２０４は、入力バッファ部２０１−１〜２０１−５から出力されてきたユニキャストパケット内の行先情報が示す送信先と接続されている出力バッファ部２０２−１〜２０２−５を識別して、当該ユニキャストパケットを出力すべき出力バッファ部をクロスバスイッチ部２０３へ通知する。
【００６６】
マルチキャスト制御部２０５は、各入力バッファ部２０１−１〜２０１−５から出力されてきたマルチキャストパケットを、当該マルチキャストパケットを出力する出力ポートとして設定されている出力ポートから出力する。このとき、マルチキャスト制御部２０５は、当該マルチキャストパケットを出力してきた入力バッファ部と接続された入力ポートと対応付けられている出力ポートからは出力しない。
【００６７】
以下に、マルチキャスト制御部２０５の構成について、図４を参照して詳細に説明する。図４に示すように、マルチキャスト制御部２０５は、パケット入力部３０１と、パケット出力部３０２と、プロセス数保持部３０３と、カウンタ部３０４と、情報管理部３０５と、比較部３０６と、完了通知生成部３０７と、宛先判定部３０８と、修正部３０９とを有する。
【００６８】
パケット入力部３０１は、入力ポートＩ１〜Ｉ５と１対１でそれぞれ接続されている入力バッファ部２０１−１〜２０１−５から出力されてきたパケットデータ（マルチキャストパケットと経路設定コマンドと設定完了通知とのいずれか）をパケット出力部３０２へ出力する。
【００６９】
また、パケット入力部３０１は、入力バッファ部２０１−１〜２０１−５から出力されてきたパケットデータ内のコマンド情報に基づいて、そのパケットデータが、マルチキャストパケットと経路設定コマンドと設定完了通知とのいずれであるかを識別する。
【００７０】
まず、パケット入力部３０１が、入力バッファ部２０１−１〜２０１−５から出力されてきたパケットデータが経路設定コマンドであると識別した場合の動作を説明する。
【００７１】
この場合、パケット入力部３０１は、入力バッファ部２０１−１〜２０１−５から出力されてきた経路設定コマンド内の宛先情報を宛先判定部３０８へ出力する。
【００７２】
また、パケット入力部３０１は、経路設定コマンドに含まれているマルチキャストＩＤとグループ所属プロセス数とをプロセス数保持部３０３へ出力する。
【００７３】
また、パケット入力部３０１は、経路設定コマンドに含まれているマルチキャストＩＤをカウンタ部３０４へ出力する。
【００７４】
また、パケット入力部３０１は、経路設定コマンドに含まれているコマンド情報「０１」およびマルチキャストＩＤと、経路設定コマンドを入力した入力ポートを示す情報とを情報管理部３０５へ出力する。
【００７５】
また、パケット入力部３０１は、経路設定コマンドに含まれているマルチキャストＩＤを完了通知生成部３０７へ出力する。
【００７６】
つぎに、パケット入力部３０１が、入力バッファ部２０１−１〜２０１−５から出力されてきたパケットデータが設定完了通知であると識別した場合の動作を説明する。
【００７７】
この場合、パケット入力部３０１は、入力バッファ部２０１−１〜２０１−５から出力されてきた設定完了通知に含まれているマルチキャストＩＤと、その設定完了通知を入力した入力ポートを示す情報とを修正部３０９へ出力する。
【００７８】
また、パケット入力部３０１は、設定完了通知に含まれているマルチキャストＩＤをプロセス数保持部３０３へ出力する。
【００７９】
また、パケット入力部３０１は、設定完了通知に含まれているコマンド情報「１０」とマルチキャストＩＤとをカウンタ部３０４へ出力する。
【００８０】
また、パケット入力部３０１は、設定完了通知に含まれているマルチキャストＩＤを完了通知生成部３０７へ出力する。
【００８１】
つぎに、パケット入力部３０１が、入力バッファ部２０１−１〜２０１−５から出力されてきたパケットデータがマルチキャストパケットであると識別した場合の動作を説明する。
【００８２】
この場合、パケット入力部３０１は、入力バッファ部２０１−１〜２０１−５から出力されてきたマルチキャストパケットに含まれているコマンド情報「１１」とマルチキャストＩＤとを、情報管理部３０５へ出力する。
【００８３】
また、パケット入力部３０１は、マルチキャストパケットを入力した入力ポートを示す情報をパケット出力部３０２へ出力する。
【００８４】
パケット出力部３０２は、情報管理部３０５から出力されてきたマルチキャストパケットを出力する出力ポートを示すマルチキャスト制御情報３０５１を用いて、パケット入力部３０１から出力されてきたマルチキャストパケットを、各出力バッファ部２０２−１〜２０２−５と１対１で接続されている各出力ポートＯ１〜Ｏ５から出力する。
【００８５】
より具体的には、パケット出力部３０２は、パケット入力部３０１から出力されてきたマルチキャストパケットを、情報管理部３０５から出力されてきたビット列において値が「１」に設定されているビットに対応する出力ポートから出力する。このとき、パケット出力部３０２は、パケット入力部３０１から出力されてきた情報が示すマルチキャストパケットを入力した入力ポートと対応付けられた出力ポートからは出力しない。
【００８６】
また、パケット出力部３０２は、情報管理部３０５から通知された宛先情報と同じスイッチ識別情報が付与されたネットワークスイッチが接続されている出力ポートへ、経路設定コマンドを出力する。
【００８７】
また、パケット出力部３０２は、情報管理部３０５から出力されてきたマルチキャストパケットを出力する出力ポートを示すマルチキャスト制御情報３０５１を用いて、完了通知生成部３０７から出力されてきた設定完了通知を、各出力バッファ部２０２−１〜２０２−５へ出力する。つまり、パケット出力部３０２は、マルチキャストパケットを出力する出力ポートと同じ出力ポートを経由して、設定完了通知をその宛先へ送信する。
【００８８】
より具体的には、パケット出力部３０２は、情報管理部３０５から出力されてきたビット列において値が「１」に設定されているビットに対応する出力ポートへ、パケット入力部３０１から出力されてきた設定完了通知を出力する。
【００８９】
プロセス数保持部３０３は、パケット入力部３０１から出力されてきたマルチキャストＩＤとグループ所属プロセス数とを対応付けて記憶するレジスタ群である。
【００９０】
また、プロセス数保持部３０３は、経路設定コマンドの宛先が当該ネットワークスイッチ２１−１である旨が宛先判定部３０８から通知された場合、パケット入力部３０１から出力されてきたマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶しているグループ所属プロセス数を比較部３０６へ出力する。
【００９１】
また、プロセス数保持部３０３は、パケット入力部３０１からマルチキャストＩＤが出力されてきた場合、そのマルチキャストＩＤと対応付けて記憶しているグループ所属プロセス数を比較部３０６へ出力する。
【００９２】
カウンタ部３０４は、設定完了プロセス数をカウントし、カウントした設定完了プロセス数とパケット入力部３０１から出力されてきたマルチキャストＩＤとを対応付けて記憶する。
【００９３】
ここで、設定完了プロセス数とは、１つの計算ノードが生成した１つの経路設定コマンドに対して、情報管理部３０５が「通信経路を設定したプロセスの数」である。
【００９４】
本実施形態では、カウンタ部３０４は、ビットの設定を行った旨が情報管理部３０５から通知されるごとに、パケット入力部３０１から出力されてきたマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶している設定完了プロセス数に「１」を加算する。なお、カウンタ部３０４が記憶している設定完了プロセス数は、マルチキャストパケットを出力する出力ポートの設定を開始していない状態においては「０」である。
【００９５】
また、カウンタ部３０４は、経路設定コマンドの宛先が当該ネットワークスイッチ２１−１である旨が宛先判定部３０８から通知された場合、パケット入力部３０１から出力されてきたマルチキャストＩＤと対応付けて記憶している設定完了プロセス数を比較部３０６へ出力する。
【００９６】
また、カウンタ部３０４は、パケット入力部３０１からコマンド情報「１０」とマルチキャストＩＤとが出力されてきた場合、コマンド情報「１０」と、そのマルチキャストＩＤと対応付けて記憶している設定完了プロセス数とを比較部３０６へ出力する。
【００９７】
情報管理部３０５は、マルチキャスト制御情報３０５１を記憶する。
【００９８】
マルチキャスト制御情報３０５１は、マルチキャスト通信の通信経路として設定された、マルチキャストパケットを出力する出力ポートを指定するための情報である。
【００９９】
図５に示すように、本実施形態においては、マルチキャスト制御情報３０５１は、ビット数がそれぞれ５ビットである１６個のビット列Ｂ０〜Ｂ１５と、マルチキャストＩＤ「０」〜「１５」とをそれぞれ１対１で対応付けて記憶している。
【０１００】
また、本実施形態では、各ビット列Ｂ０〜Ｂ１５にそれぞれ含まれる５つのビットと５つの出力ポートＯ１〜Ｏ５とは、それぞれ１対１で対応付けられている。
【０１０１】
さらに、本実施形態では、情報管理部３０５は、各ビット列Ｂ０〜Ｂ１５において、マルチキャストパケットを出力する出力ポートに対応するビットには、マルチキャストパケットを出力する出力ポートであることを示す「１」を設定する。
【０１０２】
また、情報管理部３０５は、各ビット列Ｂ０〜Ｂ１５において、マルチキャストパケットを出力しない出力ポートに対応するビットには、マルチキャストパケットを出力しない出力ポートであることを示す「０」を設定する。
【０１０３】
図５に示したビット列Ｂ０の例では、このビット列Ｂ０の最上位である左から１番目のビットに対応する出力ポートＯ１が、マルチキャストパケットを出力する出力ポートとして設定されている。
【０１０４】
なお、マルチキャスト制御情報３０５１のデータ構造は、マルチキャスト制御部２０５が有する出力ポートＯ１〜Ｏ５の数と同じ数のビットを有するビット列に限らず、任意でよい。
【０１０５】
なお、経路設定コマンドであることを示すコマンド情報「０１」と、マルチキャストＩＤと、経路設定コマンドを入力した入力ポートを示す情報とがパケット入力部３０１から出力されてきた場合、情報管理部３０５は、以下のように動作する。
【０１０６】
まず、情報管理部３０５は、パケット入力部３０１から出力されてきたマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶しているビット列Ｂ０〜Ｂ１５を読出す。例えば、パケット入力部３０１から出力されてきたマルチキャストＩＤが「４」である場合、情報管理部３０５は、マルチキャストＩＤ「４」と対応付けて記憶しているビット列Ｂ４を読出す。
【０１０７】
つぎに、情報管理部３０５は、１つの経路設定コマンドを入力した１つの入力ポートを示す情報がパケット入力部３０１から出力された場合、読出したビット列において、その入力ポートと対応付けられた出力ポートと１対１で対応する１つのビットの値を「１」に設定する。そして、ビットの設定を１回行うごとに、その旨をカウンタ部３０４へ通知する。
【０１０８】
なお、本実施形態では、情報管理部３０５は、宛先情報と、宛先情報と同じスイッチ識別情報が付与されたネットワークスイッチが接続されている出力ポートとを対応付けて記憶している。
【０１０９】
そして、情報管理部３０５は、経路設定コマンドの宛先が当該ネットワークスイッチ２１−１でない旨が宛先判定部３０８から通知された場合、宛先判定部３０８から通知された宛先情報と同じスイッチ識別情報と対応付けて記憶している出力ポートに対応するビットの値を「１」に設定する。さらに、情報管理部３０５は、「１」に設定した出力ポート（つまり、宛先情報と同じスイッチ識別情報が付与されたネットワークスイッチが接続されている出力ポート）を、パケット出力部３０２へ通知する。
【０１１０】
なお、経路設定コマンドの宛先が当該ネットワークスイッチ２１−１である旨が宛先判定部３０８から情報管理部３０５へ通知された場合、ネットワークスイッチ２１−１は、経路設定コマンドを他のネットワークスイッチ２１−２〜２１−４、２２へ転送しない。そのため、この場合、情報管理部３０５は、宛先判定部３０８から通知された宛先情報と同じスイッチ識別情報と対応付けて記憶している出力ポートに対応するビットの値を「１」に設定しない。
【０１１１】
また、情報管理部３０５は、設定完了通知であることを示すコマンド情報「１０」とマルチキャストＩＤとがパケット入力部３０１から出力されてきた場合、ビット列Ｂ０〜Ｂ１５のうちそのマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶しているビット列をパケット出力部３０２へ出力する。
【０１１２】
また、情報管理部３０５は、設定完了通知の生成が完了した旨が完了通知生成部３０７から通知された場合、完了通知生成部３０７から出力されてきたマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶しているビット列をパケット出力部３０２へ出力する。
【０１１３】
また、情報管理部３０５は、マルチキャストパケットであることを示すコマンド情報「１１」とマルチキャストＩＤとがパケット入力部３０１から出力されてきた場合、ビット列Ｂ０〜Ｂ１５のうちそのマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶しているビット列をパケット出力部３０２へ出力する。
【０１１４】
比較部３０６は、プロセス数保持部３０３から出力されてきたグループ所属プロセス数と、カウンタ部３０４から出力された設定完了プロセス数とを比較する。そして、比較部３０６は、比較結果を、完了通知生成部３０７へ出力する。
【０１１５】
また、比較部３０６は、カウンタ部３０４からコマンド情報「１０」が出力されてきた場合、プロセス数保持部３０３から出力されてきたグループ所属プロセス数と、カウンタ部３０４から出力されてきた設定完了プロセス数とを比較する。そして、比較部３０６は、その比較結果を、修正部３０９へ出力する。
【０１１６】
完了通知生成部３０７は、比較部３０６による比較の結果、グループ所属プロセス数と設定完了プロセス数とが同じである場合、マルチキャストパケットを出力する出力ポートの設定が完了したことを示し、経路設定コマンドの送信元の計算ノードを宛先として指定した設定完了通知を生成する。なお、完了通知生成部３０７は、この設定完了通知に、パケット入力部３０１から出力されてきたマルチキャストＩＤを書込む。そして、完了通知生成部３０７は、その設定完了通知をパケット出力部３０２に出力する。
【０１１７】
また、完了通知生成部３０７は、設定完了通知の生成が完了した場合、その旨を情報管理部３０５へ通知するとともに、設定完了通知に書き込んだマルチキャストＩＤを情報管理部３０５へ出力する。
【０１１８】
なお、パケット出力部３０２は、完了通知生成部３０７から出力されてきた設定完了通知を、情報管理部３０５から出力されてきたビット列において「１」に設定されているビットと対応する出力ポートＯ１〜Ｏ５から出力する。
【０１１９】
宛先判定部３０８は、当該ネットワークスイッチ２１−１に付与されたスイッチ識別情報を記憶している。そして、宛先判定部３０８は、パケット入力部３０１から出力されてきた宛先情報と、記憶しているスイッチ識別情報とを比較する。
【０１２０】
比較の結果、宛先情報と記憶しているスイッチ識別情報とが同じである場合、宛先判定部３０８は、経路設定コマンドの宛先が当該ネットワークスイッチ２１−１である旨を、プロセス数保持部３０３とカウンタ部３０４と情報管理部３０５とへ通知する。
【０１２１】
また、比較の結果、宛先情報と記憶しているスイッチ識別情報とが異なっている場合、宛先判定部３０８は、経路設定コマンドの宛先が当該ネットワークスイッチ２１−１でない旨と、その宛先情報とを情報管理部３０５に通知する。
【０１２２】
修正部３０９は、比較部３０６による比較の結果、グループ所属プロセス数と設定完了プロセス数とが同じである場合、パケット入力部３０１から出力されてきたマルチキャストＩＤと同じマルチキャストＩＤと対応付けて情報管理部３０５が記憶しているビット列を読出す。そして、修正部３０９は、読み出したビット列において、パケット入力部３０１からの情報が示す設定完了通知を入力した入力ポートと対応付けられた出力ポートに対応するビットの値を「１」から「０」へ変更する。
【０１２３】
例えば、ネットワークスイッチ２２から送信されてきた設定完了通知がネットワークスイッチ２１−１の入力ポートＩ５に入力された場合、修正部３０９は、設定完了通知内のマルチキャストＩＤと対応付けて記憶しているマルチキャスト制御情報３０５１内のビット列に含まれる、入力ポートＩ５と対応付けられた出力ポートＯ５に対応する５番目のビットを「１」から「０」へ変更する。
【０１２４】
なお、マルチキャストパケットを出力する出力ポートの設定が完了した時点において、マルチキャスト制御スイッチでないネットワークスイッチが記憶しているグループ所属プロセス数と設定完了プロセス数とが同じである場合、マルチキャスト制御スイッチのみならず当該ネットワークスイッチにも、マルチキャスト制御スイッチを宛先とした特定の１プロセスグループに含まれる全計算ノードから送信された経路設定コマンドが到達したことに相当する。
【０１２５】
このような場合、当該プロセスグループに含まれるプロセス間のマルチキャスト通信を、マルチキャスト制御スイッチを経由することなしに行うことが可能である。このような観点より、修正部３０９は、このプロセスグループに付与されたマルチキャストＩＤに対応するビット列において、マルチキャストパケットをマルチキャスト制御スイッチへ転送するための出力ポートに対応するビットを「０」に変更する。
【０１２６】
つぎに、上記構成を有するネットワークスイッチ２１−１〜２１−４，２２の動作について、経路設定に関するコマンドパケットである経路設定コマンドや経路設定完了通知を受信したときの動作を、図６を参照して説明する。なお、以下の説明の前提として、あるプロセスグループに含まれる各プロセスが動作する計算ノードのそれぞれが、マルチキャスト制御スイッチであるネットワークスイッチ２２に付与されたスイッチ識別情報と同じ宛先情報を含む図２に示した経路設定コマンドを、これらの計算ノードが接続されているネットワークスイッチ２１−１〜２１−４へ送信した場合を例に挙げて説明する。
【０１２７】
ネットワークスイッチが経路設定コマンドを受信した場合、入力バッファ部２０１−１〜２０１−５のうち経路設定コマンドを送信してきた計算ノードと接続されている入力バッファ部は、その経路設定コマンドをパケット入力部３０１へ出力する。
【０１２８】
すると、図６に示すステップ４０１にて、パケット入力部３０１は、入力バッファ部２０１−１〜２０１−５から出力されてきたパケットが、経路設定コマンドであるか判定する。
【０１２９】
ステップ４０１にて、受信コマンドが経路設定コマンドであると判定した場合、ステップ４０２にて、パケット入力部３０１は、入力バッファ部２０１−１〜２０１−５から出力されてきた経路設定コマンドをパケット出力部３０２へ出力する。
【０１３０】
また、パケット入力部３０１は、入力バッファ部から出力されてきたパケットデータが経路設定コマンドであると識別する。そして、パケット入力部３０１は、その経路設定コマンド内の宛先情報を宛先判定部３０８へ出力する。
【０１３１】
また、パケット入力部３０１は、経路設定コマンドに含まれているマルチキャストＩＤとグループ所属プロセス数とをプロセス数保持部３０３へ出力する。すると、プロセス数保持部３０３は、パケット入力部３０１から出力されてきたマルチキャストＩＤとグループ所属プロセス数とを対応付けて記憶する。
【０１３２】
また、パケット入力部３０１は、経路設定コマンドに含まれているマルチキャストＩＤをカウンタ部３０４へ出力する。
【０１３３】
また、パケット入力部３０１は、入力バッファ部２０１−１〜２０１−５からの経路設定コマンドに含まれているコマンド情報「０１」およびマルチキャストＩＤと、経路設定コマンドを入力した入力ポートを示す情報とを情報管理部３０５へ出力する。
【０１３４】
また、パケット入力部３０１は、経路設定コマンドに含まれているマルチキャストＩＤを完了通知生成部３０７へ出力する。
【０１３５】
その後、ステップ４０３にて、宛先判定部３０８は、パケット入力部３０１から出力されてきた宛先情報と、記憶しているスイッチ識別情報とを比較する。
【０１３６】
比較の結果、宛先情報と記憶しているスイッチ識別情報とが異なっている場合、宛先判定部３０８は、その宛先情報と、経路設定コマンドの宛先が当該ネットワークスイッチ２１−１でない旨を情報管理部３０５に通知する。
【０１３７】
すると、ステップ４０４にて、情報管理部３０５は、パケット入力部３０１から出力されてきたマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶しているビット列Ｂ０〜Ｂ１５を指定する。続いて、情報管理部３０５は、指定したビット列において、パケット入力部３０１から出力されてきた情報が示す１つの経路設定コマンドが出力されてきた１つの入力ポートと対応付けられた出力ポートと１対１で対応する１つのビットの値を「１」に設定する。そして、ビットの設定を１回行うごとに、その旨をカウンタ部３０４へ通知する。なお、カウンタ部３０４は、ビットの設定を行った旨が情報管理部３０５から通知されるごとに、パケット入力部３０１から出力されてきたマルチキャストＩＤと対応付けて記憶している設定完了プロセス数に「１」を加算していく。
【０１３８】
さらに、ステップ４０４にて、情報管理部３０５は、宛先判定部３０８から通知された宛先情報と同じスイッチ識別情報と対応付けて記憶している出力ポートに対応するビットの値を「１」に設定する。そして、情報管理部３０５は、「１」に設定した出力ポート（つまり、宛先情報と同じスイッチ識別情報が付与されたネットワークスイッチが接続されている出力ポート）を、パケット出力部３０２へ通知する。
【０１３９】
すると、ステップ４０５にて、パケット出力部３０２は、情報管理部３０５から通知された出力ポートから経路設定コマンドを出力する。
【０１４０】
その後、ネットワークスイッチ２１−１は、コマンドの受信待ちになり、経路設定コマンドまたは経路設定完了通知の受信を待つ。
【０１４１】
一方、宛先判定部３０８は、ステップ４０３における比較の結果、宛先情報と記憶しているスイッチ識別情報とが同じである場合、経路設定コマンドの宛先が当該ネットワークスイッチ２１−１である旨を、プロセス数保持部３０３とカウンタ部３０４と情報管理部３０５とへ通知する。
【０１４２】
すると、ステップ４０６にて、情報管理部３０５は、パケット入力部３０１から出力されてきたマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶しているビット列Ｂ０〜Ｂ１５を指定する。続いて、情報管理部３０５は、指定したビット列において、パケット入力部３０１から出力されてきた情報が示す１つの経路設定コマンドが出力されてきた１つの入力ポートと対応付けられた出力ポートに１対１で対応する１つのビットの値を「１」に設定する。そして、情報管理部３０５は、ビットの設定を１回行うごとに、その旨をカウンタ部３０４へ通知する。
【０１４３】
すると、ステップ４０７にて、カウンタ部３０４は、ビットの設定を行った旨が情報管理部３０５から通知されるごとに、パケット入力部３０１から出力されてきたマルチキャストＩＤと対応付けて記憶している設定完了プロセス数に「１」を加算していく。なお、カウンタ部３０４は、経路設定コマンドの宛先が当該ネットワークスイッチ２１−１である旨が宛先判定部３０８から通知されたことに応じて、記憶している設定完了プロセス数を比較部３０６へ出力する。
【０１４４】
また、経路設定コマンドの宛先が当該ネットワークスイッチである旨が宛先判定部３０８から通知されたことに応じて、プロセス数保持部３０３は、パケット入力部３０１から出力されてきたマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶しているグループ所属プロセス数を比較部３０６に出力する。
【０１４５】
続いて、ステップ４０８にて、比較部３０６は、プロセス数保持部３０３から出力されてきたグループ所属プロセス数と、カウンタ部３０４から出力されてきた設定完了プロセス数とを比較し、比較結果を、情報管理部３０５と完了通知生成部３０７とへ出力する。
【０１４６】
比較の結果、グループ所属プロセス数と設定完了プロセス数とが同じでない場合、マルチキャスト通信を実行するプロセスグループに含まれるすべてのプロセスからは経路設定コマンドが届いていないため、再度経路設定コマンドの受信待ちになる。
【０１４７】
一方、比較の結果、グループ所属プロセス数と設定完了プロセス数とが同じである場合、マルチキャスト通信を実行するプロセスグループに含まれるすべてのプロセスから経路設定コマンドが到達したことに相当する。
【０１４８】
そのため、ステップ４０９にて、完了通知生成部３０７は、プロセスグループに対するマルチキャストパケットを出力する出力ポートの設定が完了した旨を示す設定完了通知を生成してパケット出力部３０２に出力する。なお、完了通知生成部３０７は、パケット入力部３０１から出力されてきたマルチキャストＩＤを、設定完了通知へ書き込む。
【０１４９】
また、完了通知生成部３０７は、設定完了通知の生成が完了した場合、その旨を情報管理部３０５へ通知するとともに、設定完了通知に書き込んだマルチキャストＩＤを情報管理部３０５へ出力する。すると、情報管理部３０５は、完了通知生成部３０７から出力されてきたマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶しているビット列をパケット出力部３０２へ出力する。
【０１５０】
そして、パケット出力部３０２は、完了通知生成部３０７から設定完了通知を、情報管理部３０５から出力されてきたビット列において「１」に設定されているビットと対応する出力ポートＯ１〜Ｏ５から出力する。これにより、設定完了通知が、プロセスグループに含まれる各プロセスが動作する計算ノードへ送信される。
【０１５１】
一方、ネットワークスイッチ２１−１が経路設定完了通知を受信した場合を説明する。
【０１５２】
入力バッファ部２０１−１〜２０１−５のうち設定完了通知を送信してきたマルチキャスト制御スイッチ（この例では、ネットワークスイッチ２２）と接続されている入力バッファ部は、その設定完了通知をパケット入力部３０１へ出力する。
【０１５３】
すると、ステップ４０１にて、パケット入力部３０１は、入力バッファ部２０１−１〜２０１−５から出力されてきたパケットデータが設定完了通知であると識別する。
【０１５４】
この場合、ステップ４１０にて、パケット入力部３０１は、入力バッファ部２０１−１〜２０１−５からの設定完了通知に含まれているマルチキャストＩＤと、設定完了通知を入力した入力ポートを示す情報とを修正部３０９へ出力する。
【０１５５】
また、パケット入力部３０１は、設定完了通知に含まれているマルチキャストＩＤをプロセス数保持部３０３へ出力する。すると、プロセス数保持部３０３は、そのマルチキャストＩＤと対応付けて記憶しているグループ所属プロセス数を比較部３０６へ出力する。
【０１５６】
また、パケット入力部３０１は、設定完了通知に含まれているコマンド情報「１０」とマルチキャストＩＤとをカウンタ部３０４へ出力する。すると、カウンタ部３０４は、そのコマンド情報「１０」と、そのマルチキャストＩＤと対応付けて記憶している設定完了プロセス数とを比較部３０６へ出力する。
【０１５７】
カウンタ部３０４からコマンド情報「１０」が出力されてくると、ステップ４１１にて、比較部３０６は、プロセス数保持部３０３から出力されてきたグループ所属プロセス数と、カウンタ部３０４から出力された設定完了プロセス数とを比較する。そして、比較部３０６は、その比較結果を、修正部３０９へ出力する。
【０１５８】
比較の結果、グループ所属プロセス数と設定完了プロセス数とが同じである場合、ステップ４１２にて、修正部３０９は、パケット入力部３０１から出力されてきたマルチキャストＩＤと同じマルチキャストＩＤと対応付けて情報管理部３０５が記憶しているビット列を読出す。続いて、修正部３０９は、読み出したビット列において、パケット入力部３０１からの情報が示す設定完了通知を入力した入力ポートと対応付けられた出力ポートに対応するビットの値を「１」から「０」へ変更する。
【０１５９】
つぎに、上記構成を有する並列計算機システムの動作について説明する。
【０１６０】
まず、並列計算機システムにてマルチキャストパケットの転送経路を設定する動作を、図７を参照して説明する。この説明例では、計算ノード１１−１と、ネットワークスイッチ２１−１と、ネットワークスイッチ２２との各動作を例に挙げて説明する。
【０１６１】
なお、以下の説明の前提として、ある１つのプロセスグループに含まれる各プロセスが動作する計算ノードは、そのプロセスグループのマルチキャストＩＤと、そのプロセスグループ内の計算ノード間で送受信されるマルチキャストパケットを制御するネットワークスイッチ２２のスイッチ識別情報と同じ宛先情報と、そのプロセスグループに含まれる各プロセスが動作する計算ノードの数であるグループ所属プロセス数をあらかじめ記憶している。
【０１６２】
図７に示すステップ５０１にて、ある１つのプロセスグループに所属する各プロセスが動作する計算ノードのそれぞれは、当該計算ノードと接続されているネットワークスイッチ２１−１〜２１−４へ、経路設定コマンドを生成して送信する。
【０１６３】
この例では、計算ノード１１−１は、記憶しているマルチキャストＩＤと宛先情報とグループ所属プロセス数とを含む経路設定コマンドを生成し、その経路設定コマンドをネットワークスイッチ２１−１へ送信する。なお、経路設定コマンド内の宛先情報と同じスイッチ識別情報が付与されたネットワークスイッチ２２が、この経路設定コマンドの宛先となる。
【０１６４】
すると、ステップ５０２にて、ネットワークスイッチ２１−１は、計算ノード１１−１から送信されてきた経路設定コマンドを受信する。そして、ネットワークスイッチ２１−１は、経路設定コマンドに含まれているマルチキャストＩＤとグループ所属プロセス数とを対応付けて記憶する。
【０１６５】
続いて、ステップ５０３にて、ネットワークスイッチ２１−１は、経路設定コマンドに含まれているマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶しているビット列Ｂ０〜Ｂ１５を指定する。続いて、ネットワークスイッチ２１−１は、指定したビット列において、経路設定コマンドを入力した入力ポートと対応付けられた出力ポートと１対１で対応する１つのビットの値を「１」に設定する。
【０１６６】
なお、ネットワークスイッチ２１−１は、１つのビットの設定を行うごとに、経路設定コマンドに含まれているマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶している設定完了プロセス数に「１」を加算していく。
【０１６７】
また、ネットワークスイッチ２１−１は、経路設定コマンドに含まれている宛先情報と、自己が記憶しているネットワークスイッチ２１−１に付与されたスイッチ識別情報とを比較する。
【０１６８】
比較の結果、宛先情報と記憶しているスイッチ識別情報とが異なるため、ステップ５０３にて、ネットワークスイッチ２１−１は、指定したビット列において、経路設定コマンド内の宛先情報と同じスイッチ識別情報と対応付けて記憶している出力ポートに対応するビットの値を「１」に設定する。
【０１６９】
その後、ステップ５０４にて、ネットワークスイッチ２１−１は、宛先情報と同じスイッチ識別情報と対応付けて記憶している出力ポート（つまり、宛先情報と同じスイッチ識別情報が付与されたネットワークスイッチ２２が接続されている出力ポート）から、経路設定コマンドを出力する。これにより、ネットワークスイッチ２１−１は、計算ノード１１−１から送信されてきた経路設定コマンドを、ネットワークスイッチ２２へ転送する。
【０１７０】
すると、ステップ５０５にて、ネットワークスイッチ２２は、ネットワークスイッチ２１−１から転送されてきた経路設定コマンドを受信する。
【０１７１】
そして、ネットワークスイッチ２２は、経路設定コマンドに含まれているマルチキャストＩＤとグループ所属プロセス数とを対応付けて記憶する。
【０１７２】
続いて、ステップ５０６にて、ネットワークスイッチ２２は、ビット列Ｂ０〜Ｂ１５のうちから経路設定コマンドに含まれているマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶しているビット列を指定する。続いて、ネットワークスイッチ２２は、指定したビット列において、経路設定コマンドを入力した入力ポートと対応付けられた出力ポートと１対１で対応する１つのビットの値を「１」に設定する。
【０１７３】
なお、ネットワークスイッチ２２は、１つのビットの設定を行うごとに、経路設定コマンドに含まれているマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶している設定完了プロセス数に「１」を加算していく。
【０１７４】
続いて、ネットワークスイッチ２２は、経路設定コマンドに含まれている宛先情報と、自己が記憶しているネットワークスイッチ２２に付与されたスイッチ識別情報とを比較する。
【０１７５】
比較の結果、宛先情報と記憶しているスイッチ識別情報とが同じであるため、ネットワークスイッチ２２は、設定完了プロセス数と、グループ所属プロセス数とを比較する。
【０１７６】
そして、比較の結果、グループ所属プロセス数と設定完了プロセス数とが同じになった場合、ステップ５０７において、ネットワークスイッチ２２は、経路設定コマンド内のマルチキャストＩＤが付与されたプロセスグループに対するマルチキャストパケットを出力する出力ポートの設定が完了した旨を示す設定完了通知を生成する。なお、本実施形態では、ネットワークスイッチ２２は、設定完了通知に、設定を完了したプロセスグループのマルチキャストＩＤを書込む。そして、ネットワークスイッチ２２は、経路設定コマンドの送信元の計算ノード１１−１を宛先として指定した設定完了通知を、ネットワークスイッチ２１−１へ送信する。なお、ネットワークスイッチ２２は、このマルチキャストＩＤが付与されたプロセスグループ内のプロセスが動作する計算ノード１１−１以外の計算ノードにも、設定完了通知を送信する。
【０１７７】
すると、ステップ５０８にて、ネットワークスイッチ２１−１は、ネットワークスイッチ２２から送信されてきた設定完了通知を受信する。
【０１７８】
そして、ネットワークスイッチ２１−１は、設定完了通知に含まれているマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶しているグループ所属プロセス数と、設定完了通知に含まれているマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶している設定完了プロセス数とを比較する。
【０１７９】
比較の結果、グループ所属プロセス数と設定完了プロセス数とが同じである場合、ステップ５０９にて、ネットワークスイッチ２１−１は、設定完了通知に含まれているマルチキャストＩＤと同じマルチキャストＩＤと対応付けて記憶しているビット列を読出す。続いて、ネットワークスイッチ２１−１は、読み出したビット列において、設定完了通知を入力した入力ポートと対応付けられた出力ポートに対応するビットの値を「１」から「０」へ変更する。
【０１８０】
ステップ５１０にて、ネットワークスイッチ２１−１は、ネットワークスイッチ２２から送信されてきた設定完了通知を、その宛先である計算ノード１１−１へ転送する。
【０１８１】
すると、ステップ５１１にて、計算ノード１１−１は、ネットワークスイッチ２１−１から転送されてきた設定完了通知を受信する。なお、ネットワークスイッチ２２が送信した設定完了通知は、その設定完了通知内のマルチキャストＩＤが付与されたプロセスグループに含まれるプロセスが動作する計算ノード１１−１以外の計算ノードも受信する。
【０１８２】
すると、そのプロセスグループに含まれるプロセスが動作する計算ノードが、経路設定コマンドにより指示したマルチキャストパケットを出力する出力ポートの設定がマルチキャスト制御スイッチにおいて完了したことを認識する。これにより、これらの計算ノードが、相互にマルチキャスト通信を行うことが可能となる。なお、これらの計算ノードは、例えば、マルチキャスト通信の実行をプログラムにより指示された際に、マルチキャストパケットを送信する。
【０１８３】
つぎに、設定完了通知をそれぞれ受信した同じプロセスグループに含まれるプロセスが動作する特定の複数の計算ノードがマルチキャスト通信を行う２つの動作例について説明する。
【０１８４】
なお、以下の説明例では、計算ノード１１−１は、ネットワークスイッチ２１−１のマルチキャスト制御部２０５が有する入力ポートＩ１と接続されており、計算ノード１１−２は、ネットワークスイッチ２１−１のマルチキャスト制御部２０５が有する入力ポートＩ２と接続されている。また、計算ノード１２−１は、ネットワークスイッチ２１−２のマルチキャスト制御部２０５が有する入力ポートＩ１と接続されている。また、計算ノード１３−３は、ネットワークスイッチ２１−３のマルチキャスト制御部２０５が有する入力ポートＩ３と接続されている。また、計算ノード１４−４は、ネットワークスイッチ２１−４のマルチキャスト制御部２０５が有する入力ポートＩ４と接続されている。
【０１８５】
さらに、以下の説明例では、ネットワークスイッチ２１−１のマルチキャスト制御部２０５が有する出力ポートＯ５は、ネットワークスイッチ２２のマルチキャスト制御部２０５が有する入力ポートＩ１と接続されている。また、ネットワークスイッチ２１−２のマルチキャスト制御部２０５が有する出力ポートＯ５は、ネットワークスイッチ２２のマルチキャスト制御部２０５が有する入力ポートＩ２と接続されている。また、ネットワークスイッチ２１−３のマルチキャスト制御部２０５が有する出力ポートＯ５は、ネットワークスイッチ２２のマルチキャスト制御部２０５が有する入力ポートＩ３と接続されている。また、ネットワークスイッチ２１−４のマルチキャスト制御部２０５が有する出力ポートＯ５は、ネットワークスイッチ２２のマルチキャスト制御部２０５が有する入力ポートＩ４と接続されている。
【０１８６】
まず、特定の複数の計算ノードがマルチキャスト通信を行う第１の動作例について説明する。なお、第１の動作例は、各計算ノード１１−１、１１−２、１２−１、１３−３および１４−４上でそれぞれ動作する１プロセス（つまり、グループ所属プロセス数は「５」）から成るプロセスグループが、マルチキャスト通信を行う例である。また、以下では、このプロセスグループに付与されたマルチキャストＩＤは「１」である場合を例に挙げて説明する。
【０１８７】
まず、各計算ノード１１−１、１１−２、１２−１、１３−３および１４−４は、図２に示したような経路設定コマンドをそれぞれ生成する。なお、この説明例では、経路設定コマンドは、プロセスグループに付与されたマルチキャストＩＤ（＝「１」）と、宛先情報（＝ネットワークスイッチ２２に付与されたスイッチ識別情報と同じ情報）と、プロセスグループに含まれる計算ノード上のプロセスの数を示すグループ所属プロセス数（＝「５」）とを含む。
【０１８８】
そして、図８に示すように、計算ノード１１−１、１１−２は、この経路設定コマンドをネットワークスイッチ２１−１へ送信する。また、計算ノード１２−１は、この経路設定コマンドをネットワークスイッチ２１−２へ送信する。また、計算ノード１３−３は、この経路設定コマンドをネットワークスイッチ２１−３へ送信する。また、計算ノード１４−４は、この経路設定コマンドをネットワークスイッチ２１−４へ送信する。
【０１８９】
その後、ネットワークスイッチ２１−１は、計算ノード１１−１から送信されてきた経路設定コマンドと、計算ノード１１−２から送信されてきた経路設定コマンドとを受信する。すると、ネットワークスイッチ２１−１は、受信した各経路設定コマンドに含まれているマルチキャストＩＤ「１」とグループ所属プロセス数「５」とを対応付けて記憶する。
【０１９０】
なお、以下では、各ネットワークスイッチ２１−１〜２１−４がそれぞれ記憶しているグループ所属プロセス数を、Ｐ１−１〜Ｐ１−４と表記する。また、ネットワークスイッチ２２が記憶しているグループ所属プロセス数を、Ｐ２−１と表記する。
【０１９１】
また、ネットワークスイッチ２１−１は、受信した各経路設定コマンド内のマルチキャストＩＤ「１」と対応付けて記憶しているビット列Ｂ１−１を読出す。
【０１９２】
そして、ネットワークスイッチ２１−１は、このビット列Ｂ１−１において、計算ノード１１−１からの経路設定コマンドを入力した入力ポートＩ１と対応付けられている出力ポートＯ１に対応するビットの値と、計算ノード１１−２からの経路設定コマンドを入力した入力ポートＩ２と対応付けられている出力ポートＯ２に対応するビットの値とを、「１」に設定する。
【０１９３】
なお、ネットワークスイッチ２１−１は、各計算ノード１１−１、１１−２からそれぞれ送信されてきた経路設定コマンドに対してビットの値の設定を１回行うごとに、自己が記憶している設定完了プロセス数に「１」を加算していく。なお、ネットワークスイッチ２１−１は、この設定完了プロセス数と、計算ノード１１−１、１１−２からの経路設定コマンドに含まれているマルチキャストＩＤ（＝「１」）とを対応付けて記憶する。
【０１９４】
この例では、ネットワークスイッチ２１−１は、計算ノード１１−１からの経路設定コマンドに対するビットの値の設定と、計算ノード１１−２からの経路設定コマンドに対するビットの値の設定とを行う。そのため、これらの設定が完了した場合、ネットワークスイッチ２１−１が、経路設定コマンド内のマルチキャストＩＤ（＝「１」）と対応付けて記憶している設定完了プロセス数は「２」である。
【０１９５】
なお、以下では、各ネットワークスイッチ２１−１〜２１−４がそれぞれ記憶している設定完了プロセス数を、Ｑ１−１〜Ｑ１−４と表記する。また、ネットワークスイッチ２２が記憶している設定完了プロセス数を、Ｑ２−１と表記する。
【０１９６】
また、ネットワークスイッチ２１−１は、各経路設定コマンド内の宛先情報と自己が記憶しているネットワークスイッチ２１−１に付与されたスイッチ識別情報とが異なっているため、ビット列Ｂ１−１において、宛先情報が示すネットワークスイッチ２２と接続されている出力ポートＯ５に対応するビットの値を「１」に設定する。
【０１９７】
なお、ビット列Ｂ１−１におけるこれらのビット値の更新が完了した場合、ネットワークスイッチ２１−１が記憶しているビット列Ｂ１−１は、図８に示す状態（＝「１１００１」）にある。
【０１９８】
そして、ネットワークスイッチ２１−１は、宛先情報が示すネットワークスイッチ２２と接続されている出力ポートＯ５を介して、宛先情報が示すネットワークスイッチ２２へ、計算ノード１１−１から送信されてきた経路設定コマンドと、計算ノード１１−２から送信されてきた経路設定コマンドとを転送する。
【０１９９】
また、ネットワークスイッチ２１−２は、計算ノード１２−１から送信されてきた経路設定コマンドに含まれているマルチキャストＩＤ「１」とグループ所属プロセス数「５」とを対応付けて記憶する。
【０２００】
また、ネットワークスイッチ２１−２は、この経路設定コマンド内のマルチキャストＩＤ「１」と対応付けて記憶しているビット列Ｂ１−２を読出す。
【０２０１】
そして、ネットワークスイッチ２１−２は、このビット列Ｂ１−２において、計算ノード１２−１からの経路設定コマンドを入力した入力ポートＩ１と対応付けられている出力ポートＯ１に対応するビットの値を、「１」に設定する。なお、この設定が完了した場合、図８に示すように、ネットワークスイッチ２１−２が、経路設定コマンド内のマルチキャストＩＤ（＝「１」）と対応付けて記憶している設定完了プロセス数Ｑ１−２は「１」である。
【０２０２】
また、ネットワークスイッチ２１−２は、この経路設定コマンド内の宛先情報と自己が記憶しているネットワークスイッチ２１−２に付与されたスイッチ識別情報とが異なっているため、ビット列Ｂ１−２において、宛先情報が示すネットワークスイッチ２２と接続されている出力ポートＯ５に対応するビットの値を「１」に設定する。
【０２０３】
なお、ビット列Ｂ１−２におけるこれらのビット値の更新が完了した場合、ネットワークスイッチ２１−２が記憶しているビット列Ｂ１−２は、図８に示す状態（＝「１０００１」）にある。そして、ネットワークスイッチ２１−２は、宛先情報が示すネットワークスイッチ２２と接続されている出力ポートＯ５を介して、ネットワークスイッチ２２へ経路設定コマンドを転送する。
【０２０４】
また、ネットワークスイッチ２１−３は、計算ノード１３−３から送信されてきた経路設定コマンドに含まれているマルチキャストＩＤ「１」とグループ所属プロセス数「５」とを対応付けて記憶する。
【０２０５】
また、ネットワークスイッチ２１−３は、この経路設定コマンド内のマルチキャストＩＤ「１」と対応付けて記憶しているビット列Ｂ１−３において、この経路設定コマンドを入力した入力ポートＩ３と対応付けられている出力ポートＯ３に対応するビットの値を、「１」に設定する。なお、この設定が完了した場合、図８に示すように、ネットワークスイッチ２１−３が、経路設定コマンド内のマルチキャストＩＤ（＝「１」）と対応付けて記憶している設定完了プロセス数Ｑ１−３は「１」である。
【０２０６】
また、ネットワークスイッチ２１−３は、この経路設定コマンド内の宛先情報と自己が記憶しているネットワークスイッチ２１−３のスイッチ識別情報とが異なっているため、ビット列Ｂ１−３において、宛先情報が示すネットワークスイッチ２２と接続されている出力ポートＯ５に対応するビットの値を「１」に設定する。
【０２０７】
なお、ビット列Ｂ１−３におけるこれらのビット値の更新が完了した場合、ネットワークスイッチ２１−３が記憶しているビット列Ｂ１−３は、図８に示す状態（＝「００１０１」）にある。そして、ネットワークスイッチ２１−３は、宛先情報が示すネットワークスイッチ２２と接続されている出力ポートＯ５を介して、ネットワークスイッチ２２へ経路設定コマンドを転送する。
【０２０８】
また、ネットワークスイッチ２１−４は、計算ノード１４−４から送信されてきた経路設定コマンドに含まれているマルチキャストＩＤ「１」とグループ所属プロセス数「５」とを対応付けて記憶する。
【０２０９】
また、ネットワークスイッチ２１−４は、この経路設定コマンド内のマルチキャストＩＤ「１」と対応付けて記憶しているビット列Ｂ１−４において、この経路設定コマンドを入力した入力ポートＩ４と対応付けられている出力ポートＯ４に対応するビットの値を、「１」に設定する。なお、この設定が完了した場合、図８に示すように、ネットワークスイッチ２１−４が、経路設定コマンド内のマルチキャストＩＤ（＝「１」）と対応付けて記憶している設定完了プロセス数Ｑ１−４は「１」である。
【０２１０】
また、ネットワークスイッチ２１−４は、この経路設定コマンド内の宛先情報と自己が記憶しているネットワークスイッチ２１−４のスイッチ識別情報とが異なっているため、ビット列Ｂ１−４において、宛先情報が示すネットワークスイッチ２２と接続されている出力ポートＯ５に対応するビットの値を「１」に設定する。
【０２１１】
なお、ビット列Ｂ１−４におけるこれらのビット値の更新が完了した場合、ネットワークスイッチ２１−４が記憶しているビット列Ｂ１−４は、図８に示す状態（＝「０００１１」）にある。そして、ネットワークスイッチ２１−４は、宛先情報が示すネットワークスイッチ２２と接続されている出力ポートＯ５を介して、ネットワークスイッチ２２へ経路設定コマンドを転送する。
【０２１２】
その後、ネットワークスイッチ２２は、各ネットワークスイッチ２１−１〜２１−４からそれぞれ転送されてきた経路設定コマンドを受信する。すると、ネットワークスイッチ２２は、各ネットワークスイッチ２１−１〜２１−４からの経路設定コマンドに含まれているマルチキャストＩＤ「１」とグループ所属プロセス数「５」とを対応付けて記憶する。
【０２１３】
続いて、ネットワークスイッチ２２は、受信した各経路設定コマンド内のマルチキャストＩＤ「１」と対応付けて記憶しているビット列Ｂ２−１を読出す。
【０２１４】
そして、ネットワークスイッチ２２は、このビット列Ｂ２−１において、ネットワークスイッチ２１−１から転送されてきた計算ノード１１−１からの経路設定コマンドと計算ノード１１−２からの経路設定コマンドとを入力した入力ポートＩ１と対応付けられている出力ポートＯ１に対応するビットの値を「１」に設定する。なお、ネットワークスイッチ２２は、計算ノード１１−１からの経路設定コマンドに対するビットの値の設定と、計算ノード１１−２からの経路設定コマンドに対するビットの値の設定とを行うごとに、設定完了プロセス数に「１」を加算する。
【０２１５】
さらに、ネットワークスイッチ２２は、このビット列Ｂ２−１において、ネットワークスイッチ２１−２からの経路設定コマンドを入力した入力ポートＩ２と対応付けられている出力ポートＯ２に対応するビットの値と、ネットワークスイッチ２１−３からの経路設定コマンドを入力した入力ポートＩ３と対応付けられている出力ポートＯ３に対応するビットの値と、ネットワークスイッチ２１−４からの経路設定コマンドを入力した入力ポートＩ４と対応付けられている出力ポートＯ４に対応するビットの値とを、「１」に設定する。
【０２１６】
そして、ビット列Ｂ２−１におけるこれらのビット値の更新が完了した場合、ネットワークスイッチ２２が記憶しているビット列Ｂ２−１は、図８に示す状態（＝「１１１１０」）にある。また、これらの設定が完了した場合、ネットワークスイッチ２２が、各経路設定コマンド内のマルチキャストＩＤ（＝「１」）と対応付けて記憶している設定完了プロセス数Ｑ２−１は「５」である。
【０２１７】
なお、ネットワークスイッチ２２が受信した各経路設定コマンド内の宛先情報と、ネットワークスイッチ２２が記憶しているネットワークスイッチ２２に付与されたスイッチ識別情報とは同じである。この場合、ネットワークスイッチ２２は、経路設定コマンドを他のネットワークスイッチ２１−１〜２１−４へ転送しないため、宛先情報と同じスイッチ識別情報と対応付けて記憶している出力ポートに対応するビットの値を「１」に設定しない。
【０２１８】
また、ネットワークスイッチ２２は、ネットワークスイッチ２２が受信した各経路設定コマンド内の宛先情報と自己が記憶しているネットワークスイッチ２２のスイッチ識別情報とが同じであるため、設定完了プロセス数Ｑ２−１と、グループ所属プロセス数Ｐ２−１とを比較する。
【０２１９】
そして、比較の結果、グループ所属プロセス数Ｐ２−１と設定完了プロセス数Ｑ２−１とが同じになった場合、ネットワークスイッチ２２は、経路設定コマンド内のマルチキャストＩＤ「１」が付与されたプロセスグループに対するマルチキャストパケットを出力する出力ポートの設定が完了した旨を示し、経路設定コマンドの送信元の計算ノード１１−１、１１−２、１２−１、１３−３および１４−４を宛先として指定した設定完了通知を生成する。なお、本実施形態では、ネットワークスイッチ２２は、設定完了通知に、設定を完了したプロセスグループのマルチキャストＩＤ（＝「１」）を書込む。
【０２２０】
そして、ネットワークスイッチ２２は、設定完了通知に書込んだマルチキャストＩＤ「１」と対応付けて記憶しているビット列Ｂ２−１（＝「１１１１０」）において「１」に設定されているビットと対応する出力ポートＯ１〜Ｏ４へ、設定完了通知を出力する。これにより、設定完了通知が、マルチキャストパケットが出力される出力ポートとして設定した出力ポートを経由して、経路設定コマンドを送信してきた各計算ノードへ送信される。
【０２２１】
この説明例では、図９に示すように、ネットワークスイッチ２２は、計算ノード１１−１、１１−２のそれぞれを宛先として指定した各設定完了通知を、ネットワークスイッチ２１−１へ送信する。また、ネットワークスイッチ２２は、計算ノード１２−１を宛先として指定した設定完了通知を、ネットワークスイッチ２１−２へ送信する。また、ネットワークスイッチ２２は、計算ノード１３−３を宛先として指定した設定完了通知を、ネットワークスイッチ２１−３へ送信する。また、ネットワークスイッチ２２は、計算ノード１４−４を宛先として指定した設定完了通知を、ネットワークスイッチ２１−４へ送信する。
【０２２２】
すると、各ネットワークスイッチ２１−１〜２１−４は、ネットワークスイッチ２２から送信されてきた設定完了通知をそれぞれ受信する。
【０２２３】
そして、各ネットワークスイッチ２１−１〜２１−４は、設定完了通知内のマルチキャストＩＤ「１」と同じマルチキャストＩＤと対応付けてそれぞれ記憶している図９に示す各グループ所属プロセス数Ｐ１−１〜Ｐ１−４と、設定完了通知内のマルチキャストＩＤ「１」と同じマルチキャストＩＤと対応付けてそれぞれ記憶している図９に示す各設定完了プロセス数Ｑ１−１〜Ｑ１−４とを比較する。
【０２２４】
比較の結果、各ネットワークスイッチ２１−１〜２１−４がそれぞれ記憶している各グループ所属プロセス数Ｐ１−１〜Ｐ１−４と、各ネットワークスイッチ２１−１〜２１−４がそれぞれ記憶している各設定完了プロセス数Ｑ１−１〜Ｑ１−４とは異なっている。
【０２２５】
この場合、各ネットワークスイッチ２１−１〜２１−４は、設定完了通知に含まれているマルチキャストＩＤ「１」と同じマルチキャストＩＤと対応付けてそれぞれ記憶している各ビット列Ｂ１−１〜Ｂ１−４における、設定完了通知を入力した入力ポートと対応付けられた出力ポートに対応するビットの値の変更を行わない。
【０２２６】
そして、ネットワークスイッチ２１−１は、ネットワークスイッチ２２から送信されてきた各設定完了通知を、それらの宛先である計算ノード１１−１、１１−２のそれぞれへ転送する。また、ネットワークスイッチ２１−２は、ネットワークスイッチ２２から送信されてきた設定完了通知を、その宛先である計算ノード１２−１へ転送する。また、ネットワークスイッチ２１−３は、ネットワークスイッチ２２から送信されてきた設定完了通知を、その宛先である計算ノード１３−３へ転送する。また、ネットワークスイッチ２１−４は、ネットワークスイッチ２２から送信されてきた設定完了通知を、その宛先である計算ノード１４−４へ転送する。
【０２２７】
すると、各計算ノード１１−１、１１−２、１２−１、１３−３および１４−４は、ネットワークスイッチ２１−１から転送されてきた設定完了通知をそれぞれ受信する。すると、これらの計算ノード上でそれぞれ動作する同じプロセスグループに含まれる各プロセスが、経路設定コマンドにより要求したマルチキャストパケットを出力する出力ポートの設定がマルチキャスト制御スイッチにて完了したことを認識する。これにより、各計算ノード１１−１、１１−２、１２−１、１３−３および１４−４が、相互にマルチキャストパケットの伝送を行うことが可能となる。なお、これらの計算ノードは、例えば、マルチキャスト通信の実行をプログラムにより指示された際に、マルチキャストパケットを送信する。
【０２２８】
つぎに、第１の動作例において、各計算ノード１１−１、１１−２、１２−１、１３−３および１４−４が設定完了通知をそれぞれ受信した後、計算ノード１１−１が、マルチキャストパケットを送信した場合の動作について、図１０を参照して説明する。
【０２２９】
図１０に示すように、ネットワークスイッチ２１−１は、計算ノード１１−１から送信されてきたマルチキャストパケットを受信する。すると、ネットワークスイッチ２１−１は、計算ノード１１−１からのマルチキャストパケットを入力した入力ポートＩ１を識別する。
【０２３０】
そして、ネットワークスイッチ２１−１は、そのマルチキャストパケット内のマルチキャストＩＤ（＝「１」）と対応付けて記憶している図１０に示すビット列Ｂ１−１（＝「１１００１」）において値が「１」に設定されているビットに対応する出力ポートのうちの識別した入力ポートＩ１と対応付けられた出力ポート以外の出力ポート（この例では、出力ポートＯ２、Ｏ５）へ、そのマルチキャストパケットを出力する。これにより、ネットワークスイッチ２１−１は、計算ノード１１−１から送信されてきたマルチキャストパケットを、出力ポートＯ２と接続されている計算ノード１１−２と出力ポートＯ５と接続されているネットワークスイッチ２２とへ転送する。
【０２３１】
その後、ネットワークスイッチ２２は、ネットワークスイッチ２１−１から転送されてきたマルチキャストパケットを受信する。すると、ネットワークスイッチ２２は、そのマルチキャストパケットを入力した入力ポートＩ１を識別する。
【０２３２】
そして、ネットワークスイッチ２２は、そのマルチキャストパケット内のマルチキャストＩＤ（＝「１」）と対応付けて記憶している図１０に示すビット列Ｂ２−１（＝「１１１１０」）において値が「１」に設定されているビットに対応する出力ポートのうちの識別した入力ポートＩ１と対応付けられた出力ポートＯ１以外の出力ポートＯ２、Ｏ３およびＯ４へ、そのマルチキャストパケットをそれぞれ出力する。これにより、ネットワークスイッチ２２は、計算ノード１１−１が送信したマルチキャストパケットを、出力ポートＯ２と接続されているネットワークスイッチ２１−２と、出力ポートＯ３と接続されているネットワークスイッチ２１−３と、出力ポートＯ４と接続されているネットワークスイッチ２１−４とへ転送する。
【０２３３】
すると、ネットワークスイッチ２１−２は、ネットワークスイッチ２２から転送されてきたマルチキャストパケットを受信し、そのマルチキャストパケットを入力した入力ポートＩ５を識別する。
【０２３４】
そして、ネットワークスイッチ２１−２は、そのマルチキャストパケット内のマルチキャストＩＤ（＝「１」）と対応付けて記憶している図１０に示すビット列Ｂ１−２（＝「１０００１」）において値が「１」に設定されているビットに対応する出力ポートのうち識別した入力ポートＩ５と対応付けられた出力ポートＯ５以外の出力ポートＯ１へ、そのマルチキャストパケットを出力する。これにより、ネットワークスイッチ２１−２は、計算ノード１１−１が送信したマルチキャストパケットを、出力ポートＯ１と接続されている計算ノード１２−１へ転送する。
【０２３５】
また、ネットワークスイッチ２１−３は、ネットワークスイッチ２２から転送されてきたマルチキャストパケットを受信し、そのマルチキャストパケットを入力した入力ポートＩ５を識別する。
【０２３６】
そして、ネットワークスイッチ２１−３は、そのマルチキャストパケット内のマルチキャストＩＤ（＝「１」）と対応付けて記憶している図１０に示すビット列Ｂ１−３（＝「００１０１」）において値が「１」に設定されているビットに対応する出力ポートのうち識別した入力ポートＩ５と対応付けられた出力ポートＯ５以外の出力ポートＯ３へ、そのマルチキャストパケットを出力する。これにより、ネットワークスイッチ２１−３は、計算ノード１１−１が送信したマルチキャストパケットを、出力ポートＯ３と接続されている計算ノード１３−３へ転送する。
【０２３７】
また、ネットワークスイッチ２１−４は、ネットワークスイッチ２２から転送されてきたマルチキャストパケットを受信し、そのマルチキャストパケットを入力した入力ポートＩ５を識別する。
【０２３８】
そして、ネットワークスイッチ２１−４は、そのマルチキャストパケット内のマルチキャストＩＤ（＝「１」）と対応付けて記憶している図１０に示すビット列Ｂ１−４（＝「０００１１」）において値が「１」に設定されているビットに対応する出力ポートのうち識別した入力ポートＩ５と対応付けられた出力ポートＯ５以外の出力ポートＯ４へ、そのマルチキャストパケットを出力する。これにより、ネットワークスイッチ２１−４は、計算ノード１１−１が送信したマルチキャストパケットを、出力ポートＯ４と接続されている計算ノード１４−４へ転送する。以上で、各計算ノード１１−１、１１−２、１２−１、１３−３および１４−４が設定完了通知をそれぞれ受信した後、計算ノード１１−１が、マルチキャストパケットを送信する一連の動作が終了する。
【０２３９】
つぎに、特定の複数の計算ノードがマルチキャスト通信を行う第２の動作例について説明する。
【０２４０】
なお、第２の動作例では、各計算ノード１１−１、１１−２、１１−３および１１−４上でそれぞれ動作する１プロセス（つまり、グループ所属プロセス数は「４」）から成るプロセスグループが、マルチキャスト通信を行う。つまり、第２の動作例では、マルチキャスト制御スイッチ以外のネットワークスイッチのうちのいずれか１つのネットワークスイッチ２１−１と接続された各計算ノード上でそれぞれ動作するプロセスだけから成るプロセスグループが、マルチキャスト通信を行う。また、以下では、このプロセスグループに付与されたマルチキャストＩＤは「１」である場合を例に挙げて説明する。
【０２４１】
まず、各計算ノード１１−１〜１１−４は、図２に示したような経路設定コマンドをそれぞれ生成する。なお、この説明例では、経路設定コマンドは、プロセスグループに付与されたマルチキャストＩＤ（＝「１」）と、宛先情報（＝ネットワークスイッチ２２に付与されたスイッチ識別情報と同じ情報）と、プロセスグループに含まれる計算ノード上のプロセスの数を示すグループ所属プロセス数（＝「４」）とを含む。
【０２４２】
そして、図１１に示すように、各計算ノード１１−１、１１−２、１１−３および１１−４は、この経路設定コマンドをネットワークスイッチ２１−１へそれぞれ送信する。
【０２４３】
その後、ネットワークスイッチ２１−１は、各計算ノード１１−１〜１１−４からそれぞれ送信されてきた経路設定コマンドを受信する。すると、ネットワークスイッチ２１−１は、受信した各経路設定コマンドに含まれているマルチキャストＩＤ「１」とグループ所属プロセス数「４」とを対応付けて記憶する。
【０２４４】
また、ネットワークスイッチ２１−１は、受信した各経路設定コマンド内のマルチキャストＩＤ「１」と対応付けて記憶しているビット列Ｂ１−１を読出す。
【０２４５】
そして、ネットワークスイッチ２１−１は、このビット列Ｂ１−１において、計算ノード１１−１からの経路設定コマンドを入力した入力ポートＩ１と対応付けられている出力ポートＯ１に対応するビットの値と、計算ノード１１−２からの経路設定コマンドを入力した入力ポートＩ２と対応付けられている出力ポートＯ２に対応するビットの値とを、計算ノード１１−３からの経路設定コマンドを入力した入力ポートＩ３と対応付けられている出力ポートＯ３に対応するビットの値と、計算ノード１１−４からの経路設定コマンドを入力した入力ポートＩ４と対応付けられている出力ポートＯ４に対応するビットの値とを、「１」に設定する。
【０２４６】
なお、ネットワークスイッチ２１−１は、各計算ノード１１−１、１１−２、１１−３および１１−４からそれぞれ送信されてきた経路設定コマンドに対してビットの値の設定を１回行うごとに、自己が記憶している設定完了プロセス数Ｑ１−１に「１」を加算していく。そのため、これらの設定が完了した場合、ネットワークスイッチ２１−１が、経路設定コマンド内のマルチキャストＩＤ（＝「１」）と対応付けて記憶している設定完了プロセス数は「４」である。
【０２４７】
また、ネットワークスイッチ２１−１は、各経路設定コマンド内の宛先情報と自己が記憶しているネットワークスイッチ２１−１に付与されたスイッチ識別情報とが異なっているため、ビット列Ｂ１−１において、宛先情報が示すネットワークスイッチ２２と接続されている出力ポートＯ５に対応するビットの値を「１」に設定する。
【０２４８】
なお、ビット列Ｂ１−１におけるこれらのビット値の更新が完了した場合、ネットワークスイッチ２１−１が記憶しているビット列Ｂ１−１は、図１１に示す状態（＝「１１１１１」）にある。
【０２４９】
そして、ネットワークスイッチ２１−１は、宛先情報が示すネットワークスイッチ２２と接続されている出力ポートＯ５を介して、宛先情報が示すネットワークスイッチ２２へ、計算ノード１１−１から送信されてきた経路設定コマンドと、計算ノード１１−２から送信されてきた経路設定コマンドと、計算ノード１１−３から送信されてきた経路設定コマンドと、計算ノード１１−４から送信されてきた経路設定コマンドとを転送する。
【０２５０】
その後、ネットワークスイッチ２２は、ネットワークスイッチ２１−１から転送されてきた各経路設定コマンドを受信する。すると、ネットワークスイッチ２２は、ネットワークスイッチ２１−１からの各経路設定コマンドに含まれているマルチキャストＩＤ「１」とグループ所属プロセス数「４」とを対応付けて記憶する。
【０２５１】
続いて、ネットワークスイッチ２２は、受信した各経路設定コマンド内のマルチキャストＩＤ「１」と対応付けて記憶しているビット列Ｂ２−１を読出す。
【０２５２】
そして、ネットワークスイッチ２２は、このビット列Ｂ２−１において、ネットワークスイッチ２１−１から転送されてきた計算ノード１１−１からの経路設定コマンドと、計算ノード１１−２からの経路設定コマンドと、計算ノード１１−３からの経路設定コマンドと、計算ノード１１−４からの経路設定コマンドとを入力した入力ポートＩ１と対応付けられている出力ポートＯ１に対応するビットの値を「１」に設定する。
【０２５３】
なお、ネットワークスイッチ２２は、計算ノード１１−１からの経路設定コマンドに対するビットの値の設定と、計算ノード１１−２からの経路設定コマンドに対するビットの値の設定と、計算ノード１１−３からの経路設定コマンドに対するビットの値の設定と、計算ノード１１−４からの経路設定コマンドに対するビットの値の設定とを行うごとに、設定完了プロセス数に「１」を加算する。
【０２５４】
そして、ビット列Ｂ２−１におけるこれらのビット値の更新が完了した場合、ネットワークスイッチ２２が記憶しているビット列Ｂ２−１は、図１１に示す状態（＝「１００００」）にある。また、これらの設定が完了した場合、ネットワークスイッチ２２が、各経路設定コマンド内のマルチキャストＩＤ（＝「１」）と対応付けて記憶している設定完了プロセス数Ｑ２−１は「４」である。
【０２５５】
なお、ネットワークスイッチ２２が受信した各経路設定コマンド内の宛先情報と、ネットワークスイッチ２２が記憶しているネットワークスイッチ２２に付与されたスイッチ識別情報とは同じである。この場合、ネットワークスイッチ２２は、経路設定コマンドを他のネットワークスイッチ２１−１〜２１−４へ転送しないため、宛先情報と同じスイッチ識別情報と対応付けて記憶している出力ポートに対応するビットの値を「１」に設定しない。
【０２５６】
また、ネットワークスイッチ２２は、受信した各経路設定コマンド内の宛先情報と自己が記憶しているネットワークスイッチ２２のスイッチ識別情報とが同じであるため、設定完了プロセス数Ｑ２−１と、グループ所属プロセス数Ｐ２−１とを比較する。
【０２５７】
そして、比較の結果、グループ所属プロセス数Ｐ２−１と設定完了プロセス数Ｑ２−１とが同じになった場合、ネットワークスイッチ２２は、経路設定コマンド内のマルチキャストＩＤ「１」が付与されたプロセスグループに対するマルチキャストパケットを出力する出力ポートの設定が完了した旨を示し、経路設定コマンドの送信元の各計算ノード１１−１〜１１−４を宛先としてそれぞれ指定した設定完了通知を生成する。なお、本実施形態では、ネットワークスイッチ２２は、設定完了通知に、設定を完了したプロセスグループのマルチキャストＩＤ（＝「１」）を書込む。
【０２５８】
そして、図１２に示すように、ネットワークスイッチ２２は、計算ノード１１−１、１１−２、１１−３および１１−４のそれぞれを宛先として指定した各設定完了通知を、ネットワークスイッチ２１−１へ送信する。
【０２５９】
その後、ネットワークスイッチ２１−１は、ネットワークスイッチ２２から送信されてきた設定完了通知を受信する。
【０２６０】
すると、ネットワークスイッチ２１−１は、設定完了通知内のマルチキャストＩＤ「１」と同じマルチキャストＩＤと対応付けて記憶している図１２に示すグループ所属プロセス数Ｐ１−１（＝「４」）と、設定完了通知内のマルチキャストＩＤ「１」と同じマルチキャストＩＤと対応付けて記憶している図１２に示す設定完了プロセス数Ｑ１−１（＝「４」）とを比較する。
【０２６１】
比較の結果、ネットワークスイッチ２１−１が記憶しているグループ所属プロセス数Ｐ１−１と、ネットワークスイッチ２１−１が記憶している設定完了プロセス数Ｑ１−１とは同じである。
【０２６２】
そのため、ネットワークスイッチ２１−１は、設定完了通知に含まれているマルチキャストＩＤ「１」と同じマルチキャストＩＤと対応付けて記憶しているビット列Ｂ１−１（＝「１１１１１」）を読出す。続いて、ネットワークスイッチ２１−１は、読み出したビット列Ｂ１−１において、ネットワークスイッチ２２からの設定完了通知を入力した入力ポートＩ５と対応付けられた出力ポートＯ５に対応する左から５番目のビットの値を「１」から「０」へ変更する。なお、このビット値の更新が完了した場合、ネットワークスイッチ２１−１が記憶しているビット列Ｂ１−１は、図１２に示す状態（＝「１１１１０」）にある。
【０２６３】
その後、ネットワークスイッチ２１−１は、ネットワークスイッチ２２から送信されてきた各設定完了通知を、それらの宛先である計算ノード１１−１〜１１−４のそれぞれへ転送する。
【０２６４】
すると、各計算ノード１１−１〜１１−４は、ネットワークスイッチ２１−１から転送されてきた設定完了通知をそれぞれ受信する。すると、これらの計算ノード上でそれぞれ動作する同じプロセスグループに含まれる各プロセスが、経路設定コマンドにより要求したマルチキャストパケットを出力する出力ポートの設定がマルチキャスト制御スイッチにて完了したことを認識する。これにより、各計算ノード１１−１〜１１−４が、相互にマルチキャストパケットの伝送を行うことが可能となる。
【０２６５】
つぎに、第２の動作例において、各計算ノード１１−１〜１１−４が設定完了通知をそれぞれ受信した後、計算ノード１１−１が、マルチキャストパケットを送信した場合の動作について、図１３を参照して説明する。
【０２６６】
図１３に示すように、ネットワークスイッチ２１−１は、計算ノード１１−１から送信されてきたマルチキャストパケットを受信する。すると、ネットワークスイッチ２１−１は、計算ノード１１−１からのマルチキャストパケットを入力した入力ポートＩ１を識別する。
【０２６７】
そして、ネットワークスイッチ２１−１は、そのマルチキャストパケット内のマルチキャストＩＤ（＝「１」）と対応付けて記憶している図１３に示すビット列Ｂ１−１（＝「１１１１０」）において値が「１」に設定されているビットに対応する出力ポートのうちの識別した入力ポートＩ１と対応付けられた出力ポート以外の出力ポート（この例では、出力ポートＯ２、Ｏ３およびＯ４）へ、そのマルチキャストパケットを出力する。
【０２６８】
これにより、ネットワークスイッチ２１−１は、計算ノード１１−１から送信されてきたマルチキャストパケットを、出力ポートＯ２と接続されている計算ノード１１−２と、出力ポートＯ３と接続されている計算ノード１１−３と、出力ポートＯ４と接続されている計算ノード１１−４とへ転送する。
【０２６９】
以上説明したように、本発明の並列計算機システムによれば、相互結合網２上を伝送されるマルチキャストパケットの総量をより少なくするように抑制することができる。例えば、図１２に示した本発明にてマルチキャスト通信されるパケットの通信量は、図１４に示したツリー構造のネットワークにてマルチキャスト通信されるパケットの通信量よりも少なくなっていることがわかる。
【０２７０】
また、本発明の並列計算機システムによれば、第２の動作例で示したように、マルチキャストパケットが経由する必要のないネットワークスイッチを経由して送信されることを回避でき、マルチキャスト通信におけるレイテンシを抑えることができる。
【０２７１】
また、本発明の並列計算機システムによれば、相互結合網２に接続された計算ノードの物理的な位置を把握することなく、マルチキャスト通信における宛先および通信経路を高速に設定できる。
【０２７２】
また、本発明の並列計算機システムによれば、マルチキャストパケットは、マルチキャストデータ以外に少なくともマルチキャストＩＤのみを含んでいればよい。つまり、マルチキャストパケットに、宛先情報や他の制御情報を含めることが不要となり、マルチキャストパケットのヘッダサイズの増大を抑えることができる。
【０２７３】
なお、本発明においては、ネットワークスイッチ２１−１内の処理は上述の専用のハードウェアにより実現されるもの以外に、その機能を実現するためのプログラムを、ネットワークスイッチ２１−１として動作させるコンピュータにて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムをそのコンピュータに読み込ませ、実行するものであってもよい。ネットワークスイッチ２１−１として動作させるコンピュータにて読取可能な記録媒体とは、フロッピーディスク（登録商標）、光磁気ディスク、ＤＶＤ、ＣＤなどの移設可能な記録媒体の他、そのコンピュータに内蔵されたＨＤＤ等を指す。この記録媒体に記録されたプログラムは、例えば、ネットワークスイッチ２１−１として動作させるコンピュータが有するマルチキャスト制御部２０５として動作するプロセッサにて読み込まれ、そのプロセッサの制御によって、上述したものと同様の処理が行われる。
【０２７４】
ここで、マルチキャスト制御部２０５として動作するプロセッサは、プログラムが記録された記録媒体から読み込まれたプログラムを実行するものである。なお、上述のプログラムは、各ネットワークスイッチ２１−２〜２１−４、２２についても同様に適用可能である。
【０２７５】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明の要旨を逸脱しない範囲で当業者が理解し得る各種の変形が可能である。
【０２７６】
この出願は、２００９年４月２８日に出願された日本出願特願２００９−１０９５８７を基礎として優先権の利益を主張するものであり、その開示の全てを引用によってここに取り込む。
【符号の説明】
【０２７７】
１  計算ノード群
１１−１〜１１−４、１２−１〜１２−４、１３−１〜１３−４、１４−１〜１４−４  計算ノード
２  相互結合網
２１−１〜２１−４、２２  ネットワークスイッチ
２０１−１〜２０１−５  入力バッファ部
２０２−１〜２０２−５  出力バッファ部
２０３  クロスバスイッチ部
２０４  クロスバ制御部
２０５  マルチキャスト制御部
３０１  パケット入力部
３０２  パケット出力部
３０３  プロセス数保持部
３０４  カウンタ部
３０５  情報管理部
３０６  比較部
３０７  完了通知生成部
３０８  宛先判定部
３０９  修正部
３０５１  マルチキャスト制御情報
【図１】
0005435024.tif 000002
【図２】
0005435024.tif 000003
【図３】
0005435024.tif 000004
【図４】
0005435024.tif 000005
【図５】
0005435024.tif 000006
【図６】
0005435024.tif 000007
【図７】
0005435024.tif 000008
【図８】
0005435024.tif 000009
【図９】
0005435024.tif 000010
【図１０】
0005435024.tif 000011
【図１１】
0005435024.tif 000012
【図１２】
0005435024.tif 000013
【図１３】
0005435024.tif 000014
【図１４】
0005435024.tif 000015