以下、本発明の実施形態に従った並列計算機システム(ネットワークスイッチ、経路設定方法、プログラムを含む)を説明する。
先ず、本実施形態の並列計算機システムの構成を説明する。図1に示すように、並列計算機システムは、計算ノード群1と相互結合網2とから構成される。計算ノード群1に含まれる各計算ノード11−1〜11−4、12−1〜12−4、13−1〜13−4および14−1〜14−4(以下、「計算ノード10」と総称する)は、相互結合網2にそれぞれ接続されている。相互結合網2のネットワーク形態は特に限定せず、例えば、多段結合網などのネットワークであってもよいが、以下の例ではツリー型のネットワークを例に挙げて説明する。
計算ノード10は、演算器とメモリとをそれぞれ有する互いに独立した計算機である。計算ノード10は、必要に応じて相互結合網2を介して互いにデータ転送を行い、所定の処理を実行する。また、計算ノード10は、「経路設定コマンド発行処理」を実行し、後述する「経路設定コマンド」を発行する機能を有する。さらに、計算ノード10は、マルチキャスト通信により特定の複数の宛先に送信されるマルチキャストパケットを発行する機能を有する。ここでマルチキャストパケットの形態については特に限定しないが、本実施形態のマルチキャストパケットは、そのマルチキャストパケットが後述のマルチキャスト制御スイッチに到達したか否かを示すための「制御部到達ビット」を含むものとする。
相互結合網2は、複数のネットワークスイッチで構成されている。ネットワークスイッチ22−1〜22−4(以下、「ネットワークスイッチ22」と総称する)は、計算ノード群1と直接接続されている。
ネットワークスイッチ21−1は、各ネットワークスイッチ22−1〜22−4を相互に接続する。例えば、計算ノード11−1から計算ノード11−2へデータ転送を行う場合、ネットワークスイッチ22−1を経由してデータが転送される。また、計算ノード11−1から計算ノード13−1へのデータ転送は、ネットワークスイッチ22−1、21−1、22−3を順次経由して実行される。なお、ネットワークスイッチ21−1の数は本実施形態では「1」であるが、複数であってもよい。このため、以下では、相互結合網2上でネットワークスイッチ21−1と同一の階層に設けられたネットワークスイッチを「ネットワークスイッチ21」と総称する。
つぎに、本実施形態のネットワークスイッチ21−1および22−1〜22−4の構成を説明する。図2に示すように、ネットワークスイッチ21−1および22−1〜22−4は、入力ポートの数が「5」、出力ポートの数が「5」(以下、「5入力5出力」という)であるクロスバスイッチにより構成される。
図1に示したように、ネットワークスイッチ21−1は、使用している入力ポートの数が「4」、使用している出力ポートの数が「4」となっており(以下、「4入力4出力」という)、5番目の入力ポートおよび5番目の出力ポートはともに未使用の状態にある。また、本実施形態の説明例では、ネットワークスイッチ21および22が有する入力ポートおよび出力ポートは、互いに1対1で対応付けられているものである。例えば、1番目の入力ポートは1番目の出力ポートに対応付けられている。入力ポートと出力ポートとの対応付方法は、一般的な対応付方法でもよい。なお、各ネットワークスイッチ21および22の入力ポート数および出力ポート数は「5」に限らず、それぞれ任意の自然数であればよい。
図2の例では、各ネットワークスイッチ21−1および22−1〜22−4が有する5つのポートのうち、ポート1〜4は、図1における下り方向(ネットワークスイッチ21−1から各ネットワークスイッチ22−1〜22−4に向かう方向)に対して接続されており、ポート5は図1の上り方向(各ネットワークスイッチ22−1〜22−4からネットワークスイッチ21−1に向かう方向)に対して接続されている。
つぎに、ネットワークスイッチ21および22がそれぞれ有する各構成要素を説明する。なお、ネットワークスイッチ21および22は、それぞれ同一の構成を有するとともに同一の機能を果たすため、以下ではネットワークスイッチ22−1の例で説明する。
図2に示すように、ネットワークスイッチ22−1は、入力バッファ部201−1〜201−5(以下、「入力バッファ部201」と総称する)と、出力バッファ部202−1〜202−5(以下、「出力バッファ部202」と総称する)と、クロスバスイッチ203と、クロスバ制御部204と、マルチキャスト制御部205とを有する。
入力バッファ部201−1〜201−5は、ネットワークスイッチ22−1の各入力ポートに入力されたパケットを保持し、デコードし、出力する。なお、本実施形態では、各入力バッファ部201−1〜201−5は、各入力ポート1〜5に対応するものとする。
出力バッファ部202−1〜202−5は、クロスバスイッチ203から出力されたパケットを保持し、各出力ポートを介して、保持しているパケットをネットワークスイッチ21−1、22−2〜22−4や計算ノード群1に出力する。なお、本実施形態では、各出力バッファ部202−1〜202−5は、各出力ポート1〜5にそれぞれ対応するものとする。
クロスバスイッチ203は、クロスバ制御部204の制御下で、入力バッファ部201−1〜201−5から出力されたパケットを、クロスバ制御部204によって指定された出力バッファ部202−1〜202−5に送信する動作(ルーティング)を行う。
クロスバ制御部204は、入力バッファ部201−1〜201−5でデコードされた行先情報の入力を受け、入力された行先情報に従って、クロスバスイッチ203のルーティングを制御する。
マルチキャスト制御部205は、入力バッファ部201−1〜201−5からマルチキャストパケットが入力された場合、マルチキャストパケットのコピーを生成し、適切な出力バッファ部202−1〜202−5にマルチキャストパケットのコピーを出力する。
なお、入力バッファ部201からマルチキャスト制御部205に入力されたパケットが、後述する経路設定コマンドであるとする。この場合、マルチキャスト制御部205は、転送経路の設定時に、マルチキャストパケットの転送元として経路設定コマンドの転送先(ネットワークスイッチ21または22)を設定する。また、マルチキャスト制御部205は、マルチキャストパケットの転送先として経路設定コマンドの転送元(計算ノード10)を設定する。このマルチキャストパケットは、設定された転送経路を用いたマルチキャスト通信により送信されるパケットである。
また、マルチキャスト制御部205は、図3に示すように、パケット入力部301と、パケット出力部302と、プロセス数保持部303と、プロセス数カウンタ部304と、マルチキャスト制御情報保持部305と、加算部306と、比較部307と、完了通知生成部308と、宛先一致判別部309とを有する。
パケット入力部301は、入力バッファ部201−1〜201−5からのパケット入力を受け、入力されたパケットをパケット出力部302に出力する。パケット入力部301が入力するパケットとは、マルチキャスト通信により送信されるマルチキャストパケット、計算ノード10により発行された経路設定コマンドなどである。経路設定コマンドが計算ノード10から送信されてきた場合、パケット入力部301は、後述する「経路設定コマンド受信処理」を実行し、経路設定コマンドを受信する。また、パケット入力部301は、受け取った経路設定コマンド内に格納されている所定の制御情報(例えば、後述するマルチキャストID)を、プロセス数保持部303、プロセス数カウンタ部304、マルチキャスト制御情報保持部305に通知する機能を有する。
パケット出力部302は、パケット入力部301もしくは完了通知生成部308からパケット(経路設定コマンド、マルチキャストパケットなど)を受け取り、受け取ったパケットを図2に示した各出力バッファ部202−1〜202−5に出力する。また、パケット出力部302は、マルチキャストパケットの出力先(転送先)を指定するための転送経路情報である「マルチキャスト制御情報3051」を、マルチキャスト制御情報保持部305から受け取る。
プロセス数保持部303は、「プロセス数保持処理」を実行し、「グループ所属プロセス数」を保持するレジスタ群である。ここに、「グループ所属プロセス数」とは、マルチキャスト通信を実行する計算ノード10上の各プロセスグループに所属するプロセス数である。また、ここでいうプロセスグループは、例えば、MPIにて、通信を行うプロセスの集合として扱われるコミュニケータに相当する。また、プロセス数保持部303は、パケット入力部301からマルチキャストIDの入力を受け、そのマルチキャストIDで指定されるレジスタ値(グループ所属プロセス数)を比較部307に出力する。
プロセス数カウンタ部304は、「プロセス数カウント処理」を実行し、マルチキャスト通信におけるマルチキャストパケットの転送経路の設定処理である「転送経路設定」に関するレジスタ値を保持するレジスタ群である。より具体的には、プロセス数カウンタ部304は、マルチキャスト通信を行う計算ノード10上のプロセスに対して転送経路設定が完了した数(以下、「経路設定完了プロセス数」という)を保持する。プロセス数カウンタ部304は、パケット入力部301からマルチキャストIDの入力を受け、マルチキャストIDで指定されるレジスタ値(経路設定完了プロセス数)を加算部306に出力する。
マルチキャスト制御情報保持部305は、「マルチキャスト制御情報保持処理」を実行し、マルチキャストパケットのコピーを出力させる出力ポート番号を指定するための情報である「マルチキャスト制御情報3051」を保持する。なお、マルチキャスト制御情報保持部305は、パケット入力部301が計算ノード10上の1つのプロセスから1つの経路設定コマンドを受信したときに、そのプロセスに対する経路設定処理を実行する。そのため、プロセス数カウンタ部304がカウントする経路設定完了プロセス数は、ネットワークスイッチ22−1が受信した経路設定コマンドの数と同一である。
また、マルチキャスト制御情報保持部305は、パケット入力部301−1〜301−5からの入力を受け、パケット出力部302−1〜302−5に制御信号(転送経路情報)を出力する。なお、マルチキャスト制御情報保持部305は、パケット入力部301−1〜301−5のうちから、入力バッファ部201(入力ポート)からパケットが入力されたパケット入力部を識別する機能を有する。
加算部306は、加算器で構成され、「加算処理」を実行し、プロセス数カウンタ部304が保持するレジスタ値の更新により、マルチキャスト制御部205がパケットの転送経路設定を完了した経路設定完了プロセス数をカウントする。なお、加算部306は、プロセス数カウンタ部304が保持する「経路設定完了プロセス数」に加算処理を施した後に、加算処理後の結果をプロセス数カウンタ部304が保持するレジスタ値に書き戻す。また、加算部306は、加算結果を比較部307に出力する。
比較部307は、比較器で構成され、「比較処理」を実行することにより、加算部306とプロセス数保持部303とからそれぞれ値の入力を受け、加算部306からの入力値とプロセス数保持部303からの入力値とを比較し、比較結果を完了通知生成部308に出力する。また、比較部307は、比較結果が一致したときに、マルチキャスト通信の経路設定が完了したと識別する。経路設定が完了としたと識別した場合、比較部307は、「完了通知指示処理」を実行し、完了通知生成部308に、経路設定完了の旨を通知するためのパケットである「経路設定完了通知」を生成するよう指示する。
完了通知生成部308は、「完了通知生成処理」を実行し、比較部307の「完了通知指示処理」による指示に従って、「経路設定完了通知」を生成する。また、完了通知生成部308は、「完了通知送信処理」を実行し、生成した経路設定完了通知をパケット出力部302に出力する。これにより、経路設定完了通知が計算ノード10に送信される。
宛先一致判別部309は、「宛先一致判別処理」を実行し、経路設定コマンドの転送先情報が示す経路設定コマンドの最終的な宛先が自己のネットワークスイッチに一致するか否かを判別し、一致すると判別した場合、自己のネットワークスイッチがパケットの最終的な転送先であることを識別する。そして、宛先一致判別部309は、経路設定コマンド中に格納されている「経路設定コマンドの最終的な宛先」の識別結果を、プロセス数カウンタ部304に通知する。
また、宛先一致判別部309は、マルチキャスト通信の際に、計算ノード10から送信されてきたマルチキャストパケットの宛先が自己に一致するか否かを判別する機能を有する。自己に一致すると判別した場合、宛先一致判別部309は、マルチキャストパケット中の「制御部到達ビット」を「1」に書き換える。
なお、プロセス数保持部303、プロセス数カウンタ部304およびマルチキャスト制御情報保持部305は、複数セットの情報(図3中の1つのグループ所属プロセス数と、図3中の1つの経路設定完了プロセス数と、後述する図4の1つのビット列とを1セットとする情報)をそれぞれ保持できるよう構成することが望ましい。この場合に、マルチキャスト通信を実行する計算ノード10上のプロセスグループに、各プロセスグループをそれぞれ識別するための番号(以下、「マルチキャストID」という)を付与したものする。これにより、各プロセスグループが、マルチキャストIDに基づいて、複数セットの情報のうちから自己のプロセスグループに対応する情報を選択することが可能になる。これにより、複数のプロセスグループによるマルチキャスト通信を同時に実行することが可能になるからである。
つぎに、マルチキャスト制御情報保持部305の構成を詳細に説明する。図4に示すように、マルチキャスト制御情報保持部305が保持する「マルチキャスト制御情報3051」には、長さが「5」であるm個のビット列B1〜Bmが登録されている。ここに、ビット列B1〜Bmをm個設けているのは、複数(m個)のマルチキャスト通信用の転送経路を設定可能にするためである。
マルチキャスト制御情報保持部305は、計算ノード10から送信されてきた経路設定コマンドに含まれるマルチキャストIDにより、ビット列B1〜Bmのうちから特定のビット列を指定する。各ビット列B1〜Bm中にそれぞれ含まれる5つのビットは、5つの各出力ポート(各出力ポートに対応する出力バッファ部202−1〜202−5)にそれぞれ対応付けられている。なお、上述したようにネットワークスイッチが有する入力ポートおよび出力ポートは互いに1対1で対応付けられている。そのため、マルチキャスト制御情報保持部305は、外部から経路設定コマンドが入力された入力ポート番号に対して、その入力ポート番号に対応する出力ポート番号に応じたビット列B1〜Bm内のビットを識別することが可能である。
なお、マルチキャスト制御情報保持部305は、各ビット列B1〜Bmにおいて、マルチキャストパケットを出力させる出力ポート番号に対応するビットに対しては「1」を設定する。また、マルチキャスト制御情報保持部305は、マルチキャストパケットを出力させない出力ポート番号に対応するビットに対しては「0」を設定する。図4に示したビット列B1の例では、1番目のビットに対応する出力ポート(出力ポート番号「1」)が、マルチキャストパケット送信用に設定されている。
なお、図4に示した例では、マルチキャストパケットの出力先を、ネットワークスイッチ21および22が具備する出力ポートの数と同じ数のビットを有するビット列で示しているが、マルチキャスト制御情報3051の形態は特に限定しない。マルチキャスト制御情報3051は、例えば、マルチキャストパケットの出力先となる出力ポート番号が登録されたリストであってもよい。
次に、上記構成を有する並列計算機システムにて、マルチキャスト通信用の転送経路を設定する「転送経路設定処理」の動作シーケンスを説明する。図5に示すように、この一連の動作シーケンスは、計算ノード10と、ネットワークスイッチ21と、ネットワークスイッチ22との3者の間で実行されるものである。
なお、この一連の「転送経路設定処理」において、計算ノード10では、ステップ11の「事前準備処理」と、ステップ12の「経路設定コマンド発行処理」と、ステップ13の「経路設定完了通知受取処理」と、ステップ14の「マルチキャスト通信処理」とを実行する。
また、この一連の「転送経路設定処理」において、ネットワークスイッチ21または22は、ステップ21または31の「経路設定コマンド受信処理」と、ステップ22または32の「経路設定処理」とを実行する。なお、ステップ23の「経路設定コマンド転送処理」、ステップ33の「経路設定完了通知処理」およびステップ24の「経路設定完了通知転送処理」は、経路設定コマンドの最終的な宛先であるか否かに応じて実行される。
以下、上述の各処理について、その概要を説明する。
ステップ11の「事前準備処理」は、計算ノード10において、マルチキャスト通信を実行するプロセスグループに所属する各プロセスが、プロセスグループ識別用の「マルチキャストID」や各プロセスグループに属するプロセス数などの情報を事前に共有するために行われる。
ステップ12の「経路設定コマンド発行処理」は、計算ノード10において、マルチキャスト通信を実行するプロセスグループの各プロセスが、ネットワークスイッチ21、22に転送経路の設定を指示するための「経路設定コマンド」を発行するために行われる。この「経路設定コマンド」のデータ構造については、詳細な説明を後述する。
ステップ21または31の「経路設定コマンド受信処理」は、ネットワークスイッチ21、22において、計算ノード10のプロセスグループの各プロセスから「経路設定コマンド発行処理」により送信されてきた「経路設定コマンド」を受信するために行われる。
なお、図6に示すように、ステップ21の「経路設定コマンド受信処理」では、ステップ211の「経路設定コマンド受信処理」と、ステップ212の「宛先一致判別処理」とが実行される。ステップ211の「経路設定コマンド受信処理」は、パケット入力部301により実行され、経路設定コマンドを受信するために行われる。また、ステップ212の「宛先一致判別処理」は、宛先一致判別部309により実行され、後述する「マルチキャスト制御スイッチ番号」が示す経路設定コマンドの最終的な宛先と自己のネットワークスイッチとが一致するか否かを判別するために行われる。
図6のステップ212にてNoであり、宛先一致判別部309が、自己のネットワークスイッチは最終的な宛先でないと判別した場合、図5に示したようにステップ22の「経路設定処理」の実行後に、ステップ23の「経路設定コマンド転送処理」が実行される。また、図6のステップ212にてYesであり、宛先一致判別部309が、自己のネットワークスイッチは最終的な宛先であると判別した場合、図5に示したようにステップ32の「経路設定処理」の実行後に、ステップ33の「経路設定完了通知処理」が実行される。
図5に示すステップ22または32の「経路設定処理」は、「経路設定コマンド受信処理」により「経路設定コマンド」を受信したネットワークスイッチ21、22において、受信した「経路設定コマンド」に基づいて行われる。各ネットワークスイッチ21および22では、計算ノード10から受信した経路設定コマンドの指示に従って、各ネットワークスイッチ21および22のマルチキャスト制御部205が、マルチキャスト制御情報3051を設定する。
ステップ23の「経路設定コマンド転送処理」は、計算ノード10のプロセスグループの各プロセスから送信されてきた「経路設定コマンド」を、その最終的な宛先(後述の「マルチキャスト制御スイッチ」)のネットワークスイッチに送信するために行われる。
ステップ33の「経路設定完了通知処理」は、経路設定コマンドの最終的な宛先であるネットワークスイッチ21または22において、「経路設定処理」の完了によりマルチキャスト通信に用いられる経路の設定が完了したことを、経路設定コマンドの発行元である計算ノード10に通知するために行われる。
また、マルチキャスト制御スイッチから計算ノード10に至る転送経路上のネットワークスイッチは、ステップ24の「経路設定完了通知転送処理」を実行する。これにより、ネットワークスイッチ21または22は、マルチキャスト制御スイッチが送信した経路設定完了通知を中継し、経路設定コマンドの発行元の計算ノードに転送する。
ステップ13の「経路設定完了通知受取処理」は、計算ノード10のプロセスグループ内の各プロセスにて実行される。この「経路設定完了通知受取処理」では、ステップ23の「経路設定完了通知処理」によってマルチキャスト制御スイッチであるネットワークスイッチから送信された「経路設定完了通知」を、プロセスグループが受信する。これにより、受信したプロセスグループ内の各プロセスは、自己が「経路設定コマンド」の送信により要求したマルチキャスト通信の経路設定が、経路設定コマンドの最終的な宛先であるネットワークスイッチ上で完了したことを認識する。そのため、「経路設定完了通知」を受信したプロセスグループに対して、マルチキャスト通信を行うためのマルチキャスト通信コマンドを発行可能となる。
ステップ13の「経路設定完了通知受取処理」の完了後、「経路設定完了通知」を受信したプロセスグループ内のプロセスは、プログラムによってマルチキャスト通信の実行を指示された際に、ステップ14の「マルチキャスト通信処理」を実行し、マルチキャスト通信を実行する。なお、一旦経路を設定してしまえば、そのプロセスグループに対するマルチキャスト通信は、「マルチキャスト通信処理」を繰り返し実行することにより、複数回実行可能である。
つぎに、計算ノード10によるステップ11〜14の各処理、ネットワークスイッチ22−1によるステップ21〜24の各処理、ネットワークスイッチ21−1によるステップ31〜33の各処理について詳細に説明する。なお、以下では、図1に示す並列計算機システム上で、5つのプロセスからなるプロセスグループがマルチキャスト通信を実行する場合を例に挙げて説明する。5つのプロセスは、計算ノード11−1〜11−4、12−1〜12−4、13−1〜13−4、14−1〜14−4上でそれぞれ動作しているものである。
まず、計算ノード10上にて実行されるステップ11の「事前準備処理」について説明する。図5に示した「事前準備処理」において、マルチキャスト通信を実行するプロセスグループの各プロセスは、マルチキャスト通信の経路設定前に、(a)マルチキャストIDと、(b)マルチキャスト通信を制御するネットワークスイッチを指定するための番号(以下、「マルチキャスト制御スイッチ番号」という)と、(c)プロセスグループに含まれるプロセス数(以下、「グループ所属プロセス数」という)とを示す情報を共有しておく。
「マルチキャストID」は、計算ノード10上で動作する各プロセスグループをそれぞれ識別するための番号を示す「識別情報」である。以下の例では、マルチキャストIDは「1」であるものとする。
「マルチキャスト制御スイッチ番号」は、マルチキャスト通信を制御するネットワークスイッチを指定するための情報である。また、「マルチキャスト制御スイッチ番号」で指定されるネットワークスイッチを、以下では「マルチキャスト制御スイッチ」という。ツリー構造を有するネットワークでは、図9に示す最上段のネットワークスイッチ(ネットワークスイッチ21−1)を指定するのが最も効率的である。そのため、この例では、「ネットワークスイッチ21−1」をマルチキャスト制御スイッチ番号で指定するものとする。なお、マルチキャスト制御スイッチ番号は、マルチキャスト制御スイッチに経路設定コマンドを転送するための転送経路情報であってもよい。
「グループ所属プロセス数」は、計算ノード10にて、「マルチキャストID」が付与されたプロセスグループに所属しているプロセスの数である。「マルチキャストID」はマルチキャスト通信を実行するプロセスグループに対して付与されるため、「グループ所属プロセス数」は、マルチキャスト通信に参加させ、マルチキャスト通信を実行させるプロセス数を示す「マルチキャスト実行プロセス数」である。以下の例では、「グループ所属プロセス数」は「5」であるものとする。
以上で、ステップ11の「事前準備処理」が終了する。
つぎに、計算ノード10上にて実行されるステップ12の「経路設定コマンド発行処理」について説明する。ステップ12の「経路設定コマンド発行処理」において、計算ノード10のうちでマルチキャスト通信を実行するプロセスグループの各プロセスが、「経路設定コマンド」をそれぞれ発行する。そして、発行された経路設定コマンドは、図9に示す相互結合網2上に設けられた特定のネットワークスイッチ21、22が有するマルチキャスト制御部205に転送される。
この「経路設定コマンド」は、ネットワーク21または22が有するマルチキャスト制御部205に対して、マルチキャスト通信用の転送経路設定を指示するためのコマンドを含んだパケットである。
また、経路設定コマンドは、「事前準備処理」においてマルチキャスト通信を行うプロセス間にて共有された情報を含むものである。すなわち、図7に示すように、経路設定コマンドは、マルチキャストID(=「1」)と、マルチキャスト制御スイッチ番号(=「ネットワークスイッチ21−1」)と、グループ所属プロセス数(=「5」)とを含んでいる。なお、マルチキャスト制御スイッチ番号は、マルチキャスト通信を制御するマルチキャスト制御スイッチに経路設定コマンドを転送するための経路情報である「経路設定コマンドの転送先情報」である。
次に、ネットワークスイッチ21、22によるステップ21の「経路設定コマンド受信処理」について説明する。図5に示したステップ21の「経路設定コマンド受信処理」では、ネットワークスイッチ21、22は、「経路設定コマンド発行処理」により計算ノードが発行した経路設定コマンドを受信する。このとき、ネットワークスイッチ21、22のパケット入力部301は、経路設定コマンドを、計算ノード10から、または、計算ノード10から受信した経路設定コマンドを転送してきた他のネットワークスイッチから受信する。
つぎに、計算ノード10により発行された経路設定コマンドを受信したときの、ネットワークスイッチの動作について説明する。以下では、図5に示したように、計算ノード11−1が発行した経路設定コマンドをネットワークスイッチ22−1または21−1が受信した場合を例に挙げて説明する。そして、この例では、計算ノード11−1が発行した経路設定コマンドが、図7に示した経路設定コマンドであるものとし、「ネットワークスイッチ21−1」がマルチキャスト制御スイッチとして指定されている。
なお、ネットワークスイッチの動作は、ネットワークスイッチが経路設定コマンドの最終的な宛先であるか否か(マルチチャネル制御スイッチであるか否か)に応じて異なる。そのため、まず、「マルチチャネル制御スイッチ」でないネットワークスイッチ22−1から説明する。
ネットワークスイッチ22−1は、図5に示したステップ21の「経路設定コマンド受信処理」にて、図6に示したステップ211の「経路設定コマンド受信処理」を実行し、計算ノード11−1が発行した経路設定コマンドを受信する。その後、ネットワークスイッチ22−1の入力バッファ部201−1は、経路設定コマンドをデコードし、マルチキャスト制御部205に供給する。マルチキャスト制御部205が有するパケット入力部301は、入力バッファ部201−1から供給された経路設定コマンドから、マルチキャスト制御スイッチ番号およびマルチキャストIDを抽出する。
続いて、宛先一致判別部309は、図6に示したステップ212の「宛先一致判別処理」を実行し、経路設定コマンド内の転送先情報(マルチキャスト制御スイッチ番号)が示す経路設定コマンドの最終的な宛先と自己のネットワークスイッチ22−1とが一致するか否かを判別する。この例では、マルチキャスト制御スイッチ番号はネットワークスイッチ21−1を示しており、ネットワークスイッチ22−1は最終的な転送先でない。そのため、宛先一致判別部309は、自己のネットワークスイッチが最終的な転送先でないと判別する。この場合、スイッチ22−1では、マルチキャスト制御部205は、ステップ22の「経路設定処理」の実行後、ステップ23の「経路設定コマンド転送処理」を実行する。
つぎに、図6に示したステップ22の「経路設定処理」について説明する。ステップ22の「経路設定処理」は、マルチキャスト制御情報保持部305が、自ら保持するマルチキャスト制御情報3051を更新することにより実行される。マルチキャスト制御情報保持部305は、経路設定コマンド中のマルチキャストIDによって指定されたビット列において、経路設定コマンドを受信した入力ポート番号に対応するビットの値を「1」に設定する。この例では、マルチキャストIDは「1」を示しているため、図4に示した「1番目のビット列B1」が指定される。さらに、経路設定コマンドを受信した入力ポート番号が「1」であったものとする。この場合、マルチキャスト制御情報保持部305は、マルチキャストIDで指定されたビット列B1において、入力ポート番号「1」に対応する「1番目の出力ポートに対応するビット」の値を、「1」に設定する。以下、このような動作を「ビット設定動作」という。
「経路設定処理」(ビット設定動作)の終了後、ネットワークスイッチ22−1は、ステップ23の「経路設定コマンド転送処理」を実行する。パケット入力部301は、ネットワークスイッチ22−1が受信した経路設定コマンドを、パケット出力部302を経由して出力バッファ部202−5に入力する。ネットワークスイッチ22−1の出力バッファ部202−5は、「経路設定コマンド転送処理」を実行し、経路設定コマンドを、その最終的な宛先であるネットワークスイッチ21−1に転送する。
つぎに、「経路設定コマンドの最終的な宛先(マルチキャスト制御スイッチ)である」スイッチ21−1の動作を説明する。スイッチ21−1は、ステップ31の「経路設定コマンド受信処理」により、ネットワークスイッチ22−1から転送されてきた経路設定コマンドを受信すると、入力バッファ部201−1によりデコードされた経路設定コマンドをマルチキャスト制御部205に供給する。マルチキャスト制御部205のパケット入力部301は、経路設定コマンドから、マルチキャスト制御スイッチ番号およびマルチキャストIDを抽出する。抽出されたマルチキャスト制御スイッチ番号(転送先情報)が示す宛先はスイッチ21−1であるため、この転送先情報を現在参照しているネットワークスイッチ21−1は、計算ノード11−1から発行された経路設定コマンドの最終的な宛先そのものである。
この場合、ネットワークスイッチ21−1が有する宛先一致判別部309は、図6に示したステップ212の宛先一致判別処理にてYesであり、転送先情報が示す宛先のネットワークスイッチが自己のネットワークスイッチ21−1に一致すると判別し、自己が最終的な転送先であることを識別する。そのため、ネットワークスイッチ21−1では、マルチキャスト制御情報保持部305によるステップ32の「経路設定処理」と、マルチキャスト制御情報保持部305および完了通知生成部308によるステップ33の「経路設定完了通知処理」とが実行される。
ネットワークスイッチ21−1の「経路設定処理」の動作は、上述のネットワークスイッチ22−1が「経路設定処理」にて実行したビット設定動作と同一である。すなわち、ネットワークスイッチ21−1にて、マルチキャスト制御情報保持部305は、マルチキャスト制御情報3051のうちから、マルチキャストID(この例では「1」)で指定される「1番目のビット列B1」を特定する。さらに、マルチキャスト制御情報保持部305は、特定したビット列B1において、経路設定コマンドを受信した入力ポートの番号(例えば、「1」)に対応する出力ポートの番号のビット(1番目のビット)の値を「1」に設定する。この設定動作により、経路設定コマンドの発行元である計算ノード11−1に対して、ネットワークスイッチ21−1がマルチキャストパケットを転送する際に、ネットワークスイッチ21−1が有する出力ポート番号1の出力ポートが用いられる。
また、ネットワークスイッチ21−1のステップ33の「経路設定完了通知処理」は以下のように行われる。まず、パケット入力部301は、経路設定コマンドから抽出したマルチキャストIDをプロセス数保持部303に通知する。プロセス数保持部303は、通知されたマルチキャストIDにより指定されたレジスタの値(グループ所属プロセス数)を、比較部307に出力する。
また、パケット入力部301は、マルチキャストIDをプロセス数カウンタ部304に通知する。プロセス数カウンタ部304は、「プロセス数カウント処理」を実行し、通知されたマルチキャストIDによって指定されたレジスタに格納されている値(経路設定完了プロセス数)を、加算部306に出力する。
図8に示すように、加算部306は、マルチキャスト制御情報保持部305がマルチキャスト制御情報3051中のビット列B1〜Bnに含まれるビットを1つ設定するごとに、ステップ331の「加算処理」を実行する。この「加算処理」にて、加算部306は、プロセス数カウンタ部304から出力されたレジスタの値である経路設定完了プロセス数に1を加算する。続いて、加算部306は、加算後の結果をプロセス数カウンタ部304に書き戻すとともに、加算後の結果を比較部307にも出力する。
比較部307は、ステップ332の「比較処理」を実行し、プロセス数保持部303から入力された値(計算ノード10上でマルチキャスト通信を行うプロセスグループのグループ所属プロセス数)と、加算部306から入力された値(加算部306が加算処理を施した後の経路設定完了プロセス数)とを比較する。ステップ332の「比較処理」にてYesであり、各入力値が互いに一致すると判別した場合、マルチキャスト通信を実行するプロセスグループに含まれるすべてのプロセスから経路設定コマンドが到達した場合に相当する。このとき、比較部307は、マルチキャスト通信のための経路設定が完了したと識別するとともに、完了通知生成部308に「経路設定完了通知」を発行するよう指示する。一方、ステップ332にてNoであり、グループ所属プロセス数と経路設定完了プロセス数とが一致しないと判別した場合、比較部307は、経路設定が完了していないと識別し、加算部306が、ステップ331の処理を実行する。
ネットワークスイッチ21−1がステップ32の「経路設定処理」を実行し、経路設定コマンドがすべてのプロセスからスイッチ21−1に到達すると、各ネットワークスイッチ21−1、22−1〜2−4のマルチキャスト制御情報保持部305における1番目のビット列は、図9に示すB1−1、B2−1〜B2−4のようにそれぞれ設定される。また、スイッチ21−1では、加算部306が出力した値とプロセス数保持部303が出力した値とが一致するため、比較部307が、経路設定が完了したことを識別する。この場合、比較部307は、「完了通知指示処理」を実行し、完了通知生成部308に「経路設定完了通知」の発行を指示する。
完了通知生成部308は、ステップ333の「完了通知生成処理」により、経路設定完了通知を生成し、生成した経路設定完了通知をパケット出力部302に出力する。なお、この経路設定完了通知には、マルチキャスト通信を実行するプロセスグループを特定するためのマルチキャストID(この例では「1」)が記述されている。
ネットワークスイッチ21−1のパケット出力部302は、「完了通知生成処理」により生成された経路設定完了通知を、完了通知生成部308から受信する。また、パケット出力部302は、「経路設定処理」により設定された経路情報を、マルチキャスト制御情報保持部305から受信する。そして、パケット出力部302は、「完了通知送信処理」により、経路情報で指定された出力バッファ部202(出力ポート)を用いて、経路設定完了通知のコピーを出力する。これにより、転送経路に従って、経路設定完了通知が、計算ノード11−1宛に送信される。例えば、図10の例では、スイッチ21−1のパケット出力部302は、マルチキャストIDで指定されたマルチキャスト制御情報3051内の「1番目のビット列B1−1」の設定に対応する各出力ポート(出力ポート番号1〜3)に、経路設定完了通知を出力する。以上で、ステップ33の「経路設定完了通知処理」が終了する。
なお、図5においては、マルチキャスト通信用の転送経路が、ネットワークスイッチ21−1、ネットワークスイッチ22−1、計算ノード11−1の順に設定されている。そのため、ネットワークスイッチ22−1による中継処理であるステップ24の「経路設定完了通知転送処理」が行われる。
つぎに、ステップ24の「経路設定完了通知転送処理」について説明する。ネットワークスイッチ22−1は、ネットワークスイッチ21−1から送信されてきた「経路設定完了通知」を受信すると、マルチキャスト制御部205のパケット入力部301に経路設定完了通知を入力する。パケット入力部301は、マルチキャスト制御情報保持部305に対して、経路設定完了通知に含まれるマルチキャストID(この例では「1」)を通知する。また、パケット入力部301は、入力された経路設定完了通知をパケット出力部302に転送する。ネットワークスイッチ22−1のパケット出力部302は、マルチキャスト制御情報3051内の図10のビット列B2−1に含まれるビットによって指定されるポートに、パケットを出力する。これにより、ネットワークスイッチ21−1が発行した「経路設定完了通知」が、ネットワークスイッチ22−1から、計算ノード11−1で動作するプロセスグループの各プロセスに送信される。なお、経路設定完了コマンドにより経路設定の完了を各プロセスに通知する方法は任意である。例えば、計算ノード10の指定された番地に対応するメモリまたは計算ノード10の指定されたレジスタへの所定値の設定、計算ノード10への割込の報告、などの一般的な方法でもよい。
経路設定完了通知の宛先である計算ノード11−1は、ステップ13の「経路設定完了通知受取処理」を実行し、経路設定完了通知を、プロセスグループの各プロセスにより受信する。以上で、「転送経路設定処理」が終了する。
つぎに、一連の「転送経路設定処理」によって設定された転送経路を用いて、計算ノード11−1がマルチキャスト通信するときのステップ14の「マルチキャスト通信処理」について説明する。なお、「マルチキャスト通信処理」を実行するプロセスグループの5つのプロセスは、マルチキャスト通信する機能をそれぞれ有する。ここでは、計算ノード11−1が、プロセスグループ内の5つのすべてのプロセスを用いてマルチキャスト通信を行う場合を例に挙げて説明する。
計算ノード11−1上で動作するプロセスグループのプロセスが、マルチキャストパケットを発行したものとする。このとき、図11に示すように、計算ノード11−1から送信されたマルチキャストパケットは、そのプロセスグループのマルチキャスト通信を制御するマルチキャスト制御スイッチまで転送される。なお、マルチキャスト制御スイッチは、ステップ11の「事前準備処理」で設定された「マルチキャスト制御スイッチ番号」によって指定される。そのため、計算ノード11−1がマルチキャストパケットを発行するときの宛先情報には、「ネットワークスイッチ21−1」が設定されている。また、初期状態において、計算ノード11−1が発行するマルチキャストパケット中の「制御部到達ビット」は、そのマルチキャストパケットがマルチキャスト制御スイッチ21−1に到達していないことを示すために、「0」に設定されている。
「マルチキャスト制御スイッチでない」ネットワークスイッチ22−1では、宛先一致判別部309が、計算ノード11−1から受信したマルチキャストパケット中の制御部到達ビットが「0」に設定されていることを識別する。その後、ネットワークスイッチ22−1のパケット出力部302が、マルチキャストパケットをマルチキャスト制御スイッチ(ネットワークスイッチ21−1)宛に転送する。
「マルチキャスト制御スイッチである」ネットワークスイッチ21−1では、ネットワークスイッチ22−1から転送されてきたマルチキャストパケットを受信すると、宛先一致判別部309が、マルチキャストパケットがその最終的な宛先(ネットワークスイッチ21−1)に到達したことを識別する。そのため、宛先一致判別部309は、マルチキャストパケット中の制御部到達ビットを「1」に書き換え、マルチキャスト制御部205のパケット入力部301に転送する。パケット入力部301は、マルチキャストIDをマルチキャスト制御情報保持部305に通知するとともに、マルチキャストパケット本体をパケット出力部302に転送する。
さらに、ネットワークスイッチ21−1では、マルチキャスト制御情報保持部305が、マルチキャストIDで指定されるマルチキャストパケットの発行元(計算ノード11−1)のプロセスグループに対して設定した出力ポートを示すビット列(経路情報)を読み出し、読み出した経路情報をパケット出力部302に送信する。パケット出力部302は、設定済の転送経路を用いてマルチキャストパケットを送信するために、経路情報に従って指定された出力バッファ部202にマルチキャストパケットを出力する。図11の例では、マルチキャスト制御スイッチであるネットワークスイッチ21−1を介して、計算ノード11から送信されたマルチキャストパケットが、ネットワークスイッチ22−1、22−2、22−3宛に転送される。
各ネットワークスイッチ22−1〜22−3では、ネットワークスイッチ21−1から転送されてきたマルチキャストパケット中の制御部到達ビットが「1」に設定されていることを識別し、そのマルチキャストパケットがマルチキャスト制御スイッチに到達済であることを判別する。その後、判別したマルチキャストパケットを、マルチキャスト制御部205のパケット入力部301に転送する。パケット入力部301は、マルチキャストIDをマルチキャスト制御情報保持部305に通知するとともに、マルチキャストパケットをパケット出力部302に転送する。
マルチキャスト制御情報保持部305は、パケット入力部301から通知されたマルチキャストIDが指定するビット列(出力ポートの経路情報)を読み出し、この経路情報をパケット出力部302に供給する。パケット出力部302は、供給された経路情報が指定する出力バッファ部202−1〜202−5のいずれかにマルチキャストパケットを出力する。これにより、ネットワークスイッチ22−1は、上述の転送経路設定処理により設定された転送経路に従って、マルチキャストパケットを転送する。なお、このマルチキャストパケットの転送動作は、ステップ24の「経路設定完了通知転送処理」にて転送経路設定処理により設定された転送経路を用いて設定完了コマンドを転送する動作と同一である。
以上で、ステップ14の「マルチキャスト通信処理」が終了する。
以上説明したように、本発明の並列計算機システムによれば、ネットワークスイッチ21および22が、少なくとも1つの出力ポートを指定し、指定した出力ポートに対して入力ポートから入力されたパケットのコピーの転送経路を設定し、転送経路の設定を完了したプロセス数と、予め保持するマルチキャスト通信を実行させるプロセス数とが一致するか否かを判別し、一致すると判別したときにマルチキャスト通信の経路設定が完了したことを識別する。
これにより、相互結合網2に接続された計算ノード10の物理的な位置を把握することなく、マルチキャスト通信における宛先および転送経路を高速に設定できる。
また、本発明の並列計算機システムによれば、マルチキャスト通信における宛先と転送経路が高速に設定完了されるため、マルチキャスト通信機能を用いるプログラム全体の処理性能を向上させることができる。
さらに、本発明の並列計算機システムによれば、ネットワークスイッチ21−1および22において、完了通知生成部308は、マルチキャスト制御部205によるマルチキャスト通信の経路設定が完了したことを、経路設定コマンドの発行元である計算ノード10に通知する。これにより、経路設定コマンドの発行元において、マルチキャスト通信の実行が可能になったことを認識することが可能になる。
なお、本発明の要旨を逸脱しない範囲で各種の変形が可能である。
図2に示した構成例では、マルチキャストパケットがマルチキャスト制御部205に入力された後に、マルチキャスト制御部205から出力バッファ部202に対して複数のコピーが出力される。しかし、ネットワークスイッチ内部でマルチキャスト通信を行う方法は、これに限らず、例えば、マルチキャスト制御部205にはパケット中の制御情報のみを入力し、パケット自体はクロスバスイッチ203を経由して出力バッファ部202に複数のパケットのコピーが出力されるようにしてもよい。
また、上述の動作例では、事前にプロセスグループに属するプロセス数をプロセス数保持部303に設定しておいたが、各経路設定コマンドがプロセス数を保持し、加算部306の出力結果とコマンドが保持していたプロセス数とを逐次比較することにより、経路設定の完了を識別するようにしてもよい。
なお、本発明においては、ネットワークスイッチ21−1内の処理は上述の専用のハードウェアにより実現されるもの以外に、その機能を実現するためのプログラムを、ネットワークスイッチ21−1として動作させるコンピュータにて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムをそのコンピュータに読み込ませ、実行するものであってもよい。ネットワークスイッチ21−1として動作させるコンピュータにて読取可能な記録媒体とは、フロッピーディスク(登録商標)、光磁気ディスク、DVD、CDなどの移設可能な記録媒体の他、そのコンピュータに内蔵されたHDD等を指す。この記録媒体に記録されたプログラムは、例えば、ネットワークスイッチ21−1として動作させるコンピュータが有するマルチキャスト制御部205として動作するプロセッサにて読み込まれ、そのプロセッサの制御によって、上述したものと同様の処理が行われる。
ここで、マルチキャスト制御部205として動作するプロセッサは、プログラムが記録された記録媒体から読み込まれたプログラムを実行するものである。なお、上述のプログラムは、各ネットワークスイッチ22−1〜22−4についても同様に適用可能である。
また、本発明のネットワークスイッチのマルチキャスト制御情報保持部は、マルチキャスト制御部に転送経路設定を指示するコマンドである経路設定コマンドが入力された入力ポートに基づいて、複数の出力ポートのうちからマルチキャストパケットを出力するための出力ポートを指定してもよい。
また、本発明のネットワークスイッチのマルチキャスト制御情報保持部は、複数の出力ポートにそれぞれ対応付けられた複数のビットを含むマルチキャスト制御情報を保持し、ビットに設定されている値の更新により、更新したビットに対応する出力ポートを、マルチキャストパケットを出力する出力ポートとして指定してもよい。
また、本発明のネットワークスイッチのマルチキャスト制御情報保持部は、更新の対象とするビットを含むマルチキャスト制御情報を、マルチキャストIDによって指定してもよい。
また、本発明のネットワークスイッチは、入力ポートに経路設定コマンドが入力されたときに、経路設定コマンドの転送先情報が示す宛先と、経路設定コマンドが入力されたネットワークスイッチとが一致するか否かを判別する宛先一致判別部、を有し、加算部は、宛先一致判別部が一致すると判別した場合、経路設定完了プロセス数をカウントしてもよい。
また、本発明のネットワークスイッチは、経路設定コマンドに含まれるマルチキャスト通信を実行させるプロセス数を保持するプロセス数保持部、を有し、比較部は、加算部がカウントした経路設定完了プロセス数と、プロセス数保持部が保持しているマルチキャスト通信を実行させるプロセス数とが一致するか否かを判別してもよい。
また、本発明のネットワークスイッチは、比較部がマルチキャスト通信の転送経路設定が完了したことを識別した場合、転送経路設定が完了したことを示す経路設定完了通知を生成し、生成した経路設定完了通知を、入力ポートに入力された経路設定コマンドの送信元に転送する完了通知生成部、を有してもよい。
また、本発明のネットワークスイッチの完了通知生成部は、マルチキャスト制御部が設定した転送経路に従って行われるマルチキャスト通信により、経路設定完了通知を転送してもよい。
また、本発明のネットワークスイッチでは、経路設定コマンドによってマルチキャスト制御部が転送経路を設定する際に、マルチキャストパケットは、相互結合網上を経路設定コマンドが転送された方向と逆向きに転送されるよう、転送経路を設定してもよい。
また、本発明の経路設定方法のマルチキャスト制御情報保持処理では、マルチキャスト制御処理にて転送経路設定を指示するコマンドである経路設定コマンドが入力された入力ポートに基づいて、複数の出力ポートのうちからマルチキャストパケットを出力するための出力ポートを指定してもよい。
また、本発明の経路設定方法のマルチキャスト制御情報保持処理では、複数の出力ポートにそれぞれ対応付けられた複数のビットを含むマルチキャスト制御情報を保持し、ビットに設定されている値の更新により、更新したビットに対応する出力ポートを、マルチキャストパケットを出力する出力ポートとして指定してもよい。
また、本発明の経路設定方法のマルチキャスト制御情報保持処理では、更新の対象とするビットを含むマルチキャスト制御情報を、マルチキャストIDによって指定してもよい。
また、本発明の経路設定方法は、入力ポートに経路設定コマンドが入力されたときに、経路設定コマンドの転送先情報が示す宛先と、経路設定コマンドが入力されたネットワークスイッチとが一致するか否かを判別する宛先一致判別処理、を有し、加算処理では、宛先一致判別処理にて一致すると判別した場合、経路設定完了プロセス数をカウントしてもよい。
また、本発明の経路設定方法は、経路設定コマンドに含まれるマルチキャスト通信を実行させるプロセス数を保持するプロセス数保持処理、を有し、比較処理では、加算処理にてカウントした経路設定完了プロセス数と、プロセス数保持処理にて保持しているマルチキャスト通信を実行させるプロセス数とが一致するか否かを判別してもよい。
また、本発明の経路設定方法は、比較処理にてマルチキャスト通信の転送経路設定が完了したことを識別した場合、転送経路設定が完了したことを示す経路設定完了通知を生成し、生成した経路設定完了通知を、入力ポートに入力された経路設定コマンドの送信元に転送する完了通知生成処理、を有してもよい。
また、本発明の経路設定方法の完了通知生成処理では、マルチキャスト制御処理にて設定した転送経路に従って行われるマルチキャスト通信により、経路設定完了通知を転送してもよい。
また、本発明の経路設定方法では、経路設定コマンドによってマルチキャスト制御処理にて転送経路を設定する際に、マルチキャストパケットは、相互結合網上を経路設定コマンドが転送された方向と逆向きに転送されるよう、転送経路を設定してもよい。
また、本発明のプログラムのマルチキャスト制御情報保持手順では、マルチキャスト制御手順にて転送経路設定を指示するコマンドである経路設定コマンドが入力された入力ポートに基づいて、複数の出力ポートのうちからマルチキャストパケットを出力するための出力ポートを指定してもよい。
また、本発明のプログラムのマルチキャスト制御情報保持手順では、複数の出力ポートにそれぞれ対応付けられた複数のビットを含むマルチキャスト制御情報を保持し、ビットに設定されている値の更新により、更新したビットに対応する出力ポートを、マルチキャストパケットを出力する出力ポートとして指定してもよい。
また、本発明のプログラムのマルチキャスト制御情報保持手順では、更新の対象とするビットを含むマルチキャスト制御情報を、マルチキャストIDによって指定してもよい。
また、本発明のプログラムは、入力ポートに経路設定コマンドが入力されたときに、経路設定コマンドの転送先情報が示す宛先と、経路設定コマンドが入力されたネットワークスイッチとが一致するか否かを判別する宛先一致判別手順、を有し、加算手順では、宛先一致判別手順にて一致すると判別した場合、経路設定完了プロセス数をカウントしてもよい。
また、本発明のプログラムは、経路設定コマンドに含まれるマルチキャスト通信を実行させるプロセス数を保持するプロセス数保持手順、を有し、比較手順では、加算手順にてカウントした経路設定完了プロセス数と、プロセス数保持手順にて保持しているマルチキャスト通信を実行させるプロセス数とが一致するか否かを判別してもよい。
また、本発明のプログラムは、比較手順にてマルチキャスト通信の転送経路設定が完了したことを識別した場合、転送経路設定が完了したことを示す経路設定完了通知を生成し、生成した経路設定完了通知を、入力ポートに入力された経路設定コマンドの送信元に転送する完了通知生成手順、を有してもよい。
また、本発明のプログラムの完了通知生成手順では、マルチキャスト制御手順にて設定した転送経路に従って行われるマルチキャスト通信により、経路設定完了通知を転送してもよい。
また、本発明のプログラムでは、経路設定コマンドによってマルチキャスト制御手順にて転送経路を設定する際に、マルチキャストパケットは、相互結合網上を経路設定コマンドが転送された方向と逆向きに転送されるよう、転送経路を設定してもよい。
以上、本実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明の要旨を逸脱しない範囲で当業者が理解し得る各種の変形が可能である。
この出願は、2008年2月8日に出願された日本出願特願2008−028890を基礎とする優先権を主張し、その開示のすべてをここに取り込む。