(57)【要約】【課題】効率的な通信を行う並列計算機システムを提供する。【解決手段】クロスバスイッチ５は、複数の出力ポート６１〜６４と、ＣＰＵ１〜４の中から出力ポート６２と対になるＣＰＵ１を決定する組合せ決定部とを備える。出力ポート６２は、所定の状態で対のＣＰＵ１から調停リクエストを受信すると対のＣＰＵ１を選択し、それ以外の場合、調停リクエストを受け付けたＣＰＵ１〜４から一つを選択し、送信許可を返信する調停回路と、選択されたＣＰＵ１からデータを受信し、他のＣＰＵ２に対して受信したデータを転送するデータ転送部とを備える。ＣＰＵ１は、出力ポート６１〜６４に調停リクエストを送信するリクエスト送信部と、所定の状態にある対の出力ポート６２に調停リクエストを送信した場合、対の出力ポート６２に対してデータを送信し、それ以外の場合、送信許可を返信した出力ポート６２〜６４に対してデータを送信するデータ送信部とを備える。【選択図】図１
2014038497.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ計算を行う複数の計算ノードと前記複数の計算ノードに接続するデータ転送装置とを有する並列計算機システムにおいて、
前記データ転送装置は、
所定の状態で対の計算ノードから調停リクエストを受信すると前記対の計算ノードを選択し、それ以外の場合、前記複数の計算ノードいずれか一つ又は複数から前記調停リクエストを受け付け、前記調停リクエストを受け付けた計算ノードから一つを選択し、選択した計算ノードに対して送信許可を返信する調停部と、前記調停部により選択された計算ノードからデータを受信し、他の計算ノードに対して受信したデータを転送するデータ転送部とを有する複数のポートと、
前記複数の計算ノードの中から各前記ポートと対になる前記対の計算ノードをそれぞれ動的に決定する組合せ決定部とを備え、
前記計算ノードは、
前記ポートにデータ送信要求である調停リクエストを送信するリクエスト送信部と、
前記所定の状態にある前記対のポートに対して前記リクエスト送信部が調停リクエストを送信した場合、前記対のポートに対してデータを送信し、それ以外の場合、前記調停リクエストに対する送信許可を返信したポートに対してデータを送信するデータ送信部とを備える
ことを特徴とする並列計算機システム。
【請求項２】
前記組合せ決定部は、各前記ポートに対して第１所定時間におけるデータ通信アクセス数が最多の計算ノードを、各前記ポートの対の計算ノードとすることを特徴とする請求項１に記載の並列計算機システム。
【請求項３】
前記組合せ決定部は、第２所定時間における前記データ通信アクセス数の上位２つの差が所定値以下になったポートがある場合、該ポートの対の計算ノードを解除することを特徴とする請求項２に記載の並列計算機システム。
【請求項４】
前記組合せ決定部は、対の計算ノードを解除したポートにおいて、前記第２所定時間における前記データ通信アクセス数の上位２つの差が閾値以上となった場合、当該ポートに対して第１所定時間における前記データ通信アクセス数が最多の計算ノードを、対の計算ノードとすることを特徴とする請求項３に記載の並列計算機システム。
【請求項５】
前記組合せ決定部は、前記ポートにおける各前記計算ノードからの前記データ通信アクセス数をカウントし、前記データ通信アクセス数が閾値を超える計算ノードの中から前記対の計算ノードを１つ選択することを特徴とする請求項１に記載の並列計算機システム。
【請求項６】
前記組合せ決定部は、前記計算ノードが実行する処理を基に前記計算ノードと前記ポートの組合せを決定することを特徴とする請求項１に記載の並列計算機システム。
【請求項７】
前記組合せ決定部は、前記計算ノードが実行する処理における各前記計算ノードと各前記ポートとの間の通信量に応じて前記計算ノードと前記ポートの組合せを決定することを特徴とする請求項６に記載の並列計算機システム。
【請求項８】
それぞれ計算を行う複数の計算ノードに接続する複数のポートと、
前記ポートの中から前記複数の計算ノードのそれぞれと対になるポートを決定する組合せ決定部と、
所定の状態で対の計算ノードから調停リクエストを受信すると前記対の計算ノードを選択し、それ以外の場合、前記複数の計算ノードのうちのいずれか一つ又は複数からデータ送信要求である調停リクエストを受け付け、前記調停リクエストを受け付けた計算ノードから一つを選択し、選択した計算ノードに対して送信許可を返信する調停部と、
前記調停部により選択された計算ノードからデータを受信し、他の計算ノードに対して受信したデータを転送するデータ転送部と
を備えたことを特徴とするデータ転送装置。
【請求項９】
それぞれ計算を行う複数の計算ノードと前記複数の計算ノードに接続する複数のポートを有するデータ転送装置とを有する並列計算機システムの制御方法において、
各前記計算ノードの中から各前記ポートと対になる前記ポートをそれぞれ決定し、
前記計算ノードに、前記ポートにデータ送信要求である調停リクエストを送信させ、
前記ポートに、前記計算ノードから前記調停リクエストを受信させ、
前記ポートが所定の状態で前記対の計算ノードから調停リクエストを受信すると、当該ポートに前記対の計算ノードを選択させ、それ以外の場合、前記調停リクエストを受け付けた計算ノードの中から一つを選択させ、選択した計算ノードに対して送信許可を返信させ、
前記計算ノードが前記所定の状態の前記対のポートに調停リクエストを送信した場合、前記計算ノードに、前記対のポートに対してデータを送信させ、
前記所定の状態の前記対のポートに調停リクエストを送信する以外の場合、前記計算ノードに、前記調停リクエストに対する送信許可を返信した前記ポートに対してデータを送信させ、
前記ポートに、選択した計算ノードからデータを受信させ、他の計算ノードに対して受信したデータを転送させる
ことを特徴とする並列計算機システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算機システム、データ転送装置及び並列計算機システムの制御方法に関する。
【背景技術】
【０００２】
並列計算機などでは、ＣＰＵ（Central  Processing  Unit）及びメモリなどを有する電子計算機である計算ノードを複数接続してシステム全体の性能向上を図ることが行われている。このような複数の計算ノードを有する情報処理システムで用いられるネットワークには、複数の計算ノードをスイッチで繋いで構成されるものがある。このスイッチには、データ転送装置としてのクロスバスイッチなどが用いられる場合がある。
【０００３】
クロスバスイッチには、入力ポートにバッファを有するものと、物量の制限などから入力ポートにバッファを有さないものがある。バッファを有さないクロスバスイッチを用いた場合、クロスバスイッチの入力ポートとその入力ポートへデータを供給する計算ノードなどの送信元との間でデータを同期させるなどのハンドシェイクが行われる。複数の計算ノードからデータの送信要求がある場合、ハンドシェイクを行う対象の決定が行われる。このハンドシェイク対象の決定の処理は調停と呼ばれる場合がある。ハンドシェイクの方式の一例として、送信元からクロスバスイッチに対して調停リクエストを送信し、それを受信したクロスバスイッチが送信許可を送信元へ応答するという手順を経た後に、送信元がクロスバスイッチに対してデータパケットを送信する方式がある。また、複数の計算ノードが入力ポートに対して順番に一定期間データ送信を許可する方式がある。
【０００４】
調停リクエストを用いる場合、クロスバスイッチは、複数の計算ノードからデータの調停リクエストを受信すると、どの計算ノードからの調停リクエストを受け付けるかを決定する調停処理を行う。選択された計算ノードは、選択を行ったポートとの間の送信許可を得て、送信許可を受けたポートにデータパケットを送信する。このような調停処理における調停リクエストの処理方法として、あるポートにおいて選択されなかった調停リクエスト及びあるポートから選択された計算ノードが他のポートへ出力している調停リクエストを１度削除する方法が考えられる。以下では、あるポートにおいて選択されなかった調停リクエスト及びあるポートから選択された計算ノードが他のポートへ出力している調停リクエストを「不使用の調停リクエスト」という。また、不使用の調停リクエストを削除することを「ネゲート」という場合がある。さらに、他の処理方法として、あるポートから選択された計算ノードが他のポートへ出力した調停リクエストを出し続ける方法が考えられる。
【０００５】
また、ポート毎に調停までの待ち時間を作成し、調停装置が待ち時間の待機後に調停を行い、クロスバスイッチのデッドサイクルの発生を抑える従来技術が提供されている（例えば、特許文献１参照）。その他にも、データ転送許可信号を発信後にデータの長さをカウンタにセットして定期的にカウンタをデクリメントしカウンタが０になった場合に次の調停処理を行う従来技術などがある（例えば、特許文献２参照）。
【０００６】
このようなシステムにおいて、計算ノードとポートとの組みの間に通信頻度の差が生じることが考えられる。この場合、従来のシステムでは、同じ程度に計算ノードとポートとを接続させてデータ伝送を行っていくため、通信頻度の高い入力ポートと低い入力ポートとの優劣が付かずデータ転送処理の効率を向上させることは困難であった。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−７３４０３号公報
【特許文献２】特開２００１−２２７１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
そこで、通信頻度の高い出力ポートと低い出力ポートとの優劣にあわせて処理を高速に行うために、計算ノードと入力ポートとで通信頻度が高い組合せをグループとして接続させる優先順位を高めることが考えられる。この場合、不使用の調停リクエストを一度削除し、新たな調停リクエストをそれぞれの計算ノードが送信する方法が用いられることがある。この場合次のような問題が考えられる。
【０００９】
例えば、図９を参照して、通信頻度が高い組合せをグループとした場合の並列計算機におけるデータ転送の一例について説明する。ここで、図９は、通信頻度が高い組合せをグループとした場合の並列計算機におけるデータ転送を説明するための図である。
【００１０】
計算ノード９０１と出力ポート９１２とがグループであり、計算ノード９０２と出力ポート９１３とがグループであり、計算ノード９０３と出力ポート９１４とがグループであり、計算ノード９０４と出力ポート９０１とがグループである。そして、計算ノード９０１は、出力ポート９１２〜９１３のそれぞれに調停リクエスト９２１〜９２３を送信し、出力ポート９１２からの送信許可９２４を受け、出力ポート９１２を介して計算ノード９０２へのデータ転送を選択する。その後、計算ノード９０１は、出力ポート９１３及び９１４への調停リクエストは削除する。さらに、計算ノード９０１は、新たな調停リクエストをポート９１２へ送信する。この場合、計算ノード９０１は、ポート９１２へのデータ送信が完了した後に、出力ポート９１２〜９１４に対して同時に調停リクエストを送信する。この場合、出力ポート９１３及び９１４は、自己とグループになっている計算ノード９０２及び９０３に対して送信している送信許可に対するデータ送信が行われないことを確認してから、計算ノード９０１の調停リクエストに対する調停を行う。これに対して、出力ポート９１２は、計算ノード９０１からの調停リクエストに対する調停を受信後直ぐに行える。そのため、出力ポート９１２は、出力ポート９１３及び９１４に比べてレイテンシが小さく、計算ノード９０１に対する送信許可の送信が直ぐに行えるので、計算ノード９０１においてデータの送信先として選択される確率がポート９１３及び９１４に比べて高い。この結果、同じ組合せでデータ転送が何度も行われる可能性が高くなる。
【００１１】
また、計算ノード９０１が、出力ポート９１２へのデータ送信完了後に、出力ポート９１２〜９１４に対して調停リクエストを同時に送信し、出力ポート９１３及び９１４は、グループとなっている計算ノードに対して送信許可を送信してはいない場合を考える。この場合、出力ポート９１２が計算ノードＡ９０１とグループになっているので、出力ポート９１２は、出力ポート９１３及び９１４に対してレイテンシが小さく、計算ノード９０１は、出力ポート９０１に対するデータ送信を直ぐに始められる。このため、出力ポート９１２は、出力ポート９１３及び９１４に比べて、計算ノード９０１によってデータの送信先として選択させる確立が高い。この結果、この場合も同じ組合せでデータ転送が何度も行われる可能性が高くなる。
【００１２】
このようなことから、従来の並列計算機では、並列計算機においてデータ転送の不均衡が発生し効率的な通信を行うことが困難となる。
【００１３】
そして、ポート毎に調停までの待ち時間を作成する従来技術においても、通信頻度が高い組合せをグループとした場合を考慮してはおらず、グループとされた計算ノードとポートとがバスを専有してしまう可能性が高く、効率的な通信を行うことは困難である。また、データの長さをセットしたカウンタに基づいて調停を行う従来技術でも、通信頻度が高い組合せをグループとした場合を考慮してはおらず、同様に効率的な通信を行うことは困難である。
【００１４】
開示の技術は、上記に鑑みてなされたものであって、効率的な通信を行う並列計算機システム、データ転送装置及び並列計算機システムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本願の開示する並列計算機システム、データ転送装置及び並列計算機システムの制御方法は、一つの態様において、それぞれ計算を行う複数の計算ノードと前記複数の計算ノードに接続するデータ転送装置とを有する。前記データ転送装置は、所定の状態で対の計算ノードから調停リクエストを受信すると前記対の計算ノードを選択し、それ以外の場合、前記複数の計算ノードいずれか一つ又は複数から前記調停リクエストを受け付け、前記調停リクエストを受け付けた計算ノードから一つを選択し、選択した計算ノードに対して送信許可を返信する調停部と、前記調停部により選択された計算ノードからデータを受信し、他の計算ノードに対して受信したデータを転送するデータ転送部とを有する複数のポートと、前記複数の計算ノードの中から各前記ポートと対になる前記対の計算ノードをそれぞれ動的に決定する組合せ決定部とを備える。前記計算ノードは、前記ポートにデータ送信要求である調停リクエストを送信するリクエスト送信部と、前記所定の状態にある前記対のポートに対して前記リクエスト送信部が調停リクエストを送信した場合、前記対のポートに対してデータを送信し、それ以外の場合、前記調停リクエストに対する送信許可を返信したポートに対してデータを送信するデータ送信部とを備える。
【発明の効果】
【００１６】
本願の開示する並列計算機システム、データ転送装置及び並列計算機システムの制御方法の一つの態様によれば、効率的な通信を行うことができるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施例１に係る並列計算機の構成図である。
【図２】図２は、実施例１に係る並列計算機の詳細を表すブロック図である。
【図３】図３は、各ＣＰＵから各出力ポートへのアクセス数の集計結果の一例を表す図である。
【図４】図４は、実施例１に係る並列計算機におけるマスターポートの切替処理のフローチャートである。
【図５】図５は、従来の並列計算機によるネゲートを行う場合のデータ送信処理のタイミングチャートである。
【図６】図６は、実施例２に係る並列計算機におけるマスターポートの切替処理のフローチャートである。
【図７】図７は、実施例３に係る並列計算機の構成図である。
【図８】図８は、実施例３に係る並列計算機におけるマスターポートの切替処理のフローチャートである。
【図９】図９は、通信頻度が高い組み合せをグループとした場合の並列計算機におけるデータ転送を説明するための図である。
【発明を実施するための形態】
【００１８】
以下に、本願の開示する並列計算機システム、データ転送装置及び並列計算機システムの制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する並列計算機システム、データ転送装置及び並列計算機システムの制御方法が限定されるものではない。
【実施例１】
【００１９】
図１は、実施例１に係る並列計算機の構成図である。図１に示すように、本実施例に係る並列計算機は、ＣＰＵ１〜４及びそれらのＣＰＵを接続するデータ転送装置としてのクロスバスイッチ５を有する。ここで、本実施例では、４つのＣＰＵを用いて説明するが、並列計算機に設けられるＣＰＵの数はこれに限らず、４つ未満でも５つ以上でもよい。また、本実施例では、クロスバスイッチ５は、ＣＰＵの数にあわせて４つの入力ポート及び出力ポートを有しているが、ポート数はこれに限らない。また、クロスバスイッチ５のポート数はＣＰＵの数と異なってもよい。
【００２０】
ＣＰＵ１は、他のＣＰＵとの間での通信を制御するルータ部１０を有している。ルータ部１０は、送信部１１及び受信部１２を有している。送信部１１は、クロスバスイッチ５に対する通信の要求である調停リクエスト及び他のＣＰＵへのデータの送信を行う。受信部１２は、クロスバスイッチ５からの通信許可通知及び他のＣＰＵから送られてきたデータを受信する。
【００２１】
ＣＰＵ２〜４は、ＣＰＵ１と同様の構成を有するので説明を省略する。
【００２２】
クロスバスイッチ５は、入力ポート５１〜５４、出力ポート６１〜６４及びマスターポート制御部７０を有している。入力ポート５１と出力ポート６１とは一対のポートである。同様に、入力ポート５２〜５４も、それぞれ出力ポート６２〜６４と対になっている。
【００２３】
入力ポート５１は、対になっている出力ポート６１以外の出力ポート６２〜６４のいずれとも接続することができる。さらに、入力ポート５１は、ＣＰＵ１の送信部１１に接続されている。入力ポート５１は、ＣＰＵ１の送信部１１から送出されたデータや調停リクエストの入力を受ける。そして、入力ポート５１は、出力ポート６２〜６４のうちの、調停リクエストで通信を要求する通信先のＣＰＵが接続されている出力ポートにデータを転送する。また、入力ポート５１は、調停リクエストに対する出力ポートからの応答である通信許可通知を受信し、送信部１１へ出力する。さらに、入力ポート５１は、出力ポート６２〜６４のうちの、送信部１１から送出されたデータの宛先のＣＰＵが接続されている出力ポートに対して、送信部１１から受信したデータを転送する。
【００２４】
入力ポート５２〜５４も、入力ポート５１と同様の機能を有し、同様の動作を行うので説明を省略する。入力ポート５１〜５４については、後でさらに詳しく説明する。
【００２５】
マスターポート制御部７０は、出力ポート６１〜６２に対して、優先的にデータの転送を行う１対のグループとなるＣＰＵを決定する。以下では、このグループにおけるＣＰＵに対する出力ポートを「マスターポート」と呼ぶ。そして、マスターポート制御部７０は、決定したマスターポートの組の出力ポートに対して、マスターポートの組となるＣＰＵの情報を通知する。マスターポート制御部７０によるマスターポートの決定の詳細については後で説明する。
【００２６】
出力ポート６１は、対になっている入力ポート５１以外の入力ポート５２〜５４のいずれとも接続することができる。さらに、出力ポート６１は、ＣＰＵ１の受信部１２に接続されている。出力ポート６１は、ＣＰＵ２〜４からの調停リクエストを受信し、データの送信をいずれのＣＰＵに許可するかを決定する調停を行う。そして、出力ポート６１は、調停により決定したＣＰＵが接続している入力ポートに対して通信許可通知を出力する。また、出力ポート６１は、ＣＰＵ２〜４から送られてきたデータをＣＰＵ１の受信部１２へ出力する。
【００２７】
出力ポート６２〜６４も、出力ポート６１と同様の機能を有し、同様の動作を行うので説明を省略する。出力ポート６１〜６４については、後でさらに詳しく説明する。
【００２８】
出力ポート６１がデータ転送を行っていない場合又は調停リクエストを受信していない場合をアイドル状態という。出力ポート６１は、マスターポート制御部７０から指定されたＣＰＵに対するマスターポートとなる。そして、出力ポート６１は、アイドル状態で、マスターポートの組みとなっているＣＰＵから調停リクエストを受信すると、調停を行わずに直ぐにＣＰＵ１からのデータ転送を行うように設定されている。このように、出力ポート６１は、あるＣＰＵに対して優先的にデータの転送を行うマスターポートとして設定される。クロスバスイッチ５の起動時には、出力ポート６２は、ＣＰＵ１のマスターポートに設定されている。また、出力ポート６３は、ＣＰＵ２のマスターポートに設定されている。また、出力ポート６４は、ＣＰＵ３のマスターポートに設定されている。出力ポート６１は、ＣＰＵ４のマスターポートに設定されている。
【００２９】
また、ＣＰＵ１〜４が、ＣＰＵ１〜４のうちの他のＣＰＵへデータを送信する場合、データはサイズが大きいため、データを送信する経路は１つのみ確保できる。すなわち、ＣＰＵ１〜４は、１度のデータ送信において、いずれか１つのＣＰＵに対してデータを送信することになる。これに対して、調停リクエストなどはサイズが小さいため、ＣＰＵ１〜４は、１度の送信において複数の経路を確保できる。すなわち、ＣＰＵ１〜４は、複数のＣＰＵに対して同時に調停リクエストを送ることができる。
【００３０】
さらに、図２を参照して、本実施例に係る並列計算機についてさらに詳しく説明する。図２は、実施例１に係る並列計算機の詳細を表すブロック図である。ここでは、ＣＰＵ１がＣＰＵ２及び３に対するデータの送信要求を行い、ＣＰＵ２及び４がＣＰＵ３に対するデータの送信要求を行う場合を例に説明する。図２では、説明に使用する送信部、入力ポート及び出力ポートを記載し、他の部分については記載を省略している。
【００３１】
送信部１１は、リクエスト送信部１１１、調停回路１１２及びデータ送信部１１３を有している。また、送信部２１は、リクエスト送信部１２１、調停回路１２２及びデータ送信部１２３を有している。また、送信部４１は、リクエスト送信部１４１、調停回路１４２及びデータ送信部１４３を有している。ここで、送信部３１は図には図示していないが、送信部３１も同様の機能を有している。
【００３２】
リクエスト送信部１１１は、ＣＰＵ１が他のＣＰＵ２〜４のいずれかへデータを送信する場合、調停リクエストを入力ポート５１へ送出する。リクエスト送信部１１１からの調停リクエストは同時に複数のＣＰＵに対して送信されてもよい。また、調停リクエストには、データの送信先であるＣＰＵの情報が付加されている。
【００３３】
ここでは、リクエスト送信部１１１は、ＣＰＵ２に対するデータ送信の調停リクエストを入力ポート５１へ出力する。また、リクエスト送信部１１１は、ＣＰＵ３に対するデータ送信の調停リクエストを入力ポート５１へ出力する。
【００３４】
また、リクエスト送信部１１１は、調停リクエストを送信したという情報を、その調停リクエストで指定しているデータの送信先のＣＰＵの情報と共に調停回路１１２へ送信する。
【００３５】
次に、リクエスト送信部１１１は、調停回路１１２からデータの送信先となるＣＰＵの選択の通知を受けて、各ＣＰＵへの調停リクエストの送信を停止する。例えば、ＣＰＵ２をデータの送信先として選択した旨の通知を調停回路１１２から受信すると、リクエスト送信部１１１は、ＣＰＵ２及び３への調停リクエストの送信を停止する。
【００３６】
調停回路１１２は、出力ポート６２がデータの転送を行っていないアイドル状態の場合、マスターポートである出力ポート６２からの通信許可通知を入力ポート５１から受信し続ける。そして、この状態でリクエスト送信部１１１からＣＰＵ２へのデータ送信の調停リクエストの送信の通知を受けると、調停回路１１２は、リクエスト送信部１１１が送信した調停リクエストに対応するデータの送信をデータ送信部１１３に指示する。
【００３７】
また、出力ポート６２がアイドル状態でない場合、調停回路１１２は、リクエスト送信部１１１からの調停リクエストへの応答として出力ポート６２から送出された通信許可通知を入力ポート５１から受ける。また、アイドル状態であるかないかに関わらず、調停回路１１２は、調停リクエストへの応答としてマスターポート以外の出力ポート６３及び６４から送出された通信許可通知を入力ポート５１から受ける。調停回路１１２は、複数の通信許可通知を受信した場合、最初に受信した通信許可通知を送信してきた出力ポートに接続されているＣＰＵをデータの送信先として選択し、そのＣＰＵに対するデータ送信をデータ送信部１１３に指示する。
【００３８】
例えば、調停回路１１２は、出力ポート６２から送出された通信許可通知を入力ポート５１から受ける。次に、調停回路１１２は、出力ポート６３から送出された通信許可通知を入力ポート５１から受ける。そして、調停回路１１２は、最初に取得した通信許可通知に対応するＣＰＵ２へのデータの送信をデータ送信部１１３に指示する。さらに、調停回路１１２は、ＣＰＵ２をデータの送信先として選択したことをリクエスト送信部１１１へ通知する。
【００３９】
送信部２１の調停回路１２２及び送信部４１の調停回路１４２は、調停回路１１２と同様の動作を行う。ここでは、送信部２１の調停回路１２２及び送信部４１の調停回路１４２は、出力ポート６３が調停によりデータ送信を許可するＣＰＵとしてＣＰＵ１を選択したため、通信許可通知を取得しない。
【００４０】
データ送信部１１３は、データの送信先として選択されたＣＰＵに対するデータ送信の指示を調停回路１１２から受信する。そして、データ送信部１１３は、指定されたＣＰＵに対してデータを送信する。
【００４１】
例えば、データ送信部１１３は、ＣＰＵ２に対するデータの送信の指示を調停回路１１２から受信する。そして、データ送信部１１３は、ＣＰＵ３宛てのデータを入力ポート５１へ送信する。
【００４２】
入力ポート５１は、データの送信先であるＣＰＵに対する調停リクエストをリクエスト送信部１１１から受信する。そして、入力ポート５１は、受信した調停リクエストをデータの送信先のＣＰＵが接続されている出力ポートに送信する。
【００４３】
例えば、入力ポート５１は、ＣＰＵ３に対するデータ送信の調停リクエストをリクエスト送信部１１１から受信する。そして、入力ポート５１は、ＣＰＵ３が接続されている出力ポート６３に調停リクエストを送信する。次に、入力ポート５１は、ＣＰＵ２に対するデータ送信の調停リクエストをリクエスト送信部１１１から受信する。そして、入力ポート５１は、ＣＰＵ２が接続されている出力ポート６２に調停リクエストを送信する。
【００４４】
出力ポート６２がデータの転送を行っていないアイドル状態の場合、入力ポート５１は、通信許可通知を出力ポート６２の調停回路１６１から受信し続ける。そして、入力ポート５１は、調停回路１６１からの通信許可通知を調停回路１１２へ送信する。この場合でも、マスターポート以外の出力ポート６３においてＣＰＵ１によるデータの送信が許可された場合、入力ポート５１は、出力ポート６３から通信許可通知を受信し、受信した通信許可通知を調停回路１１２へ送信する。ただし、マスターポートが優先されるので、この場合後述するように、調停回路１１２は、ＣＰＵ１のマスターポートである出力ポート６２に接続されているＣＰＵ２をデータの送信先として選択することになる。
【００４５】
これに対して、出力ポート６２がアイドル状態でない場合、入力ポート５１は、次のような動作を行う。入力ポート５１は、調停リクエストを送った出力ポートがマスターポートであるなしに関わらず、調停リクエストを送った出力ポートにおいてデータ送信が許可された場合、通信許可通知をその調停リクエストを送った出力ポートから受信する。
【００４６】
例えば、入力ポート５１は、マスターポートである出力ポート６２の調停回路１６１から通信許可通知を受信する。そして、入力ポート５１は、調停回路１６１からの通信許可通知を調停回路１１２へ送信する。また、入力ポート５１は、出力ポート６３の調停回路１６３から通信許可通知を受信する。そして、入力ポート５１は、調停回路１６３からの通信許可通知を調停回路１１２へ送信する。
【００４７】
さらに、入力ポート５１は、調停回路１１２がデータの送信先として選択したＣＰＵ宛のデータをデータ送信部１１３から受信する。そして、入力ポート５１は、受信したデータをそのデータの送信先のＣＰＵが接続されている出力ポートへ送信する。例えば、入力ポート５１は、ＣＰＵ２宛てのデータをデータ送信部１１３から受信する。そして、入力ポート５１は、ＣＰＵ２宛てのデータを出力ポート６２のデータ転送部１６３へ送信する。
【００４８】
出力ポート６２は、調停回路１６１、アクセスカウンタ１６２及びデータ転送部１６３を有する。出力ポート６３も同様に、調停回路１６４、アクセスカウンタ１６５及びデータ転送部１６６を有している。
【００４９】
出力ポート６２がアイドル状態でない場合について説明する。調停回路１６１は、ＣＰＵ２を送信先とするデータの送信要求についての調停リクエストを入力ポート５１，５２及び５４から受信する。そして、調停リクエストが複数有る場合、調停回路１６１は、予め決められた条件を用いて、調停リクエストを送ってきたＣＰＵの中から１つのＣＰＵを選択する。例えば、調停回路１６１は、ＣＰＵ１，３及び４の優先順位を予め記憶しておく。そして、調停回路１６１は、調停リクエストを送信してきたＣＰＵの中で、記憶している優先順位のうち最も高い優先順位を有するＣＰＵを選択する。この他にも、例えば、調停回路１６１は、一度選択されたＣＰＵの優先順をさげるなどして、ＣＰＵの優先順位を変更しながら、優先順位の最も高いＣＰＵを選択してもよい。
【００５０】
調停回路１６１は、選択したＣＰＵが接続されている入力ポートに通信許可通知を送信する。たとえば、ＣＰＵ１を選択した場合、調停回路１６１は、入力ポート５１に通信許可通知を送信する。
【００５１】
出力ポート６２は、マスターポートの組となるＣＰＵの情報をマスターポート制御部７０から受ける。
【００５２】
出力ポート６２がアイドル状態の場合、調停回路１６１は、マスターポート制御部７０から指示されたマスターポートの組となっているＣＰＵへの通信許可通知を、そのＣＰＵが接続されている入力ポートに対して送信し続ける。例えば、出力ポート６２に対するマスターポートの組のＣＰＵがＣＰＵ１とすると、調停回路１６１は、ＣＰＵ１が接続されている入力ポート５１に通信許可通知を送信し続ける。この時、マスターポートの組のＣＰＵ１から調停リクエストを受信すると、調停回路１６１は直ぐにマスターポートの組のＣＰＵ１からＣＰＵ２へのデータ転送を行う指示をデータ転送部１６３に指示する。
【００５３】
一方、アイドル状態で、マスターポートの組となっているＣＰＵ以外からの調停リクエストを受信した場合、出力ポート６２は、マスターポートへの送信許可通知の送信を停止する。そして、調停リクエストを複数受信している場合、調停回路１６１は、調停を行い、データ送信を許可するＣＰＵを決定する。その後、調停回路１６１は、決定したＣＰＵへの送信許可通知をそのＣＰＵが接続している入力ポートへ送信する。これに対して、調停リクエストを１つしか受信していなければ、調停回路１６１は、その調停リクエストを送信したＣＰＵへの送信許可通知をそのＣＰＵが接続している入力ポートへ送信する。
【００５４】
また、アイドル状態でない場合、調停リクエストを複数受信すると、調停回路１６１は、調停を行い、データ送信を許可するＣＰＵを決定する。その後、調停回路１６１は、決定したＣＰＵへの送信許可通知をそのＣＰＵが接続している入力ポートへ送信する。これに対して、調停リクエストを１つしか受信していなければ、調停回路１６１は、その調停リクエストを送信したＣＰＵへの送信許可通知をそのＣＰＵが接続している入力ポートへ送信する。
【００５５】
例えば、調停回路１６１は、マスターポートの組のＣＰＵとしてＣＰＵ１の情報をマスターポート制御部７０から受ける。このとき、アイドル状態でＣＰＵ１，３及び４から調停リクエストを受信すると、調停回路１６１は、データ送信を許可するＣＰＵをマスターポートの組であるＣＰＵ１に決定する。この場合、ＣＰＵ３及び４は、データ送信を許可するＣＰＵとしては選択されない。また、調停回路１６１は、アイドル状態でない状態で、ＣＰＵ１，３及び４から調停リクエストを受信した場合、調停回路１６１は、調停を行い、データ送信を許可するＣＰＵを決定する。
【００５６】
また、他の出力ポートにおいても同様に調停が行われ、データの送信を許可するＣＰＵが選択され、通信許可通知をそのＣＰＵが接続されている入力ポートにそのＣＰＵ宛の通信許可通知が送信される。例えば、同じＣＰＵに対して、異なる出力ポートから通信許可が送信される場合もある。例えば、出力ポート６３の調停回路１６３は、ＣＰＵ１から調停リクエストを受信する。そして、調停回路１６３は、データ送信を許可するＣＰＵとしてＣＰＵ１を選択する。そして、調停回路１６３は、ＣＰＵ１への通信許可通知を入力ポート５１へ送信する。ただし、先に出力ポート６２が通信許可通知をＣＰＵ１へ送信している場合、調停回路１６３からの出力許可通知はＣＰＵ１の調停回路１１２へ送信されるが、ＣＰＵ３はデータ送信の送信先として選択されない。
【００５７】
調停回路１６１は、後述するデータ転送部１６３によるデータ伝送が終了すると、調停リクエストの受付を再開する。そして、調停回路１６１は、再度調停を行う。このように、調停回路１６１は、調停リクエストの受信及び調停の実行を繰り返す。
【００５８】
アクセスカウンタ１６２は、調停回路が受信した調停リクエストの送信元のＣＰＵの情報を調停回路１６１から取得する。そして、アクセスカウンタ１６２は、一定期間毎に送信元毎の調停リクエストの受信回数の集計を行う。ここでは、調停リクエストの受信回数を「アクセス数」とする。一定期間経過後、アクセスカウンタ１６２は、自己が搭載されている出力ポートである出力ポート６２の情報と共にアクセス数の集計結果をマスターポート制御部７０に送信する。
【００５９】
データ転送部１６３は、送信部１１がＣＰＵ２へのデータ送信を行う場合、送信部１１のデータ送信部１１３が送信したデータを入力ポート５１から受信する。そして、データ転送部１６３は、受信したデータをＣＰＵ２の受信部２２へ送信する。
【００６０】
マスターポート制御部７０は、マスターポート設定のための閾値を記憶している。マスターポート制御部７０は、一定期間毎に出力ポート６１〜６４におけるアクセス数の集計結果を、それぞれの出力ポートのアクセスカウンタから受信する。
【００６１】
マスターポート制御部７０は、各出力ポート６１〜６４から受信したアクセス数の集計結果からポート毎に最もアクセス数の最も多いＣＰＵを抽出する。そして、マスターポート制御部７０は、各出力ポート６１〜６４と抽出したＣＰＵの組合せをマスターポートの組み合わせとする。すなわち、マスターポート制御部７０は、抽出したＣＰＵに対応する出力ポートをそのＣＰＵのマスターポートとする。この時、複数の出力ポートにおいてアクセス数が最も多いＣＰＵが同じである場合、マスターポート制御部７０は、それらの出力ポートにおいてそのＣＰＵからのアクセス数の差が閾値よりも小さい場合には、マスターポートの設定を行わない。逆に、それらの出力ポートにおいてそのＣＰＵからのアクセス数の差が閾値よりも大きい場合には、マスターポート制御部７０は、アクセス数が多い方の出力ポートをそのＣＰＵのマスターポートとする。そして、マスターポート制御部７０は、選ばなかった方の出力ポートに対しては、マスターポートの設定を行わない。
【００６２】
また、マスターポート制御部７０は、各出力ポート６１〜６４から受信したアクセス数の集計結果から各ポートへのアクセス数が上位２つのＣＰＵを特定する。そして、その上位２つのＣＰＵからのアクセス数の差が閾値以内のポートがあり、そのポートがいずれかのＣＰＵのマスターポートとして設定されている場合、マスターポート制御部７０は、マスターポートの設定を解除する。
【００６３】
また、マスターポート制御部７０は、各出力ポート６１〜６４から受信したアクセス数の集計結果から、ＣＰＵ毎に、そのＣＰＵから調停リクエストが送られた出力ポートのうちアクセス数が上位２つの出力ポートを特定する。そして、上位２つの出力ポートへのアクセス数が閾値以内のＣＰＵがあり、そのＣＰＵに対してマスターポートが設定されている場合、マスターポート制御部７０は、そのマスターポートの設定を解除する。
【００６４】
ここで、上位２つのアクセス数の差が一定の値よりも小さくなることは、アクセス数が拮抗していると考えられる。この場合、マスターポートを設定しておくと、マスターポートが過度に優先されてしまう可能性がある。そこで、アクセス数の差が一定の値よりも小さくなった場合には、マスターポート制御部７０は、マスターポートの設定を解除することで、アクセスの不均衡を解消する。
【００６５】
例えば、マスターポート制御部７０が、図３に示すアクセス数を取得した場合で説明する。図３は、各ＣＰＵから各出力ポートへのアクセス数の集計結果の一例を表す図である。
【００６６】
図３の場合、出力ポート６１への最大のアクセス数を有するＣＰＵはＣＰＵ４である。また、出力ポート６２への最大のアクセス数を有するＣＰＵはＣＰＵ１である。また、出力ポート６３への最大のアクセス数を有するＣＰＵはＣＰＵ４である。また、出力ポート６４への最大のアクセス数を有するＣＰＵはＣＰＵ２である。ここで、ＣＰＵ４は、出力ポート６１及び６３において最大のアクセス数を有している。ここで、マスターポート制御部７０は、閾値を１０と記憶しているとする。この場合、マスターポート制御部７０は、アクセス数がより多い出力ポート６３とＣＰＵ４との組をマスターポートの組とする。さらに、ＣＰＵ１は、出力ポート６２へのアクセス数が３０であり、出力ポート６３へのアクセス数が２０である。この場合、ＣＰＵ１の上位２つの出力ポートへのアクセス数の差が１０以内であるので、マスターポート制御部７０は、ＣＰＵ１と組み合わせてマスターポートの組を設定することは行わない。また、ＣＰＵ１が既にマスターポートの組である場合には、マスターポート制御部７０は、マスターポートの設定を解除する。したがって、図３の場合には、マスターポート制御部７０は、出力ポート６３とＣＰＵ４とをマスターポートの組とし、出力ポート６４とＣＰＵ２とをマスターポートの組とする。
【００６７】
ここで、本実施例では、１度のアクセス数が最も多いＣＰＵと出力ポートの組をマスターポートの組と設定し、その後、同一ＣＰＵからのアクセス数及び同一出力ポートへのアクセス数により、マスターポートの設定を解除している。ただし、これに限らず、マスターポートの設定を行う前に、同一ＣＰＵからのアクセス数及び同一出力ポートへのアクセス数によりマスターポートの設定を行わない出力ポート及びＣＰＵを決定し、その後、マスターポートの設定を行ってもよい。
【００６８】
受信部２２は、送信部１１がＣＰＵ２に対してデータ送信を行う場合、送信部１１が送信したデータをデータ転送部１６３から受信する。ＣＰＵ２は、受信部２２で受信したデータを用いて処理を行う。
【００６９】
次に、図４を参照して、本実施例に係る並列計算機におけるマスターポートの切替処理の流れについて説明する。図４は、実施例１に係る並列計算機におけるマスターポートの切替処理のフローチャートである。
【００７０】
ＣＰＵ１〜４の各リクエスト送信部１１１〜１４１は、自己が接続しているクロスバスイッチ５の入力ポート５１〜５４を介してデータの送信先のＣＰＵが接続されている出力ポート６２〜６４に対して調停リクエストを送信する（ステップＳ１０１）。
【００７１】
出力ポート６１〜６４の調停回路は、調停リクエストを送信してきたＣＰＵ１〜４に対して調停を行い（ステップＳ１０２）、データ送信を許可するＣＰＵを選択する。この時、出力ポート６１〜６４の中でマスターポートが設定されている出力ポートはマスターポートの組であるＣＰＵを優先的にデータの送信先として選択する。そして、出力ポート６１〜６４は、通信許可通知を選択したＣＰＵに送信する。
【００７２】
ＣＰＵ１〜４は、複数の通信許可通知を受信している場合、最初に通信許可通知を送信してきた出力ポート６１〜６４が接続されているＣＰＵをデータの送信先として選択する。１つのポートから通信許可通知を受信している場合、ＣＰＵ１〜４は、そのポートをデータの送信先として選択する。そして、ＣＰＵ１〜４は、自己が接続している入力ポート５１〜５４を介して、データの送信先のＣＰＵが接続されている出力ポート６１〜６４に対してデータを送信する（ステップＳ１０３）。受信部１２〜４２は、対応する出力ポート６１〜６４から送信されたデータを受信する。
【００７３】
また、出力ポート６１〜６４の各アクセスカウンタは、受信した調停リクエストの数をカウントし、ＣＰＵ毎のアクセス数をカウントする（ステップＳ１０４）。
【００７４】
出力ポート６１〜６４の各アクセスカウンタは、一定期間が経過したか否かを判定する（ステップＳ１０５）。経過していない場合（ステップＳ１０５：否定）、アクセスカウンタは、そのまま待機し、ＣＰＵ１〜４及びクロスバスイッチ５は、ステップＳ１０１に戻る。
【００７５】
これに対して、一定期間が経過した場合（ステップＳ１０５：肯定）、出力ポート６１〜６４の各アクセスカウンタは、アクセス数の集計結果をマスターポート制御部７０へ送信する（ステップＳ１０６）。
【００７６】
マスターポート制御部７０は、出力ポート６１〜６４の各アクセスカウンタからアクセス数の集計結果を受信する。そして、マスターポート制御部７０は、各出力ポート６１〜６４に対するアクセス数が最大のＣＰＵ１〜４とそのポートとをマスターポートの組とする（ステップＳ１０７）。
【００７７】
次に、マスターポート制御部７０は、アクセス数が最大のＣＰＵ１〜４が同じＣＰＵとなっている出力ポート６１〜６４があるか否かを判定する（ステップＳ１０８）。最大のアクセス数が同じＣＰＵ１〜４である出力ポート６１〜６４がない場合（ステップＳ１０８：否定）、マスターポート制御部７０は、ステップＳ１１０へ進む。
【００７８】
これに対して、最大のアクセス数が同じＣＰＵ１〜４である出力ポート６１〜６４がある場合（ステップＳ１０８：肯定）、マスターポート制御部７０は、アクセス数が多い方の出力ポートをそのＣＰＵのマスターポートに設定する（ステップＳ１０９）。
【００７９】
次に、マスターポート制御部７０は、出力ポート６１〜６４の中で、上位２つのアクセス数の差が所定値以内の出力ポートがある場合、その出力ポートのマスターポートの設定を解除する（ステップＳ１１０）。
【００８０】
また、マスターポート制御部７０は、ＣＰＵ１〜４の中で、上位２つのアクセス数の差が所定値以内のＣＰＵがある場合、そのＣＰＵとのマスターポートの組の設定を解除する（ステップＳ１１１）。
【００８１】
ＣＰＵ１〜４は、並列計算機の処理が完了したか否かを判定する（ステップＳ１１２）。処理が完了していない場合（ステップＳ１１２：否定）、ＣＰＵ１〜４及びクロスバスイッチ５は、ステップＳ１０１へ戻る。
【００８２】
一方、並列計算機の処理が完了した場合（ステップＳ１１２：肯定）、ＣＰＵ１〜４及びクロスバスイッチ５は、処理を終了する。
【００８３】
次に、図５を参照して、従来の並列計算機によるデータ送信処理について説明する。図５は、従来の並列計算機によるネゲートを行う場合のデータ送信処理のタイミングチャートである。グラフ２０１〜２０３は、送信部１１から各出力ポートへの調停リクエストの送信を示す。また、グラフ２０４は、送信部１１からのデータ送信を表す。グラフ２０５〜２０７は、送信部３１から各出力ポートへの調停リクエストの送信を示す。また、グラフ２０８は、送信部３１からのデータ送信を表す。そして、グラフ２０９〜２１２は、出力ポート６１〜６４による送信許可通知の送信先及びデータ転送を表す。
【００８４】
グラフ２０１〜２０３で示すように、送信部１１は、タイミング２２１〜２２３で出力ポート６２〜６４に調停リクエストを送信する。出力ポート６２は、送信部１１のマスターポートであるため、送信部１１は、グラフ２０４及び２０９のように、直ちにデータの送信先として出力ポート６２を選択し、データの送信を開始する。この時、出力ポート６３及び６４は、送信部１１の調停リクエストを受けて、グラフ２１０及び２１１のタイミング２２４及び２２５で調停を行う。そして、出力ポート６３及び６４は、送信部１１に対して通信許可通知を送信する。しかし、送信部１１は、出力ポート６２をデータの送信先として選択しているので、出力ポート６３及び６４は、データの送信先として選択されない。そのため、出力ポート６３及び６４は、送信許可通知を破棄（ネゲート）する。そして、出力ポート６３は、グラフ２１０のタイミング２２６で、送信部２１をマスターポートに設定する。また、出力ポート６４は、グラフ２１１のタイミング２２７で、送信部３１をマスターポートに設定する。
【００８５】
さらに、グラフ２０５〜２０７に示すように、送信部３１は、タイミング２２８〜２３０で、出力ポート６１，６２及び６４へ調停リクエストを送信する。この時、出力ポート６２はデータ転送中であるため、送信部３１は、出力ポート６２ではデータの送信が許可されない。一方、出力ポート６４は、送信部３１のマスターポートであるため、送信部３１は、グラフ２０８及び２１１のように、直ちにデータの送信先として出力ポート６４を選択し、データの送信を開始する。これに対して、出力ポート６１は、送信部３１からの調停リクエストを受けて、グラフ２１２のタイミング２３１で調停を行い、送信部３１のデータ送信を許可する。しかし、送信部３１は、出力ポート６４をデータの送信先として選択しているので、出力ポート６１は、データの送信先として選択されない。そのため、出力ポート６１は、送信許可通知を破棄（ネゲート）する。そして、出力ポート６１は、グラフ２１２のタイミング２３２で、送信部４１をマスターポートに設定する。
【００８６】
さらに、グラフ２０１〜２０３で示すように、送信部１１は、タイミング２３３〜２３５で出力ポート６２〜６４に再度調停リクエストを送信する。出力ポート６２は、送信部１１のマスターポートであるため、送信部１１は、グラフ２０４及び２０９のように、直ちにデータの送信先として出力ポート６２を選択し、データの送信を開始する。ここで、出力ポート６４はデータ転送中であるため、送信部１１は、出力ポート６４ではデータの送信が許可されない。これに対して、出力ポート６３は、送信部１１からの調停リクエストを受けて、グラフ２１０のタイミング２３６で調停を行い、送信部３１のデータ送信を許可する。しかし、送信部１１は、出力ポート６２をデータの送信先として選択しているので、出力ポート６３は、データの送信先として選択されない。そのため、出力ポート６３は、送信許可通知を破棄（ネゲート）する。そして、出力ポート６３は、グラフ２１０のタイミング２３７で、送信部２１をマスターポートに設定する。このような処理が行われることで、グラフ２０９に示すように、マスターポートの組である送信部１１と出力ポート６２との組が連続して選択されデータ転送を行うようになり、グラフ２０１に示すように、出力ポート６３は、長期間に亘ってデータの転送を行えない状態が続くおそれがある。
【００８７】
このように、従来は、図５に示すようにマスターポートの組となっているＣＰＵが優先的に選択されてしまうことで、長期間に亘ってデータの転送が行えない出力ポートが発生していた。これに対して、本実施例にかかる並列計算機は、マスターポートの組が続けて選択されることを回避でき、長期間に亘ってデータの転送が行えない出力ポートの発生を軽減できる。
【００８８】
以上に説明したように、本実施例に係る並列計算機では、アクセス数が最多のＣＰＵと出力ポートとの組合せをマスターポートの組合せとして動的にマスターポートの組を変更していく。これにより、マスターポートとして固定された場合のように、特定のＣＰＵと出力ポートの組が過度に優先されることを軽減し、効率的な通信を行うことができる。また、そのときに最もアクセス数が多いＣＰＵと出力ポートとの組をマスターポートとするので、処理に適応させて特定のポートを優先させることができ、より効率的な通信を行うことができる。
【００８９】
さらに、上位のアクセス数が近づいた場合にマスターポートの設定をはずすので、特定の組合せの頻度が高いといった状態でない場合には、無理に優先する出力ポートを設定することなく、公平に全ての出力ポートに対してデータ送信を行うことができる。このことからも、効率的な通信を行うことができるといえる。
【実施例２】
【００９０】
次に、実施例２に係る並列計算機システムについて説明する。本実施例に係る並列計算機システムは、マスターポートの選択方法が実施例１と異なるものである。本実施例に係る並列計算機も図１及び図２のブロック図で示される。以下の説明では、同じ機能を有する各部については説明を省略する。
【００９１】
マスターポート制御部７０は、マスターポートの候補を選択するための選択閾値を予め記憶している。そして、マスターポート制御部７０は、一定期間毎に出力ポート６１〜６４のアクセスカウンタから集計結果を受信する。
【００９２】
マスターポート制御部７０は、受信した集計結果から、出力ポート６１〜６４毎に選択閾値以上のアクセス数となっているＣＰＵを抽出する。
【００９３】
そして、マスターポート制御部７０は、出力ポート６１〜６４毎に抽出したＣＰＵに対して調停を行い、出力ポート６１〜６４毎にマスターポートの組とするＣＰＵを選択する。この調停方法は、複数のＣＰＵから１つを選べるアルゴリズムであれば特に制限はない。例えば、マスターポート制御部７０は、出力ポート毎に、各ＣＰＵの優先度を記憶しておき、抽出された複数のＣＰＵのうち最も優先度が高いＣＰＵを選択してもよい。また、マスターポート制御部７０は、前回選択したＣＰＵを除外した上で、残ったＣＰＵのうち優先度が最も高いＣＰＵを選択してもよい。
【００９４】
さらに、マスターポート制御部７０は、マスターポートの組とするＣＰＵとして同じＣＰＵが複数の出力ポートで選択されている場合、その中でマスターポートの組を決定し、さらに、残った出力ポートにおいて再度マスターポートを選択する調停を行ってもよい。例えば、同じＣＰＵのマスターポートとなっている複数の出力ポートの中で、そのＣＰＵからのアクセス数が最も多い出力ポートをそのＣＰＵのマスターポートと決定してもよい。
【００９５】
そして、マスターポート制御部７０は、決定したマスターポートの組となるＣＰＵの情報を各出力ポート６１〜６４へ送信する。
【００９６】
次に、図６を参照して、本実施例に係る並列計算機におけるマスターポートの切替処理の流れについて説明する。図６は、実施例２に係る並列計算機におけるマスターポートの切替処理のフローチャートである。
【００９７】
ＣＰＵ１〜４の各リクエスト送信部１１１〜１４１は、自己が接続しているクロスバスイッチ５の入力ポート５１〜５４を介してデータの送信先のＣＰＵが接続されている出力ポート６２〜６４に対して調停リクエストを送信する（ステップＳ２０１）。
【００９８】
出力ポート６１〜６４の調停回路は、調停リクエストを送信してきたＣＰＵ１〜４に対して調停を行い（ステップＳ２０２）、データ送信を許可するＣＰＵを選択する。この時、出力ポート６１〜６４の中でマスターポートが設定されている出力ポートはマスターポートの組であるＣＰＵを優先的にデータの送信先として選択する。そして、出力ポート６１〜６４は、通信許可通知を選択したＣＰＵに送信する。
【００９９】
ＣＰＵ１〜４は、複数の通信許可通知を受信している場合、最初に通信許可通知を送信してきた出力ポート６１〜６４が接続されているＣＰＵをデータの送信先として選択する。１つのポートから通信許可通知を受信している場合、ＣＰＵ１〜４は、そのポートをデータの送信先として選択する。そして、ＣＰＵ１〜４は、自己が接続している入力ポート５１〜５４を介して、データの送信先のＣＰＵが接続されている出力ポート６１〜６４に対してデータを送信する（ステップＳ２０３）。受信部１２〜４２は、対応する出力ポート６１〜６４から送信されたデータを受信する。
【０１００】
また、出力ポート６１〜６４の各アクセスカウンタは、受信した調停リクエストの数をカウントし、ＣＰＵ毎のアクセス数をカウントする（ステップＳ２０４）。
【０１０１】
出力ポート６１〜６４の各アクセスカウンタは、一定期間が経過したか否かを判定する（ステップＳ２０５）。経過していない場合（ステップＳ２０５：否定）、アクセスカウンタは、そのまま待機し、ＣＰＵ１〜４及びクロスバスイッチ５は、ステップＳ２０１に戻る。
【０１０２】
これに対して、一定期間が経過した場合（ステップＳ２０５：肯定）、出力ポート６１〜６４の各アクセスカウンタは、アクセス数の集計結果をマスターポート制御部７０へ送信する（ステップＳ２０６）。
【０１０３】
マスターポート制御部７０は、出力ポート６１〜６４の各アクセスカウンタからアクセス数の集計結果を受信する。そして、マスターポート制御部７０は、各出力ポート６１〜６４に対するアクセス数が選択閾値を超えるＣＰＵ１〜４を抽出する（ステップＳ２０７）。
【０１０４】
次に、マスターポート制御部７０は、各出力ポート６１〜６４毎に、抽出したＣＰＵ１〜４に対して調停を行い、マスターポートの組を決定する（ステップＳ２０８）。
【０１０５】
マスターポート制御部７０は、出力ポート６１〜６４の中の複数が同じＣＰＵのマスターポートとなっているか否かを判定する（ステップＳ２０９）。複数の出力ポートが同じＣＰＵのマスターポートとなっている場合（ステップＳ２０９：肯定）、マスターポート制御部７０は、同じＣＰＵに対してマスターポートなっている複数の出力ポートに対して調停を行い、１つの出力ポートをそのＣＰＵのマスターポートとして選択する（ステップＳ２１０）。その後、マスターポート制御部７０は、ステップＳ２０８へ戻り、選択しなかった出力ポートに対して調停を行い、マスターポートの組を決定する。
【０１０６】
複数の出力ポートが同じＣＰＵのマスターポートとなっていない場合（ステップＳ２０９：否定）、マスターポート制御部７０は、決定したマスターポートの組となっているＣＰＵの情報を各出力ポート６１〜６４に通知し、マスターポートを設定する（ステップＳ２１１）。
【０１０７】
ＣＰＵ１〜４は、並列計算機の処理が完了したか否かを判定する（ステップＳ２１２）。処理が完了していない場合（ステップＳ２１２：否定）、ＣＰＵ１〜４及びクロスバスイッチ５は、ステップＳ２０１へ戻る。
【０１０８】
一方、並列計算機の処理が完了した場合（ステップＳ２１２：肯定）、ＣＰＵ１〜４及びクロスバスイッチ５は、処理を終了する。
【０１０９】
以上に説明したように、本実施例に係る並列計算機システムは、アクセス数が閾値以上となるＣＰＵの中から調停によってマスターポートの組となるＣＰＵを決定する。調停により、マスターポートの組となるＣＰＵを選択することで、最大のアクセス数のＣＰＵを自動的にマスターポートにする場合に比べて、よりバランスよくマスターポートを設定することができる。そのため、マスターポートとして固定された場合のように、特定のＣＰＵと出力ポートの組が過度に優先されることを軽減し、効率的な通信を行うことができる。また、処理に適応させて特定のポートを優先させることができ、より効率的な通信を行うことができる。
【実施例３】
【０１１０】
次に、実施例３に係る並列計算機システムについて説明する。本実施例に係る並列計算機システムは、マスターポートの選択方法が実施例１及び２と異なるものである。図７は、実施例３に係る並列計算機の構成図である。以下の説明では、実施例１と同じ機能を有する各部については説明を省略する。
【０１１１】
各ＣＰＵ１〜４は、実行するソフトウェアにおいて自己からのデータ送信の頻度が高いＣＰＵの情報をマスターポート制御部７０に送信する。例えば、ＣＰＵ１〜４は、ソフトウェアの中に格納されているＣＰＵ同士のデータ転送の量を基に、ＣＰＵ間でのデータ転送の頻度を求めて、データ送信の頻度が高い組合せとなるＣＰＵをマスターポートに通知する。
【０１１２】
マスターポート制御部７０は、ＣＰＵと出力ポートとをマスターポートの組とする組み合わせのパターンであるマスターポートのパターンを予め記憶している。マスターポート制御部７０は、データ送信の頻度が高いＣＰＵの情報を各ＣＰＵ１〜４から受信する。
【０１１３】
マスターポート制御部７０は、各ＣＰＵ１〜４において、データ送信の頻度が高いＣＰＵとなるＣＰＵに接続している出力ポート６１〜６４が、各ＣＰＵ１〜４のマスターポートとなるマスターポートのパターンを選択する。そして、マスターポート制御部７０は、選択したマスターポートのパターンに合わせて、各出力ポート６１〜６４にそれぞれのマスターポートの組となるＣＰＵの情報を通知する。
【０１１４】
次に、図８を参照して、本実施例に係る並列計算機におけるマスターポートの切替処理の流れについて説明する。図８は、実施例３に係る並列計算機におけるマスターポートの切替処理のフローチャートである。
【０１１５】
ＣＰＵ１〜４は、実行するソフトウェアにおいて自己からのデータ送信の頻度が高いＣＰＵの情報をマスターポート制御部７０に送信する（ステップＳ３０１）。
【０１１６】
マスターポート制御部７０は、データ送信の頻度が高いＣＰＵの情報を各ＣＰＵ１〜４から受信する。そして、マスターポート制御部７０は、データ送信の頻度が高いＣＰＵに接続している出力ポート６１〜６４が、各ＣＰＵ１〜４のマスターポートとなるマスターポートのパターンを選択する（ステップＳ３０２）。
【０１１７】
そして、マスターポート制御部７０は、選択したマスターポートのパターンに合わせて、各出力ポート６１〜６４にそれぞれのマスターポートの組となるＣＰＵの情報を通知し、マスターポートを設定する（ステップＳ３０３）。
【０１１８】
ＣＰＵ１〜４の各リクエスト送信部１１１〜１４１は、自己が接続しているクロスバスイッチ５の入力ポート５１〜５４を介してデータの送信先のＣＰＵが接続されている出力ポート６２〜６４に対して調停リクエストを送信する（ステップＳ３０４）。
【０１１９】
出力ポート６１〜６４の調停回路は、調停リクエストを送信してきたＣＰＵ１〜４に対して調停を行い（ステップＳ３０５）、データ送信を許可するＣＰＵを選択する。この時、出力ポート６１〜６４の中でマスターポートが設定されている出力ポートはマスターポートの組であるＣＰＵを優先的にデータの送信先として選択する。そして、出力ポート６１〜６４は、通信許可通知を選択したＣＰＵに送信する。
【０１２０】
ＣＰＵ１〜４は、複数の通信許可通知を受信している場合、最初に通信許可通知を送信してきた出力ポート６１〜６４が接続されているＣＰＵをデータの送信先として選択する。１つのポートから通信許可通知を受信している場合、ＣＰＵ１〜４は、そのポートをデータの送信先として選択する。そして、ＣＰＵ１〜４は、自己が接続している入力ポート５１〜５４を介して、データの送信先のＣＰＵが接続されている出力ポート６１〜６４に対してデータを送信する（ステップＳ３０６）。受信部１２〜４２は、対応する出力ポート６１〜６４から送信されたデータを受信する。
【０１２１】
ＣＰＵ１〜４は、並列計算機の処理が完了したか否かを判定する（ステップＳ３０７）。処理が完了していない場合（ステップＳ３０７：否定）、ＣＰＵ１〜４及びクロスバスイッチ５は、ステップＳ３０４へ戻る。
【０１２２】
一方、並列計算機の処理が完了した場合（ステップＳ３０７：肯定）、ＣＰＵ１〜４及びクロスバスイッチ５は、処理を終了する。
【０１２３】
以上に説明したように、本実施例に係る並列計算機システムは、ソフトウェアにおいて各ＣＰＵからのデータ転送の頻度が高いＣＰＵに接続された出力ポートを各ＣＰＵのマスターポートとする。これにより、ソフトウェアに依存した特定のデータ転送傾向にあわせてマスターポートを設定することができ、より効率的な通信を行うことができる。そして、固定的にマスターポートが設定されている場合のように、特定のマスターポートが過度に優先されることを軽減でき、より効率的なデータ転送を行うことができる。
【符号の説明】
【０１２４】
１〜４  ＣＰＵ
５  クロスバスイッチ
１０，２０，３０，４０  ルータ部
１１，２１，３１，４１  送信部
１２，２２，３２，４２  受信部
５１〜５４  入力ポート
６１〜６４  出力ポート
１１１，１２１，１４１  リクエスト送信部
１１２，１２２，１４２  調停回路
１１３，１２３，１４３  データ送信部
１６１，１６４  調停回路
１６２，１６５  アクセスカウンタ
１６３，１６６  データ転送部
【図１】
2014038497.tif 000003
【図２】
2014038497.tif 000004
【図３】
2014038497.tif 000005
【図４】
2014038497.tif 000006
【図５】
2014038497.tif 000007
【図６】
2014038497.tif 000008
【図７】
2014038497.tif 000009
【図８】
2014038497.tif 000010
【図９】
2014038497.tif 000011