以下、本発明の実施形態に従った並列計算機システム(ネットワークスイッチ、経路設定方法、プログラムを含む)を説明する。
まず、本実施形態の並列計算機システムの構成を、図1を参照して説明する。図1に示すように、この並列計算機システムは、計算ノード群1と相互結合網2とから構成されている。
計算ノード群1に含まれる各計算ノード11−1〜11−4,12−1〜12−4,13−1〜13−4,14−1〜14−4は、相互結合網2とそれぞれ接続されている。
相互結合網2は、複数のネットワークスイッチ21−1〜21−4,22から構成されている。相互結合網2の形態は任意であり、例えば、多段結合網でもよい。本実施形態では、相互結合網2は、ツリー構造のネットワークである。
各ネットワークスイッチ21−1〜21−4、22には、各ネットワークスイッチ21−1〜21−4、22を固有に識別するための「スイッチ識別情報」がそれぞれ付与されている。
ネットワークスイッチ21−1〜21−4は、計算ノード群1と直接接続されている。また、ネットワークスイッチ22は、各ネットワークスイッチ21−1〜21−4と相互に接続されている。ネットワークスイッチ22の数は複数でもよい。
各計算ノード11−1〜11−4,12−1〜12−4,13−1〜13−4,14−1〜14−4は、演算器とメモリとをそれぞれ有する互いに独立した「端末」である。
各計算ノード11−1〜11−4,12−1〜12−4,13−1〜13−4,14−1〜14−4上では、この並列計算機システムが解決する問題に付随する演算処理などを含む所定の処理を実行するプロセスが動作している。本実施形態では、各計算ノード11−1〜11−4,12−1〜12−4,13−1〜13−4,14−1〜14−4において、それぞれ1つのプロセスが動作している場合を例に挙げて説明する。
また、各計算ノード11−1〜11−4,12−1〜12−4,13−1〜13−4,14−1〜14−4は、特定の複数の宛先へ送信されるマルチキャストパケットを生成する。
このマルチキャストパケットには、マルチキャスト通信を実行する計算ノードから構成される「プロセスグループ」に固有に付与された「グループ識別情報」であるマルチキャストIDが含まれる。プロセスグループの例としては、MPI通信にて通信を行うプロセスの集合として扱われるコミュニケータなどが挙げられる。
また、計算ノードのそれぞれは、当該計算ノード上で動作するプロセスが属するプロセスグループのグループ識別情報を記憶している。グループ識別情報は、プロセスグループを固有に識別可能な情報であれば、任意でよい。
また、各計算ノード11−1〜11−4,12−1〜12−4,13−1〜13−4,14−1〜14−4のうちマルチキャストパケットを送信する計算ノードは、マルチキャストパケットを転送する経路を設定するための「経路設定コマンド」を生成してマルチキャスト制御スイッチへ送信する。
ここで、「マルチキャスト制御スイッチ」とは、マルチキャストパケットの転送を制御するネットワークスイッチである。
なお、本実施形態では、各ネットワークスイッチ21−1〜21−4、22は、ある計算ノードから送信されてきたマルチキャストパケットを、その送信元の計算ノードを含むプロセスグループのうち送信元以外の計算ノードすべてへ転送する。
なお、1つのプロセスグループごとに、各ネットワークスイッチ21−1〜21−4,22のうちのいずれか1つのネットワークスイッチがマルチキャスト制御スイッチとして指定される。
本実施形態では、各計算ノード11−1〜11−4,12−1〜12−4,13−1〜13−4,14−1〜14−4上で動作するプロセスが、ネットワークスイッチ22をマルチキャスト制御スイッチとして指定した経路設定コマンドを送信する場合を例に挙げて説明する。
つぎに、本実施形態の並列計算機システムにおいて伝送されるパケットデータについて、図2を参照して説明する。
本実施形態の並列計算機システムは、図2に示すユニキャストパケット、経路設定コマンド、設定完了通知およびマルチキャストパケットの4種類の「パケットデータ」を扱う。以下では、これらのパケットデータのそれぞれが、ビット数が32ビットのパケットデータである場合を例に挙げて説明する。
これら4種類のパケットデータは、それぞれのパケットデータの先頭2ビットに割り当てられたコマンド情報により、当該パケットデータがユニキャストパケットと経路設定コマンドと設定完了通知とマルチキャストパケットとのうちのどのパケットデータであるかを識別することができる。
ユニキャストパケットは、各計算ノード11−1〜11−4,12−1〜12−4,13−1〜13−4,14−1〜14−4のうち特定の1計算ノードと他の1計算ノードとの間で行われる1対1の通信にて送受信されるパケットデータである。
本実施形態では、ユニキャストパケットは、ビット数が2ビットのコマンド情報「00」と、送信先の計算ノードを固有に識別するための4ビットの行先情報と、残り26ビットのデータ部とからなる。
「経路設定コマンド」は、上述したようにマルチキャストパケットを転送する経路を設定するためのパケットデータである。
本実施形態では、経路設定コマンドは、ビット数が2ビットのコマンド情報「01」と、ビット数が4ビットのマルチキャストIDと、ビット数が6ビットの「宛先情報」と、ビット数が6ビットの「グループ所属プロセス数」とを含む。
「宛先情報」は、経路設定コマンドの宛先を示す情報である。本実施形態では、宛先情報として、マルチキャスト制御スイッチであるネットワークスイッチに付与されたスイッチ識別情報と同じ情報が指定される。
「グループ所属プロセス数」は、ある1つのプロセスグループに含まれる各プロセスが動作する計算ノードの数である。例えば、各計算ノード11−1、11−2、12−1、13−1,14−1上でそれぞれ動作する1つのプロセスが同じプロセスグループに所属する場合、グループ所属プロセス数は「5」である。
なお、経路設定コマンドは、マルチキャスト通信を行う同じプロセスグループに所属する各計算ノードがそれぞれ生成する。そのため、これらのプロセスを含む各計算ノード11−1〜11−4,12−1〜12−4,13−1〜13−4,14−1〜14−4は、経路設定コマンドへ書込むためのマルチキャストIDと、宛先情報と、グループ所属プロセス数とをあらかじめ記憶している。
「設定完了通知」は、マルチキャストパケットの転送経路の設定が完了した際、マルチキャスト制御スイッチが生成するものであり、当該設定が完了した旨を示す「経路設定コマンドに対する応答信号」である。
本実施形態では、設定完了通知は、ビット数が2ビットのコマンド情報「10」と、ビット数が4ビットのマルチキャストIDとを含む。
設定完了通知は、設定完了通知内のマルチキャストIDが付与されたプロセスグループのマルチキャスト通信に関わるネットワークスイッチを介して、そのプロセスグループに含まれる計算ノードへ送信される。
マルチキャストパケットは、「マルチキャスト通信されるパケットデータ」である。
本実施形態では、マルチキャストパケットは、ビット数が2ビットのコマンド情報「11」と、ビット数が4ビットのマルチキャストIDと、ビット数が26ビットのデータ部とから成る。
設定完了通知を受信した計算ノードから送信されたマルチキャストパケットは、そのマルチキャストパケット内のマルチキャストIDが示すプロセスグループに含まれる全プロセスに届く。つまり、マルチキャストIDでインデキシングすることにより、複数のマルチキャスト通信の経路設定やマルチキャスト通信自体を並行に実行することが可能になる。
なお、本実施形態では並列計算機システムにおいて送受信されるパケットの種類を上述の4種類のみとしたが、それ以外の種類のパケットデータが存在してもよい。また、パケットデータのフォーマット(パケットデータのサイズや制御情報など)は、図2に示した例に限らず任意でよい。
つぎに、ネットワークスイッチ21−1〜21−4,22の構成について、図3を参照して説明する。なお、各ネットワークスイッチ21−1〜21−4,22の構成は互いに同じであるため、以下では、ネットワークスイッチ21−1を例に挙げて説明する。
図3に示すように、ネットワークスイッチ21−1は、入力バッファ部201−1〜201−5と、出力バッファ部202−1〜202−5と、クロスバスイッチ部203と、クロスバ制御部204と、マルチキャスト制御部205とを有する。
クロスバスイッチ部203、マルチキャスト制御部205は、複数の入力ポートと複数の出力ポートとをそれぞれ有している。入力ポート数および出力ポート数は任意でよい。この説明例では、各ネットワークスイッチ21−1〜21−4,22がそれぞれ有するクロスバスイッチ部203、マルチキャスト制御部205は、入力ポート数が「5」であり、出力ポート数が「5」(以下、「5入力5出力」と呼ぶ)である。
また、本実施形態では、各ネットワークスイッチ21−1〜21−4,22がそれぞれ有する各入力ポートと各出力ポートとが、互いに1対1で対応付けられており、さらに、各入力ポートには1〜5の番号がそれぞれ付与され、各出力ポートには1〜5の番号がそれぞれ付与されている場合を例に挙げて説明する。例えば、1番目の入力ポートは1番目の出力ポートと対応している。入力ポートと出力ポートとを対応付ける方法は一般的な方法でよい。
なお、図1に示した例では、各ネットワークスイッチ21−1〜21−4,22が有する5つの入力ポートのうち1番目〜4番目の入力ポートは、図1における上り方向(ネットワークスイッチ21−1〜21−4からネットワークスイッチ22へ向かう方向)に接続されている。また、各ネットワークスイッチ21−1〜21−4,22が有する5つの出力ポートのうち1番目〜4番目の出力ポートは、図1における下り方向(ネットワークスイッチ22からネットワークスイッチ21−1〜21−4へ向かう方向)に接続されている。また、ネットワークスイッチ22が有する5番目の入力ポートおよび5番目の出力ポートは未使用となっている。また、各ネットワークスイッチ21−1〜21−4が有する5番目の入力ポートは、図1における下り方向に接続されている。また、各ネットワークスイッチ21−1〜21−4が有する5番目の出力ポートは、図1における上り方向に接続されている。
本実施形態では、各入力バッファ部201−1〜201−5は、図4に示すマルチキャスト制御部205が有する各入力ポートI1〜I5と1対1で対応して接続されている。
また、本実施形態では、各入力バッファ部201−1〜201−5は、クロスバスイッチ部203が有する5つの入力ポート(図示せず)のそれぞれと、クロスバ制御部204が有する5つの入力ポート(図示せず)のそれぞれとに1対1で対応して接続されている。
入力バッファ部201−1〜201−5は、外部からパケットが送信されてきた場合、そのパケット内のコマンド情報に基づいて、そのパケットがユニキャストパケットと経路設定コマンドと設定完了通知とマルチキャストパケットとのうちどのパケットであるかを識別する。そして、入力バッファ部201−1〜201−5は、外部から送信されてきたパケットを、識別したパケットの種類に応じて、クロスバスイッチ部203またはマルチキャスト制御部205へ出力する。
より具体的には、入力バッファ部201−1〜201−5は、外部から送信されてきたパケットがユニキャストパケットであると識別した場合、そのユニキャストパケットをクロスバスイッチ部203へ出力する。
また、入力バッファ部201−1〜201−5は、外部から送信されてきたパケットが経路設定コマンドと設定完了通知とマルチキャストパケットとのいずれかであると識別した場合、識別したそのパケット(経路設定コマンドと設定完了通知とマルチキャストパケットとのいずれか)をマルチキャスト制御部205へ出力する。
本実施形態では、各出力バッファ部202−1〜202−5は、図4に示すマルチキャスト制御部205が有する各出力ポートO1〜O5に1対1で対応して接続されている。
また、本実施形態では、各出力バッファ部202−1〜202−5は、クロスバスイッチ部203が有する5つの出力ポート(図示せず)のそれぞれと1対1で対応して接続されている。
出力バッファ部202−1〜202−5は、ユニキャストパケットが当該出力バッファ部202−1〜202−5と接続されているクロスバスイッチ部203が有する出力ポート(図示せず)から出力されてきた場合、そのユニキャストパケットを当該出力バッファ部202−1〜202−5と接続されているネットワークスイッチ22および各計算ノード11−1〜11−4へ出力する。
また、出力バッファ部202−1〜202−5は、経路設定コマンド、設定完了通知またはマルチキャストパケットが当該出力バッファ部202−1〜202−5と1対1で接続されているマルチキャスト制御部205が有する出力ポートO1〜O5から出力されてきた場合、その経路設定コマンド、設定完了通知またはマルチキャストパケットを、当該出力バッファ部202−1〜202−5と接続されているネットワークスイッチ22および各計算ノード11−1〜11−4へ出力する。
クロスバスイッチ部203は、入力バッファ部201−1〜201−5から出力されてきたユニキャストパケットを、クロスバ制御部204から通知された出力バッファ部202−1〜202−5へ出力する。
クロスバ制御部204は、入力バッファ部201−1〜201−5から出力されてきたユニキャストパケット内の行先情報が示す送信先と接続されている出力バッファ部202−1〜202−5を識別して、当該ユニキャストパケットを出力すべき出力バッファ部をクロスバスイッチ部203へ通知する。
マルチキャスト制御部205は、各入力バッファ部201−1〜201−5から出力されてきたマルチキャストパケットを、当該マルチキャストパケットを出力する出力ポートとして設定されている出力ポートから出力する。このとき、マルチキャスト制御部205は、当該マルチキャストパケットを出力してきた入力バッファ部と接続された入力ポートと対応付けられている出力ポートからは出力しない。
以下に、マルチキャスト制御部205の構成について、図4を参照して詳細に説明する。図4に示すように、マルチキャスト制御部205は、パケット入力部301と、パケット出力部302と、プロセス数保持部303と、カウンタ部304と、情報管理部305と、比較部306と、完了通知生成部307と、宛先判定部308と、修正部309とを有する。
パケット入力部301は、入力ポートI1〜I5と1対1でそれぞれ接続されている入力バッファ部201−1〜201−5から出力されてきたパケットデータ(マルチキャストパケットと経路設定コマンドと設定完了通知とのいずれか)をパケット出力部302へ出力する。
また、パケット入力部301は、入力バッファ部201−1〜201−5から出力されてきたパケットデータ内のコマンド情報に基づいて、そのパケットデータが、マルチキャストパケットと経路設定コマンドと設定完了通知とのいずれであるかを識別する。
まず、パケット入力部301が、入力バッファ部201−1〜201−5から出力されてきたパケットデータが経路設定コマンドであると識別した場合の動作を説明する。
この場合、パケット入力部301は、入力バッファ部201−1〜201−5から出力されてきた経路設定コマンド内の宛先情報を宛先判定部308へ出力する。
また、パケット入力部301は、経路設定コマンドに含まれているマルチキャストIDとグループ所属プロセス数とをプロセス数保持部303へ出力する。
また、パケット入力部301は、経路設定コマンドに含まれているマルチキャストIDをカウンタ部304へ出力する。
また、パケット入力部301は、経路設定コマンドに含まれているコマンド情報「01」およびマルチキャストIDと、経路設定コマンドを入力した入力ポートを示す情報とを情報管理部305へ出力する。
また、パケット入力部301は、経路設定コマンドに含まれているマルチキャストIDを完了通知生成部307へ出力する。
つぎに、パケット入力部301が、入力バッファ部201−1〜201−5から出力されてきたパケットデータが設定完了通知であると識別した場合の動作を説明する。
この場合、パケット入力部301は、入力バッファ部201−1〜201−5から出力されてきた設定完了通知に含まれているマルチキャストIDと、その設定完了通知を入力した入力ポートを示す情報とを修正部309へ出力する。
また、パケット入力部301は、設定完了通知に含まれているマルチキャストIDをプロセス数保持部303へ出力する。
また、パケット入力部301は、設定完了通知に含まれているコマンド情報「10」とマルチキャストIDとをカウンタ部304へ出力する。
また、パケット入力部301は、設定完了通知に含まれているマルチキャストIDを完了通知生成部307へ出力する。
つぎに、パケット入力部301が、入力バッファ部201−1〜201−5から出力されてきたパケットデータがマルチキャストパケットであると識別した場合の動作を説明する。
この場合、パケット入力部301は、入力バッファ部201−1〜201−5から出力されてきたマルチキャストパケットに含まれているコマンド情報「11」とマルチキャストIDとを、情報管理部305へ出力する。
また、パケット入力部301は、マルチキャストパケットを入力した入力ポートを示す情報をパケット出力部302へ出力する。
パケット出力部302は、情報管理部305から出力されてきたマルチキャストパケットを出力する出力ポートを示すマルチキャスト制御情報3051を用いて、パケット入力部301から出力されてきたマルチキャストパケットを、各出力バッファ部202−1〜202−5と1対1で接続されている各出力ポートO1〜O5から出力する。
より具体的には、パケット出力部302は、パケット入力部301から出力されてきたマルチキャストパケットを、情報管理部305から出力されてきたビット列において値が「1」に設定されているビットに対応する出力ポートから出力する。このとき、パケット出力部302は、パケット入力部301から出力されてきた情報が示すマルチキャストパケットを入力した入力ポートと対応付けられた出力ポートからは出力しない。
また、パケット出力部302は、情報管理部305から通知された宛先情報と同じスイッチ識別情報が付与されたネットワークスイッチが接続されている出力ポートへ、経路設定コマンドを出力する。
また、パケット出力部302は、情報管理部305から出力されてきたマルチキャストパケットを出力する出力ポートを示すマルチキャスト制御情報3051を用いて、完了通知生成部307から出力されてきた設定完了通知を、各出力バッファ部202−1〜202−5へ出力する。つまり、パケット出力部302は、マルチキャストパケットを出力する出力ポートと同じ出力ポートを経由して、設定完了通知をその宛先へ送信する。
より具体的には、パケット出力部302は、情報管理部305から出力されてきたビット列において値が「1」に設定されているビットに対応する出力ポートへ、パケット入力部301から出力されてきた設定完了通知を出力する。
プロセス数保持部303は、パケット入力部301から出力されてきたマルチキャストIDとグループ所属プロセス数とを対応付けて記憶するレジスタ群である。
また、プロセス数保持部303は、経路設定コマンドの宛先が当該ネットワークスイッチ21−1である旨が宛先判定部308から通知された場合、パケット入力部301から出力されてきたマルチキャストIDと同じマルチキャストIDと対応付けて記憶しているグループ所属プロセス数を比較部306へ出力する。
また、プロセス数保持部303は、パケット入力部301からマルチキャストIDが出力されてきた場合、そのマルチキャストIDと対応付けて記憶しているグループ所属プロセス数を比較部306へ出力する。
カウンタ部304は、設定完了プロセス数をカウントし、カウントした設定完了プロセス数とパケット入力部301から出力されてきたマルチキャストIDとを対応付けて記憶する。
ここで、設定完了プロセス数とは、1つの計算ノードが生成した1つの経路設定コマンドに対して、情報管理部305が「通信経路を設定したプロセスの数」である。
本実施形態では、カウンタ部304は、ビットの設定を行った旨が情報管理部305から通知されるごとに、パケット入力部301から出力されてきたマルチキャストIDと同じマルチキャストIDと対応付けて記憶している設定完了プロセス数に「1」を加算する。なお、カウンタ部304が記憶している設定完了プロセス数は、マルチキャストパケットを出力する出力ポートの設定を開始していない状態においては「0」である。
また、カウンタ部304は、経路設定コマンドの宛先が当該ネットワークスイッチ21−1である旨が宛先判定部308から通知された場合、パケット入力部301から出力されてきたマルチキャストIDと対応付けて記憶している設定完了プロセス数を比較部306へ出力する。
また、カウンタ部304は、パケット入力部301からコマンド情報「10」とマルチキャストIDとが出力されてきた場合、コマンド情報「10」と、そのマルチキャストIDと対応付けて記憶している設定完了プロセス数とを比較部306へ出力する。
情報管理部305は、マルチキャスト制御情報3051を記憶する。
マルチキャスト制御情報3051は、マルチキャスト通信の通信経路として設定された、マルチキャストパケットを出力する出力ポートを指定するための情報である。
図5に示すように、本実施形態においては、マルチキャスト制御情報3051は、ビット数がそれぞれ5ビットである16個のビット列B0〜B15と、マルチキャストID「0」〜「15」とをそれぞれ1対1で対応付けて記憶している。
また、本実施形態では、各ビット列B0〜B15にそれぞれ含まれる5つのビットと5つの出力ポートO1〜O5とは、それぞれ1対1で対応付けられている。
さらに、本実施形態では、情報管理部305は、各ビット列B0〜B15において、マルチキャストパケットを出力する出力ポートに対応するビットには、マルチキャストパケットを出力する出力ポートであることを示す「1」を設定する。
また、情報管理部305は、各ビット列B0〜B15において、マルチキャストパケットを出力しない出力ポートに対応するビットには、マルチキャストパケットを出力しない出力ポートであることを示す「0」を設定する。
図5に示したビット列B0の例では、このビット列B0の最上位である左から1番目のビットに対応する出力ポートO1が、マルチキャストパケットを出力する出力ポートとして設定されている。
なお、マルチキャスト制御情報3051のデータ構造は、マルチキャスト制御部205が有する出力ポートO1〜O5の数と同じ数のビットを有するビット列に限らず、任意でよい。
なお、経路設定コマンドであることを示すコマンド情報「01」と、マルチキャストIDと、経路設定コマンドを入力した入力ポートを示す情報とがパケット入力部301から出力されてきた場合、情報管理部305は、以下のように動作する。
まず、情報管理部305は、パケット入力部301から出力されてきたマルチキャストIDと同じマルチキャストIDと対応付けて記憶しているビット列B0〜B15を読出す。例えば、パケット入力部301から出力されてきたマルチキャストIDが「4」である場合、情報管理部305は、マルチキャストID「4」と対応付けて記憶しているビット列B4を読出す。
つぎに、情報管理部305は、1つの経路設定コマンドを入力した1つの入力ポートを示す情報がパケット入力部301から出力された場合、読出したビット列において、その入力ポートと対応付けられた出力ポートと1対1で対応する1つのビットの値を「1」に設定する。そして、ビットの設定を1回行うごとに、その旨をカウンタ部304へ通知する。
なお、本実施形態では、情報管理部305は、宛先情報と、宛先情報と同じスイッチ識別情報が付与されたネットワークスイッチが接続されている出力ポートとを対応付けて記憶している。
そして、情報管理部305は、経路設定コマンドの宛先が当該ネットワークスイッチ21−1でない旨が宛先判定部308から通知された場合、宛先判定部308から通知された宛先情報と同じスイッチ識別情報と対応付けて記憶している出力ポートに対応するビットの値を「1」に設定する。さらに、情報管理部305は、「1」に設定した出力ポート(つまり、宛先情報と同じスイッチ識別情報が付与されたネットワークスイッチが接続されている出力ポート)を、パケット出力部302へ通知する。
なお、経路設定コマンドの宛先が当該ネットワークスイッチ21−1である旨が宛先判定部308から情報管理部305へ通知された場合、ネットワークスイッチ21−1は、経路設定コマンドを他のネットワークスイッチ21−2〜21−4、22へ転送しない。そのため、この場合、情報管理部305は、宛先判定部308から通知された宛先情報と同じスイッチ識別情報と対応付けて記憶している出力ポートに対応するビットの値を「1」に設定しない。
また、情報管理部305は、設定完了通知であることを示すコマンド情報「10」とマルチキャストIDとがパケット入力部301から出力されてきた場合、ビット列B0〜B15のうちそのマルチキャストIDと同じマルチキャストIDと対応付けて記憶しているビット列をパケット出力部302へ出力する。
また、情報管理部305は、設定完了通知の生成が完了した旨が完了通知生成部307から通知された場合、完了通知生成部307から出力されてきたマルチキャストIDと同じマルチキャストIDと対応付けて記憶しているビット列をパケット出力部302へ出力する。
また、情報管理部305は、マルチキャストパケットであることを示すコマンド情報「11」とマルチキャストIDとがパケット入力部301から出力されてきた場合、ビット列B0〜B15のうちそのマルチキャストIDと同じマルチキャストIDと対応付けて記憶しているビット列をパケット出力部302へ出力する。
比較部306は、プロセス数保持部303から出力されてきたグループ所属プロセス数と、カウンタ部304から出力された設定完了プロセス数とを比較する。そして、比較部306は、比較結果を、完了通知生成部307へ出力する。
また、比較部306は、カウンタ部304からコマンド情報「10」が出力されてきた場合、プロセス数保持部303から出力されてきたグループ所属プロセス数と、カウンタ部304から出力されてきた設定完了プロセス数とを比較する。そして、比較部306は、その比較結果を、修正部309へ出力する。
完了通知生成部307は、比較部306による比較の結果、グループ所属プロセス数と設定完了プロセス数とが同じである場合、マルチキャストパケットを出力する出力ポートの設定が完了したことを示し、経路設定コマンドの送信元の計算ノードを宛先として指定した設定完了通知を生成する。なお、完了通知生成部307は、この設定完了通知に、パケット入力部301から出力されてきたマルチキャストIDを書込む。そして、完了通知生成部307は、その設定完了通知をパケット出力部302に出力する。
また、完了通知生成部307は、設定完了通知の生成が完了した場合、その旨を情報管理部305へ通知するとともに、設定完了通知に書き込んだマルチキャストIDを情報管理部305へ出力する。
なお、パケット出力部302は、完了通知生成部307から出力されてきた設定完了通知を、情報管理部305から出力されてきたビット列において「1」に設定されているビットと対応する出力ポートO1〜O5から出力する。
宛先判定部308は、当該ネットワークスイッチ21−1に付与されたスイッチ識別情報を記憶している。そして、宛先判定部308は、パケット入力部301から出力されてきた宛先情報と、記憶しているスイッチ識別情報とを比較する。
比較の結果、宛先情報と記憶しているスイッチ識別情報とが同じである場合、宛先判定部308は、経路設定コマンドの宛先が当該ネットワークスイッチ21−1である旨を、プロセス数保持部303とカウンタ部304と情報管理部305とへ通知する。
また、比較の結果、宛先情報と記憶しているスイッチ識別情報とが異なっている場合、宛先判定部308は、経路設定コマンドの宛先が当該ネットワークスイッチ21−1でない旨と、その宛先情報とを情報管理部305に通知する。
修正部309は、比較部306による比較の結果、グループ所属プロセス数と設定完了プロセス数とが同じである場合、パケット入力部301から出力されてきたマルチキャストIDと同じマルチキャストIDと対応付けて情報管理部305が記憶しているビット列を読出す。そして、修正部309は、読み出したビット列において、パケット入力部301からの情報が示す設定完了通知を入力した入力ポートと対応付けられた出力ポートに対応するビットの値を「1」から「0」へ変更する。
例えば、ネットワークスイッチ22から送信されてきた設定完了通知がネットワークスイッチ21−1の入力ポートI5に入力された場合、修正部309は、設定完了通知内のマルチキャストIDと対応付けて記憶しているマルチキャスト制御情報3051内のビット列に含まれる、入力ポートI5と対応付けられた出力ポートO5に対応する5番目のビットを「1」から「0」へ変更する。
なお、マルチキャストパケットを出力する出力ポートの設定が完了した時点において、マルチキャスト制御スイッチでないネットワークスイッチが記憶しているグループ所属プロセス数と設定完了プロセス数とが同じである場合、マルチキャスト制御スイッチのみならず当該ネットワークスイッチにも、マルチキャスト制御スイッチを宛先とした特定の1プロセスグループに含まれる全計算ノードから送信された経路設定コマンドが到達したことに相当する。
このような場合、当該プロセスグループに含まれるプロセス間のマルチキャスト通信を、マルチキャスト制御スイッチを経由することなしに行うことが可能である。このような観点より、修正部309は、このプロセスグループに付与されたマルチキャストIDに対応するビット列において、マルチキャストパケットをマルチキャスト制御スイッチへ転送するための出力ポートに対応するビットを「0」に変更する。
つぎに、上記構成を有するネットワークスイッチ21−1〜21−4,22の動作について、経路設定に関するコマンドパケットである経路設定コマンドや経路設定完了通知を受信したときの動作を、図6を参照して説明する。なお、以下の説明の前提として、あるプロセスグループに含まれる各プロセスが動作する計算ノードのそれぞれが、マルチキャスト制御スイッチであるネットワークスイッチ22に付与されたスイッチ識別情報と同じ宛先情報を含む図2に示した経路設定コマンドを、これらの計算ノードが接続されているネットワークスイッチ21−1〜21−4へ送信した場合を例に挙げて説明する。
ネットワークスイッチが経路設定コマンドを受信した場合、入力バッファ部201−1〜201−5のうち経路設定コマンドを送信してきた計算ノードと接続されている入力バッファ部は、その経路設定コマンドをパケット入力部301へ出力する。
すると、図6に示すステップ401にて、パケット入力部301は、入力バッファ部201−1〜201−5から出力されてきたパケットが、経路設定コマンドであるか判定する。
ステップ401にて、受信コマンドが経路設定コマンドであると判定した場合、ステップ402にて、パケット入力部301は、入力バッファ部201−1〜201−5から出力されてきた経路設定コマンドをパケット出力部302へ出力する。
また、パケット入力部301は、入力バッファ部から出力されてきたパケットデータが経路設定コマンドであると識別する。そして、パケット入力部301は、その経路設定コマンド内の宛先情報を宛先判定部308へ出力する。
また、パケット入力部301は、経路設定コマンドに含まれているマルチキャストIDとグループ所属プロセス数とをプロセス数保持部303へ出力する。すると、プロセス数保持部303は、パケット入力部301から出力されてきたマルチキャストIDとグループ所属プロセス数とを対応付けて記憶する。
また、パケット入力部301は、経路設定コマンドに含まれているマルチキャストIDをカウンタ部304へ出力する。
また、パケット入力部301は、入力バッファ部201−1〜201−5からの経路設定コマンドに含まれているコマンド情報「01」およびマルチキャストIDと、経路設定コマンドを入力した入力ポートを示す情報とを情報管理部305へ出力する。
また、パケット入力部301は、経路設定コマンドに含まれているマルチキャストIDを完了通知生成部307へ出力する。
その後、ステップ403にて、宛先判定部308は、パケット入力部301から出力されてきた宛先情報と、記憶しているスイッチ識別情報とを比較する。
比較の結果、宛先情報と記憶しているスイッチ識別情報とが異なっている場合、宛先判定部308は、その宛先情報と、経路設定コマンドの宛先が当該ネットワークスイッチ21−1でない旨を情報管理部305に通知する。
すると、ステップ404にて、情報管理部305は、パケット入力部301から出力されてきたマルチキャストIDと同じマルチキャストIDと対応付けて記憶しているビット列B0〜B15を指定する。続いて、情報管理部305は、指定したビット列において、パケット入力部301から出力されてきた情報が示す1つの経路設定コマンドが出力されてきた1つの入力ポートと対応付けられた出力ポートと1対1で対応する1つのビットの値を「1」に設定する。そして、ビットの設定を1回行うごとに、その旨をカウンタ部304へ通知する。なお、カウンタ部304は、ビットの設定を行った旨が情報管理部305から通知されるごとに、パケット入力部301から出力されてきたマルチキャストIDと対応付けて記憶している設定完了プロセス数に「1」を加算していく。
さらに、ステップ404にて、情報管理部305は、宛先判定部308から通知された宛先情報と同じスイッチ識別情報と対応付けて記憶している出力ポートに対応するビットの値を「1」に設定する。そして、情報管理部305は、「1」に設定した出力ポート(つまり、宛先情報と同じスイッチ識別情報が付与されたネットワークスイッチが接続されている出力ポート)を、パケット出力部302へ通知する。
すると、ステップ405にて、パケット出力部302は、情報管理部305から通知された出力ポートから経路設定コマンドを出力する。
その後、ネットワークスイッチ21−1は、コマンドの受信待ちになり、経路設定コマンドまたは経路設定完了通知の受信を待つ。
一方、宛先判定部308は、ステップ403における比較の結果、宛先情報と記憶しているスイッチ識別情報とが同じである場合、経路設定コマンドの宛先が当該ネットワークスイッチ21−1である旨を、プロセス数保持部303とカウンタ部304と情報管理部305とへ通知する。
すると、ステップ406にて、情報管理部305は、パケット入力部301から出力されてきたマルチキャストIDと同じマルチキャストIDと対応付けて記憶しているビット列B0〜B15を指定する。続いて、情報管理部305は、指定したビット列において、パケット入力部301から出力されてきた情報が示す1つの経路設定コマンドが出力されてきた1つの入力ポートと対応付けられた出力ポートに1対1で対応する1つのビットの値を「1」に設定する。そして、情報管理部305は、ビットの設定を1回行うごとに、その旨をカウンタ部304へ通知する。
すると、ステップ407にて、カウンタ部304は、ビットの設定を行った旨が情報管理部305から通知されるごとに、パケット入力部301から出力されてきたマルチキャストIDと対応付けて記憶している設定完了プロセス数に「1」を加算していく。なお、カウンタ部304は、経路設定コマンドの宛先が当該ネットワークスイッチ21−1である旨が宛先判定部308から通知されたことに応じて、記憶している設定完了プロセス数を比較部306へ出力する。
また、経路設定コマンドの宛先が当該ネットワークスイッチである旨が宛先判定部308から通知されたことに応じて、プロセス数保持部303は、パケット入力部301から出力されてきたマルチキャストIDと同じマルチキャストIDと対応付けて記憶しているグループ所属プロセス数を比較部306に出力する。
続いて、ステップ408にて、比較部306は、プロセス数保持部303から出力されてきたグループ所属プロセス数と、カウンタ部304から出力されてきた設定完了プロセス数とを比較し、比較結果を、情報管理部305と完了通知生成部307とへ出力する。
比較の結果、グループ所属プロセス数と設定完了プロセス数とが同じでない場合、マルチキャスト通信を実行するプロセスグループに含まれるすべてのプロセスからは経路設定コマンドが届いていないため、再度経路設定コマンドの受信待ちになる。
一方、比較の結果、グループ所属プロセス数と設定完了プロセス数とが同じである場合、マルチキャスト通信を実行するプロセスグループに含まれるすべてのプロセスから経路設定コマンドが到達したことに相当する。
そのため、ステップ409にて、完了通知生成部307は、プロセスグループに対するマルチキャストパケットを出力する出力ポートの設定が完了した旨を示す設定完了通知を生成してパケット出力部302に出力する。なお、完了通知生成部307は、パケット入力部301から出力されてきたマルチキャストIDを、設定完了通知へ書き込む。
また、完了通知生成部307は、設定完了通知の生成が完了した場合、その旨を情報管理部305へ通知するとともに、設定完了通知に書き込んだマルチキャストIDを情報管理部305へ出力する。すると、情報管理部305は、完了通知生成部307から出力されてきたマルチキャストIDと同じマルチキャストIDと対応付けて記憶しているビット列をパケット出力部302へ出力する。
そして、パケット出力部302は、完了通知生成部307から設定完了通知を、情報管理部305から出力されてきたビット列において「1」に設定されているビットと対応する出力ポートO1〜O5から出力する。これにより、設定完了通知が、プロセスグループに含まれる各プロセスが動作する計算ノードへ送信される。
一方、ネットワークスイッチ21−1が経路設定完了通知を受信した場合を説明する。
入力バッファ部201−1〜201−5のうち設定完了通知を送信してきたマルチキャスト制御スイッチ(この例では、ネットワークスイッチ22)と接続されている入力バッファ部は、その設定完了通知をパケット入力部301へ出力する。
すると、ステップ401にて、パケット入力部301は、入力バッファ部201−1〜201−5から出力されてきたパケットデータが設定完了通知であると識別する。
この場合、ステップ410にて、パケット入力部301は、入力バッファ部201−1〜201−5からの設定完了通知に含まれているマルチキャストIDと、設定完了通知を入力した入力ポートを示す情報とを修正部309へ出力する。
また、パケット入力部301は、設定完了通知に含まれているマルチキャストIDをプロセス数保持部303へ出力する。すると、プロセス数保持部303は、そのマルチキャストIDと対応付けて記憶しているグループ所属プロセス数を比較部306へ出力する。
また、パケット入力部301は、設定完了通知に含まれているコマンド情報「10」とマルチキャストIDとをカウンタ部304へ出力する。すると、カウンタ部304は、そのコマンド情報「10」と、そのマルチキャストIDと対応付けて記憶している設定完了プロセス数とを比較部306へ出力する。
カウンタ部304からコマンド情報「10」が出力されてくると、ステップ411にて、比較部306は、プロセス数保持部303から出力されてきたグループ所属プロセス数と、カウンタ部304から出力された設定完了プロセス数とを比較する。そして、比較部306は、その比較結果を、修正部309へ出力する。
比較の結果、グループ所属プロセス数と設定完了プロセス数とが同じである場合、ステップ412にて、修正部309は、パケット入力部301から出力されてきたマルチキャストIDと同じマルチキャストIDと対応付けて情報管理部305が記憶しているビット列を読出す。続いて、修正部309は、読み出したビット列において、パケット入力部301からの情報が示す設定完了通知を入力した入力ポートと対応付けられた出力ポートに対応するビットの値を「1」から「0」へ変更する。
つぎに、上記構成を有する並列計算機システムの動作について説明する。
まず、並列計算機システムにてマルチキャストパケットの転送経路を設定する動作を、図7を参照して説明する。この説明例では、計算ノード11−1と、ネットワークスイッチ21−1と、ネットワークスイッチ22との各動作を例に挙げて説明する。
なお、以下の説明の前提として、ある1つのプロセスグループに含まれる各プロセスが動作する計算ノードは、そのプロセスグループのマルチキャストIDと、そのプロセスグループ内の計算ノード間で送受信されるマルチキャストパケットを制御するネットワークスイッチ22のスイッチ識別情報と同じ宛先情報と、そのプロセスグループに含まれる各プロセスが動作する計算ノードの数であるグループ所属プロセス数をあらかじめ記憶している。
図7に示すステップ501にて、ある1つのプロセスグループに所属する各プロセスが動作する計算ノードのそれぞれは、当該計算ノードと接続されているネットワークスイッチ21−1〜21−4へ、経路設定コマンドを生成して送信する。
この例では、計算ノード11−1は、記憶しているマルチキャストIDと宛先情報とグループ所属プロセス数とを含む経路設定コマンドを生成し、その経路設定コマンドをネットワークスイッチ21−1へ送信する。なお、経路設定コマンド内の宛先情報と同じスイッチ識別情報が付与されたネットワークスイッチ22が、この経路設定コマンドの宛先となる。
すると、ステップ502にて、ネットワークスイッチ21−1は、計算ノード11−1から送信されてきた経路設定コマンドを受信する。そして、ネットワークスイッチ21−1は、経路設定コマンドに含まれているマルチキャストIDとグループ所属プロセス数とを対応付けて記憶する。
続いて、ステップ503にて、ネットワークスイッチ21−1は、経路設定コマンドに含まれているマルチキャストIDと同じマルチキャストIDと対応付けて記憶しているビット列B0〜B15を指定する。続いて、ネットワークスイッチ21−1は、指定したビット列において、経路設定コマンドを入力した入力ポートと対応付けられた出力ポートと1対1で対応する1つのビットの値を「1」に設定する。
なお、ネットワークスイッチ21−1は、1つのビットの設定を行うごとに、経路設定コマンドに含まれているマルチキャストIDと同じマルチキャストIDと対応付けて記憶している設定完了プロセス数に「1」を加算していく。
また、ネットワークスイッチ21−1は、経路設定コマンドに含まれている宛先情報と、自己が記憶しているネットワークスイッチ21−1に付与されたスイッチ識別情報とを比較する。
比較の結果、宛先情報と記憶しているスイッチ識別情報とが異なるため、ステップ503にて、ネットワークスイッチ21−1は、指定したビット列において、経路設定コマンド内の宛先情報と同じスイッチ識別情報と対応付けて記憶している出力ポートに対応するビットの値を「1」に設定する。
その後、ステップ504にて、ネットワークスイッチ21−1は、宛先情報と同じスイッチ識別情報と対応付けて記憶している出力ポート(つまり、宛先情報と同じスイッチ識別情報が付与されたネットワークスイッチ22が接続されている出力ポート)から、経路設定コマンドを出力する。これにより、ネットワークスイッチ21−1は、計算ノード11−1から送信されてきた経路設定コマンドを、ネットワークスイッチ22へ転送する。
すると、ステップ505にて、ネットワークスイッチ22は、ネットワークスイッチ21−1から転送されてきた経路設定コマンドを受信する。
そして、ネットワークスイッチ22は、経路設定コマンドに含まれているマルチキャストIDとグループ所属プロセス数とを対応付けて記憶する。
続いて、ステップ506にて、ネットワークスイッチ22は、ビット列B0〜B15のうちから経路設定コマンドに含まれているマルチキャストIDと同じマルチキャストIDと対応付けて記憶しているビット列を指定する。続いて、ネットワークスイッチ22は、指定したビット列において、経路設定コマンドを入力した入力ポートと対応付けられた出力ポートと1対1で対応する1つのビットの値を「1」に設定する。
なお、ネットワークスイッチ22は、1つのビットの設定を行うごとに、経路設定コマンドに含まれているマルチキャストIDと同じマルチキャストIDと対応付けて記憶している設定完了プロセス数に「1」を加算していく。
続いて、ネットワークスイッチ22は、経路設定コマンドに含まれている宛先情報と、自己が記憶しているネットワークスイッチ22に付与されたスイッチ識別情報とを比較する。
比較の結果、宛先情報と記憶しているスイッチ識別情報とが同じであるため、ネットワークスイッチ22は、設定完了プロセス数と、グループ所属プロセス数とを比較する。
そして、比較の結果、グループ所属プロセス数と設定完了プロセス数とが同じになった場合、ステップ507において、ネットワークスイッチ22は、経路設定コマンド内のマルチキャストIDが付与されたプロセスグループに対するマルチキャストパケットを出力する出力ポートの設定が完了した旨を示す設定完了通知を生成する。なお、本実施形態では、ネットワークスイッチ22は、設定完了通知に、設定を完了したプロセスグループのマルチキャストIDを書込む。そして、ネットワークスイッチ22は、経路設定コマンドの送信元の計算ノード11−1を宛先として指定した設定完了通知を、ネットワークスイッチ21−1へ送信する。なお、ネットワークスイッチ22は、このマルチキャストIDが付与されたプロセスグループ内のプロセスが動作する計算ノード11−1以外の計算ノードにも、設定完了通知を送信する。
すると、ステップ508にて、ネットワークスイッチ21−1は、ネットワークスイッチ22から送信されてきた設定完了通知を受信する。
そして、ネットワークスイッチ21−1は、設定完了通知に含まれているマルチキャストIDと同じマルチキャストIDと対応付けて記憶しているグループ所属プロセス数と、設定完了通知に含まれているマルチキャストIDと同じマルチキャストIDと対応付けて記憶している設定完了プロセス数とを比較する。
比較の結果、グループ所属プロセス数と設定完了プロセス数とが同じである場合、ステップ509にて、ネットワークスイッチ21−1は、設定完了通知に含まれているマルチキャストIDと同じマルチキャストIDと対応付けて記憶しているビット列を読出す。続いて、ネットワークスイッチ21−1は、読み出したビット列において、設定完了通知を入力した入力ポートと対応付けられた出力ポートに対応するビットの値を「1」から「0」へ変更する。
ステップ510にて、ネットワークスイッチ21−1は、ネットワークスイッチ22から送信されてきた設定完了通知を、その宛先である計算ノード11−1へ転送する。
すると、ステップ511にて、計算ノード11−1は、ネットワークスイッチ21−1から転送されてきた設定完了通知を受信する。なお、ネットワークスイッチ22が送信した設定完了通知は、その設定完了通知内のマルチキャストIDが付与されたプロセスグループに含まれるプロセスが動作する計算ノード11−1以外の計算ノードも受信する。
すると、そのプロセスグループに含まれるプロセスが動作する計算ノードが、経路設定コマンドにより指示したマルチキャストパケットを出力する出力ポートの設定がマルチキャスト制御スイッチにおいて完了したことを認識する。これにより、これらの計算ノードが、相互にマルチキャスト通信を行うことが可能となる。なお、これらの計算ノードは、例えば、マルチキャスト通信の実行をプログラムにより指示された際に、マルチキャストパケットを送信する。
つぎに、設定完了通知をそれぞれ受信した同じプロセスグループに含まれるプロセスが動作する特定の複数の計算ノードがマルチキャスト通信を行う2つの動作例について説明する。
なお、以下の説明例では、計算ノード11−1は、ネットワークスイッチ21−1のマルチキャスト制御部205が有する入力ポートI1と接続されており、計算ノード11−2は、ネットワークスイッチ21−1のマルチキャスト制御部205が有する入力ポートI2と接続されている。また、計算ノード12−1は、ネットワークスイッチ21−2のマルチキャスト制御部205が有する入力ポートI1と接続されている。また、計算ノード13−3は、ネットワークスイッチ21−3のマルチキャスト制御部205が有する入力ポートI3と接続されている。また、計算ノード14−4は、ネットワークスイッチ21−4のマルチキャスト制御部205が有する入力ポートI4と接続されている。
さらに、以下の説明例では、ネットワークスイッチ21−1のマルチキャスト制御部205が有する出力ポートO5は、ネットワークスイッチ22のマルチキャスト制御部205が有する入力ポートI1と接続されている。また、ネットワークスイッチ21−2のマルチキャスト制御部205が有する出力ポートO5は、ネットワークスイッチ22のマルチキャスト制御部205が有する入力ポートI2と接続されている。また、ネットワークスイッチ21−3のマルチキャスト制御部205が有する出力ポートO5は、ネットワークスイッチ22のマルチキャスト制御部205が有する入力ポートI3と接続されている。また、ネットワークスイッチ21−4のマルチキャスト制御部205が有する出力ポートO5は、ネットワークスイッチ22のマルチキャスト制御部205が有する入力ポートI4と接続されている。
まず、特定の複数の計算ノードがマルチキャスト通信を行う第1の動作例について説明する。なお、第1の動作例は、各計算ノード11−1、11−2、12−1、13−3および14−4上でそれぞれ動作する1プロセス(つまり、グループ所属プロセス数は「5」)から成るプロセスグループが、マルチキャスト通信を行う例である。また、以下では、このプロセスグループに付与されたマルチキャストIDは「1」である場合を例に挙げて説明する。
まず、各計算ノード11−1、11−2、12−1、13−3および14−4は、図2に示したような経路設定コマンドをそれぞれ生成する。なお、この説明例では、経路設定コマンドは、プロセスグループに付与されたマルチキャストID(=「1」)と、宛先情報(=ネットワークスイッチ22に付与されたスイッチ識別情報と同じ情報)と、プロセスグループに含まれる計算ノード上のプロセスの数を示すグループ所属プロセス数(=「5」)とを含む。
そして、図8に示すように、計算ノード11−1、11−2は、この経路設定コマンドをネットワークスイッチ21−1へ送信する。また、計算ノード12−1は、この経路設定コマンドをネットワークスイッチ21−2へ送信する。また、計算ノード13−3は、この経路設定コマンドをネットワークスイッチ21−3へ送信する。また、計算ノード14−4は、この経路設定コマンドをネットワークスイッチ21−4へ送信する。
その後、ネットワークスイッチ21−1は、計算ノード11−1から送信されてきた経路設定コマンドと、計算ノード11−2から送信されてきた経路設定コマンドとを受信する。すると、ネットワークスイッチ21−1は、受信した各経路設定コマンドに含まれているマルチキャストID「1」とグループ所属プロセス数「5」とを対応付けて記憶する。
なお、以下では、各ネットワークスイッチ21−1〜21−4がそれぞれ記憶しているグループ所属プロセス数を、P1−1〜P1−4と表記する。また、ネットワークスイッチ22が記憶しているグループ所属プロセス数を、P2−1と表記する。
また、ネットワークスイッチ21−1は、受信した各経路設定コマンド内のマルチキャストID「1」と対応付けて記憶しているビット列B1−1を読出す。
そして、ネットワークスイッチ21−1は、このビット列B1−1において、計算ノード11−1からの経路設定コマンドを入力した入力ポートI1と対応付けられている出力ポートO1に対応するビットの値と、計算ノード11−2からの経路設定コマンドを入力した入力ポートI2と対応付けられている出力ポートO2に対応するビットの値とを、「1」に設定する。
なお、ネットワークスイッチ21−1は、各計算ノード11−1、11−2からそれぞれ送信されてきた経路設定コマンドに対してビットの値の設定を1回行うごとに、自己が記憶している設定完了プロセス数に「1」を加算していく。なお、ネットワークスイッチ21−1は、この設定完了プロセス数と、計算ノード11−1、11−2からの経路設定コマンドに含まれているマルチキャストID(=「1」)とを対応付けて記憶する。
この例では、ネットワークスイッチ21−1は、計算ノード11−1からの経路設定コマンドに対するビットの値の設定と、計算ノード11−2からの経路設定コマンドに対するビットの値の設定とを行う。そのため、これらの設定が完了した場合、ネットワークスイッチ21−1が、経路設定コマンド内のマルチキャストID(=「1」)と対応付けて記憶している設定完了プロセス数は「2」である。
なお、以下では、各ネットワークスイッチ21−1〜21−4がそれぞれ記憶している設定完了プロセス数を、Q1−1〜Q1−4と表記する。また、ネットワークスイッチ22が記憶している設定完了プロセス数を、Q2−1と表記する。
また、ネットワークスイッチ21−1は、各経路設定コマンド内の宛先情報と自己が記憶しているネットワークスイッチ21−1に付与されたスイッチ識別情報とが異なっているため、ビット列B1−1において、宛先情報が示すネットワークスイッチ22と接続されている出力ポートO5に対応するビットの値を「1」に設定する。
なお、ビット列B1−1におけるこれらのビット値の更新が完了した場合、ネットワークスイッチ21−1が記憶しているビット列B1−1は、図8に示す状態(=「11001」)にある。
そして、ネットワークスイッチ21−1は、宛先情報が示すネットワークスイッチ22と接続されている出力ポートO5を介して、宛先情報が示すネットワークスイッチ22へ、計算ノード11−1から送信されてきた経路設定コマンドと、計算ノード11−2から送信されてきた経路設定コマンドとを転送する。
また、ネットワークスイッチ21−2は、計算ノード12−1から送信されてきた経路設定コマンドに含まれているマルチキャストID「1」とグループ所属プロセス数「5」とを対応付けて記憶する。
また、ネットワークスイッチ21−2は、この経路設定コマンド内のマルチキャストID「1」と対応付けて記憶しているビット列B1−2を読出す。
そして、ネットワークスイッチ21−2は、このビット列B1−2において、計算ノード12−1からの経路設定コマンドを入力した入力ポートI1と対応付けられている出力ポートO1に対応するビットの値を、「1」に設定する。なお、この設定が完了した場合、図8に示すように、ネットワークスイッチ21−2が、経路設定コマンド内のマルチキャストID(=「1」)と対応付けて記憶している設定完了プロセス数Q1−2は「1」である。
また、ネットワークスイッチ21−2は、この経路設定コマンド内の宛先情報と自己が記憶しているネットワークスイッチ21−2に付与されたスイッチ識別情報とが異なっているため、ビット列B1−2において、宛先情報が示すネットワークスイッチ22と接続されている出力ポートO5に対応するビットの値を「1」に設定する。
なお、ビット列B1−2におけるこれらのビット値の更新が完了した場合、ネットワークスイッチ21−2が記憶しているビット列B1−2は、図8に示す状態(=「10001」)にある。そして、ネットワークスイッチ21−2は、宛先情報が示すネットワークスイッチ22と接続されている出力ポートO5を介して、ネットワークスイッチ22へ経路設定コマンドを転送する。
また、ネットワークスイッチ21−3は、計算ノード13−3から送信されてきた経路設定コマンドに含まれているマルチキャストID「1」とグループ所属プロセス数「5」とを対応付けて記憶する。
また、ネットワークスイッチ21−3は、この経路設定コマンド内のマルチキャストID「1」と対応付けて記憶しているビット列B1−3において、この経路設定コマンドを入力した入力ポートI3と対応付けられている出力ポートO3に対応するビットの値を、「1」に設定する。なお、この設定が完了した場合、図8に示すように、ネットワークスイッチ21−3が、経路設定コマンド内のマルチキャストID(=「1」)と対応付けて記憶している設定完了プロセス数Q1−3は「1」である。
また、ネットワークスイッチ21−3は、この経路設定コマンド内の宛先情報と自己が記憶しているネットワークスイッチ21−3のスイッチ識別情報とが異なっているため、ビット列B1−3において、宛先情報が示すネットワークスイッチ22と接続されている出力ポートO5に対応するビットの値を「1」に設定する。
なお、ビット列B1−3におけるこれらのビット値の更新が完了した場合、ネットワークスイッチ21−3が記憶しているビット列B1−3は、図8に示す状態(=「00101」)にある。そして、ネットワークスイッチ21−3は、宛先情報が示すネットワークスイッチ22と接続されている出力ポートO5を介して、ネットワークスイッチ22へ経路設定コマンドを転送する。
また、ネットワークスイッチ21−4は、計算ノード14−4から送信されてきた経路設定コマンドに含まれているマルチキャストID「1」とグループ所属プロセス数「5」とを対応付けて記憶する。
また、ネットワークスイッチ21−4は、この経路設定コマンド内のマルチキャストID「1」と対応付けて記憶しているビット列B1−4において、この経路設定コマンドを入力した入力ポートI4と対応付けられている出力ポートO4に対応するビットの値を、「1」に設定する。なお、この設定が完了した場合、図8に示すように、ネットワークスイッチ21−4が、経路設定コマンド内のマルチキャストID(=「1」)と対応付けて記憶している設定完了プロセス数Q1−4は「1」である。
また、ネットワークスイッチ21−4は、この経路設定コマンド内の宛先情報と自己が記憶しているネットワークスイッチ21−4のスイッチ識別情報とが異なっているため、ビット列B1−4において、宛先情報が示すネットワークスイッチ22と接続されている出力ポートO5に対応するビットの値を「1」に設定する。
なお、ビット列B1−4におけるこれらのビット値の更新が完了した場合、ネットワークスイッチ21−4が記憶しているビット列B1−4は、図8に示す状態(=「00011」)にある。そして、ネットワークスイッチ21−4は、宛先情報が示すネットワークスイッチ22と接続されている出力ポートO5を介して、ネットワークスイッチ22へ経路設定コマンドを転送する。
その後、ネットワークスイッチ22は、各ネットワークスイッチ21−1〜21−4からそれぞれ転送されてきた経路設定コマンドを受信する。すると、ネットワークスイッチ22は、各ネットワークスイッチ21−1〜21−4からの経路設定コマンドに含まれているマルチキャストID「1」とグループ所属プロセス数「5」とを対応付けて記憶する。
続いて、ネットワークスイッチ22は、受信した各経路設定コマンド内のマルチキャストID「1」と対応付けて記憶しているビット列B2−1を読出す。
そして、ネットワークスイッチ22は、このビット列B2−1において、ネットワークスイッチ21−1から転送されてきた計算ノード11−1からの経路設定コマンドと計算ノード11−2からの経路設定コマンドとを入力した入力ポートI1と対応付けられている出力ポートO1に対応するビットの値を「1」に設定する。なお、ネットワークスイッチ22は、計算ノード11−1からの経路設定コマンドに対するビットの値の設定と、計算ノード11−2からの経路設定コマンドに対するビットの値の設定とを行うごとに、設定完了プロセス数に「1」を加算する。
さらに、ネットワークスイッチ22は、このビット列B2−1において、ネットワークスイッチ21−2からの経路設定コマンドを入力した入力ポートI2と対応付けられている出力ポートO2に対応するビットの値と、ネットワークスイッチ21−3からの経路設定コマンドを入力した入力ポートI3と対応付けられている出力ポートO3に対応するビットの値と、ネットワークスイッチ21−4からの経路設定コマンドを入力した入力ポートI4と対応付けられている出力ポートO4に対応するビットの値とを、「1」に設定する。
そして、ビット列B2−1におけるこれらのビット値の更新が完了した場合、ネットワークスイッチ22が記憶しているビット列B2−1は、図8に示す状態(=「11110」)にある。また、これらの設定が完了した場合、ネットワークスイッチ22が、各経路設定コマンド内のマルチキャストID(=「1」)と対応付けて記憶している設定完了プロセス数Q2−1は「5」である。
なお、ネットワークスイッチ22が受信した各経路設定コマンド内の宛先情報と、ネットワークスイッチ22が記憶しているネットワークスイッチ22に付与されたスイッチ識別情報とは同じである。この場合、ネットワークスイッチ22は、経路設定コマンドを他のネットワークスイッチ21−1〜21−4へ転送しないため、宛先情報と同じスイッチ識別情報と対応付けて記憶している出力ポートに対応するビットの値を「1」に設定しない。
また、ネットワークスイッチ22は、ネットワークスイッチ22が受信した各経路設定コマンド内の宛先情報と自己が記憶しているネットワークスイッチ22のスイッチ識別情報とが同じであるため、設定完了プロセス数Q2−1と、グループ所属プロセス数P2−1とを比較する。
そして、比較の結果、グループ所属プロセス数P2−1と設定完了プロセス数Q2−1とが同じになった場合、ネットワークスイッチ22は、経路設定コマンド内のマルチキャストID「1」が付与されたプロセスグループに対するマルチキャストパケットを出力する出力ポートの設定が完了した旨を示し、経路設定コマンドの送信元の計算ノード11−1、11−2、12−1、13−3および14−4を宛先として指定した設定完了通知を生成する。なお、本実施形態では、ネットワークスイッチ22は、設定完了通知に、設定を完了したプロセスグループのマルチキャストID(=「1」)を書込む。
そして、ネットワークスイッチ22は、設定完了通知に書込んだマルチキャストID「1」と対応付けて記憶しているビット列B2−1(=「11110」)において「1」に設定されているビットと対応する出力ポートO1〜O4へ、設定完了通知を出力する。これにより、設定完了通知が、マルチキャストパケットが出力される出力ポートとして設定した出力ポートを経由して、経路設定コマンドを送信してきた各計算ノードへ送信される。
この説明例では、図9に示すように、ネットワークスイッチ22は、計算ノード11−1、11−2のそれぞれを宛先として指定した各設定完了通知を、ネットワークスイッチ21−1へ送信する。また、ネットワークスイッチ22は、計算ノード12−1を宛先として指定した設定完了通知を、ネットワークスイッチ21−2へ送信する。また、ネットワークスイッチ22は、計算ノード13−3を宛先として指定した設定完了通知を、ネットワークスイッチ21−3へ送信する。また、ネットワークスイッチ22は、計算ノード14−4を宛先として指定した設定完了通知を、ネットワークスイッチ21−4へ送信する。
すると、各ネットワークスイッチ21−1〜21−4は、ネットワークスイッチ22から送信されてきた設定完了通知をそれぞれ受信する。
そして、各ネットワークスイッチ21−1〜21−4は、設定完了通知内のマルチキャストID「1」と同じマルチキャストIDと対応付けてそれぞれ記憶している図9に示す各グループ所属プロセス数P1−1〜P1−4と、設定完了通知内のマルチキャストID「1」と同じマルチキャストIDと対応付けてそれぞれ記憶している図9に示す各設定完了プロセス数Q1−1〜Q1−4とを比較する。
比較の結果、各ネットワークスイッチ21−1〜21−4がそれぞれ記憶している各グループ所属プロセス数P1−1〜P1−4と、各ネットワークスイッチ21−1〜21−4がそれぞれ記憶している各設定完了プロセス数Q1−1〜Q1−4とは異なっている。
この場合、各ネットワークスイッチ21−1〜21−4は、設定完了通知に含まれているマルチキャストID「1」と同じマルチキャストIDと対応付けてそれぞれ記憶している各ビット列B1−1〜B1−4における、設定完了通知を入力した入力ポートと対応付けられた出力ポートに対応するビットの値の変更を行わない。
そして、ネットワークスイッチ21−1は、ネットワークスイッチ22から送信されてきた各設定完了通知を、それらの宛先である計算ノード11−1、11−2のそれぞれへ転送する。また、ネットワークスイッチ21−2は、ネットワークスイッチ22から送信されてきた設定完了通知を、その宛先である計算ノード12−1へ転送する。また、ネットワークスイッチ21−3は、ネットワークスイッチ22から送信されてきた設定完了通知を、その宛先である計算ノード13−3へ転送する。また、ネットワークスイッチ21−4は、ネットワークスイッチ22から送信されてきた設定完了通知を、その宛先である計算ノード14−4へ転送する。
すると、各計算ノード11−1、11−2、12−1、13−3および14−4は、ネットワークスイッチ21−1から転送されてきた設定完了通知をそれぞれ受信する。すると、これらの計算ノード上でそれぞれ動作する同じプロセスグループに含まれる各プロセスが、経路設定コマンドにより要求したマルチキャストパケットを出力する出力ポートの設定がマルチキャスト制御スイッチにて完了したことを認識する。これにより、各計算ノード11−1、11−2、12−1、13−3および14−4が、相互にマルチキャストパケットの伝送を行うことが可能となる。なお、これらの計算ノードは、例えば、マルチキャスト通信の実行をプログラムにより指示された際に、マルチキャストパケットを送信する。
つぎに、第1の動作例において、各計算ノード11−1、11−2、12−1、13−3および14−4が設定完了通知をそれぞれ受信した後、計算ノード11−1が、マルチキャストパケットを送信した場合の動作について、図10を参照して説明する。
図10に示すように、ネットワークスイッチ21−1は、計算ノード11−1から送信されてきたマルチキャストパケットを受信する。すると、ネットワークスイッチ21−1は、計算ノード11−1からのマルチキャストパケットを入力した入力ポートI1を識別する。
そして、ネットワークスイッチ21−1は、そのマルチキャストパケット内のマルチキャストID(=「1」)と対応付けて記憶している図10に示すビット列B1−1(=「11001」)において値が「1」に設定されているビットに対応する出力ポートのうちの識別した入力ポートI1と対応付けられた出力ポート以外の出力ポート(この例では、出力ポートO2、O5)へ、そのマルチキャストパケットを出力する。これにより、ネットワークスイッチ21−1は、計算ノード11−1から送信されてきたマルチキャストパケットを、出力ポートO2と接続されている計算ノード11−2と出力ポートO5と接続されているネットワークスイッチ22とへ転送する。
その後、ネットワークスイッチ22は、ネットワークスイッチ21−1から転送されてきたマルチキャストパケットを受信する。すると、ネットワークスイッチ22は、そのマルチキャストパケットを入力した入力ポートI1を識別する。
そして、ネットワークスイッチ22は、そのマルチキャストパケット内のマルチキャストID(=「1」)と対応付けて記憶している図10に示すビット列B2−1(=「11110」)において値が「1」に設定されているビットに対応する出力ポートのうちの識別した入力ポートI1と対応付けられた出力ポートO1以外の出力ポートO2、O3およびO4へ、そのマルチキャストパケットをそれぞれ出力する。これにより、ネットワークスイッチ22は、計算ノード11−1が送信したマルチキャストパケットを、出力ポートO2と接続されているネットワークスイッチ21−2と、出力ポートO3と接続されているネットワークスイッチ21−3と、出力ポートO4と接続されているネットワークスイッチ21−4とへ転送する。
すると、ネットワークスイッチ21−2は、ネットワークスイッチ22から転送されてきたマルチキャストパケットを受信し、そのマルチキャストパケットを入力した入力ポートI5を識別する。
そして、ネットワークスイッチ21−2は、そのマルチキャストパケット内のマルチキャストID(=「1」)と対応付けて記憶している図10に示すビット列B1−2(=「10001」)において値が「1」に設定されているビットに対応する出力ポートのうち識別した入力ポートI5と対応付けられた出力ポートO5以外の出力ポートO1へ、そのマルチキャストパケットを出力する。これにより、ネットワークスイッチ21−2は、計算ノード11−1が送信したマルチキャストパケットを、出力ポートO1と接続されている計算ノード12−1へ転送する。
また、ネットワークスイッチ21−3は、ネットワークスイッチ22から転送されてきたマルチキャストパケットを受信し、そのマルチキャストパケットを入力した入力ポートI5を識別する。
そして、ネットワークスイッチ21−3は、そのマルチキャストパケット内のマルチキャストID(=「1」)と対応付けて記憶している図10に示すビット列B1−3(=「00101」)において値が「1」に設定されているビットに対応する出力ポートのうち識別した入力ポートI5と対応付けられた出力ポートO5以外の出力ポートO3へ、そのマルチキャストパケットを出力する。これにより、ネットワークスイッチ21−3は、計算ノード11−1が送信したマルチキャストパケットを、出力ポートO3と接続されている計算ノード13−3へ転送する。
また、ネットワークスイッチ21−4は、ネットワークスイッチ22から転送されてきたマルチキャストパケットを受信し、そのマルチキャストパケットを入力した入力ポートI5を識別する。
そして、ネットワークスイッチ21−4は、そのマルチキャストパケット内のマルチキャストID(=「1」)と対応付けて記憶している図10に示すビット列B1−4(=「00011」)において値が「1」に設定されているビットに対応する出力ポートのうち識別した入力ポートI5と対応付けられた出力ポートO5以外の出力ポートO4へ、そのマルチキャストパケットを出力する。これにより、ネットワークスイッチ21−4は、計算ノード11−1が送信したマルチキャストパケットを、出力ポートO4と接続されている計算ノード14−4へ転送する。以上で、各計算ノード11−1、11−2、12−1、13−3および14−4が設定完了通知をそれぞれ受信した後、計算ノード11−1が、マルチキャストパケットを送信する一連の動作が終了する。
つぎに、特定の複数の計算ノードがマルチキャスト通信を行う第2の動作例について説明する。
なお、第2の動作例では、各計算ノード11−1、11−2、11−3および11−4上でそれぞれ動作する1プロセス(つまり、グループ所属プロセス数は「4」)から成るプロセスグループが、マルチキャスト通信を行う。つまり、第2の動作例では、マルチキャスト制御スイッチ以外のネットワークスイッチのうちのいずれか1つのネットワークスイッチ21−1と接続された各計算ノード上でそれぞれ動作するプロセスだけから成るプロセスグループが、マルチキャスト通信を行う。また、以下では、このプロセスグループに付与されたマルチキャストIDは「1」である場合を例に挙げて説明する。
まず、各計算ノード11−1〜11−4は、図2に示したような経路設定コマンドをそれぞれ生成する。なお、この説明例では、経路設定コマンドは、プロセスグループに付与されたマルチキャストID(=「1」)と、宛先情報(=ネットワークスイッチ22に付与されたスイッチ識別情報と同じ情報)と、プロセスグループに含まれる計算ノード上のプロセスの数を示すグループ所属プロセス数(=「4」)とを含む。
そして、図11に示すように、各計算ノード11−1、11−2、11−3および11−4は、この経路設定コマンドをネットワークスイッチ21−1へそれぞれ送信する。
その後、ネットワークスイッチ21−1は、各計算ノード11−1〜11−4からそれぞれ送信されてきた経路設定コマンドを受信する。すると、ネットワークスイッチ21−1は、受信した各経路設定コマンドに含まれているマルチキャストID「1」とグループ所属プロセス数「4」とを対応付けて記憶する。
また、ネットワークスイッチ21−1は、受信した各経路設定コマンド内のマルチキャストID「1」と対応付けて記憶しているビット列B1−1を読出す。
そして、ネットワークスイッチ21−1は、このビット列B1−1において、計算ノード11−1からの経路設定コマンドを入力した入力ポートI1と対応付けられている出力ポートO1に対応するビットの値と、計算ノード11−2からの経路設定コマンドを入力した入力ポートI2と対応付けられている出力ポートO2に対応するビットの値とを、計算ノード11−3からの経路設定コマンドを入力した入力ポートI3と対応付けられている出力ポートO3に対応するビットの値と、計算ノード11−4からの経路設定コマンドを入力した入力ポートI4と対応付けられている出力ポートO4に対応するビットの値とを、「1」に設定する。
なお、ネットワークスイッチ21−1は、各計算ノード11−1、11−2、11−3および11−4からそれぞれ送信されてきた経路設定コマンドに対してビットの値の設定を1回行うごとに、自己が記憶している設定完了プロセス数Q1−1に「1」を加算していく。そのため、これらの設定が完了した場合、ネットワークスイッチ21−1が、経路設定コマンド内のマルチキャストID(=「1」)と対応付けて記憶している設定完了プロセス数は「4」である。
また、ネットワークスイッチ21−1は、各経路設定コマンド内の宛先情報と自己が記憶しているネットワークスイッチ21−1に付与されたスイッチ識別情報とが異なっているため、ビット列B1−1において、宛先情報が示すネットワークスイッチ22と接続されている出力ポートO5に対応するビットの値を「1」に設定する。
なお、ビット列B1−1におけるこれらのビット値の更新が完了した場合、ネットワークスイッチ21−1が記憶しているビット列B1−1は、図11に示す状態(=「11111」)にある。
そして、ネットワークスイッチ21−1は、宛先情報が示すネットワークスイッチ22と接続されている出力ポートO5を介して、宛先情報が示すネットワークスイッチ22へ、計算ノード11−1から送信されてきた経路設定コマンドと、計算ノード11−2から送信されてきた経路設定コマンドと、計算ノード11−3から送信されてきた経路設定コマンドと、計算ノード11−4から送信されてきた経路設定コマンドとを転送する。
その後、ネットワークスイッチ22は、ネットワークスイッチ21−1から転送されてきた各経路設定コマンドを受信する。すると、ネットワークスイッチ22は、ネットワークスイッチ21−1からの各経路設定コマンドに含まれているマルチキャストID「1」とグループ所属プロセス数「4」とを対応付けて記憶する。
続いて、ネットワークスイッチ22は、受信した各経路設定コマンド内のマルチキャストID「1」と対応付けて記憶しているビット列B2−1を読出す。
そして、ネットワークスイッチ22は、このビット列B2−1において、ネットワークスイッチ21−1から転送されてきた計算ノード11−1からの経路設定コマンドと、計算ノード11−2からの経路設定コマンドと、計算ノード11−3からの経路設定コマンドと、計算ノード11−4からの経路設定コマンドとを入力した入力ポートI1と対応付けられている出力ポートO1に対応するビットの値を「1」に設定する。
なお、ネットワークスイッチ22は、計算ノード11−1からの経路設定コマンドに対するビットの値の設定と、計算ノード11−2からの経路設定コマンドに対するビットの値の設定と、計算ノード11−3からの経路設定コマンドに対するビットの値の設定と、計算ノード11−4からの経路設定コマンドに対するビットの値の設定とを行うごとに、設定完了プロセス数に「1」を加算する。
そして、ビット列B2−1におけるこれらのビット値の更新が完了した場合、ネットワークスイッチ22が記憶しているビット列B2−1は、図11に示す状態(=「10000」)にある。また、これらの設定が完了した場合、ネットワークスイッチ22が、各経路設定コマンド内のマルチキャストID(=「1」)と対応付けて記憶している設定完了プロセス数Q2−1は「4」である。
なお、ネットワークスイッチ22が受信した各経路設定コマンド内の宛先情報と、ネットワークスイッチ22が記憶しているネットワークスイッチ22に付与されたスイッチ識別情報とは同じである。この場合、ネットワークスイッチ22は、経路設定コマンドを他のネットワークスイッチ21−1〜21−4へ転送しないため、宛先情報と同じスイッチ識別情報と対応付けて記憶している出力ポートに対応するビットの値を「1」に設定しない。
また、ネットワークスイッチ22は、受信した各経路設定コマンド内の宛先情報と自己が記憶しているネットワークスイッチ22のスイッチ識別情報とが同じであるため、設定完了プロセス数Q2−1と、グループ所属プロセス数P2−1とを比較する。
そして、比較の結果、グループ所属プロセス数P2−1と設定完了プロセス数Q2−1とが同じになった場合、ネットワークスイッチ22は、経路設定コマンド内のマルチキャストID「1」が付与されたプロセスグループに対するマルチキャストパケットを出力する出力ポートの設定が完了した旨を示し、経路設定コマンドの送信元の各計算ノード11−1〜11−4を宛先としてそれぞれ指定した設定完了通知を生成する。なお、本実施形態では、ネットワークスイッチ22は、設定完了通知に、設定を完了したプロセスグループのマルチキャストID(=「1」)を書込む。
そして、図12に示すように、ネットワークスイッチ22は、計算ノード11−1、11−2、11−3および11−4のそれぞれを宛先として指定した各設定完了通知を、ネットワークスイッチ21−1へ送信する。
その後、ネットワークスイッチ21−1は、ネットワークスイッチ22から送信されてきた設定完了通知を受信する。
すると、ネットワークスイッチ21−1は、設定完了通知内のマルチキャストID「1」と同じマルチキャストIDと対応付けて記憶している図12に示すグループ所属プロセス数P1−1(=「4」)と、設定完了通知内のマルチキャストID「1」と同じマルチキャストIDと対応付けて記憶している図12に示す設定完了プロセス数Q1−1(=「4」)とを比較する。
比較の結果、ネットワークスイッチ21−1が記憶しているグループ所属プロセス数P1−1と、ネットワークスイッチ21−1が記憶している設定完了プロセス数Q1−1とは同じである。
そのため、ネットワークスイッチ21−1は、設定完了通知に含まれているマルチキャストID「1」と同じマルチキャストIDと対応付けて記憶しているビット列B1−1(=「11111」)を読出す。続いて、ネットワークスイッチ21−1は、読み出したビット列B1−1において、ネットワークスイッチ22からの設定完了通知を入力した入力ポートI5と対応付けられた出力ポートO5に対応する左から5番目のビットの値を「1」から「0」へ変更する。なお、このビット値の更新が完了した場合、ネットワークスイッチ21−1が記憶しているビット列B1−1は、図12に示す状態(=「11110」)にある。
その後、ネットワークスイッチ21−1は、ネットワークスイッチ22から送信されてきた各設定完了通知を、それらの宛先である計算ノード11−1〜11−4のそれぞれへ転送する。
すると、各計算ノード11−1〜11−4は、ネットワークスイッチ21−1から転送されてきた設定完了通知をそれぞれ受信する。すると、これらの計算ノード上でそれぞれ動作する同じプロセスグループに含まれる各プロセスが、経路設定コマンドにより要求したマルチキャストパケットを出力する出力ポートの設定がマルチキャスト制御スイッチにて完了したことを認識する。これにより、各計算ノード11−1〜11−4が、相互にマルチキャストパケットの伝送を行うことが可能となる。
つぎに、第2の動作例において、各計算ノード11−1〜11−4が設定完了通知をそれぞれ受信した後、計算ノード11−1が、マルチキャストパケットを送信した場合の動作について、図13を参照して説明する。
図13に示すように、ネットワークスイッチ21−1は、計算ノード11−1から送信されてきたマルチキャストパケットを受信する。すると、ネットワークスイッチ21−1は、計算ノード11−1からのマルチキャストパケットを入力した入力ポートI1を識別する。
そして、ネットワークスイッチ21−1は、そのマルチキャストパケット内のマルチキャストID(=「1」)と対応付けて記憶している図13に示すビット列B1−1(=「11110」)において値が「1」に設定されているビットに対応する出力ポートのうちの識別した入力ポートI1と対応付けられた出力ポート以外の出力ポート(この例では、出力ポートO2、O3およびO4)へ、そのマルチキャストパケットを出力する。
これにより、ネットワークスイッチ21−1は、計算ノード11−1から送信されてきたマルチキャストパケットを、出力ポートO2と接続されている計算ノード11−2と、出力ポートO3と接続されている計算ノード11−3と、出力ポートO4と接続されている計算ノード11−4とへ転送する。
以上説明したように、本発明の並列計算機システムによれば、相互結合網2上を伝送されるマルチキャストパケットの総量をより少なくするように抑制することができる。例えば、図12に示した本発明にてマルチキャスト通信されるパケットの通信量は、図14に示したツリー構造のネットワークにてマルチキャスト通信されるパケットの通信量よりも少なくなっていることがわかる。
また、本発明の並列計算機システムによれば、第2の動作例で示したように、マルチキャストパケットが経由する必要のないネットワークスイッチを経由して送信されることを回避でき、マルチキャスト通信におけるレイテンシを抑えることができる。
また、本発明の並列計算機システムによれば、相互結合網2に接続された計算ノードの物理的な位置を把握することなく、マルチキャスト通信における宛先および通信経路を高速に設定できる。
また、本発明の並列計算機システムによれば、マルチキャストパケットは、マルチキャストデータ以外に少なくともマルチキャストIDのみを含んでいればよい。つまり、マルチキャストパケットに、宛先情報や他の制御情報を含めることが不要となり、マルチキャストパケットのヘッダサイズの増大を抑えることができる。
なお、本発明においては、ネットワークスイッチ21−1内の処理は上述の専用のハードウェアにより実現されるもの以外に、その機能を実現するためのプログラムを、ネットワークスイッチ21−1として動作させるコンピュータにて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムをそのコンピュータに読み込ませ、実行するものであってもよい。ネットワークスイッチ21−1として動作させるコンピュータにて読取可能な記録媒体とは、フロッピーディスク(登録商標)、光磁気ディスク、DVD、CDなどの移設可能な記録媒体の他、そのコンピュータに内蔵されたHDD等を指す。この記録媒体に記録されたプログラムは、例えば、ネットワークスイッチ21−1として動作させるコンピュータが有するマルチキャスト制御部205として動作するプロセッサにて読み込まれ、そのプロセッサの制御によって、上述したものと同様の処理が行われる。
ここで、マルチキャスト制御部205として動作するプロセッサは、プログラムが記録された記録媒体から読み込まれたプログラムを実行するものである。なお、上述のプログラムは、各ネットワークスイッチ21−2〜21−4、22についても同様に適用可能である。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明の要旨を逸脱しない範囲で当業者が理解し得る各種の変形が可能である。
この出願は、2009年4月28日に出願された日本出願特願2009−109587を基礎として優先権の利益を主張するものであり、その開示の全てを引用によってここに取り込む。