(57)【要約】【課題】処理速度を向上させる情報処理装置、演算処理装置及び情報処理装置の制御方法を提供する。【解決手段】並列演算器１は、複数の計算機１０を有する。複数の計算機１０は、各々が、複数の計算機１０のうち第１の複数の他の演算処理装置と経路１５１と経路１５３とを介してそれぞれ接続されるとともに、複数の計算機のうち第２の複数の他の演算処理装置と経路１５２を介してそれぞれ接続され、経路１５１における第１の位置情報と、経路１５３における第２の位置情報と、経路１５２における位置情報とをそれぞれ含み、第１の複数の他の演算処理装置の各々に対応する第１の位置情報と第２の位置情報とが同一となるアドレス情報を用いて、第１の複数の他の演算処理装置又は第２の複数の他の演算処理装置とそれぞれ通信を行う。【選択図】図１
2019087183.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算処理装置を有する情報処理装置であって、
前記複数の演算処理装置は、各々が、前記複数の演算処理装置のうち第１の複数の他の演算処理装置と第１の経路と第２の経路とを介してそれぞれ接続されるとともに、前記複数の演算処理装置のうち第２の複数の他の演算処理装置と第３の経路を介してそれぞれ接続され、前記第１の経路における第１の位置情報と、前記第２の経路における第２の位置情報と、前記第３の経路における位置情報とをそれぞれ含み、前記第１の複数の他の演算処理装置の各々に対応する前記第１の位置情報と前記第２の位置情報とが同一となるアドレス情報を用いて、前記第１の複数の他の演算処理装置又は前記第２の複数の他の演算処理装置とそれぞれ通信を行う
ことを特徴とする情報処理装置。
【請求項２】
前記複数の演算処理装置の各々に対して前記アドレス情報を割り当てる管理装置をさらに有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記演算処理装置はさらに、前記第１の複数の他の演算処理装置と前記第１の経路と前記第２の経路とを介してそれぞれ一列に接続されることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記演算処理装置はさらに、前記第１の複数の他の演算処理装置と前記第１の経路と前記第２の経路とを介してそれぞれ環状に接続されることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項５】
前記演算処理装置は、前記第１の経路、前記第２の経路及び前記第３の経路の優先順位の情報を有し、前記優先順位に応じて前記第１の経路、前記第２の経路及び前記第３の経路の中から通信経路を選択し、選択した通信経路を用いてパケットの送受信を行う送受信制御部を備えたことを特徴とする請求項１〜４のいずれか一つに記載の情報処理装置。
【請求項６】
前記演算処理装置は、前記第１の経路、前記第２の経路又は前記第３の経路を介して前記第１の複数の他の演算処理装置又は前記第２の複数の他の演算処理装置とパケットの送受信を行う送受信制御部と、
前記第１の経路、前記第２の経路又は前記第３の経路の優先順位を有し、前記送受信制御部が送信したパケットを保持し、前記優先順位に応じて前記第１の経路、前記第２の経路及び前記第３の経路の中から通信経路を決定し、前記送受信制御部から受信した順序にしたがい決定した前記通信経路へ前記パケットを出力する一時保持部と
を備えたことを特徴とする請求項１〜４のいずれか一つに記載の情報処理装置。
【請求項７】
情報処理装置に含まれる複数の演算処理装置であって、
前記演算処理装置は、
各々が、前記複数の演算処理装置のうち第１の複数の他の演算処理装置と第１の経路と第２の経路とを介してそれぞれ接続されるとともに、前記複数の演算処理装置のうち第２の複数の他の演算処理装置と第３の経路を介してそれぞれ接続され、前記第１の経路における第１の位置情報と、前記第２の経路における第２の位置情報と、前記第３の経路における位置情報とをそれぞれ含み、前記第１の複数の他の演算処理装置の各々に対応する第１の位置情報と第２の位置情報とが同一となるアドレス情報を用いて、前記第１の複数の他の演算処理装置又は前記第２の複数の他の演算処理装置とそれぞれ通信を行う
ことを特徴とする演算処理装置。
【請求項８】
各々が、第１の複数の他の演算処理装置と第１の経路と第２の経路とを介してそれぞれ接続されるとともに、第２の複数の他の演算処理装置と第３の経路を介してそれぞれ接続される複数の演算処理装置を有する情報処理装置の制御方法であって、
各前記演算処理装置が、
前記第１の経路における第１の位置情報と、前記第２の経路における第２の位置情報と、前記第３の経路における位置情報とをそれぞれ含み、前記第１の複数の他の演算処理装置の各々に対応する第１の位置情報と第２の位置情報とが同一となるアドレス情報を割り当てられ、
割り当てられた前記アドレス情報を用いて前記第１の複数の他の演算処理装置又は前記第２の複数の他の演算処理装置とそれぞれ通信を行う
ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、演算処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
コンピュータシステムを用いて科学技術計算などの大規模な計算を行う場合、複数の計算機を用いた並列計算が行われる。並列計算が可能な情報処理装置は、並列計算機と呼ばれる。例えば、並列計算機は、多数のプロセッサを有し、各プロセッサ上で動作する各プロセスが、プロセス間でデータを通信しながら全体的な計算処理を実行することで、高い演算性能を実現する。並列計算機における、プロセッサなどの計算資源はノードと呼ばれる。
【０００３】
並列計算機は、ノード同士がインタコネクトを介して接続されたノード間接続ネットワークを有する。ノード間接続ネットワークでは、ノードとノードとを相互接続するインタコネクトを利用する直接網が利用されることが一般的である。超並列計算機において数万ノードを接続する直接網の接続トポロジとしては、多次元メッシュまたは多次元トーラスが一般的に利用される。
【０００４】
各ノードは、複数の接続ポートをそれぞれ有する。そして、ノード間接続は、各接続ポートに座標が割り当てられた構成として把握されることがある。例えば、ノードが６つの接続ポートを有する場合、２つの接続ポートがＸ軸の正負の方向を表し、他の２つの接続ポートがＹ軸の正負の方向を表し、残りの２つの接続ポートがＺ軸の正負の方向を表すと把握できる。この場合、Ｘ軸の正方向の接続ポートは他のノードのＸ軸の負方向の接続ポートに接続される。そして、Ｘ軸の正方向と負方向とを接続することで複数のノードが連続して接続された接続経路によりＸ軸が表される。同様に、Ｙ軸の正方向と負方向とを接続することで複数のノードが連続して接続された接続経路によりＹ軸が表され、Ｚ軸の正方向と負方向とを接続することで複数のノードが連続して接続された接続経路によりＺ軸が表される。すなわち、並列計算機は、３次元のノード間接続ネットワークを有する。
【０００５】
高次元接続の場合、各ノードには、例えば、各座標で表されるアドレスが割り当てられる。例えば、３次元のノード間ネットワークであれば、各ノードには、３次元の座標（Ｘ，Ｙ，Ｚ）で表現されるアドレスが割り当てられる。そして、各ノードのアドレスは、各座標の正方向に進むにしたがいその座標の値が加算される。逆に、各座標の正方向に進むにしたがい、各ノードのアドレスは、その座標の値が減算される。
【０００６】
そして、ノード間通信を行う場合、送信元のノードは、送信先のノードのアドレスを宛先アドレスとしてパケットを送信する。パケットを受信したノードは、宛先アドレスと自己のアドレスとを比較し、宛先アドレスが自己のアドレスと不一致であれば、他のノードにパケットを転送する。これに対して、宛先アドレスが自己のアドレスと一致した場合、そのノードは、受信したパケットを自分宛のパケットとして処理する。
【０００７】
パケットのルーティング方法には、高次元接続では非常に多くのノードが接続されるため、ノード毎にルーティングテーブルを持つのではなく、各ノードであるルールにしたがってどの接続ポートを出力ポートとするかを決める方法がある。
【０００８】
例えば、ノード間接続の技術として、３次元トーラスの接続トポロジを有するノード間接続において、ノード間の通信を波長多重で行い、多重化の程度を変化させて個々の伝送路の通信容量を増減させる従来技術がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００６−２１５８１５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、従来の並列計算機では、全てのバスが同じ性能で接続されてしまう。そのため、頻繁に通信が行われるルートが存在する場合、そのルートにおけるバス帯域幅が不足するおそれがある。そこで、帯域幅不足を解消するために、別ルートを使用して多重化することが考えられる。しかし、別ルートを使用した場合、順序保証や冗長を表現するプロトコルを作成するなどの処理が加わり、ルート毎にレイテンシが異なるおそれがある。
【００１１】
また、単に複数のバスを同じ次元を表す経路として使用した場合、１つのノードを１つのアドレスで表現することが困難になるおそれがある。そして、１つのノードに複数のアドレスを割当てた場合、例えば、バスを従来の様に使用するノードと接続するには、複数のアドレス表現で異なるルートを経由して各ノードが繋がるように表現される。そのため、アドレスの割り当てが複雑になるおそれがある。さらに、１つのノードに複数のアドレスを割り当てた場合、パケットの送信を依頼するソフトやハードにとって、アドレスの管理が煩雑になるおそれがある。
【００１２】
以上のような理由から、頻繁に通信を行うルートとして指定されたバスを高速にすることが困難であった。そのため、並列計算機の処理速度を向上させることは困難であった。
【００１３】
開示の技術は、上記に鑑みてなされたものであって、処理速度を向上させる情報処理装置、演算処理装置及び情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法の一つの態様において、情報処理装置は、複数の演算処理装置を有する。複数の演算処理装置は、各々が、複数の演算処理装置のうち第１の複数の他の演算処理装置と第１の経路と第２の経路とを介してそれぞれ接続されるとともに、複数の演算処理装置のうち第２の複数の他の演算処理装置と第３の経路を介してそれぞれ接続され、第１の経路における第１の位置情報と、第２の経路における第２の位置情報と、第３の経路における位置情報とをそれぞれ含み、第１の複数の他の演算処理装置の各々に対応する第１の位置情報と第２の位置情報とが同一となるアドレス情報を用いて、第１の複数の他の演算処理装置又は第２の複数の他の演算処理装置とそれぞれ通信を行う。
【発明の効果】
【００１５】
１つの側面では、本発明は、処理速度を向上させることができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、並列計算機における計算機のノード間接続の状態を示す図である。
【図２】図２は、計算機の接続ポートを表す図である。
【図３】図３は、マルチポート構造を有する場合の座標軸をまとめた状態を表す図である。
【図４】図４は、計算機のブロック図である。
【図５】図５は、実施例１に係る並列計算機によるパケットの送信処理のフローチャートである。
【図６】図６は、実施例２に係る並列計算機の管理システムのブロック図である。
【図７】図７は、接続経路の決定処理のフローチャートである。
【図８】図８は、アドレスの割り当て処理のフローチャートである。
【図９】図９は、優先順位パターンを表す図である。
【図１０】図１０は、実施例３に係る並列計算機によるパケットの送信処理のフローチャートである。
【図１１】図１１は、実施例４に係る計算機のブロック図である。
【図１２】図１２は、実施例４に係る並列計算機によるパケットの送信処理のフローチャートである。
【図１３】図１３は、実施例５に係る並列計算機におけるパケットの送受信を説明するための図である。
【発明を実施するための形態】
【００１７】
以下に、本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法が限定されるものではない。
【実施例１】
【００１８】
図１は、並列計算機における計算機のノード間接続の状態を示す図である。図１に示すように、本実施例に係る情報処理装置である並列計算機１は、演算処理装置である９つの計算機１０を有する。ここで、並列計算機１が有する計算機１０の数は特に制限は無い。
【００１９】
各計算機１０は、図２に示すように６つの接続ポートを有する。図２は、計算機の接続ポートを表す図である。図２に示すように、本実施例に係る計算機１０の各接続ポートが接続する経路は、Ｘ軸、Ｙ軸、Ｚ軸として表される。
【００２０】
図２に示すように、計算機１０の接続ポートのうち、１つがＸ（＋）で表されるＸ軸の正方向に延びる経路に接続され、１つがＸ（−）で表されるＸ軸の負方向に延びる経路に接続される。すなわち、計算機１０の接続ポートの２つをまとめた組の１つがＸ軸を表す経路の一部となる。また、計算機１０の接続ポートのうち、１つがＹ（＋）で表されるＹ軸の正方向に延びる経路に接続され、１つがＹ（−）で表されるＹ軸の負方向に延びる経路に接続される。すなわち、計算機１０の接続ポートの２つをまとめた組の１つがＹ軸を表す経路の一部となる。また、計算機１０の接続ポートのうち、１つがＺ（＋）で表されるＺ軸の正方向に延びる経路に接続し、１つがＺ（−）で表されるＺ軸の負方向に延びる経路に接続される。すなわち、計算機１０の接続ポートの２つをまとめた組の１つがＺ軸を表す経路の一部となる。
【００２１】
そして、計算機１０のＸ軸の正方向に延びる接続ポートは、他の計算機１０のＸ軸の負方向に延びる接続ポートに接続される。また、計算機１０のＹ軸の正方向に延びる接続ポートは、他の計算機１０のＹ軸の負方向に延びる接続ポートに接続される。また、計算機１０のＺ軸の正方向に延びる接続ポートは、他の計算機１０のＺ軸の負方向に延びる接続ポートに接続される。さらに、本実施例に係る並列計算機１は、Ｚ軸の接続先とＸ軸の接続先とが同じ計算機１０になる。
【００２２】
そして、本実施例では、座標軸毎に３つの計算機１０が１列に接続されると、列の両端部の計算機１０の正方向に延びる接続ポートと負方向に延びる接続ポートとが接続される。このように、本実施例に係る計算機１０は、Ｘ軸を表す経路、Ｙ軸を表す経路及びＺ軸を表す経路によりトーラス状に接続される。
【００２３】
この、トーラス状に接続された状態が、「環状に接続」された状態の一例にあたる。そして、Ｘ軸を表す経路が、「第１の経路」の一例にあたり、Ｙ軸を表す経路が、「第３の経路」の一例にあたり、Ｚ軸を表す経路が、「第２の経路」の一例にあたる。さらに、特定の計算機１０から見て、Ｘ軸を表す経路及びＺ軸を表す経路で接続される他の計算機１０が、その特定の計算機１０に対する「第１の複数の他の演算処理装置」の一例にあたる。また、特定の計算機１０から見て、Ｙ軸を表す経路で接続される他の計算機１０が、その特定の計算機１０に対する「第２の複数の他の演算処理装置」の一例にあたる。
【００２４】
図１に示すように、９つの計算機１０は、３つの計算機１０を１列に接続する経路１５１〜１５３により接続される。経路１５１が、Ｘ軸を表す。また、経路１５２がＹ軸を表す。さらに、経路１５３が、Ｚ軸を表す。
【００２５】
上述したように、各計算機１０におけるＺ軸を表す接続ポートの接続先とＸ軸を表す接続ポートの接続先とは同じ計算機１０である。このＸ軸及びＺ軸を表す接続ポートのように、同じ座標軸を表す接続ポートの構造を「マルチポート構造」という。
【００２６】
この場合のＸ軸にあたる経路１５１とＺ軸にあたる経路１５３とは、図３に示すように同じ座標軸を表す経路といえる。図３は、マルチポート構造を有する場合の座標軸をまとめた状態を表す図である。したがって、この場合、経路１５１及び１５３に対応する座標軸方向の経路は、２倍のバス幅を有する。すなわち、マルチポート構造を有する接続ポートは、１つの座標軸を多重化する接続ポートである。
【００２７】
さらに、各計算機１０は、各座標軸上の値で表される座標が割り当てられる。以下では、各接続ポートを接続して作られる座標軸上の値で表される座標を「接続ポート座標」という。本実施例に係る計算機１０の接続ポート座標は、３次元の座標であり、（Ｘ，Ｙ，Ｚ）の形式で表される。
【００２８】
具体的には、各計算機１０の接続ポート座標は、以下の手順により決定される。まず、計算機１０を接続ポート座標の中から基準となる計算機１０を選択する。そして、基準となる計算機１０の接続ポート座標が（０，０，０）となる。そして、基準となる計算機１０に繋がる経路１５１におけるＸ軸の正方向に１つ移動する毎に１つずつ増加する値が、基準となる計算機１０に繋がる経路１５１上の計算機１０の接続ポート座標のＸ軸の値となる。ただし、経路１５１の正方向に進み基準となる計算機１０に戻ってきた場合、基準となる計算機１０に繋がる経路１５１上の計算機１０の接続ポート座標のＸ軸の値の割り当ては完了する。さらに、Ｘ軸の値を割り当てた各計算機１０において、Ｘ軸を表す接続ポートとマルチポート構造を持つ接続ポートが表すＺ軸の座標の値として、Ｘ軸の座標の値と同じ値が割り当てられる。これにより、基準となる計算機１０に繋がる経路１５３上の計算機１０の接続ポート座標のＺ軸の値が割り当てられる。さらに、基準となる計算機１０に繋がる経路１５１及び１５３上の計算機１０のＹ軸の値は、基準となる計算機１０と同じ０となる。
【００２９】
また、基準となる計算機１０に繋がる経路１５２におけるＹ軸の正方向に１つ移動する毎に１つずつ増加する値が、基準となる計算機１０に繋がる経路１５２上の計算機１０の接続ポート座標のＹ軸の値となる。ただし、経路１５２の正方向に進み基準となる計算機１０に戻ってきた場合、基準となる計算機１０に繋がる経路１５２上の計算機１０の接続ポート座標のＹ軸の値の割り当ては完了する。さらに、基準となる計算機１０に繋がる経路１５２上の計算機１０の接続ポート座標のＸ軸及びＺ軸の値は、基準となる計算機１０と同じ０となる。
【００３０】
さらに、基準となる計算機１０に繋がる経路１５１及び１５３上の計算機１０からＹ軸の正方向に１つ移動する毎に、Ｙ軸の値を１つずつ増加させた接続ポート座標が、各位置の計算機１０の接続ポート座標となる。これにより、図１の各計算機１０上に付した接続ポート座標が、各計算機１０に割り当てられる。
【００３１】
すなわち、経路１５１〜１５３毎に一方向に向かって昇順であり、且つ、マルチポート構造を有する接続ポートが表す複数の座標の値を同じ値とした接続ポート座標が、各計算機１０に割り当てられる。そして、この各計算機１０に割り当てられた接続ポート座標が、各各計算機１０のアドレスとされる。このアドレスとされた接続ポート座標におけるＸ座標が「第１の位置情報」の一例にあたり、Ｙ座標が「第３の位置情報」の一例にあたり、Ｚ座標が「第２の位置情報」の一例にあたる。そして、本実施例においてマルチポート構造を有する接続ポートが表す座標であるＸ座標及びＺ座標が同じ値を有することが、「第１の位置情報と第２の位置情報と同一となる」ことの一例にあたる。
【００３２】
さらに、計算機１０は、図４に示す構成を有する。図４は、計算機のブロック図である。計算機１０は、ＣＰＵ（Central  Processing  Unit）１１、送受信部１２、クロスバスイッチ１３及び接続ポート１４１〜１４６を有する。さらに、送受信部１２は、複数の送受信エンジン１２０を有する。
【００３３】
処理装置、又は、プロセッサとしてのＣＰＵ１１は、パケットの宛先を決定する。そして、ＣＰＵ１１は、空いている送受信エンジン１２０を選択する。その後、ＣＰＵ１１は、宛先アドレスを指定してパケットを選択した送受信エンジン１２０へ出力する。
【００３４】
また、ＣＰＵ１１は、他の計算機１０から自装置のアドレスを宛先アドレスとして送信されたパケットの入力を送受信エンジン１２０から受ける。そして、ＣＰＵ１１は、取得したパケットを用いて処理を行う。
【００３５】
送受信エンジン１２０は、送信するパケットの入力を宛先アドレスとともにＣＰＵ１１から受ける。そして、送受信エンジン１２０は、取得したパケットが順序保証が要求されたパケットか否かを判定する。
【００３６】
取得したパケットが順序保障が要求されたパケットの場合、送受信エンジン１２０は、取得したパケットに対する順序保証が要求された先行パケットが存在するか否かを判定する。取得したパケットに対する順序保証が要求された先行パケットがある場合、送受信エンジン１２０は、先行パケットを送信した送信ルートを受信したパケットの送信ルートとする。そして、送受信エンジン１２０は、送信ルートにしたがって先行パケットを送信した接続ポート１４１〜１４６のいずれかへパケットを出力する。
【００３７】
これに対して、取得したパケットに対する順序保証が要求された先行パケットが存在しない場合、送受信エンジン１２０は、接続ポート１４０の空き状態及び宛先アドレスを用いて送信ルートを決定する。そして、送受信エンジン１２０は、決定した送受信ルートにしたがって接続ポート１４０へパケットを出力する。
【００３８】
一方、取得したパケットに順序保証が要求されていない場合、送受信エンジン１２０は、接続ポート１４０の空き状態及び宛先アドレスを用いて送信ルートを決定する。その後、送受信エンジン１２０は、決定した送信ルートにしたがってクロスバスイッチ１３を介して接続ポート１４１〜１４６の何れかにパケットを出力する。
【００３９】
また、送受信エンジン１２０は、他の計算機１０から自装置のアドレスを宛先アドレスとして送信されたパケットの入力をクロスバスイッチ１３を介して接続ポート１４１〜１４６から受ける。そして、送受信エンジン１２０は、取得したパケットをＣＰＵ１１へ出力する。この送受信エンジン１２０が、「送受信制御部」の一例にあたる。
【００４０】
クロスバスイッチ１３は、送受信エンジン１２０と接続ポート１４１〜１４６との接続経路を切り替えるスイッチである。パケットを送受信する場合、クロスバスイッチ１３は、送受信エンジン１２０からの指示を受けて接続経路を切り替える。
【００４１】
接続ポート１４１〜１４６は、計算機１０を他の計算機１０に接続するためのポートである。接続ポート１４１は、Ｘ軸の正方向に延びる経路に接続するためのポートである。図４では、Ｘ軸の正方向に延びるポートであることが分かり易いようにＸ（＋）ポートとの表記を付した。また、接続ポート１４２は、Ｘ軸の負方向に延びる経路に接続するためのポートである。図４では、Ｘ軸の負方向に延びるポートであることが分かり易いように接続ポート１４２にＸ（−）ポートとの表記を付した。また、接続ポート１４３は、Ｙ軸の正方向に延びる経路に接続するためのポートである。図４では、Ｙ軸の正方向に延びるポートであることが分かり易いように接続ポート１４３にＹ（＋）ポートとの表記を付した。また、接続ポート１４４は、Ｙ軸の負方向に延びる経路に接続するためのポートである。図４では、Ｙ軸の負方向に延びるポートであることが分かり易いように接続ポート１４４にＹ（−）ポートとの表記を付した。また、接続ポート１４５は、Ｚ軸の正方向に延びる経路に接続するためのポートである。図４では、Ｚ軸の正方向に延びるポートであることが分かり易いように接続ポート１４５にＺ（＋）ポートとの表記を付した。また、接続ポート１４６は、Ｚ軸の負方向に延びる経路に接続するためのポートである。図４では、Ｚ軸の負方向に延びるポートであることが分かり易いように接続ポート１４６にＺ（−）ポートとの表記を付した。以下では、接続ポート１４１〜１４６のそれぞれを区別しない場合、「接続ポート１４０」という。
【００４２】
また、接続ポート１４０は、それぞれ判定回路４０を有する。判定回路４０は、自己が搭載された計算機１０のアドレスを予め記憶する。そして、判定回路４０は、他の計算機１０から送出されたパケットを自己が搭載された接続ポート１４０が受信すると、受信したパケットの宛先アドレスを取得する。そして、判定回路４０は、取得した宛先アドレスと自己が搭載された計算機１０のアドレスとを比較する。取得した宛先アドレスと自己が搭載された計算機１０のアドレスとが一致した場合、判定回路４０は、受信したパケットをクロスバスイッチ１３を介して送受信エンジン１２０へ出力する。また、取得した宛先アドレスと自己が搭載された計算機１０のアドレスとが一致した場合、判定回路４０は、パケットの送信ルートを決定する。その後、接続ポート１４０は、決定した送信ルートにしたがってクロスバスイッチ１３を介して他の接続ポート１４０の何れかにパケットを出力する。
【００４３】
次に、図５を参照して、本実施例に係る並列計算機１におけるパケットの送信処理の流れについて説明する。図５は、実施例１に係る並列計算機によるパケットの送信処理のフローチャートである。
【００４４】
各計算機１０のマルチポート構造に指定された接続ポート１４０が同じ他の計算機１０に接続される（ステップＳ１）。
【００４５】
さらに、各計算機１０のマルチポート構造に指定された接続ポート１４０が接続する座標の値が同じ値となるように、各計算機１０の接続ポート座標が決定される。そして、決定された接続ポート座標が、アドレスとして各計算機１０に割り当てられる（ステップＳ２）。
【００４６】
その後、送受信エンジン１２０は、ＣＰＵ１１から送信するパケットの入力を受けると、取得したパケットが順序保証が要求されたパケットか否かを判定する（ステップＳ３）。
【００４７】
順序保証が要求されたパケットの場合（ステップＳ３：肯定）、送受信エンジン１２０は、取得したパケットに対して順序保証が要求された先行パケットが存在するか否かを判定する（ステップＳ４）。先行パケットが存在する場合（ステップＳ４：肯定）、送受信エンジン１２０は、先行パケットと同じ送信ルートを取得したパケットの送信ルートと決定し、先行パケットを送信した接続ポート１４０にパケットを送信する（ステップＳ５）。
【００４８】
一方、取得したパケットが順序保証が要求されたパケットでない場合（ステップＳ３：否定）又は取得したパケットに先行パケットが存在しない場合（ステップＳ４：否定）、送受信エンジン１２０は、以下の処理を行う。送受信エンジン１２０は、宛先アドレスにパケットを送信するための送信ルートに繋がる接続ポート１４０の中から空いている接続ポート１４０を選択する。そして、送受信エンジン１２０は、選択した接続ポート１４０にパケットを送信する（ステップＳ６）。
【００４９】
その後、送受信エンジン１２０は、パケットの送信を継続するか否かを判定する（ステップＳ７）。パケットの送信を継続する場合（ステップＳ７：肯定）、送受信エンジン１２０は、ステップＳ３へ戻る。
【００５０】
これに対して、パケットの送信を終了する場合（ステップＳ７：否定）、送受信エンジン１２０は、パケットの送信処理を終了する。
【００５１】
以上に説明したように、本実施例では、並列計算機の各計算機は、異なる座標軸にあたる接続ポートが同じ計算機に接続されるように接続されることで、接続ポートがマルチポート構造を有するようになる。そして、計算機には、マルチポート構造を有する接続ポートに対応する座標軸において同じ値を有する座標がアドレスとして与えられる。これにより、マルチポート構造を有する接続ポートが接続される計算機との間のバスが拡張される。すなわち、頻繁に通信を行う経路に対して、マルチポート構造を有する接続ポートが繋がる経路を割り当てることで、頻繁に通信を行うバスを高速にすることができる。したがって、処理速度を向上させることができる。
【００５２】
さらに、マルチポート構造とされた接続ポートが接続する経路の何れも、接続先のアドレスが同じアドレスで表される。したがって、１つの計算機を１つのアドレスで表すことできるため、アドレスの割り当てを容易に行うことができる。そして、ハードウェアの追加要素を削減することができ、パケットの送信におけるソフトウェアの処理を軽減することができる。
【実施例２】
【００５３】
図６は、実施例２に係る並列計算機の管理システムのブロック図である。本実施例に係る管理システムでは、計算機１０同士の接続経路の決定及びアドレスの割り当てを自動で行うことが実施例１と異なる。以下の説明では、実施例１と同様の各部の動作については説明を省略する。
【００５４】
並列計算機１には、管理装置２が接続される。ここで、図６では、管理装置２を並列計算機１とは異なる装置としたが、これに限らず、例えば並列計算機１が有する計算機１０の何れかを管理装置２とするなどして、並列計算機１の中に管理装置２を配置してもよい。管理装置２は、接続決定部２１、接続切替部２２及びアドレス割当部２３を有する。
【００５５】
接続決定部２１は、並列計算機１が有する計算機１０の情報を有する。そして、接続決定部２１は、各座標軸上の計算機１０の数の入力を受ける。さらに、接続決定部２１は、バス幅の拡張を行うか否かの情報及び確保するバス幅の情報の入力を受ける。次に、接続決定部２１は、パス幅の拡張が指定された場合、指定されたバス幅を確保できるようにマルチポート構造とする接続ポート１４０を選択する。
【００５６】
そして、接続決定部２１は、マルチポート構造とする接続ポート１４０が同じ計算機１０に接続され、且つ座標軸上の計算機１０の数が指定された数となるように各計算機１０の接続ポート１４０それぞれが接続する計算機１０を決定する。そして、接続決定部２１は、決定した各計算機１０の各接続ポート１４０の接続先の情報を接続切替部２２及びアドレス割当部２３へ出力する。
【００５７】
接続切替部２２は、各計算機１０の接続ポート１４０の接続先の情報の入力を接続決定部２１から受ける。そして、接続切替部２２は、各計算機１０の接続ポート１４０が指定された接続先の計算機１０に接続するように各計算機１０の間の接続を切り替える。
【００５８】
アドレス割当部２３は、各計算機１０の接続ポート１４０の接続先の情報の入力を接続決定部２１から受ける。そして、アドレス割当部２３は、それぞれの計算機１０においてマルチポート構造を有する接続ポート１４０が表す座標軸における座標の値が一致するように、各計算機１０の接続ポート座標を決定する。そして、アドレス割当部２３は、決定した接続ポート座標を各計算機１０のアドレスとして各計算機１０に割り当てる。
【００５９】
次に、図７を参照して、接続決定部２１による接続経路の決定処理の流れについて説明する。図７は、接続経路の決定処理のフローチャートである。
【００６０】
接続決定部２１は、操作者からバス幅を拡張する経路の指定を受けたか否かにより、バス幅の拡張を行うか否かを判定する（ステップＳ１０１）。
【００６１】
バス幅の拡張を行う場合（ステップＳ１０１：肯定）、接続決定部２１は、座標軸の中から未選択の座標軸を１つ選択する（ステップＳ１０２）。
【００６２】
次に、接続決定部２１は、選択した座標軸に対応する接続ポート１４０をマルチポート構造を有するポートに割り当てる（ステップＳ１０３）。
【００６３】
次に、接続決定部２１は、マルチポート構造を有するポートとして割り当てた接続ポート１４０をまとめた経路のバス幅が指定されたバス幅を確保できたか否かを判定する（ステップＳ１０４）。バス幅が未だ確保できていない場合（ステップＳ１０４：否定）、接続決定部２１は、ステップＳ１０２へ戻る。
【００６４】
これに対して、バス幅を確保できた場合（ステップＳ１０４：肯定）、接続決定部２１は、マルチポート構造に対応させて計算機１０にアドレスを割り当てる（ステップＳ１０５）。
【００６５】
一方、バス幅の拡張を行わない場合（ステップＳ１０１：否定）、接続決定部２１は、通常の手順でアドレスを割り当てる（ステップＳ１０６）。すなわち、接続決定部２１は、各計算機１０の接続ポート１４０が、それぞれの異なる座標軸に対応するように計算機１０を接続する。
【００６６】
次に、図８を参照して、アドレス割当部２３による計算機１０に対するアドレスの割り当て処理の流れについて説明する。図８は、アドレスの割り当て処理のフローチャートである。
【００６７】
アドレス割当部２３は、並列計算機１が有する計算機１０の中から基準とする計算機１０を選択する。そして、アドレス割当部２３は、選択した基準とする計算機１０の接続ポート座標を（０，０，０）とする（ステップＳ２０１）。
【００６８】
次に、アドレス割当部２３は、割当用接続ポート座標を初期化する（ステップＳ２０２）。すなわち、アドレス割当部２３は、割当用接続ポート座標の各座標をＸ＝０、Ｙ＝０、Ｚ＝０とする。
【００６９】
次に、アドレス割当部２３は、Ｘ軸を選択軸として選択して割当用接続ポート座標のＸ座標の値を１つインクリメントする（ステップＳ２０３）。
【００７０】
次に、アドレス割当部２３は、選択座標軸の正方向に、割当用接続ポート座標における選択座標軸の座標値の数移動させた位置の計算機１０を割当対象として選択する（ステップＳ２０４）。
【００７１】
次に、アドレス割当部２３は、割当対象の計算機１０における選択座標軸に対応する接続ポート１４０がマルチポート構造を有するか否かにより、選択座標軸と同じ座標値とする座標軸が存在するか否かを判定する（ステップＳ２０５）。同じ座標値とする座標軸が存在しない場合（ステップＳ２０５：否定）、アドレス割当部２３は、ステップＳ２０７へ進む。
【００７２】
一方、同じ座標値とする座標軸が存在する場合（ステップＳ２０５：肯定）、アドレス割当部２３は、割当用接続ポート座標における選択座標軸と同じ座標値とする座標軸の座標値を、選択座標軸の座標値と同じ値とする（ステップＳ２０６）。
【００７３】
次に、アドレス割当部２３は、現在の割当用接続ポート座標を割当対象の計算機１０の接続ポート座標とする。そして、アドレス割当部２３は、割当対象の計算機１０の接続ポート座標をアドレスとして割り当てる（ステップ２０７）。
【００７４】
次に、アドレス割当部２３は、割当対象の計算機１０から正方向に移動可能な座標軸が存在するか否かを判定する（ステップＳ２０８）。
【００７５】
正方向に移動可能な座標軸がある場合（ステップＳ２０８：肯定）、アドレス割当部２３は、割当対象の計算機１０からＸ軸方向に１つ移動すると基準とする計算機１０に到達するか否かを判定する（ステップＳ２０９）。基準とする計算機１０に到達しない場合（ステップＳ２０９：否定）、アドレス割当部２３は、ステップＳ２０３へ戻る。
【００７６】
一方、選択座標軸の正方向に移動困難な場合（ステップＳ２０８：否定）及び基準とする計算機１０に到達する場合（ステップＳ２０９：肯定）、アドレス割当部２３は、割当用接続ポート座標のＸ座標が最大値か否かを判定する（ステップＳ２１０）。割当用接続ポート座標のＸ座標が最大値でない場合（ステップＳ２１０：否定）、アドレス割当部２３は、ステップＳ２０３へ戻る。
【００７７】
これに対して、割当用接続ポート座標のＸ座標が最大値の場合（ステップＳ２１０：肯定）、アドレス割当部２３は、割当用接続ポート座標のＹ座標が最大値か否かを判定する（ステップＳ２１１）。割当用接続ポート座標のＹ座標が最大値でない場合（ステップＳ２１１：否定）、アドレス割当部２３は、Ｙ軸を選択軸として選択して割当用接続ポート座標のＹ座標の値を１つインクリメントし（ステップＳ２１２）、ステップＳ２０４へ戻る。
【００７８】
これに対して、割当用接続ポート座標のＹ座標が最大値の場合（ステップＳ２１１：肯定）、アドレス割当部２３は、割当用接続ポート座標のＺ座標が最大値か否かを判定する（ステップＳ２１３）。割当用接続ポート座標のＺ座標が最大値でない場合（ステップＳ２１３：否定）、アドレス割当部２３は、Ｚ軸を選択軸として選択して割当用接続ポート座標のＺ座標の値を１つインクリメントし（ステップＳ２１４）、ステップＳ２０４へ戻る。
【００７９】
これに対して、割当用接続ポート座標のＺ座標が最大値の場合（ステップＳ２１３：肯定）、アドレス割当部２３は、アドレスの割り当て処理を終了する。
【００８０】
以上に説明したように、本実施例に係る並列計算機の計算機は、異なる座標軸にあたる接続ポートが同じ計算機に接続されるように自動的に接続され、接続ポートがマルチポート構造を有するようになる。さらに、本実施例に係る計算機には、マルチポート構造を有する接続ポートに対応する座標軸おいて同じ値を有する座標がアドレスとして自動的に与えられる。これにより、バス幅の拡張を容易に行うことができる。また、マルチポート構造を有するノード間接続においてハードウェアの追加要素を削減することができ、パケットの送信におけるソフトウェアの処理を軽減することができる。
【００８１】
ここで、本実施例では、計算機１０間の接続及びアドレスの付与を自動で行う場合で説明したが、予めマルチポート構造を有するように接続された計算機１０に対して自動でアドレスを付与する構成にしてもよい。その場合も、マルチポート構造を有するノード間接続においてハードウェアの追加要素を削減することができ、パケットの送信におけるソフトウェアの処理を軽減することができる。
【実施例３】
【００８２】
次に、実施例３について説明する。本実施例に係る並列計算機１における計算機は、送受信エンジン１２０が優先順位に応じてパケットを出力するポートを選択することが実施例１と異なる。本実施例に係る計算機１０のブロック図も図４で表される。以下の説明では、実施例１と同様の各部の動作については説明を省略する。
【００８３】
ＣＰＵ１１は、送信するパケットに順序保証を要求するか否かを判定する。順序保証が要求されるパケットの場合、ＣＰＵ１１は、送信するパケットに対して順序保証を行う先行パケットが存在するか否かを判定する。
【００８４】
先行パケットが存在する場合、ＣＰＵ１１は、先行パケットを送信した送受信エンジン１２０を選択する。そして、ＣＰＵ１１は、パケットの送信命令を選択した送受信エンジン１２０へ出力する。
【００８５】
これに対して、先行パケットが存在しない場合、ＣＰＵ１１は、空いている送受信エンジン１２０を選択する。そして、ＣＰＵ１１は、パケットの送信命令を選択した送受信エンジン１２０へ出力する。
【００８６】
また、順序保証が要求されないパケットの場合、ＣＰＵ１１は、空いている送受信エンジン１２０を選択する。そして、ＣＰＵ１１は、パケットの送信命令を選択した送受信エンジン１２０へ出力する。
【００８７】
各送受信エンジン１２０は、図９に示す優先順位パターンの何れかを予め有する。図９は、優先順位パターンを表す図である。例えば、ある１つの送受信エンジン１２０は、優先順位パターンとして第１パターンを記憶する。また、他の１つの送受信エンジン１２０は、優先順位パターンとして第２パターンを記憶する。
【００８８】
図９では、接続ポート１４０を座標軸で表した。例えば、第１パターンにおいて優先順位が最も高い接続ポート１４０は、Ｘ軸の正方向及び負方向に繋がる接続ポート１４０であり、図４における接続ポート１４１及び１４２である。
【００８９】
送受信エンジン１２０は、パケットの送信命令の入力をＣＰＵ１１から受ける。そして、順序保証が要求されるパケットであれば、送受信エンジン１２０は、先行パケットがあるか否かを判定する。先行パケットがあれば、送受信エンジン１２０は、同じ送信ルートを用いて受信したパケットを送信することを決定する。そして、送受信エンジン１２０は、先行パケットを送信した接続ポート１４０を出力ポートとして選択する。そして、送受信エンジン１２０は、選択した接続ポート１４０へ受信したパケットを送信する。
【００９０】
これに対して、先行パケットが存在しない場合又は順序保証が要求されていないパケットであれば、送受信エンジン１２０は、以下の処理を行う。送受信エンジン１２０は、宛先アドレスへパケットを送信するルートを特定する。次に、送受信エンジン１２０は、特定したルートを経由することが可能な接続ポート１４０の中から空いている接続ポート１４０を特定する。そして、送受信エンジン１２０は、特定した接続ポート１４０の中から、自己が有する優先順位パターンにおいて最も優先順位が高い接続ポート１４０を出力ポートとして選択する。その後、送受信エンジン１２０は、選択した接続ポート１４０へパケットを送信する。
【００９１】
例えば、送受信エンジン１２０が、図９に示す出力パターンのうち第１パターンを使用する場合で説明する。送受信エンジン１２０は、順序保証が要求されておらず全ての接続ポート１４０が空いていれば、Ｘ軸の正方向及び負方向の接続ポート１４０である図４における接続ポート１４１又は１４２を出力ポートとする。また、順序保証が要求されておらずＸ軸の正方向及び負方向の接続ポート１４０以外が空いてれば、送受信エンジン１２０は、Ｙ軸の正方向及び負方向の接続ポート１４０である図４における接続ポート１４３又は１４４を出力ポートとする。
【００９２】
次に、図１０を参照して、本実施例に係る並列計算機１によるパケットの送信処理の流れについて説明する。図１０は、実施例３に係る並列計算機によるパケットの送信処理のフローチャートである。
【００９３】
各計算機１０のマルチポート構造に指定された接続ポート１４０が同じ他の計算機１０に接続される（ステップＳ３０１）。
【００９４】
さらに、各計算機１０のマルチポート構造に指定された接続ポート１４０が接続する座標の値が同じ値となるように、各計算機１０の接続ポート座標が決定される。そして、決定された接続ポート座標が、アドレスとして各計算機１０に割り当てられる（ステップＳ３０２）。
【００９５】
その後、ＣＰＵ１１は、パケットの送信を決定すると、送信するパケットが順序保証が要求されたパケットか否かを判定する（ステップＳ３０３）。
【００９６】
順序保証が要求されたパケットの場合（ステップＳ３０３：肯定）、ＣＰＵ１１は、送信するパケットに対して順序保証が要求された先行パケットが存在するか否かを判定する（ステップＳ３０４）。
【００９７】
先行パケットが存在する場合（ステップＳ３０４：肯定）、ＣＰＵ１１は、先行パケットを送信した送受信エンジン１２０を選択する（ステップＳ３０５）。そして、ＣＰＵ１１は、先行パケットを送信した送受信エンジン１２０に対してパケットの送信命令を出力する。
【００９８】
送受信エンジン１２０は、パケットの送信命令の入力をＣＰＵ１１から受ける。そして、送受信エンジン１２０は、先行パケットと同じ送信ルートを取得したパケットの送信ルートと決定し、先行パケットを送信した接続ポート１４０にパケットを送信する（ステップＳ３０６）。
【００９９】
一方、取得したパケットが順序保証が要求されたパケットでない場合（ステップＳ３０３：否定）又は取得したパケットに先行パケットが存在しない場合（ステップＳ３０４：否定）、ＣＰＵ１１は、空いている送受信エンジン１２０を選択する（ステップＳ３０７）。そして、ＣＰＵ１１は、選択した送受信エンジン１２０に対してパケットの送信命令を出力する。
【０１００】
送受信エンジン１２０は、パケットの送信命令の入力をＣＰＵ１１から受ける。そして、送受信エンジン１２０は、パケットの宛先アドレス、接続ポート１４０の空き状況及び優先順位にしたがい出力ポートとする接続ポート１４０を選択する。そして、送受信エンジン１２０は、選択した接続ポート１４０へパケットを送信する（ステップＳ３０８）。
【０１０１】
その後、送受信エンジン１２０は、パケットの送信を継続するか否かを判定する（ステップＳ３０９）。パケットの送信を継続する場合（ステップＳ３０９：肯定）、送受信エンジン１２０は、ステップＳ３０３へ戻る。
【０１０２】
これに対して、パケットの送信を継続せずに終了する場合（ステップＳ３０９：否定）、送受信エンジン１２０は、パケットの送信処理を終了する。
【０１０３】
以上に説明したように、本実施例に係る並列計算機における各計算機は、送受信エンジンが、優先順位に応じてパケットの出力ポートを選択する。これにより、バス幅の広い経路を優先的に選択することができ、処理速度を向上させることができる。
【実施例４】
【０１０４】
図１１は、実施例４に係る計算機のブロック図である。本実施例に係る計算機１０は、複数のコマンドキュー２００を有する。本実施例に係る計算機１０は、コマンドキュー２００が優先順位に応じてパケットを出力するポートを選択することが実施例３と異なる。以下の説明においても、実施例３と同様に実施例１と同様の各部の動作については説明を省略する。
【０１０５】
送受信エンジン１２０は、パケットの送信命令をＣＰＵ１１から受ける。そして、送受信エンジン１２０は、送信するパケットが順序保証が要求されたパケットか否かを判定する。順序保証が要求されるパケットの場合、送受信エンジン１２０は、送信するパケットに対して順序保証を行う先行パケットが存在するか否かを判定する。
【０１０６】
先行パケットが存在する場合、送受信エンジン１２０は、先行パケットを送信させたコマンドキュー２００を選択する。そして、送受信エンジン１２０は、パケットの送信命令を選択したコマンドキュー２００へ出力する。
【０１０７】
これに対して、先行パケットが存在しない場合、送受信エンジン１２０は、空いているコマンドキュー２００を選択する。そして、送受信エンジン１２０は、選択したコマンドキュー２００へパケットの送信命令を出力する。
【０１０８】
また、順序保証が要求されないパケットの場合、送受信エンジン１２０は、空いているコマンドキュー２００を選択する。そして、送受信エンジン１２０は、パケットの送信命令を選択したコマンドキュー２００へ出力する。
【０１０９】
コマンドキュー２００は、所定数が各送受信エンジン１２０に対応するように、送受信エンジン１２０及びクロスバスイッチ１３の間に配置される。コマンドキュー２００は、送受信エンジン１２０から送信された送信命令などのコマンドを格納し、格納したタイミングの早い順に処理する。
【０１１０】
より詳細にパケットの送信について説明する。コマンドキュー２００は、図９に示す優先順位パターンの何れかを予め有する。そして、コマンドキュー２００は、パケットの送信命令の入力を送受信エンジン１２０から受ける。
【０１１１】
順序保証が要求されるパケットであれば、コマンドキュー２００は、先行パケットがあるか否かを判定する。先行パケットがあれば、コマンドキュー２００は、同じ送信ルートを用いて受信したパケットを送信することを決定する。そして、コマンドキュー２００は、先行パケットを送信した接続ポート１４０を出力ポートとして選択する。そして、コマンドキュー２００は、選択した接続ポート１４０へ受信したパケットを送信する。
【０１１２】
これに対して、先行パケットが存在しない場合又は順序保証が要求されていないパケットであれば、コマンドキュー２００は、以下の処理を行う。コマンドキュー２００は、宛先アドレスへパケットを送信するルートを特定する。次に、コマンドキュー２００は、特定したルートを経由することが可能な接続ポート１４０の中から空いている接続ポート１４０を特定する。そして、コマンドキュー２００は、特定した接続ポート１４０の中から、自己が有する優先順位パターンにおいて最も優先順位が高い接続ポート１４０を出力ポートとして選択する。その後、コマンドキュー２００は、選択した接続ポート１４０へパケットを送信する。
【０１１３】
例えば、コマンドキュー２００が、図９に示す優先順位を示すパターンのうち第２パターンを使用する場合で説明する。コマンドキュー２００は、順序保証が要求されておらず全ての接続ポート１４０が空いていれば、Ｚ軸の正方向及び負方向の接続ポート１４０である図１１における接続ポート１４５又は１４６を出力ポートとする。また、順序保証が要求されておらずＺ軸の正方向及び負方向の接続ポート１４０以外が空いてれば、コマンドキュー２００は、Ｘ軸の正方向及び負方向の接続ポート１４０である図１１における接続ポート１４１又は１４２を出力ポートとする。
【０１１４】
また、コマンドキュー２００は、他の計算機１０から送信されたパケットをクロスバスイッチ１３を介して取得する。そして、コマンドキュー２００は、同じ送受信エンジン１２０へ繋がるコマンドキュー２００との間でパケットの送信タイミングを調整しつつ、取得順に送受信エンジン１２０へパケットを出力する。このコマンドキュー２００が、「一時保持部」の一例にあたる。
【０１１５】
次に、図１２を参照して、本実施例に係る並列計算機１によるパケットの送信処理の流れについて説明する。図１２は、実施例４に係る並列計算機によるパケットの送信処理のフローチャートである。
【０１１６】
各計算機１０のマルチポート構造に指定された接続ポート１４０が同じ他の計算機１０に接続される（ステップＳ４０１）。
【０１１７】
さらに、各計算機１０のマルチポート構造に指定された接続ポート１４０が接続する座標の値が同じ値となるように、各計算機１０の接続ポート座標が決定される。そして、決定された接続ポート座標が、アドレスとして各計算機１０に割り当てられる（ステップＳ４０２）。
【０１１８】
その後、送受信エンジン１２０は、ＣＰＵ１１から送信するパケットの入力を受けると、取得したパケットが順序保証が要求されたパケットか否かを判定する（ステップＳ４０３）。
【０１１９】
順序保証が要求されたパケットの場合（ステップＳ４０３：肯定）、送受信エンジン１２０は、取得したパケットに対して順序保証が要求された先行パケットが存在するか否かを判定する（ステップＳ４０４）。
【０１２０】
先行パケットが存在する場合（ステップＳ４０４：肯定）、送受信エンジン１２０は、先行パケットを送信したコマンドキュー２００を選択する（ステップＳ４０５）。
【０１２１】
そして、送受信エンジン１２０は、先行パケットを送信したコマンドキュー２００に対してパケットの送信命令を送信する（ステップＳ４０６）。
【０１２２】
コマンドキュー２００は、パケットの送信命令の入力を送受信エンジン１２０から受ける。そして、コマンドキュー２００は、先行パケットを送信した接続ポート１４０と同じ接続ポート１４０にパケットを送信する（ステップＳ４０７）。
【０１２３】
一方、取得したパケットが順序保証が要求されたパケットでない場合（ステップＳ４０３：否定）又は取得したパケットに先行パケットが存在しない場合（ステップＳ４０４：否定）、送受信エンジン１２０は、以下の処理を行う。送受信エンジン１２０は、空いているコマンドキュー２００を選択する（ステップＳ４０８）。
【０１２４】
そして、送受信エンジン１２０は、選択したコマンドキュー２００に対してパケットの送信命令を送信する（ステップＳ４０９）。
【０１２５】
コマンドキュー２００は、パケットの送信命令の入力を送受信エンジン１２０から受ける。そして、コマンドキュー２００は、接続ポート１４０の空き状況及び優先順位にしたがい出力ポートとする接続ポート１４０を選択する。そして、コマンドキュー２００は、選択した接続ポート１４０へパケットを送信する（ステップＳ４１０）。
【０１２６】
その後、送受信エンジン１２０は、パケットの送信を継続するか否かを判定する（ステップＳ４１１）。パケットの送信を継続する場合（ステップＳ４１１：肯定）、送受信エンジン１２０は、ステップＳ４０３へ戻る。
【０１２７】
これに対して、パケットの送信を接続せずに終了する場合（ステップＳ４１１：否定）、送受信エンジン１２０は、パケットの送信処理を終了する。
【０１２８】
以上に説明したように、本実施例に係る並列計算機における各計算機は、コマンドキューが優先順位に応じてパケットの出力ポートを選択する。これにより、バス幅の広い経路を優先的に選択することができ、処理速度を向上させることができる。また、通常であれば各コマンドキューが有する設定レジスタは同じアドレスのビット違いの場合が多い。そのため、各送受信エンジンに対応するコマンドキューは、同じ値を設定レジスタに格納させることで同じ設定にすることができる。このことから、コマンドキューに対する優先順位の設定は、ブロードキャストにより一括して行うことができる。したがって、送受信エンジンにより優先順位を判定させる場合に比べて、優先順位を書き換えるコストや手間を軽減することができる。
【０１２９】
また、コマンドキューにより優先順位に応じて出力ポートを選択する本実施例の説明に図１１を用いたが、図１１の構成であっても実施例３のように優先順位に応じた出力ポートの選択を送受信エンジン１２０で行わせることもできる。
【実施例５】
【０１３０】
図１３は、実施例５に係る並列計算機におけるパケットの送受信を説明するための図である。本実施例に係る計算機１０は、パケットを分割してマルチポート構造を有する接続ポート１４０のそれぞれを用いて分割したパケットを送信することが実施例１と異なる。以下の説明では、実施例３と同様に実施例１と同様の各部の動作については説明を省略する。
【０１３１】
図１３において紙面に向かって計算機１０の下に記載したパケット４０１、並びに、分割パケット４０２及び４０３は、各計算機１０の間における分割して送信される場合のパケットの状態を表す。ここで、本実施例では、Ｘ軸及びＺ軸に対応する接続ポート１４１及び１４２と接続ポート１４５及び１４６とがマルチポート構造を有する場合で説明する。
【０１３２】
送受信エンジン１２０は、Ｘ軸及びＺ軸の正方向に繋がる接続ポート１４０に接続する計算機１０へのパケットの送信命令をＣＰＵ１１から受信する。ここでは、一例として、パケット４０１が、Ｘ軸及びＺ軸の正方向へ送信される場合で説明する。送受信エンジン１２０は、マルチポート構造を有する接続ポート１４０で接続される計算機１０に向けてパケット４０１を送信する場合、パケット４０１を分割し、分割パケット４０２及び４０３を生成する。
【０１３３】
そして、送受信エンジン１２０は、Ｘ軸の正方向に繋がる接続ポート１４１を用いて分割パケット４０２を他の計算機１０へ送信すると決定する。また、送受信エンジン１２０は、Ｘ軸の正方向に繋がる接続ポート１４５を用いて分割パケット４０３を他の計算機１０へ送信すると決定する。その後、送受信エンジン１２０は、分割パケット４０２を接続ポート１４１から出力させ、分割パケット４０３を接続ポート１４５から出力させる。
【０１３４】
受信側の計算機１０の送受信エンジン１２０は、Ｘ軸の負方向に繋がる接続ポート１４２を介して分割パケット４０２の入力を受ける。また、受信側の計算機１０の送受信エンジン１２０は、Ｚ軸の負方向に繋がる接続ポート１４６を介して分割パケット４０３の入力を受ける。
【０１３５】
そして、受信側の計算機１０の送受信エンジン１２０は、分割パケット４０２と分割パケット４０３とを結合させ、元のパケット４０１を生成する。そして、送受信エンジン１２０は、生成したパケット４０１をＣＰＵ１１へ出力する。
【０１３６】
また、ここでは、図１３に示すように直接接続する計算機１０の間の通信の場合で説明したが、他の計算機１０を介して通信を行う場合でも、計算機１０は、同様に分割パケット４０２及び４０３を送受信することができる。
【０１３７】
以上に説明したように、本実施例に係る計算機は、マルチポート構造を有する接続ポートを用いてパケットを送信する場合、送信側の計算機はパケットを分割して送信し、受信側の計算機は受信したパケットを結合して分割前のパケットに戻す。これにより、バス幅を有効利用できるので通信効率が向上し、処理速度を向上させることができる。
【０１３８】
さらに、以上の各実施例では、３次元の接続ポート座標を有する計算機において２次元分の接続ポートをマルチポート構造とする場合で説明したが、マルチポート構造の接続にはこれに限らない。例えば、３次元の接続ポート座標を有する計算機において、３次元分の接続ポートをマルチポート構造としてもよい。また、３次元以上の接続ポート座標を有する計算機においてその次元以下であればいくつでも接続ポートを多重化してマルチポート構造とすることが可能である。例えば、６次元の接続ポート座標を有する計算機において、２つずつの座標をそれぞれマルチポート構造とすることも可能である。
【０１３９】
また、以上の各実施例では、各計算機がトーラス状（環状）に接続される場合で説明したが、各実施例で説明した機能を用いて、マルチポート構造を有する接続ポートを用いた通信において処理速度を向上させるネットワーク構成はこれに限らない。例えば、Ｘ軸からＺ軸を表す各経路は、各計算機を数珠繋ぎに接続し、両端の計算機で終端するネットワーク構成でもよい。このように、各計算機を数珠繋ぎに接続し両端の計算機で終端するネットワーク構成が、「一列に接続」された状態にあたる。
【符号の説明】
【０１４０】
１  並列計算機
２  管理装置
１０  計算機
１１  ＣＰＵ
１２  送受信部
１３  クロスバスイッチ
２１  接続決定部
２２  接続切替部
２３  アドレス割当部
４０  判定回路
１２０  送受信エンジン
１４０〜１４６  接続ポート
２００  コマンドキュー
１５１〜１５３  経路
【図１】
2019087183.tif 000003
【図２】
2019087183.tif 000004
【図３】
2019087183.tif 000005
【図４】
2019087183.tif 000006
【図５】
2019087183.tif 000007
【図６】
2019087183.tif 000008
【図７】
2019087183.tif 000009
【図８】
2019087183.tif 000010
【図９】
2019087183.tif 000011
【図１０】
2019087183.tif 000012
【図１１】
2019087183.tif 000013
【図１２】
2019087183.tif 000014
【図１３】
2019087183.tif 000015