(57)【特許請求の範囲】
【請求項１】
複数の計算機ノードが複数のチャネルによって相互に接続された二次元トーラス状の並列計算機ネットワークにおいて、送信元の計算機ノードから送信されたメッセージが最初にＸ方向に転送され、続いてＹ方向に転送されることによって中継計算機ノードを経由して送信相手先の計算機ノードへ転送される場合の、前記送信元の計算機ノードが、前記メッセージの転送に使用するチャネルを決定するチャネルの決定方法であって、
前記各計算機ノードにネットワーク内の各計算機ノードの位置に応じた前記複数のチャネルのいずれか１つのチャネルを示すチャネル番号をそれぞれ割り当てるステップと、
前記送信元の計算機ノードが、前記メッセージの転送方向をＸ方向からＹ方向へ変更する前記中継計算機ノードの位置に関する位置情報を取得するステップと、
前記取得された中継計算機ノードの位置情報に基づいて、その中継計算機ノードに割り当てられたチャネル番号を取得するステップと、
前記取得されたチャネル番号に該当するチャネルを、少なくとも前記中継計算機ノードへの前記メッセージの転送に使用するチャネルとして決定するステップと、
を備えることを特徴とするチャネルの決定方法。
【請求項２】
複数の計算機ノードが複数のチャネルによって相互に接続された二次元トーラス状の並列計算機ネットワークにおいて、送信元の計算機ノードから送信されたメッセージが最初にＸ方向に転送され、続いてＹ方向に転送されることによって中継計算機ノードを経由して送信相手先の計算機ノードへ転送される場合の、前記送信元の計算機ノードが、前記メッセージの転送に使用するチャネルを決定するチャネルの決定方法であって、
前記並列計算機ネットワークを複数の領域に分割し、各領域に前記複数のチャネルのいずれか１つのチャネルを示すチャネル番号をそれぞれ割り当てるステップと、
前記送信元の計算機ノードが、前記メッセージの転送方向をＸ方向からＹ方向へ変更する前記中継計算機の位置に関する位置情報を取得するステップと、
前記取得された中継計算機ノードの位置情報に基づいて、その中継計算機ノードが前記複数の領域のいずれに存するかを判定するステップと、
前記判定された中継計算機ノードが存する領域に割り当てられたチャネル番号を取得するステップと、
前記取得されたチャネル番号に該当するチャネルを、少なくとも前記中継計算機ノードへのメッセージ転送に使用するチャネルとして決定するステップと、
を備えることを特徴とするチャネルの決定方法。
【請求項３】
複数の計算機ノードが複数のチャネルによって相互に接続されたトーラス状の並列計算機ネットワークにおいて、メッセージが送信元の計算機ノードから中継計算機ノードを経由して送信相手先の計算機ノードへ転送される際に、前記送信元の計算機ノードが、前記メッセージの転送に使用するチャネルを決定するチャネルの決定方法であって、
前記並列計算機ネットワークを複数の領域に分割し、各領域に前記複数のチャネルのいずれか１つのチャネルを示すチャネル番号をそれぞれ割り当てるステップと、
前記メッセージを一方向にのみ転送する場合には、前記送信元の計算機ノードが、前記送信相手先の計算機ノードの位置に関する位置情報を取得するステップと、
前記取得された送信相手先の計算機ノードの位置情報に基づいて、その送信相手先の計算機ノードが前記複数の領域のいずれに存するかを判定するステップと、
前記判定された送信相手先の計算機ノードが存する領域に割り当てられたチャネル番号を取得するステップと、
前記取得されたチャネル番号に該当するチャネルを、少なくとも前記送信相手先の計算機ノードへのメッセージ転送に使用するチャネルとして決定するステップと、
を備えることを特徴とするチャネルの決定方法。
【請求項４】
複数の計算機ノードが複数のチャネルによって相互に接続されたトーラス状の並列計算機ネットワークにおいて、メッセージが送信元の計算機ノードから中継計算機ノードを経由して送信相手先の計算機ノードへ転送される際に、前記送信元の計算機ノードが、前記メッセージの転送に使用するチャネルを決定するチャネルの決定方法であって、
前記並列計算機ネットワークを複数の領域に分割し、各領域に前記複数のチャネルのいずれか１つのチャネルを示すチャネル番号をそれぞれ割り当てるステップと、
前記メッセージを一方向にのみ転送する場合には、前記送信元の計算機ノードが、自己の位置に関する位置情報を取得するステップと、
前記取得された送信元の計算機ノードの位置情報に基づいて、その送信元の計算機ノードが前記複数の領域のいずれに存するかを判定するステップと、
前記判定された送信元の計算機ノードが存する領域に割り当てられたチャネル番号を取得するステップと、
前記取得されたチャネル番号に該当するチャネルを、少なくとも前記中継計算機ノードへのメッセージ転送に使用するチャネルとして決定するステップと、
を備えることを特徴とするチャネルの決定方法。
【請求項５】
複数の計算機ノードが複数のチャネルによって相互に連結された二次元メッシュ状の並列計算機ネットワークにおいて、メッセージが送信元の計算機ノードから中継計算機ノードを経由して送信相手先の計算機ノードへ転送される際に、前記送信元の計算機ノードが、前記メッセージの転送に使用するチャネルを決定するチャネルの決定方法であって、
前記各計算機ノードに前記並列計算機ネットワーク内の各計算機ノードの絶対位置に応じた前記複数のチャネルのいずれか１つのチャネルを示すチャネル番号をそれぞれ割り当てるステップと、
前記送信元の計算機ノードが、前記送信相手先の計算機ノードの絶対位置に関する絶対位置情報を取得するステップと、
前記取得された送信相手先の計算機ノードの絶対位置情報に基づいて、その送信相手先の計算機ノードに割り当てられたチャネル番号を取得するステップと、
前記取得されたチャネル番号に該当するチャネルを、少なくとも前記中継計算機ノードへの前記メッセージの転送に使用するチャネルとして決定するステップと、
を備えることを特徴とするチャネルの決定方法。
【請求項６】
複数の計算機ノードが複数のチャネルによって相互に連結された二次元メッシュ状の並列計算機ネットワークにおいて、メッセージが送信元の計算機ノードから中継計算機ノードを経由して送信相手先の計算機ノードへ転送される際に、前記送信元の計算機ノードが、前記メッセージの転送に使用するチャネルを決定するチャネルの決定方法であって、
前記各チャネルに番号をそれぞれ割り当てるステップと、
前記送信元の計算機ノードが、前記送信相手先の計算機ノードの前記二次元メッシュ状の並列計算機ネットワーク内におけるＸ方向の位置及びＹ方向の位置を含む絶対位置情報を取得するステップと、
前記取得された送信相手先の計算機ノードの絶対位置情報に含まれるＸ方向の位置及びＹ方向の位置に関し、このＸ方向の位置からＹ方向の位置を減算した値を前記複数のチャネル数で割った際の剰余を算出するステップと、
前記算出された剰余の数に対応する番号の割り当てられたチャネルを、少なくとも前記中継計算機ノードへの前記メッセージの転送に使用するチャネルとして決定するステップと、
を備えることを特徴とするチャネルの決定方法。
【請求項７】
複数の計算機ノードが複数のチャネルによって相互に接続され、送信元計算機ノードから、計算機ノードの位置に対応するチャネル番号が割り当てられた送信先計算機ノード或いは中継計算機ノードに向けてメッセージを転送する並列計算機ネットワークにおける、メッセージの転送に使用するチャネルの決定方法であって、
前記送信元計算機ノードが、
前記並列計算機ネットワーク内の前記中継計算機ノード或いは前記送信先計算機ノードの位置を取得するステップと、
前記取得された中継計算機ノード或いは送信先計算機ノードの位置に基づいて、前記中継計算機ノード或いは前記送信先計算機ノードに割り当てられたチャネル番号に該当するチャネルを、前記中継計算機ノード或いは前記送信先計算機ノードへのメッセージ転送に用いるチャネルとして決定するステップと、
前記決定されたチャネルを介して、前記中継計算機ノード或いは前記送信先計算機ノードへメッセージを転送するステップと、
を備えることを特徴とするチャネルの決定方法。
【請求項８】
複数の計算機ノードが複数のチャネルによって相互に接続され、送信元計算機ノードから中継計算機ノード或いは送信先計算機ノードにメッセージを転送する、複数の領域に分割された並列計算機ネットワークにおける、メッセージの転送に使用するチャネルの決定方法であって、
前記送信元計算機ノードが、
前記中継計算機ノード或いは前記送信先計算機ノードが属する前記並列計算機ネットワークの領域を判定するステップと、
前記判定された領域に対して割り当てられたチャネル番号を取得するステップと、
前記取得されたチャネル番号に対応したチャネルを介して、前記中継計算機ノード或いは前記送信先計算機ノードにメッセージを転送するステップと、
を備えることを特徴とするチャネルの決定方法。
【請求項９】
複数の計算機ノードが複数のチャネルによって相互に接続され、メッセージが送信元の計算機ノードから送信相手先の計算機ノードへ転送される並列計算機ネットワークにおける、メッセージの転送に使用するチャネルを決定するチャネルの決定方法であって、
前記送信元の計算機ノードが、
前記並列計算機ネットワーク内における自己の位置を取得するステップと、
前記取得された自己の位置に割り当てられたチャネルの番号に該当するチャネルを、前
記送信先の計算機ノードへのメッセージ転送に使用するチャネルとして決定するステップと、
を備えることを特徴とするチャネルの決定方法。
【請求項１０】
複数の計算機ノードが複数のチャネルによって相互に接続され、メッセージが送信元の計算機ノードから中継計算機ノードを経由して送信相手先の計算機ノードへ転送される並列計算機ネットワークにおける、メッセージの転送に使用するチャネルの決定方法であって、
前記送信元の計算機ノードが、
前記送信相手先の計算機ノードのＸ方向の位置及びＹ方向の位置を取得するステップと、
前記送信相手先の計算機ノードのＸ方向の位置からＹ方向の位置を減算した値を前記複数のチャネル数で割った際の剰余に対応する番号のチャネルを、前記中継計算機ノードへのメッセージ転送に使用するチャネルとして決定するステップと、
を備えることを特徴とするチャネルの決定方法。
【請求項１１】
複数のノードが複数のチャネルによって相互に接続され、送信元ノードにて生成されたメッセージが中継ノードに向けて転送された後に、前記中継ノードから送信先ノードに向けてメッセージが転送されるネットワークシステムにおいて、
前記複数のノードのそれぞれに、前記ネットワークシステム内の前記ノードの位置に応じた、前記複数のチャネルのいずれかを示すチャネル番号が割り当てられ、
前記送信元ノードが、
前記中継ノードの位置を取得する手段と、
前記中継ノードの位置に対応して割り当てられたチャネル番号を取得する手段と、
前記取得されたチャネル番号を有するチャネルを、前記中継ノードにメッセージを転送するチャネルとして決定する手段と、
前記決定されたチャネルを介して、前記中継ノードにメッセージを転送する手段と、
を備えることを特徴とするネットワークシステム。
【請求項１２】
複数のノードが複数のチャネルによって相互に接続され、送信元ノードから中継ノードにメッセージが転送された後に、前記中継ノードから送信先ノードにメッセージが転送されるネットワークシステムにおいて、
前記ネットワークシステムが複数の領域に分割されているとともに、前記分割された領域ごとに、前記複数のチャネルのいずれかを示すチャネル番号が割り当てられ、
前記送信元ノードが、
前記中継ノードが存在する前記ネットワークシステムの領域を判定する手段と、
前記判定された領域に割り当てられたチャネル番号を取得する手段と、
前記取得されたチャネル番号を有するチャネルを、前記中継ノードにメッセージを転送するチャネルとして割り当てる手段と、
前記割り当てられたチャネルを介して、前記中継ノードにメッセージを転送する手段と、
を備えることを特徴とするネットワークシステム。
【請求項１３】
複数のノードが複数のチャネルによって相互に接続され、送信元ノードにて生成されたメッセージが送信先ノードに対して転送されるネットワークシステムにおいて、
前記複数のノードのそれぞれに、前記ネットワークシステム内の前記ノードの位置に応じた、前記複数のチャネルのいずれかを示すチャネル番号が割り当てられ、
メッセージの送信元となるノードが、
前記メッセージの送信先となるノードの位置を取得する手段と、
前記送信先ノードの位置に対応して割り当てられたチャネル番号を判別する手段と、
前記判別されたチャネル番号を有するチャネルを、前記送信先ノードへメッセージを転送するチャネルとして決定する手段と、
前記決定されたチャネルを介して、前記送信先ノードにメッセージを転送する手段と、
を備えることを特徴とするネットワークシステム。
【請求項１４】
複数のノードが複数のチャネルによって相互に接続されたネットワークシステムにおいて、
前記ネットワークシステムは複数の領域に分割されているとともに、前記分割された領域ごとに、前記複数のチャネルのいずれかを示すチャネル番号が割り当てられ、
前記ノードが、
自装置が属する前記ネットワークシステムの領域に対して割り当てられているチャネル番号を取得する手段と、
前記取得されたチャネル番号を有するチャネルを、送信先ノードへメッセージを送信するチャネルとして選択する手段と、
前記選択されたチャネルを介して、前記送信先ノードにメッセージを転送する手段と、
を備えることを特徴とするネットワークシステム。
【請求項１５】
複数のノードが複数のチャネルによって相互に接続され、送信元ノードから中継ノードにメッセージが転送された後に、前記中継ノードから送信先ノードにメッセージが転送されるネットワークシステムにおいて、
前記複数のノードのそれぞれに、前記ネットワークシステム内の前記ノードの位置に応じた、前記複数のチャネルのいずれかを示すチャネル番号が割り当てられ、
前記メッセージの送信元となるノードが、
前記メッセージの送信先となるノードの位置を取得する手段と、
前記位置が取得された送信先ノードに割り当てられたチャネル番号を判別する手段と、
前記判別されたチャネル番号を有するチャネルを、前記中継ノードへメッセージを転送するチャネルとして決定する手段と、
前記決定されたチャネルを介して、前記中継ノードにメッセージを転送する手段と、
を備えることを特徴とするネットワークシステム。
【請求項１６】
複数のノードが複数のチャネルによってＸ方向及びＹ方向に相互に接続され、送信元ノードから中継ノードにメッセージが転送された後に、前記中継ノードから送信先ノードにメッセージが転送されるネットワークシステムにおいて、
前記複数のノードのそれぞれに、前記ネットワークシステム内の前記ノードの位置に応じた、前記複数のチャネルのいずれかを示すチャネル番号が割り当てられ、
前記メッセージの送信元となるノードが、
前記メッセージの送信先となるノードのＸ方向及びＹ方向の位置を取得する手段と、
前記送信先ノードのＸ方向の位置からＹ方向の位置を減算した値を、前記複数のチャネルの数で割った際の剰余に対応する番号をチャネル番号として有するチャネルを、前記中継ノードにメッセージを転送するチャネルとして決定する手段と、
前記決定されたチャネルを介して、前記中継ノードにメッセージを転送する手段と、
を備えることを特徴とするネットワークシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のノードが複数のチャネル（通信路）により相互に接続された二次元トーラス状，又は二次元メッシュ状の並列計算機ネットワークにおいて、メッセージ転送の際に使用するチャネルを決定するチャネルの決定方法に関する。
【０００２】
【従来の技術】
並列計算機ネットワークにおける各計算機ノード（プロセッシングエレメント：以下、「ノード」という。）間のメッセージ転送方法の一つには、ワームホールルーティングと呼ばれる方法がある。ワームホールルーティングでは、メッセージがフリットと呼ばれる最小転送単位，例えば数バイトのデータに分割される。そして、メッセージの最初のフリット，すなわちヘッダフリットが送信元ノードと送信相手先ノードとの間の中継ルートを作りながらネットワーク内で転送されていく。すなわち、あるノードがメッセージのヘッダフリットを送信元ノード側から受信すると、そのヘッダフリットが示す送信相手先ノードによって中継ルートとなるチャネルを選択し、ヘッダフリット及び後続のデータフリットをそのチャネルを介して送信相手先ノード側へ転送する。このとき、転送されるメッセージは、送信ノードと受信ノードとの間の中継ルートをずっと専有した形式、すなわち、チャネル上で数珠つなぎの形式で転送される。従って、メッセージの最後のフリットが送信ノードから出力される前にヘッダフリットが受信ノードに到着することもある。
【０００３】
なお、ヘッダフリット以外のフリットは、ルーティングの情報を持っていないが、このフリットはネットワーク内の連続したチャネル上で転送されるために他のメッセージのフリットによってインターリブされることはない。もっとも、メッセージのヘッダフリットがブロックされた場合には、そのメッセージの全てのフリットの転送が停止され、さらに、そのメッセージ転送に使用されているチャネルを必要とする他のメッセージの転送もブロックされる。
【０００４】
ところで、図１２に示されるように、複数のノードがトーラス（円環）状に接続された並列計算機のネットワークにおいてワームホールルーティングを使用する場合には、全てのメッセージのフリットの転送がブロックされるいわゆるデッドロックの発生を回避する必要がある。以下、図１３を用いてデッドロックを説明する。図１３において、ネットワークは一次元トーラス状のトポロジを有し、四つのノード(1)，(2)，(3)及び(4)，それらを接続する単一方向のチャネルａ，ｂ，ｃ及びｄによって構成されている。そして、ノード(1)がノード(3)へ，ノード(2)がノード(4)へ，ノード(3)がノード(1)へ，そしてノード(4)がノード(2)へ、同時にワームホールルーティングで右回りにメッセージの転送を開始したとする。すると、最初のクロックにおいて、ノード(1)からのフリットはチャネルａ，ノード(2)からのフリットはチャネルｂ，ノード(3)からのフリットはチャネルｃ、ノード(4)からのフリットはチャネルｄを用いて転送される。しかしながら、次のクロックにおいて、例えば、ノード(2)に受信されたノード(1)からのフリットは、既にチャネルｂがノード(2)からのフリットの送信に用いられているために、チャネルｂを使用できずにブロックされる。また、ノード(2)から送信されるメッセージの次のフリットも、同様にチャネルｃを使用できずにブロックされる。ノード(3)，ノード(4)から送信されるメッセージも全く同様にブロックされ、全てのメッセージがブロックされてしまう。このように同一のクロックにおけるチャネルの依存関係にループが生じ、全くメッセージ転送ができなくなってしまう状態がデッドロックである。
【０００５】
このようなデッドロックを回避する方法の一つにＤａｌｌｙらの米国特許発明（U.S.Patent 4,933,933）がある。この発明では、デッドロック回避のアルゴリズムとして、二重の仮想チャネルが用いられている。図１４は、仮想チャネルの概要を示すブロック図である。図１４において、送信側ノード５０と受信側ノード５１とは、一つの物理チャネル５２で接続されている。受信側ノード５１は、一組のバッファ（ＦＩＦＯ; First-in First out）５３ａ，５３ｂ及び受信処理系５４を備えている。そして、送信側ノード５０から別個独立の二つ（２チャネル分）のメッセージのフリットが送信されると、これらの二つのフリットは、時分割伝送により一つの物理チャネル５２で伝送される。受信側ノード５１では、二つのフリットが二つのメッセージにそれぞれ復元され、一方のメッセージが一方のバッファ５３ａに、他方のメッセージが他方のバッファ５３ｂに格納される。そして、受信処理系５４が１組のバッファ５３ａ，５３ｂにそれぞれ格納されたメッセージを、適宜取り出すとともに別個に処理することによって、あたかも物理チャネルが二つあるように見せかけられるのである。
【０００６】
この仮想チャネルを使用したデッドロック回避方法を図１５を用いて説明する。図１５において、四つのノード(1)，(2)，(3)及び(4)が単一方向のチャネルで接続されることによって、ネットワークが構成されている。各ノード間を接続するチャネルは、図１４を用いて説明した仮想チャネルによって、クラス（チャネル番号）０とクラス（チャネル番号）１との二重チャネルとして形成されている。すなわち、各ノード間が、二重の仮想チャネルａ0，ａ1，仮想チャネルｂ0，ｂ1，仮想チャネルｃ0，ｃ1，及び，仮想チャネルｄ0，ｄ1によって、それぞれ接続された状態になっている。
【０００７】
各二重の仮想チャネルを構成する一組のバッファ（図示略）は、ノード間を転送されるメッセージのフリットが一つの場合には、いずれか一方のバッファにメッセージのフリットをストアし、このストアされたメッセージのフリットは、それ以後のクロックにおいて隣接ノードへ転送されるようになっている。これに対し、ノード間を転送されるメッセージのフリットが二つの別個独立のものである場合には、一組のバッファのそれぞれに各メッセージのフリットがそれぞれ別個にストアされるようになっている。そして、各バッファにストアされた二つの別個独立のメッセージのフリットのうち、どちらを先に隣接ノードへ転送するかが決定され、この決定順に各メッセージのフリットが別個のクロックにおいて隣接ノードへ転送されるようになっている。
【０００８】
図１５に示されたネットワークにおいて、ノード(1)〜(4)が、図１３に示されるノード(1)〜(4)と同様に、ワームホールルーティングで右回りにそれぞれ別個のメッセージの転送を同時に開始したとする。その際における各メッセージのフリットは、以下のようなルート（チャネル）を通って各ノード間を次々と転送される。
【０００９】
ノード(1)のメッセージのフリット：(1)−ａ0→(2)−ｂ0→(3)
ノード(2)のメッセージのフリット：(2)−ｂ0→(3)−ｃ0→(4)
ノード(3)のメッセージのフリット：(3)−ｃ0→(4)−ｄ0→(1)
ノード(4)のメッセージのフリット：(4)−ｄ0→(1)−ａ1→(2)
但し、縦に並んでいるチャネルは、あるクロックの時点で使用されているチャネルを示す。上記のように、一回目のクロックにおいては、各二重の仮想チャネルのうちチャネル番号０の仮想チャネルをメッセージのフリット転送用のチャネルとしてそれぞれ割り当てる。これに対し、二回目以降のクロックにおいては、転送される複数のメッセージのフリットのうち、ノード(1)を通過するメッセージのフリットがチャネル番号１の仮想チャネルによって転送されるとともに、その他のメッセージのフリットがチャネル番号０の仮想チャネルで転送されるように仮想チャネルを割り当てる。このようにすれば、同一のクロックにおいてメッセージ転送に使用されるチャネルの依存関係からループが取り除かれる。従って、デッドロックが回避される。
【００１０】
【発明が解決しようとする課題】
しかし、上記した方法において、メッセージを中継するための仮想チャネルは、各ノード(1)〜(4)において別個に決定され割り当てられていた。すなわち、中継ノードは、メッセージのヘッダフリットを受信する度に、仮想チャネルの割当処理を行っていた。従って、不要な仮想チャネルの割当処理によって、転送スループットが低下する場合があった。この問題は、メッシュ状のネットワークの場合においても共通する問題であった。
【００１１】
本発明は、上記問題に鑑みなされたものであり、二次元トーラス状のネットワークにおいて、デッドロックを回避しつつ、転送スループットの向上を図ることのできるチャネルの決定方法を提供することを第１の課題とする。
【００１２】
また、二次元トーラス状のネットワークにおいて、メッセージの中継ノードにおけるチャネルの割当処理を省略し得るチャネルの決定方法を提供することを第２の課題とする。
【００１３】
また、二次元メッシュ状のネットワークにおいて、メッセージの転送スループットの向上を図ることのできるチャネルの決定方法を提供することを第３の課題とする。
【００１４】
さらに、二次元メッシュ状のネットワークにおいて、メッセージの中継ノードにおけるチャネルの割当処理を省略し得るチャネルの決定方法を提供することを第４の課題とする。
【００１５】
【課題を解決するための手段】
本発明によるチャネルの決定方法は、上述した第１及び第２の課題を解決するため、以下の構成を採用する。すなわち、本発明は、複数の計算機ノードが複数のチャネルによって相互に接続された二次元トーラス状の並列計算機ネットワークにおいて、最初にＸ方向にメッセージが転送され、続いてＹ方向に前記メッセージが転送されることによって、前記メッセージが送信元の計算機ノードから中継計算機ノードを経由して送信相手先の計算機ノードへ転送される際に、前記送信元の計算機ノードが、前記メッセージの転送に使用するチャネルを決定するチャネルの決定方法であって、前記複数の計算機ノードに前記複数のチャネルの番号がそれぞれ割り当てられ、前記送信元の計算機ノードが、前記メッセージの転送方向をＸ方向からＹ方向へ変更する中継計算機ノードの位置を取得するとともに、その中継計算機ノードの位置に割り当てられたチャネルの番号に該当するチャネルを、少なくとも前記中継計算機ノードへの前記メッセージの転送に使用するチャネルとして決定することを特徴とする。
【００１６】
ここに、複数のチャネルは、物理チャネルであっても良いが、前記複数のノード間をそれぞれ接続する二重の仮想チャネルであり、前記二重の仮想チャネルのうち、いずれか一方の仮想チャネルが、前記メッセージ転送に用いるチャネルとして決定されるようにするのが好ましい。
【００１７】
また、本発明は、複数の計算機ノードが複数のチャネルによって相互に接続された二次元トーラス状の並列計算機ネットワークにおいて、最初にＸ方向にメッセージが転送され、続いてＹ方向に前記メッセージが転送されることによって、前記メッセージが送信元の計算機ノードから中継計算機ノードを経由して送信相手先の計算機ノードへ転送される際に、前記送信元の計算機ノードが、前記メッセージの転送に使用するチャネルを決定するチャネルの決定方法であって、前記並列計算機ネットワークを複数の領域に分割するとともに、各領域毎に前記複数のチャネルの番号がそれぞれ割り当てられ、前記送信元の計算機ノードが、前記メッセージの転送方向をＸ方向からＹ方向へ変更する中継計算機の位置を取得するとともに、その中継計算機ノードが前記複数の領域のいずれに存するかを判定し、さらに、前記メッセージの転送方向をＸ方向からＹ方向へ変更する中継計算機ノードが存する領域に割り当てられたチャネルの番号に該当するチャネルを、少なくとも前記中継計算機ノードへのメッセージ転送に使用するチャネルとして決定することを特徴とする。
【００１８】
また、本発明は、複数の計算機ノードが複数のチャネルによって相互に接続されたトーラス状の並列計算機ネットワークにおいて、メッセージが送信元の計算機ノードから中継計算機ノードを経由して送信相手先の計算機ノードへ転送される際に、前記送信元の計算機ノードが、前記メッセージの転送に使用するチャネルを決定するチャネルの決定方法であって、前記複数の計算機ノードに前記複数のチャネルの番号がそれぞれ割り当てられ、前記メッセージを一方向にのみ転送する場合には、前記送信元の計算機ノードが、前記送信相手先の計算機ノードの位置を取得するとともに、この送信相手先の計算機ノードの位置に割り当てられたチャネルの番号に該当するチャネルを、少なくとも前記中継計算機ノードへのメッセージの転送に使用するチャネルとして決定することを特徴とする。
【００１９】
ここに、トーラス状の並列計算機ネットワークは、一次元であっても良く、二次元であっても良い。また、本発明は、複数の計算機ノードが複数のチャネルによって相互に接続されたトーラス状の並列計算機ネットワークにおいて、メッセージが送信元の計算機ノードから中継計算機ノードを経由して送信相手先の計算機ノードへ転送される際に、前記送信元の計算機ノードが、前記メッセージの転送に使用するチャネルを決定するチャネルの決定方法であって、前記複数の計算機ノードに前記複数のチャネルの番号がそれぞれ割り当てられ、前記メッセージを一方向にのみ転送する場合には、前記送信元の計算機ノードが、自己の位置を取得するとともに、この自己の位置に割り当てられたチャネルの番号に該当するチャネルを、少なくとも前記中継計算機ノードへのメッセージの転送に使用するチャネルとして決定することを特徴とする。
【００２０】
本発明は、チャネルの決定方法において、前記送信元の計算機ノードによって決定されたチャネルの番号に該当するチャネルが、前記送信元の計算機ノードから前記送信相手先の計算機ノードまでの間におけるメッセージの転送に使用されることで、特定することができる。
【００２１】
本発明によるチャネルの決定方法は、上述した第３及び第４の課題を解決するため以下の構成を採用する。すなわち、本発明は、複数の計算機ノードが複数のチャネルによって相互に連結された二次元メッシュ状の並列計算機ネットワークにおいて、メッセージが送信元の計算機ノードから中継計算機ノードを経由して送信相手先の計算機ノードへ転送される際に、前記送信元の計算機ノードが、前記メッセージの転送に使用するチャネルを決定するチャネルの決定方法であって、前記複数の計算機ノードに前記複数のチャネルの番号がそれぞれ割り当てられ、前記送信元の計算機ノードが、前記送信相手先の計算機ノードの位置を取得するとともに、その送信相手先の計算機ノードの位置に割り当てられたチャネルの番号に該当するチャネルを、少なくとも前記中継計算機ノードへの前記メッセージの転送に使用するチャネルとして決定することを特徴とする。
【００２２】
また、本発明は、複数の計算機ノードが複数のチャネルによって相互に連結された二次元メッシュ状の並列計算機ネットワークにおいて、メッセージが送信元の計算機ノードから中継計算機ノードを経由して送信相手先の計算機ノードへ転送される際に、前記送信元の計算機ノードが、前記メッセージの転送に使用するチャネルを決定するチャネルの決定方法であって、前記複数のチャネルに番号がそれぞれ割り当てられ、前記送信元の計算機ノードが、前記送信相手先の計算機ノードのＸ方向の位置及びＹ方向の位置を取得するとともに、その送信相手先の計算機ノードのＸ方向の位置からＹ方向の位置を減算した値を前記複数のチャネル数で割った際の剰余に対応する番号のチャネルを、少なくとも前記中継計算機ノードへの前記メッセージの転送に使用するチャネルとして決定することを特徴とする。
【００２３】
ここに、複数のチャネルは物理チャネルでも良いが、前記複数の計算機ノード間を接続する複数の仮想チャネルであることが好ましい。また、仮想チャネルの数は２以上であれば幾つでも良いが、例えば、２又は４であることが好ましい。
【００２４】
また、本発明は、チャネルの決定方法において、前記送信元の計算機ノードによって決定されたチャネル番号に該当するチャネルが、前記送信元の計算機ノードから送信相手先の計算機ノードまでの間におけるメッセージの転送に使用されることで、特定することができる。
【００２５】
【発明の実施の形態】
本発明による好適な実施形態を図に基づいて詳細に説明する。
〈実施形態１〉
図１は、実施形態１によるチャネルの決定方法を使用する並列計算機のネットワークの全体構成図である。図１において、ネットワークは、二次元トーラス状のトポロジを有しており、東西方向（±ｘ方向）に沿って８個，南北方向（±ｙ方向）に沿って８個並べられた計６４個の計算機ノード１（以下、「ノード」という。）から構成されている。このネットワークを構成する各ノード１は、東西南北方向に隣接するノードと物理チャネルＣＨによってそれぞれ接続されている。各物理チャネルＣＨは双方向のものとなっている。そして、このネットワークの中心から北西方向に向かって最も遠い位置に配置されたノード（図１のネットワークの左上頂点を形成するノード）の位置座標が原点（０，０）とされている。
【００２６】
次に、各ノード１の内部構成を図２を用いて説明する。図２において、ノード１は、メッセージ生成部２，受信処理系３，ルーティングコントローラ４，及び中央処理装置５を備えている。メッセージ生成部２は、他のノードに対して転送するメッセージを生成するものであり、生成されたメッセージは、ルーティングコントローラ４に入力されるようになっている。また、受信処理系３は、ノード１が受信したメッセージを、ルーティングコントローラ４を介して受け取り適宜処理するものである。また、ルーティングコントローラ４は、メッセージ生成部２によって生成されたメッセージ，あるいは隣接ノードから転送されてきたメッセージのルーティング処理及び／又はチャネル決定を行うものである。このため、ノード１間を接続する各物理チャネルＣＨが、ノード１内部においてルーティングコントローラ４に接続されている。また、中央処理装置５は、ＣＰＵ（Central Processing Unit），クロック等から構成されており、メッセージ生成部２に対してメッセージ生成の命令を与える。また、ルーティングコントローラ４に対してメッセージのルーティング命令を与える。さらに、受信処理系３に対して受信したメッセージの処理命令を与える等の制御を行う。
【００２７】
ここで、図１に示したネットワークにおけるメッセージ転送は、ワームホールルーティングによって行われる。すなわち、メッセージ生成部２によって生成されたメッセージが、フリットと呼ばれる数バイトからなる最小単位で分割されるとともに、メッセージ転送のルーティングが、ルーティングコントローラ４によって、一番最初のフリット（ヘッダフリット）に格納されたルーティング情報に基づいて行われるようになっている。このとき、送信元ノードから送信相手先ノードまでのルートは、最短距離が選択されるとともに、最初に東西方向（±ｘ方向）がルーティングされ、次に南北方向（±ｙ方向）がルーティングされるように設定されている。
【００２８】
図３は、ヘッダフリットの説明図である。図３において、ヘッダフリットには、その先頭にメッセージの転送方向が東（＋ｘ）方向または西（−ｘ）方向のいずれであるかを示すｘｓ，二番目に東または西方向のメッセージの転送距離（中継チャネル数）を示すｘｒｃｉｄ，三番目にメッセージの転送方向が南（＋ｙ）方向または北（−ｙ）方向のいずれであるかを示すｙｓ，四番目に南または北方向の転送距離（中継チャネル数）を示すｙｒｃｉｄが格納されている。そして、ｘｓが０のとき東方向，１のとき西方向にメッセージが転送され、ｙｓが０のとき南方向，１のとき北方向にメッセージが転送されるようになっている。例えば、図１に示されたあるノード１から西方向に３個，南方向に３個離れたノードへメッセージを転送する場合には、そのメッセージのヘッダフリットは、ｘｓ＝１，ｘｒｃｉｄ＝３，ｙｓ＝０，ｙｒｃｉｄ＝３となる。そして、メッセージが、送信元ノードから西方向へ３個離れたノードへ、次に南方向へ３個離れたノードへ転送されることによって、送信相手先ノードに送信される。
【００２９】
この場合において、送信元ノードから見た送信相手先の位置座標（ノード番号：Ｒｘ，Ｒｙ）は、（−３，＋３）と表される。そして、西方向（−ｘ方向）へメッセージが１ノード進む度に（Ｒｘ，Ｒｙ）のＲｘがデクリメントされ、送信元ノードから西方向に３個離れたノードにヘッダフリットが到達した時には、（Ｒｘ，Ｒｙ）が（０，＋３）となって、±ｘ方向のルーティングが終了する。続いて、±ｙ方向のルーティングが行われ、１ノード進む毎に今度はＲｙがデクリメントされる。そして、（Ｒｘ，Ｒｙ）が（０，０）になったときにヘッダフリットが送信相手先ノードに到達し、ルーティングが終了するようになっている。
【００３０】
次に、上述したルーティングを実行するためのルーティングコントローラ４の内部構成を説明する。ルーティングコントローラ４は、ＬＳＩ（大規模集積回路）により構成されており、図４において、第１受信宛先判定部６，第２受信宛先判定部７，仮想チャネル決定部８，スイッチ９，第１送信部１０，及び第２送信部１１から構成されている。四つの物理チャネルＣＨは、四つの第１受信宛先判定部６にそれぞれ接続されている。また、第２受信宛先判定部７は、メッセージ生成部２及び仮想チャネル決定部８に接続されている。これらの第１及び第２受信宛先判定部６，７は、スイッチ９に接続されている。また、スイッチ９は、四つの第１送信部１０及び第２送信部１１に接続されている。そして、各第１送信部１０は、それぞれ物理チャネルＣＨに接続され、第２送信部１１は、受信制御系３に接続されている。
【００３１】
ここに、第１受信宛先判定部６は、一組の図示せぬバッファを有しており、各バッファが、それぞれチャネル番号０，チャネル番号１として割り当てられている。これによって、各ノード間が、二重の仮想チャネル（チャネル番号０，チャネル番号１）によって±ｘ方向及び±ｙ方向にそれぞれ接続された状態になっている。すなわち、物理チャネルＣＨから二種類のメッセージが時分割伝送で転送されてきた場合には、一方のメッセージがチャネル番号０の仮想チャネルに格納され、他方のメッセージがチャネル番号１の仮想チャネルに格納され、これらのメッセージが別個に読み出されて処理されるようになっている。また、各第１受信宛先判定部６は、受信したメッセージのヘッダフリットに格納されたルーティング情報に基づいて、東西南北のいずれの方向へメッセージを転送すべきかを判定するとともに、その判定結果に基づいてスイッチ９の切替動作を制御するようになっている。例えば、送信先ノードから見た相対的な送信相手先ノードの位置座標（Ｒｘ，Ｒｙ）が（−１，＋３）であって、ヘッダフリットに格納されたｘｓ（図３参照）が１である場合には、西方向へメッセージを転送すべきと判定し、西方向に存する隣接ノードに接続された物理チャネルＣＨにメッセージが転送されるようにスイッチ９を切り替える。もっとも、（Ｒｘ，Ｒｙ）が（０，０）の場合には、自ノードが送信相手先ノードであると判定し、第２送信部１１にメッセージが転送されるように、スイッチ９を切り替える。さらに、第１受信宛先判定部６は、受信したメッセージのヘッダフリットの送信相手先ノードの位置座標（Ｒｘ，Ｒｙ）をデクリメントするようになっている。
【００３２】
第２受信宛先判定部７は、図２に示したメッセージ生成部２によって生成されたメッセージを受け取るとともに、第１受信宛先判定部６と同様に、ヘッダフリットに格納されたルーティング情報に基づいて、東西南北いずれの方向へメッセージを転送すべきかを判定し、その判定結果に基づいてスイッチ９を切り替えるようになっている。
【００３３】
仮想チャネル決定部８は、第２受信宛先判定部７からメッセージを受け取って、そのメッセージのヘッダフリットに格納されたルーティング情報，自己が保有する自ノードの位置座標（ノード番号：Ｐｘ，Ｐｙ），及びネットワークの東西方向の大きさ（Ｎｘ）並びに南北方向の大きさ（Ｎｙ）を用い、そのメッセージの転送に使用する仮想チャネルのチャネル番号を、チャネル番号０，チャネル番号１のいずれから決定するようになっている。
【００３４】
スイッチ９は、上述したように、第１受信宛先判定部６または第２受信宛先判定部７の判定結果によってその切替動作が制御され、この判定結果に該当する方向の隣接ノードに接続された物理チャネルＣＨに第１送信部１０を介してメッセージを転送するようになっている。また、各第１送信部１０はインターフェイスとして機能し、メッセージのフリットを隣接ノードへ送出するようになっている。また、第２送信部１１は第１送信部１０とほぼ同様の構成を有し、メッセージのフリットを受信処理系４に対して送出するようになっている。
【００３５】
次に、仮想チャネル決定部８による仮想チャネルの決定方法を説明する。図５は、仮想チャネルの決定方法を示す説明図である。前提として、図５に示されるように、図１に示されるネットワークは、±ｘ方向に沿って二等分する仮想軸（軸Ｘ）で分割されるとともに、ネットワークをｙ方向に沿って二等分する仮想軸（軸Ｙ）で分割されることによって、均等に４分割される。さらに、軸Ｘと軸Ｙとの交点を原点とした場合において、第３象限に該当する領域Ａ，及び第１象限に該当する領域Ｄに存するノードに対してチャネル番号０が割り当てられる。一方、第４象限に該当する領域Ｂ，及び第２象限に該当する領域Ｃに存するノードに対してチャネル番号１が割り当てられる。そして、転送メッセージのルーティング方向を±ｘ方向から±ｙ方向に変更する中継ノード（目的ノード）が領域Ａ〜Ｄのいずれに属するかを、仮想チャネル決定部８が算出することによって、仮想チャネルのチャネル番号が決定される。
【００３６】
具体的には、上記した送信元ノード番号（Ｐｘ，Ｐｙ），ネットワークの大きさ（Ｎｘ，Ｎｙ），及び送信元ノードからみた送信相手先ノード番号（Ｒｘ）を用いて以下の演算を行う。
【００３７】
ＲＡｘ＝Ｎｘ−Ｐｘ    ・・・（式１）
Ｒ１ｘ＝−Ｐｘ        ・・・（式２）
Ｒ２ｘ＝Ｎｘ／２−Ｐｘ・・・（式３）
ここに、（式１）のＲＡｘは、（Ｐｘ，Ｐｙ）を原点とした場合の＋ｘ方向端部のｘ座標であり、（式２）のＲ１ｘは、（Ｐｘ，Ｐｙ）を原点とした場合の−ｘ方向端部のｘ座標であり、（式３）のＲ２ｘは、（Ｐｘ，Ｐｙ）を原点とした場合のｘ軸上のｘ座標である。
【００３８】
Ｈｘ：  Ｐｘ≧Ｎｘ／２  ・・・（式４）
Ｈｙ：  Ｐｙ≧Ｎｙ／２  ・・・（式５）
ここに、（式４）のＨｘは、Ｐｘがｘ軸よりも＋ｘ方向に存する場合には１，−ｘ方向に存するときには０を意味するものである。また、（式５）のＨｙは、Ｐｙがｙ軸よりも＋ｙ方向に存するときには１，−ｙ方向に存するときには０を意味するものである。
【００３９】
Ａｘ：  ＲＡｘ≧Ｒｘ  ・・・（式６）
Ｂｘ：  Ｒｘ≧Ｒ１ｘ  ・・・（式７：但し、−Ｎｘ／２≦Ｒｘ≦Ｎｘ／２）
Ｃｘ：  Ｒｘ≧Ｒ２ｘ  ・・・（式８）
ここに、（式６）のＡｘは、目的ノードの位置が＋ｘ端を越えないことを意味するものである。また、（式７）のＢｘは、目的ノードの位置が−ｘ端を越えないことを意味するものである。さらに、（式８）のＣｘは、目的ノードの位置がｘ軸よりも＋ｘ方向に存することを意味するものである。
【００４０】
そして、以下の（式９）の演算式によって、仮想チャネル番号を決定する。
ｃｈａｎｎｅｌ＝（（Ｈｘ）？Ａｘ＆Ｃｘ：！（Ｂｘ＆！Ｃｘ））！＝Ｈｙ  ・・・（式９）
但し、（式９）中の”＆”は演算子ＡＮＤを意味し、”！”は演算子ＮＯＴを意味する。また、”？〜：”は、Ｈｘが１の時には、Ａｘ＆Ｃｘの値を取り、Ｈｘが０の時には！（Ｂｘ＆！Ｃｘ）の値を取ることを意味する。さらに、”！＝”は、Ａｘ＆Ｃｘ又は！（Ｂｘ＆！Ｃｘ）の値とＨｙとを対比し、これらが等しくない場合には０（チャネル番号０）を決定し、等しい場合には１（チャネル番号１）を決定することを意味する。
【００４１】
上記のようにして、ルーティング方向を±ｘ方向から±ｙ方向に変更する中継ノードが、領域Ａ又は領域Ｄに存する場合には、メッセージ転送に使用する仮想チャネルとしてチャネル番号０が決定される。これに対し、中継ノードが領域Ｂ又は領域Ｃに存する場合には、チャネル番号１が決定される。
【００４２】
なお、±ｘ方向のみをルーティングする場合は、上述の場合における±ｘ方向から±ｙ方向にルーティング方向を変更する中継ノードが、送信相手先ノードとなることに等しいことから、送信相手先ノードの位置が領域Ａ〜Ｄのいずれに属するかによって、チャネル番号を決定するようになっている。一方、±ｙ方向のみをルーティングする場合には、上述の場合における±ｘ方向から±ｙ方向にルーティング方向を変更する中継ノードが、送信元ノードとなることに等しいことから、送信元ノード位置が領域Ａ〜Ｄのいずれに属するかによって、チャネル番号が決定されるようになっている。
【００４３】
図１に示されるネットワークにおいて、例えば、領域Ｂに存するノードαが、領域Ｃに存するノードβに対し、中継ノードｈ〜ｌを介してメッセージを転送する場合について以下に説明する。最初に、送信元ノードαのメッセージ生成部２（図４参照）によってメッセージが生成される。次に、メッセージがルーティングコントローラ４に入力され、第２受信宛先判定部７に送られる。第２受信宛先判定部７は、メッセージのヘッダフリット（図３参照）に格納されたルーティング情報に基づいて、メッセージを西方向（−ｘ方向）へ転送すべきと判断し、西方向の物理チャネルＣＨに接続された第１送信部１０にメッセージが入力されるようにスイッチ９を切り替える。また、仮想チャネル決定部８は、メッセージのヘッダフリットを第２受信宛先判定部７から受け取るとともに、上述した方法によってルーティング方向を±ｘ方向から±ｙ方向に変更する中継ノード（この場合は中継ノードｊ）が領域Ａに存すると判断し、メッセージ転送に使用する仮想チャネルとしてチャネル番号０を決定する。この決定された仮想チャネルのチャネル番号０は、メッセージ転送の前に、第１送信部１０を介して中継ノードｈ〜ｌ及び送信相手先ノードβに通知される。
【００４４】
続いて、メッセージのフリットが、第１送信部１０を介して西方向の物理チャネルＣＨから西方向の隣接ノード（中継ノードｈ）へ転送される。中継ノードｈにおける第１受信宛先判定部６では、予め通知されたチャネル番号０に従って、図示せぬチャネル番号０のバッファにメッセージを格納する。すなわち、チャネル番号０の仮想チャネルを通じてメッセージのフリットが転送された状態になる。そして、中継ノードｈの第１受信宛先判定部６は、送信元ノードαにおける第１宛先判定部６と同様にして、メッセージの宛先を判定するとともにスイッチ９を切り替える。そして、メッセージのフリットは第１送信部１０を介して中継ノードｉに転送される。中継ノードｉの第１受信宛先判定部７も、中継ノードｈの場合と同様にして、チャネル番号０のバッファにメッセージのフリットを格納する。このように、メッセージ転送には、送信元ノードから送信相手先ノードまで、送信元ノードαにおいて決定されたチャネル番号の仮想チャネル（この場合にはチャネル番号０）が割り当てられる。
そして、メッセージのヘッダフリットが中継ノードｊに転送された場合には、その第１受信宛先判定部６は、ヘッダフリットのルーティング情報からルーティング方向を西方向（−ｘ方向）から南方向（＋ｙ方向）へ変更すべきと判定し、南方向に延びた物理チャネルＣＨにメッセージのフリットが転送されるようにスイッチ９を切り替える。これによって、＋ｙ方向のルーティングが行われ、中継ノードｋ，ｌを介してメッセージのフリットが送信相手先ノードβに転送される。送信相手先ノードβでは、第１受信判定部６が、自ノードが送信相手先ノードであると判定し、第２送信部１１にメッセージが送られるようにスイッチ９を切り替える。そして、メッセージが第２送信部１１から受信処理系３に送られ適宜処理される。
【００４５】
実施形態１によるチャネルの決定方法によれば、図１に示されるネットワークにおいて、例えば、位置座標（０，０）から（０，７）の位置に存する八つのノード１が、東（＋ｘ）方向に二つ離れたノード１に対し、同時に右回りでメッセージの転送を開始した場合には、位置座標（０，０），（０，１），（０，６）及び（０，７）に存するノード１が、メッセージ転送にチャネル番号０の仮想チャネルを使用する。一方、位置座標（０，２），〜（０，５）に存するノード１が、メッセージ転送にチャネル番号１の仮想チャネルを使用する。このため、同一のクロックにおけるチャネルの依存関係にループが生じない。従って、デッドロック発生を回避することができる。
【００４６】
また、送信元ノードにおいてチャネルの番号を決定し、そのチャネル番号に該当する仮想チャネルを用いてメッセージ転送を行うため、中継ノードにおいて仮想チャネルを決定することを要しない。従って、中継ノードにおける仮想チャネル決定に要する時間だけ転送スループットを向上させることができる。また、中継ノードにおける仮想チャネル決定処理を要しないことから、従来のルーティングコントローラに搭載されていた中継メッセージのチャネル決定手段を省略することができる。従って、ルーティングコントローラを簡易な構成とでき、コストの向上を図ることもできる。もっとも、図４に示されるルーティングコントローラ４の各第１受信宛先判定部６に仮想チャネル決定部８がそれぞれ接続され、中継ノードが、中継したメッセージを転送するためのチャネルを決定するようにされていても良い。
〈実施形態２〉
本発明の実施形態２によるチャネルの決定方法を説明する。図６は、実施形態２によるチャネルの決定方法を用いる並列計算機ネットワークの全体構成図である。図６において、ネットワークは二次元メッシュ状のトポロジを有しており、東西方向（±ｘ方向）×南北方向（±ｙ方向）＝８×８＝６４個のノード１によって構成されている。各ノード１は、実施形態１と同様の方法による双方向の二重仮想チャネルによって、隣接ノードと東西南北方向でそれぞれ接続されている。なお、ネットワークの中心から北西方向に沿って最も遠い位置に配置されているノードの位置が原点（０，０）に設定されている。
【００４７】
ネットワークを構成する各ノード１の内部構成（図７参照），ネットワークにおけるメッセージ転送の方法，メッセージ転送のルーティングに使用するヘッダフリット（図８参照）及びルーティングコントローラ４の内部構成（図９参照）は、実施形態１とほぼ同様の構成を有している。このため、共通点については説明を省略し、相違点について説明する。
【００４８】
図９に示された各第１受信宛先判定部６は、実施形態１と同様に一組の図示せぬバッファを備え、これにより各ノード１間が二重の仮想チャネルで接続された状態となっている。そして、各仮想チャネルには、チャネル番号０，チャネル番号１のチャネル番号が割り当てられている。また、仮想チャネル決定部８は、自ノードの位置座標（ノード番号：Ｐｘ，Ｐｙ）を保有している。そして、第２受信宛先判定部７から、メッセージのヘッダフリットを受け取って、仮想チャネルを、チャネル番号０又はチャネル番号１のいずれか一方から決定するようになっている。すなわち、送信元ノードにおける仮想チャネル決定部８は、図８に示されたヘッダフリットを第２受信宛先判定部７から受け取ると、最初に、ヘッダフリットに格納されたルーティング情報から、送信元ノードから見た相対的な送信相手先ノードの位置座標（ノード番号：Ｒｘ，Ｒｙ）を得る。次に、仮想チャネル決定部８は、自己の保有する自ノード番号（Ｐｘ，Ｐｙ）から、送信相手先ノードの絶対位置座標（Ｄｘ，Ｄｙ）を割り出す。そして、仮想チャネル決定部８は、自己が保有する以下の算出式（式１０）を用いてチャネルの番号を決定するようになっている。
【００４９】
ｃｈａｎｎｅｌ＝（Ｄｘ−Ｄｙ） ｍｏｄ ２  ・・・（式１０）
以下、実施形態２によるチャネルの決定方法を説明する。例えば、図６に示されたノード番号（Ｐｘ，Ｐｙ）＝（１，０）のノードから東方向へ２つ，南方向へ４つ離れたノード（ノード番号（３，４））へメッセージを送信する場合において、送信元ノードの仮想チャネル決定部８は、図８に示すヘッダフリットを受け取ると、最初に、ヘッダフリットのルーティング情報から、（Ｒｘ，Ｒｙ）＝（＋２，＋４）を得る。次に、仮想チャネル決定部８は、自己が保有する自ノード番号（１，０）から、送信相手先ノードの絶対位置座標（Ｄｘ，Ｄｙ）＝（３，４）を得るとともに、上記した（式１０）に代入する。すなわち、
ｃｈａｎｎｅｌ＝（３−４） ｍｏｄ ２＝１
が得られる。これに従い、仮想チャネル決定部８は、メッセージ転送に使用する仮想チャネルのチャネル番号を１と決定する。そして、このチャネル番号１が決定された旨の情報は、メッセージのフリットの転送に先だって、第１送信部１０を介してメッセージのフリットの中継ノード及び送信相手先ノードに通知される。そして、通知を受けたノードにおけるチャネル番号１の仮想チャネルが、メッセージの転送に使用する仮想チャネルとして割り当てられる。なお、本方法によれば、送信相手先ノードの絶対位置座標（Ｄｘ，Ｄｙ）に対応して割り当てられる仮想チャネルのチャネル番号は、図１０に示されるようになる。もっとも、図１０に示される仮想チャネルのチャネル番号の配列は、（式１０）の代わりに別の式を用いること等によって適宜変更可能である。このとき、仮想チャネルのチャネル番号は、ランダムに配置され、同一のチャネル番号が散逸するように設定するのが好ましい。
【００５０】
実施形態２によるチャネルの決定方法によると、仮想チャネルのチャネル番号が、送信元ノードの仮想チャネル決定部８において、送信相手先ノードの絶対位置座標（Ｄｘ，Ｄｙ）に基づいて決定される。従って、実施形態１と同様に、中継ノードにおける仮想チャネルのチャネル番号の決定を不要として転送スループット向上を図るとともに、ルーティングコントローラ４を簡易な構成にすることができる。
【００５１】
なお、図６に示されるネットワークの各ノード１が、東西南北方向にそれぞれ四つの仮想チャネルでそれぞれ接続されている場合には、仮想チャネル決定部８が保有する（式１０）の代わりに、以下の（式１１）を保有させる。
【００５２】
ｃｈａｎｎｅｌ＝（Ｄｘ−Ｄｙ） ｍｏｄ ４  ・・・（式１１）
これにより、実施形態２における仮想チャネル決定方法と同様の方法を４チャネルの場合にも用いることが可能となる。なお、４チャネルの場合では、送信相手先ノードの絶対位置座標（Ｄｘ，Ｄｙ）に対応して割り当てられる仮想チャネルのチャネル番号は、図１１に示されるようになる。もっとも、図１１に示される仮想チャネルのチャネル番号の配列も、（式１１）の代わりに別の式を用いる等によって適宜変更可能である。
【００５３】
また、図６に示されるネットワークに、予め図１０のようにチャネル番号が割り当てられ、仮想チャネル決定部８が、上記した（式１０）の代わりに、各ノード番号とチャネル番号とを対応させたテーブルを有し、さらに、仮想チャネル８が送信相手先ノードの絶対位置座標（Ｄｘ，Ｄｙ）を得るとともに、これを検索キーとしてテーブルを検索することにより、該当するチャネル番号を検出し、このチャネル番号の仮想チャネルを、メッセージ転送に使用する仮想チャネルとして使用するようにしても良い。
【００５４】
【発明の効果】
本発明のチャネルの決定方法によれば、二次元トーラス状のネットワークにおいて、デッドロックを回避しつつ、転送スループットの向上を図ることができる。
また、二次元トーラス状のネットワークにおいて、メッセージの中継ノードにおけるチャネルの割当処理を省略することができる。
【００５５】
また、二次元メッシュ状のネットワークにおいて、メッセージの転送スループットの向上を図ることができる。さらに、二次元メッシュ状のネットワークにおいて、メッセージの中継ノードにおけるチャネルの割当処理を省略することができる。
【図面の簡単な説明】
【図１】実施形態１による仮想チャネルの決定方法を使用する並列計算機ネットワークの全体構成図。
【図２】ノード１の内部構成を示すブロック図。
【図３】ヘッダフリットの説明図。
【図４】ルーティングコントローラの内部構成を示すブロック図。
【図５】仮想チャネルの決定方法を示す説明図。
【図６】実施形態２による仮想チャネルの決定方法を使用する並列計算機ネットワークの全体構成図。
【図７】ノード１の内部構成を示すブロック図。
【図８】ヘッダフリットの説明図。
【図９】ルーティングコントローラの内部構成を示すブロック図。
【図１０】ネットワークにおける仮想チャネルの割り当て例を示す図。
【図１１】ネットワークにおける仮想チャネルの割り当て例を示す図。
【図１２】二次元トーラス状のネットワークの構成例を示す図。
【図１３】デッドロックの説明図。
【図１４】仮想チャネルの説明図。
【図１５】デッドロック回避方法の説明図。
【符号の説明】
１  ノード
４  ルーティングコントローラ
６  第１受信宛先判定部
７  第２受信宛先判定部
８  仮想チャネル決定部
９  スイッチ
【図１】
0003860257.tif 000002
【図２】
0003860257.tif 000003
【図３】
0003860257.tif 000004
【図４】
0003860257.tif 000005
【図５】
0003860257.tif 000006
【図６】
0003860257.tif 000007
【図７】
0003860257.tif 000008
【図８】
0003860257.tif 000009
【図９】
0003860257.tif 000010
【図１０】
0003860257.tif 000011
【図１１】
0003860257.tif 000012
【図１２】
0003860257.tif 000013
【図１３】
0003860257.tif 000014
【図１４】
0003860257.tif 000015
【図１５】
0003860257.tif 000016