(57)【要約】【課題】メッセージ長に応じた適切な通信アルゴリズムを決定する時間を短くすることを目的とする。【解決手段】並列計算機システムの情報処理装置は、特定の範囲内のメッセージ長を持つ第１通信を異なる通信アルゴリズムにより通信させて前記各通信アルゴリズムの通信速度を測定し、測定された前記通信速度に基づいて、前記第１通信のメッセージ長よりも長い範囲のメッセージ長を持つ第２通信を行わせる際の前記通信アルゴリズムの手順を決定し、決定された手順で前記第２通信を行わせて、前記各通信アルゴリズムの通信速度を測定する測定部と、前記第１通信による測定結果と前記第２通信による測定結果とに基づいて、メッセージ長に応じた通信アルゴリズムを決定する決定部と、を含む。【選択図】図２
2017102510.tif 000002
【特許請求の範囲】
【請求項１】
並列計算機システムのノードに、
特定の範囲内のメッセージ長を持つ第１通信を異なる通信アルゴリズムにより通信させて前記各通信アルゴリズムの通信速度を測定し、
測定された前記通信速度に基づいて、前記第１通信のメッセージ長よりも長い範囲のメッセージ長を持つ第２通信を行わせる際の前記通信アルゴリズムの手順を決定し、決定された手順で前記第２通信を行わせて、前記各通信アルゴリズムの通信速度を測定し、
前記第１通信による測定結果と前記第２通信による測定結果とに基づいて、メッセージ長に応じた通信アルゴリズムを決定する、
処理を実行させる通信アルゴリズム決定プログラム。
【請求項２】
前記ノードに、
前記第１通信による測定結果のうち最速の通信アルゴリズムの通信速度を最初に測定するように前記第２通信の手順を決定する、
処理を実行させる請求項１記載の通信アルゴリズム決定プログラム。
【請求項３】
前記ノードに、
前記第１通信を前記特定の範囲内の異なるメッセージ長で通信させて、それぞれの通信速度を測定し、
測定された前記それそれの通信速度から得られる、前記特定の範囲内における前記通信速度の増加率に基づいて、前記第２通信の手順を決定する、
処理を実行させる請求項１または２記載の通信アルゴリズム決定プログラム。
【請求項４】
前記ノードに、
前記通信速度の増加率が低い通信アルゴリズムから順番に通信速度を測定するように、前記第２通信の手順を決定する、
処理を実行させる請求項３記載の通信アルゴリズム決定プログラム。
【請求項５】
前記ノードに、
前記第１通信の測定結果が最速の通信アルゴリズムにおける前記第２通信の測定時間を閾値として、前記第２通信による測定時間が前記閾値を超えた場合、該第２通信による測定を中断させる、
処理を実行させる請求項１乃至４のうち何れか１項に記載の通信アルゴリズム決定プログラム。
【請求項６】
前記ノードに、
前記第１通信による測定結果のうち最速の通信アルゴリズムと前記第２通信による測定結果のうち最速の通信アルゴリズムとが異なる場合、前記第１通信のメッセージ長と前記第２通信のメッセージ長との間で最速の通信アルゴリズムが変化する点を検出し、
検出された前記点で前記各通信アルゴリズムの通信速度を測定する、
処理を実行させる請求項１乃至５のうち何れか１項に記載の通信アルゴリズム決定プログラム。
【請求項７】
前記ノードに、
前記第１通信による測定結果のうち最速の通信アルゴリズムと前記第２通信による測定結果のうち最速の通信アルゴリズムとが同じ場合、前記第１通信のメッセージ長と前記第２通信のメッセージ長との間に点を設定し、
設定された前記点で前記各通信アルゴリズムの通信速度を測定する、
処理を実行させる請求項１乃至５のうち何れか１項に記載の通信アルゴリズム決定プログラム。
【請求項８】
並列計算機システムのノードが、
特定の範囲内のメッセージ長を持つ第１通信を異なる通信アルゴリズムにより通信させて前記各通信アルゴリズムの通信速度を測定し、
測定された前記通信速度に基づいて、前記第１通信のメッセージ長よりも長い範囲のメッセージ長を持つ第２通信を行わせる際の前記通信アルゴリズムの手順を決定し、決定された手順で前記第２通信を行わせて、前記各通信アルゴリズムの通信速度を測定し、
前記第１通信による測定結果と前記第２通信による測定結果とに基づいて、メッセージ長に応じた通信アルゴリズムを決定する、
処理を実行する通信アルゴリズム決定方法。
【請求項９】
並列計算機システムの情報処理装置であって、
特定の範囲内のメッセージ長を持つ第１通信を異なる通信アルゴリズムにより通信させて前記各通信アルゴリズムの通信速度を測定し、測定された前記通信速度に基づいて、前記第１通信のメッセージ長よりも長い範囲のメッセージ長を持つ第２通信を行わせる際の前記通信アルゴリズムの手順を決定し、決定された手順で前記第２通信を行わせて、前記各通信アルゴリズムの通信速度を測定する測定部と、
前記第１通信による測定結果と前記第２通信による測定結果とに基づいて、メッセージ長に応じた通信アルゴリズムを決定する決定部と、
を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信アルゴリズム決定プログラム、通信アルゴリズム決定方法および情報処理装置に関する。
【背景技術】
【０００２】
例えば、ハイパフォーマンスコンピューティング等の並列計算機システムにおいて集団通信を行う規格として、ＭＰＩ（Message Passing Interface）がある。集団通信には複数の通信アルゴリズムが適用される。
【０００３】
関連する技術として、特許文献１乃至特許文献４の技術が提案されている。例えば、多数のプロトコルを使用するワイドインターネット型テレコミュニケーションネットワークの少なくとくも幾つかのサービスを移動加入者に提供する技術が提案されている。
【０００４】
また、ＭＰＩの受信関数で指定された受信キーと一致する受信キーに係る受信情報を検索する時間を従来に比べて大幅に短縮させる技術が提案されている。
【０００５】
また、複数の別個のソースからのオペレータ・メッセージ・コマンドを、処理のためにコンピューティング環境の結合ファシリティに提供するのを可能にするためのファシリティを提供する技術が提案されている。
【０００６】
また、ネットワーク通信システムにおいて軽量プロトコル（ＬＷＰ）およびプロトコルエージェントを使用する技術が提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００１−５１９９８２号公報
【特許文献２】特開２００９−１９３４３０号公報
【特許文献３】特表２０１４−５２０３２１号公報
【特許文献４】特表２０１３−５２９３３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
集団通信に適用される複数の通信アルゴリズムは、それぞれ、通信されるメッセージのメッセージ長に応じて、通信性能が変化する。例えば、ある通信アルゴリズムは、短いメッセージ長における通信性能は高くなるが、長いメッセージ長における通信性能はそれほど高くならない場合がある。
【０００９】
一方、別の通信アルゴリズムは、長いメッセージ長における通信性能は高くなるが、短いメッセージ長における通信性能はそれほど高くならない場合がある。従って、メッセージ長に応じた適切な通信アルゴリズムが早期に決定されることが好ましい。
【００１０】
１つの側面として、本発明は、メッセージ長に応じた適切な通信アルゴリズムを決定する時間を短くすることを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、並列計算機システムの情報処理装置は、特定の範囲内のメッセージ長を持つ第１通信を異なる通信アルゴリズムにより通信させて前記各通信アルゴリズムの通信速度を測定し、測定された前記通信速度に基づいて、前記第１通信のメッセージ長よりも長い範囲のメッセージ長を持つ第２通信を行わせる際の前記通信アルゴリズムの手順を決定し、決定された手順で前記第２通信を行わせて、前記各通信アルゴリズムの通信速度を測定する測定部と、前記第１通信による測定結果と前記第２通信による測定結果とに基づいて、メッセージ長に応じた通信アルゴリズムを決定する決定部と、を含む。
【発明の効果】
【００１２】
１つの側面によれば、メッセージ長に応じた適切な通信アルゴリズムを決定する時間を短くすることができる。
【図面の簡単な説明】
【００１３】
【図１】並列計算機システムの一例を示す図である。
【図２】計算ノードの一例を示す図である。
【図３】通信アルゴリズム決定の一例を示すグラフ（その１）である。
【図４】通信アルゴリズム決定の一例を示すグラフ（その２）である。
【図５】通信アルゴリズム決定の一例を示すグラフ（その３）である。
【図６】メッセージ長に応じた通信アルゴリズムのテーブルの一例を示す図である。
【図７】通信アルゴリズム決定の一例を示すグラフ（その４）である。
【図８】通信アルゴリズム決定の一例を示すグラフ（その５）である。
【図９】実施形態の処理の一例を示すフローチャート（その１）である。
【図１０】実施形態の処理の一例を示すフローチャート（その２）である。
【図１１】実施形態の処理の一例を示すフローチャート（その３）である。
【図１２】計算ノードのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１４】
＜実施形態の並列計算機システムの一例＞
以下、図面を参照して、実施形態について説明する。図１は、実施形態に係る並列計算機システム１の一例を示す。並列計算機システム１は、複数の計算ノード２と複数の制御ノード３とストレージ４と端末５とを含む。また、並列計算機システム１は、第１ネットワーク６と第２ネットワーク７と第３ネットワーク８とを含む。
【００１５】
複数の計算ノード２は、それぞれプロセッサと主記憶装置とを含み、所定のプロセスを実行する。計算ノード２は、ノードまたは情報処理装置の一例である。複数の計算ノード２を含むグループを計算ノード群２Ｇとする。
【００１６】
複数の計算ノード２は、集団通信と称される通信機能を使用して、相互に通信を行い、並列処理を実行する。集団通信のライブラリとして、ＭＰＩが適用されてもよい。ただし、集団通信のライブラリはＭＰＩには限定されない。
【００１７】
制御ノード３は、並列計算機システム１の各種の制御を行うコンピュータである。複数の制御ノード３を含むグループを制御ノード群３Ｇとする。並列計算機システム１に含まれる制御ノード３の数は１つであってもよい。
【００１８】
ストレージ４は、情報を記憶する記憶装置である。図１は、１つのストレージ４が、複数の計算ノード２および複数の制御ノード３により共有されている例を示す。並列計算機システム１は、複数のストレージ４を含んでもよく、１つの計算ノード２に対して、１つのストレージ４が割り当てられてもよい。
【００１９】
端末５は、各種の情報を制御ノード３に送信する。端末５は、該端末５の操作者によって操作され、該操作者の操作を端末５が受け付けて、端末５は制御ノード３に各種の情報を送信する。
【００２０】
第１ネットワーク６は、各計算ノード２と接続され、各計算ノード２は、第１ネットワーク６を介して集団通信を行う。第１ネットワーク６は、複数のスイッチ６Ｓを含む。スイッチ６Ｓは、ルータ等であってよい。図１の第１ネットワーク６は、Fat-Treeトポロジの例を示す。ただし、第１ネットワーク６のトポロジは、Fat-Treeには限定されない。
【００２１】
第２ネットワーク７は、各計算ノード２と、各制御ノード３およびストレージ４との間を接続するネットワークである。第３ネットワーク８は、制御ノード３と端末５との間を接続するネットワークである。
【００２２】
なお、各計算ノード２同士は、第１ネットワーク６の他に、別系統のネットワークにより接続されてもよい。別系統のネットワークとしては、例えば、バリア同期や縮約演算等のために用いられるネットワークであってよい。
【００２３】
＜計算ノードの一例＞
次に、図２を参照して、計算ノード２の一例について説明する。計算ノード２は、演算部１１と通信部１２と制御部１３と測定部１４と記憶部１５とアルゴリズム決定部１６とを含む。図２において、アルゴリズム決定部１６は「ＡＬＧ決定部」と表記される。
【００２４】
演算部１１は、所定の演算を行う。通信部１２は、第１ネットワーク６を介して、他の計算ノード２と通信を行う。制御部１３は、計算ノード２が行う実施形態の処理に関する各種の制御を行う。
【００２５】
測定部１４は、通信速度測定部１４Ａと手順決定部１４Ｂとを含む。通信速度測定部１４Ａは、複数の通信アルゴリズムの通信性能を測定する。測定された通信速度が高速であるほど通信性能が高いことを示し、測定された通信速度が低速であるほど、通信性能は低いことを示す。
【００２６】
手順決定部１４Ｂは、通信アルゴリズムの通信性能を測定する手順を決定する。実施形態では、集団通信に複数の通信アルゴリズムが適用される。手順決定部１４Ｂは、複数の通信アルゴリズムの測定手順（測定する順番）を決定する。通信速度測定部１４Ａは、手順決定部１４Ｂが決定した手順に従って通信アルゴリズムの通信速度の測定を行う。
【００２７】
記憶部１５は、各種の情報を記憶する。例えば、記憶部１５は、通信速度測定部１４Ａが測定した通信速度（測定結果）を記憶する。アルゴリズム決定部１６は、集団通信に用いられる複数の通信アルゴリズムのうち、使用される通信アルゴリズムを、メッセージ長（メッセージサイズ）に応じて決定する。
【００２８】
実施形態では、アルゴリズム決定部１６は、各メッセージ長における最速の通信アルゴリズムを適切な通信アルゴリズムとして決定する。
【００２９】
＜通信アルゴリズム決定の一例＞
以下、図３乃至図７を参照して、通信アルゴリズム決定の一例について説明する。図３乃至図７は、メッセージ長と通信速度との関係を示すグラフの例である。各図において、３つのマーク（バツ、三角および丸）は、それぞれ異なる種類の通信アルゴリズムであることを表す。
【００３０】
図３の例において、バツのマークは、通信アルゴリズムＡＬＧ１であることを表し、三角のマークは、通信アルゴリズムＡＬＧ２であることを表し、丸のマークは、通信アルゴリズムＡＬＧ３であることを表す。なお、通信アルゴリズムの種類は３種類には限定されない。
【００３１】
図３の例は、メッセージ長が短い場合と中間程度の場合と長い場合とにおける各通信アルゴリズムの通信速度を示す。メッセージ長が短い集団通信の場合、通信アルゴリズムＡＬＧ１が最速である。
【００３２】
メッセージ長が中間程度の集団通信の場合、通信アルゴリズムＡＬＧ２が最速である。メッセージ長が長い集団通信の場合、通信アルゴリズムＡＬＧ３が最速である。最も通信速度が速い通信アルゴリズムは、最も通信性能が良い通信アルゴリズムである。
【００３３】
短いメッセージ長（以下、短メッセージ長と称する）は、計算ノード２が送信するパケットサイズより小さいサイズ、またはハードウェアに対する命令自体に埋め込まれる即値程度のサイズであってもよい。
【００３４】
長いメッセージ長（以下、長メッセージ長と称する）は、スイッチ６Ｓに１度に指示できる転送長の最大値付近のサイズ、または多くの通信アルゴリズムの通信性能が飽和すると予想されるサイズであってもよい。
【００３５】
中間程度のメッセージ長（以下、中メッセージ長）は、短メッセージ長と長メッセージ長との中間程度のサイズであってもよい。
【００３６】
中メッセージ長は、特定の範囲内のメッセージ長の一例である。特定の範囲内のメッセージ長には、中メッセージ長だけでなく、短メッセージ長も含まれる場合がある。長メッセージ長は、中メッセージ長よりも長い範囲内のメッセージ長である。
【００３７】
特定の範囲内のメッセージ長の通信アルゴリズムによるテスト通信（集団通信）は、第１通信の一例である。つまり、中メッセージ長および短メッセージ長の通信アルゴリズムによるテスト通信は、第１通信の一例である。また、長メッセージ長の通信アルゴリズムによるテスト通信（集団通信）は、第２通信の一例である。
【００３８】
図４の例に示されるように、短メッセージ長では通信アルゴリズムＡＬＧ１が最速であり、中メッセージ長では通信アルゴリズムＡＬＧ２が最速であり、長メッセージ長では通信アルゴリズムＡＬＧ３が最速である。
【００３９】
従って、アルゴリズム決定部１６は、短メッセージ長では通信アルゴリズムＡＬＧ１が適用されるように、中メッセージ長では通信アルゴリズムＡＬＧ２が適用されるように、長メッセージ長では通信アルゴリズムＡＬＧ３が適用されるように決定する。
【００４０】
これにより、メッセージ長に応じて適切な通信アルゴリズムによる集団通信が行われる。図４の破線は、各メッセージ長において推定される最良の通信性能の通信アルゴリズムを示す。集団通信のメッセージ長に応じて、図４の破線内の通信アルゴリズムが適用されることで、メッセージ長に応じて適切な通信アルゴリズムによる集団通信が行われる。
【００４１】
測定部１４は、制御部１３の制御に基づいて、メッセージ長に応じた各通信アルゴリズムの通信性能を測定する。例えば、端末５は、第３ネットワーク８を介して、実施形態の処理を実現する通信アルゴリズム決定プログラムを実行する指示を制御ノード３に対して送信する。以下、この制御ノード３をジョブ制御ノード３と称する。
【００４２】
実施形態の処理を実現する通信アルゴリズム決定プログラムは、ストレージ４に記憶されているものとする。ジョブ制御ノード３は、上記の指示に基づいて、通信アルゴリズム決定プログラムをストレージ４から取得し、取得した通信アルゴリズム決定プログラムを各計算ノード２に送信する。
【００４３】
各計算ノード２は、受信した通信アルゴリズム決定プログラムを実行する。これにより、各計算ノード２は、実施形態の処理を実行する。
【００４４】
複数の計算ノード２のうち、何れか１つの計算ノード２により実行されるプロセスがマスタープロセスになり、他の計算ノード２により実行されるプロセスがワーカプロセスになる。ワーカプロセスは、マスタープロセスの制御に基づいて、計算ノード２で動作する。
【００４５】
また、ストレージ４には、複数の通信アルゴリズムに関する情報が記憶される。各計算ノード２は、複数の通信アルゴリズムに関する情報をストレージ４から取得し、取得された通信アルゴリズムに関する情報を記憶する。
【００４６】
また、端末５は、ジョブ制御ノード３に対して、測定対象である短メッセージ長、中メッセージ長および長メッセージ長の３つのメッセージ長に関する情報（以下、メッセージ長情報と称する）を送信する。例えば、端末５を操作する操作者は、メッセージ長情報を端末５に入力する。
【００４７】
端末５は、入力されたメッセージ長情報を受け付けて、受け付けたメッセージ長情報をジョブ制御ノード３に送信してもよい。ジョブ制御ノード３は、受信した３つのメッセージ長情報を、各計算ノード２に送信する。各計算ノード２は、受信したメッセージ長情報を、例えば主記憶装置に記憶する。
【００４８】
マスタープロセスが動作する計算ノード２（以下、マスターノードと称する）の制御部１３は、短メッセージ長および中メッセージ長において、各通信アルゴリズムのテスト通信を行う。
【００４９】
マスタノードの制御部１３は、通信部１２を制御して、ワーカプロセスが動作する計算ノード２（以下、ワーカノードと称する）に対して、テスト通信（集団通信）の実行を通知する。
【００５０】
この通知には、テスト通信による通信速度の測定の対象となる通信アルゴリズムに関する情報が含まれる。マスタノードは、複数のワーカノードに対して、該通知をブロードキャストしてもよい。
【００５１】
これにより、マスタノードおよび複数のワーカノードが参加するテスト通信（集団通信）が行われる。マスタノードの制御部１３は、短メッセージ長における全ての通信アルゴリズムのテスト通信を行うように、通信部１２を制御する。
【００５２】
図４の例では、マスタノードの通信速度測定部１４Ａは、３つの通信アルゴリズムのテスト通信（短メッセージ長通信）による通信速度を測定し、測定結果を記憶部１５に記憶する。図４の例に示されるように、短メッセージ長においては、通信アルゴリズムＡＬＧ１が最速である。
【００５３】
アルゴリズム決定部１６は、短メッセージ長における集団通信では、通信アルゴリズムＡＬＧ１が適用されるように決定する。
【００５４】
また、マスタノードの通信速度測定部１４Ａは、中メッセージ長における全ての通信アルゴリズムのテスト通信（中メッセージ長通信）による通信速度を測定し、測定結果を記憶部１５に記憶する。
【００５５】
図４の例では、中メッセージ長においては、通信アルゴリズムＡＬＧ２の通信速度が最速である。アルゴリズム決定部１６は、中メッセージ長における集団通信では、通信アルゴリズムＡＬＧ２が適用されるように決定する。
【００５６】
従って、短メッセージ長および中メッセージ長において、各通信アルゴリズムの通信速度の測定が行われる。短メッセージ長および中メッセージ長における各通信アルゴリズムの測定手順は任意であってもよい。
【００５７】
実施形態では、短メッセージ長および中メッセージ長における通信速度の測定手順（測定する順番）と、長メッセージ長における通信速度の測定手順とは異なる。長メッセージ長の通信速度の測定手順について説明する。
【００５８】
長メッセージ長の通信速度の測定手順は、中メッセージ長における通信速度の測定結果に基づいて、手順決定部１４Ｂが決定する。手順決定部１４Ｂは、長メッセージ長における各通信アルゴリズムの測定手順を以下の（１）および（２）に基づいて決定する。
（１）中メッセージ長における通信速度が最速である通信アルゴリズムを最初に測定する。
（２）中メッセージ長における通信速度が最速でない各通信アルゴリズムについては、中メッセージ長付近における通信速度の増加率（傾き）が高い通信アルゴリズムから順番に測定する。
【００５９】
（１）について説明する。中メッセージ長において最速の通信アルゴリズムは、中メッセージ長に適した通信アルゴリズムであり、中メッセージ長で通信速度が飽和し、長メッセージ長における通信速度はそれほど高くならないことが想定される。
【００６０】
このため、制御部１３は、中メッセージ長において最速の通信アルゴリズムの長メッセージ長における通信速度の測定時間を基準として、他の通信アルゴリズムの測定を中断させるか否かを判定する。
【００６１】
従って、通信速度測定部１４Ａは、中メッセージ長における最速の通信アルゴリズムの通信速度を最初に測定する。制御部１３は、通信速度測定部１４Ａが測定を開始してから終了するまでの時間を計測する。計測された時間は、中メッセージ長における最速の通信アルゴリズムの通信速度の測定時間である。
【００６２】
この測定時間を時間閾値Ｔｔｈとする。測定時間が時間閾値Ｔｔｈを越える通信アルゴリズムは、長メッセージ長における最速の通信アルゴリズムではないことが想定される。
【００６３】
そこで、実施形態では、制御部１３が通信速度測定部１４Ａによる各通信アルゴリズムの通信速度の測定時間を監視する。制御部１３は、測定時間が時間閾値Ｔｔｈを越えた時点で、通信速度の測定を中断させる制御を行う。例えば、制御部１３は、通信部１２および測定部１４に対して、測定中断の指示を出す。
【００６４】
これにより、長メッセージ長において最速でないことが想定される通信アルゴリズムについての測定が途中で中断されて、測定が終了するため、長メッセージ長における通信速度の測定時間を短くすることができる。
【００６５】
長メッセージ長における通信速度の測定時間が短くなるため、長メッセージ長において適用される適切な通信アルゴリズムが早期に決定される。例えば、図５の例の場合、中メッセージ長における最速の通信アルゴリズムＡＬＧ２の通信速度の測定時間が時間閾値Ｔｔｈである。
【００６６】
通信アルゴリズムＡＬＧ１の通信速度は、通信アルゴリズムＡＬＧ２の長メッセージ長における通信速度よりも遅い。このため、通信アルゴリズムＡＬＧ１の測定時間は時間閾値Ｔｔｈより長くなる。
【００６７】
このため、制御部１３は、長メッセージ長における通信アルゴリズムＡＬＧ１の測定を途中で中断させる制御を行う。これにより、長メッセージ長における通信アルゴリズムＡＬＧ１の測定時間が短くなる。
【００６８】
なお、通信アルゴリズムの中には、中メッセージ長付近における通信速度の増加率が低く、且つ長メッセージ長においても通信速度が低速な通信アルゴリズムが存在する可能性もある。
【００６９】
このような通信アルゴリズムが存在するような場合であっても、制御部１３は、長メッセージ長における測定時間が時間閾値Ｔｔｈを超えた時点で、通信速度測定部１４Ａによる通信速度の測定を中断させるため、測定時間を短くすることができる。
【００７０】
次に、上述した（２）について説明する。手順決定部１４Ｂは、（１）で測定された通信アルゴリズム以外の各通信アルゴリズムについては、中メッセージ長付近における通信速度の増加率（傾き）に基づいて測定手順を決定する。具体的には、手順決定部１４Ｂは、通信速度の増加率が低い通信アルゴリズムから順番に測定されるように測定手順を決定する。
【００７１】
上述したように、中メッセージ長は特定の範囲内のメッセージ長である。通信速度の増加率は、中メッセージ長の通信速度と該中メッセージ長に近いメッセージ長の通信速度とに基づいて、求められてもよい。
【００７２】
実施形態では、通信速度の増加率は、短メッセージ長における通信速度と中メッセージ長における通信速度とに基づいて、求められるものとする。手順決定部１４Ｂは、（１）で測定された通信アルゴリズム以外の各通信アルゴリズムを、求められた通信速度の増加率が低い通信アルゴリズムから順番に測定されるように測定手順を決定する。
【００７３】
中メッセージ長付近で、通信速度の増加率が高い通信アルゴリズムは、長メッセージ長に達する前に飽和し、長メッセージ長では高い通信速度の測定結果が得られないことが想定される。
【００７４】
一方、中メッセージ長付近で、通信速度の増加率が低い通信アルゴリズムは、長メッセージ長近傍で増加率が高くなり、長メッセージ長における通信速度が高くなることが想定される。
【００７５】
（２）で決定された測定手順に従って、通信速度測定部１４Ａは通信アルゴリズムの通信速度の測定を行う。従って、通信速度測定部１４Ａは、中メッセージ長付近で最も通信速度の増加率が低い通信アルゴリズムから測定を行う。
【００７６】
制御部１３は、中メッセージ長付近で最も通信速度の増加率が低い通信アルゴリズムを長メッセージ長における最速の通信アルゴリズムに決定してもよい。この場合、通信速度測定部１４Ａは、残りの通信アルゴリズムの測定を行わないため、測定時間を短くすることができる。
【００７７】
また、制御部１３は、中メッセージ長付近で最も通信速度の増加率が低い通信アルゴリズムから所定数の通信アルゴリズムについてのみ通信速度を測定し、残りの通信アルゴリズムの通信速度を測定してなくもよい。
【００７８】
この場合、長メッセージ長における通信アルゴリズムの測定サンプルが増えるため、長メッセージ長における最速の通信アルゴリズムを高い精度で検出することができる。また、この場合、全ての通信アルゴリズムの測定が行われないため、測定時間は短くなる。
【００７９】
図５の例の場合、中メッセージ長における最速の通信アルゴリズムはＡＬＧ２である。また、中メッセージ長付近における通信速度の増加率が最も低い通信アルゴリズムはＡＬＧ３であり、中メッセージ長付近における通信速度の増加率が最も高い通信アルゴリズムはＡＬＧ３である。
【００８０】
よって、手順決定部１４Ｂは、上述した（１）および（２）の測定手順の決定に基づいて、通信アルゴリズムＡＬＧ３、ＡＬＧ２、ＡＬＧ１の手順で通信速度の測定を行うように手順を決定する。
【００８１】
なお、図５の例において、網掛けが施されている領域は、測定を中断する対象となる範囲（測定中断対象範囲）である。
【００８２】
＜メッセージ長に応じた通信アルゴリズムのテーブルの一例＞
次に、図６の例を参照して、メッセージ長に応じた通信アルゴリズムのテーブルの一例について説明する。このテーブルは、マスタノードのアルゴリズム決定部１６により作成される。
【００８３】
作成されたテーブルは、マスタノードにより、第２ネットワーク７を介して、ストレージ４に記憶される。作成されたテーブルは、各計算ノード２や制御ノード３等が記憶してもよい。
【００８４】
図６の例のテーブルは、ノード数とメッセージ長と通信アルゴリズムとの項目を含む。ノード数は、集団通信に参加する計算ノード２の数を表す。図６の例では、ノード数は一定数（１２８）である。実施形態では、このノード数は、端末５により指定される。上述した処理は、ノード数が固定された条件下で行われる。
【００８５】
端末５により、上記のノード数とは異なるノード数が指定された場合、計算ノード２は、指定されたノード数で再び上述した処理を行い、メッセージ長に応じた適切な通信アルゴリズムを決定する。
【００８６】
メッセージ長の項目は、上述したメッセージ長を示す。図６の例において、短メッセージ長は４バイト、中メッセージ長は１０２４バイト、長メッセージ長は４０９６バイトであるものとする。
【００８７】
通信アルゴリズムの項目は、メッセージ長に応じた通信アルゴリズムの名称を表す。以上のテーブルは、例えば、ストレージ４に設定ファイルとして記憶されてよい。並列計算機システム１の各計算ノード２が、通信テストではなく、実動作を行う場合、図６の例のテーブルを参照して、メッセージ長に応じた通信アルゴリズムを決定する。
【００８８】
例えば、集団通信のメッセージ長が１０２４バイト以下の場合、各計算ノード２は、通信アルゴリズム「Ring」を使用して集団通信を行う。一方、集団通信のメッセージ長が１０２４バイトを超えた時点で、各計算ノード２は、通信アルゴリズム「Basic linear」を使用して集団通信を行う。
【００８９】
従って、並列計算機システム１の各計算ノード２が集団通信を用いて、所定の処理を実行する際、各計算ノード２はテーブルを参照して、メッセージ長に応じた適切な通信アルゴリズムを使用して、集団通信を行うことができる。
【００９０】
＜新たな測定点での通信アルゴリズムの決定＞
上述したように、アルゴリズム決定部１６は、３つのメッセージ長のそれぞれについて、最も高速な通信アルゴリズムを決定する。このため、メッセージ長に応じた適切な通信アルゴリズムが早期に決定される。
【００９１】
計算ノード２は、より多くのメッセージ長について、各通信アルゴリズムの通信速度の測定を行い、適切な通信アルゴリズムを決定してもよい。これにより、適切な通信アルゴリズムを、より細かく決定することができる。新たな測定点は、既に測定された各メッセージ長における各通信アルゴリズムの通信速度に基づいて求められる。
【００９２】
新たな測定点の決定について、図７の例を参照して説明する。制御部１３は、短メッセージ長における最速の通信アルゴリズムの通信速度と中メッセージ長における最速の通信アルゴリズムの通信速度とを記憶部１５から読み出す。
【００９３】
制御部１３は、短メッセージ長における最速の通信アルゴリズムの通信速度と中メッセージ長における最速の通信アルゴリズムの通信速度との間に線分を形成する。形成された線分は交差する場合がある。線分が交差する点は、最速の通信アルゴリズムが変化する点である。
【００９４】
例えば、図７の例では、通信アルゴリズムＡＬＧ１の線分と通信アルゴリズムＡＬＧ２の線分とは交差する。線分が交差する点で、最速の通信アルゴリズムは変化する。制御部１３は、線分が交差する点を新たな測定点として、該測定点のメッセージ長における各通信アルゴリズムの通信速度を測定するように、通信速度測定部１４Ａを制御する。
【００９５】
制御部１３は、中メッセージ長と長メッセージ長との間にも上述した線分を形成する。ただし、上述したように、長メッセージ長における通信アルゴリズムＡＬＧ１の通信速度の測定は中断される。測定が中断された通信アルゴリズムＡＬＧ１との間には線分は形成されない。
【００９６】
図７の例の場合、中メッセージ長と長メッセージ長との間で、通信アルゴリズムＡＬＧ２の線分と通信アルゴリズムＡＬＧ３の線分とは交差する。また、線分の交差点よりも高速な通信アルゴリズムは存在しない。従って、制御部１３は、該線分の交差点のメッセージ長を新規の測定点として設定する。
【００９７】
そして、通信速度測定部１４Ａは、制御部１３に制御に基づいて、該線分の交差点のメッセージ長における各通信アルゴリズムの通信速度を測定する。
【００９８】
図８は、新規に設定された２つの測定点のメッセージ長における各通信アルゴリズムの測定結果を表す。短メッセージ長と中メッセージ長との間に新たに設定された測定点における最も速い通信アルゴリズムは、ＡＬＧ１である。中メッセージ長と長メッセージ長との間に新たに設定された測定点における最も速い通信アルゴリズムは、ＡＬＧ３である。
【００９９】
これにより、それぞれ長さが異なる５つのメッセージ長について、最も速い通信アルゴリズムが決定される。従って、３つのメッセージ長に基づいて通信アルゴリズムが決定される場合よりも、５つのメッセージ長に基づいて通信アルゴリズムが決定される方が、より細かく適切な通信アルゴリズムが決定される。
【０１００】
制御部１３は、隣接する２つの測定点について、同様の処理を繰り返すことで、二分探索的に測定点を増やすことができ、適切な通信アルゴリズムの決定をより細かく行うことができる。
【０１０１】
隣接する２つの測定点の間に、交差する線分がない場合、制御部１３は、２つの測定点の中間点を新たな測定点としてもよい。これにより、測定点を増やすことができ、メッセージ長に応じた適切な通信アルゴリズムの決定をより細かく行うことができる。
【０１０２】
＜実施形態の処理の流れを示すフローチャートの一例＞
次に、図９乃至図１２のフローチャートの例を参照して、実施形態の処理の流れについて説明する。端末５は、該端末５からの操作に基づいて、短メッセージ長、中メッセージ長および長メッセージ長の３つのメッセージ長の入力を受け付ける。
【０１０３】
端末５は、入力を受け付けた３つのメッセージ長の情報を、第３ネットワーク８を介して、ジョブ制御ノード３に送信する。ジョブ制御ノード３は、各計算ノード２に対して、３つのメッセージ長の情報を送信する。
【０１０４】
各計算ノード２は、３つのメッセージ長の情報を受信する（ステップＳ１）。各計算ノード２のうち、マスタノードは、短メッセージ長における各通信アルゴリズムのテスト通信を行う。
【０１０５】
この際、マスタノードは、各ワーカノードに対して、テスト通信の対象である通信アルゴリズムを特定する情報を通知する。通信部１２は、該通信アルゴリズムによる集団通信（テスト通信）を行う。通信速度測定部１４Ａは、テスト通信に基づく通信速度を測定する。
【０１０６】
通信速度測定部１４Ａは、短メッセージ長における各通信アルゴリズムによるテスト通信に基づく通信速度を測定する（ステップＳ２）。テスト通信の対象である通信アルゴリズムが変化するごとに、マスタノードは、各ワーカノードに対して、何れの通信アルゴリズムがテスト対象であるかの情報を通知する。
【０１０７】
通信速度測定部１４Ａにより測定された短メッセージ長における各通信アルゴリズムの測定結果は、記憶部１５に記憶される。
【０１０８】
次に、マスタノードは、中メッセージ長における各通信アルゴリズムのテスト通信を行う（ステップＳ３）。マスタノードは、テスト対象である通信アルゴリズムが変化するごとに、何れの通信アルゴリズムがテスト対象であるかの情報を各ワーカノードに通知する。
【０１０９】
通信速度測定部１４Ａにより測定された中メッセージ長における各通信アルゴリズムの測定結果は、記憶部１５に記憶される。
【０１１０】
制御部１３は、記憶部１５に記憶された中メッセージ長における各通信アルゴリズムの測定結果のうち、最速の通信アルゴリズムを特定する（ステップＳ４）。制御部１３は、特定された通信アルゴリズムを変数として記憶部１５に記憶する。
【０１１１】
制御部１３は、中メッセージ長における各通信アルゴリズムのうち、ステップＳ４で特定された通信アルゴリズム以外の通信アルゴリズムをリスト化する（ステップＳ５）。制御部１３は、リスト化された通信アルゴリズムを記憶部１５に記憶する。
【０１１２】
制御部１３は、ステップＳ４で特定された通信アルゴリズム（中メッセージ長における最速の通信アルゴリズム）の長メッセージ長におけるテスト通信を行うように通信部１２を制御する。
【０１１３】
通信速度測定部１４Ａは、該テスト通信の通信速度を測定する（ステップＳ６）。制御部１３は、通信速度測定部１４Ａが、該テスト通信にかかった時間を時間閾値Ｔｔｈとして記憶部１５に記憶する（ステップＳ７）。
【０１１４】
制御部１３は、ステップＳ５でリスト化された各通信アルゴリズムについて、中メッセージ長近傍における通信速度の増加率を求める（ステップＳ８）。実施形態では、該増加率は、各通信アルゴリズムの短メッセージ長における通信速度と中メッセージ長における通信速度とにより形成される傾きで表される。
【０１１５】
制御部１３は、記憶部１５に記憶されたリストに含まれる各通信アルゴリズムを、検出された各通信アルゴリズムの通信速度の増加率が小さい方から順番に並び替える（ステップＳ９）。
【０１１６】
つまり、制御部１３は、通信速度の増加率（傾き）が小さい方から順番に各通信アルゴリズムを並び替える。制御部１３は、ステップＳ９の並び替えを行ったリストを記憶部１５に記憶する。そして、処理は「Ａ」に進む。
【０１１７】
「Ａ」移行の処理について、図１０の例を参照して、説明する。制御部１３は、記憶部１５に記憶されたリストから通信アルゴリズムを抽出する（ステップＳ１０）。リストに含まれる各通信アルゴリズムは並び替えが行われている。制御部１３は、ステップＳ９の並び替えが行われた順番に従って通信アルゴリズムを抽出する。
【０１１８】
制御部１３は、抽出された通信アルゴリズムの長メッセージ長における通信アルゴリズムのテスト通信を行うように通信部１２を制御する。通信速度測定部１４Ａは、通信速度を測定する（ステップＳ１１）。
【０１１９】
制御部１３は、テスト通信が終了したかを監視する（ステップＳ１２）。テスト通信が終了していない場合（ステップＳ１２でＮＯ）、制御部１３は、テスト通信の測定時間が時間閾値Ｔｔｈを越えたか否かを判定する（ステップＳ１３）。
【０１２０】
測定時間が時間閾値Ｔｔｈを越えていない場合（ステップＳ１３でＮＯ）、処理は、ステップＳ１２に戻り、制御部１３は、テスト通信が終了したかを引き続き監視する（ステップＳ１２）。
【０１２１】
一方、テスト通信の測定時間が時間閾値Ｔｔｈを超えた場合（ステップＳ１３でＹＥＳ）、測定時間が時間閾値Ｔｔｈを越えた時点で、制御部１３は、テスト通信を中断させる制御を行い、通信アルゴリズムの測定を終了させる。
【０１２２】
これにより、最速でない通信アルゴリズムについての通信速度の測定が中断されるため、メッセージ長に応じた適切な通信アルゴリズムを決定するための時間を短くすることができる。
【０１２３】
測定時間が時間閾値Ｔｔｈに達する前にテスト通信が終了した場合（ステップＳ１２でＹＥＳ）、制御部１３は、時間閾値Ｔｔｈを今回の測定時間に更新する（ステップＳ１４）。この場合、長メッセージ長における最速の通信アルゴリズムが更新される。
【０１２４】
更新された時間閾値Ｔｔｈよりも測定時間が長い通信アルゴリズムは、長メッセージ長における最速の通信アルゴリズムではない。このため、制御部１３は、更新された時間閾値Ｔｔｈを基準として、通信アルゴリズムの通信速度の測定を中断させることで、メッセージ長に応じた適切な通信アルゴリズムを決定するための時間を短くすることができる。
【０１２５】
制御部１３は、全ての通信アルゴリズムの通信速度の測定が終了したかを判定する（ステップＳ１５）。全ての通信アルゴリズムの通信速度の測定が終了していない場合（ステップＳ１５でＮＯ）、処理はステップＳ１０に戻る。
【０１２６】
全ての通信アルゴリズムの通信速度の測定が終了した場合（ステップＳ１５でＹＥＳ）、アルゴリズム決定部１６は、メッセージ長に応じた通信アルゴリズムを決定する（ステップＳ１６）。
【０１２７】
これにより、メッセージ長に応じた適切な通信アルゴリズムが決定される。実施形態では、メッセージ長に応じた適切な通信アルゴリズムは、テーブル形式でストレージ４に記憶される。
【０１２８】
次に、図１１のフローチャートを参照して、新たな測定点での通信アルゴリズムの決定処理の一例について説明する。制御部１３は、記憶部１５に記憶された２ｎ＋１個の測定点における測定結果を取得する（ステップＳ２１）。なお、ｎは自然数である。
【０１２９】
取得される測定結果は、メッセージ長および該メッセージ長における最速の通信アルゴリズムである。制御部１３は、変数ｉをゼロに設定する（ステップＳ２２）。なお、変数ｉは整数である。
【０１３０】
Ｍｓｇ（ｉ）はｉ番目のメッセージ長であり、Ｍｓｇ（ｉ＋１）は「ｉ＋１」番目のメッセージ長であるとする。例えば、メッセージ長が３つの場合、Ｍｓｇ（０）は短メッセージ長であり、Ｍｓｇ（１）は中メッセージ長であり、Ｍｓｇ（２）は長メッセージ長である。
【０１３１】
制御部１３は、Ｍｓｇ（ｉ）とＭｓｇ（ｉ＋１）とにおける最速の通信アルゴリズムが同じであるかを判定する（ステップＳ２３）。Ｍｓｇ（ｉ）における最速の通信アルゴリズムをＡ（ｉ）とし、Ｍｓｇ（ｉ＋１）における最速の通信アルゴリズムをＡ（ｉ＋１）とする。
【０１３２】
従って、ステップＳ２３において、制御部１３は、隣接するメッセージ長における最速の通信アルゴリズムＡ（ｉ）とＡ（ｉ＋１）とが同じであるかを判定する。
【０１３３】
通信アルゴリズムＡ（ｉ）とＡ（ｉ＋１）とが同じでない場合（ステップＳ２４でＮＯ）、制御部１３は、通信アルゴリズムＡ（ｉ）とＡ（ｉ＋１）とについて、Ｍｓｇ（ｉ）とＭｓｇ（ｉ＋１）との通信速度を結ぶ線分を形成する（ステップＳ２５）。
【０１３４】
ステップＳ２４でＮＯの場合、上記の線分の交点が存在する。制御部１３は、線分の交点を検出し、その交点のメッセージ長をＭｓｇ（ｘｉ）として新規に設定する（ステップＳ２６）。
【０１３５】
通信アルゴリズムＡ（ｉ）とＡ（ｉ＋１）とが同じである場合（ステップＳ２４でＹＥＳ）、上記の線分を形成したとしても、線分の交点は存在しない。
【０１３６】
この場合、制御部１３は、Ｍｓｇ（ｉ）とＭｓｇ（ｉ＋１）との間に新規にメッセージ長Ｍｓｇ（ｘｉ）を設定する（ステップＳ２７）。例えば、制御部１３は、メッセージ長Ｍｓｇ（ｘｉ）を以下の式に基づいて設定してもよい。
「Ｍｓｇ（ｘｉ）＝２＾((ｌｏｇ２Ｍｓｇ（ｉ）＋ｌｏｇ２Ｍｓｇ（ｉ＋１）/２))」
【０１３７】
制御部１３は、通信アルゴリズムＡ（ｉ）またはＡ（ｉ＋１）の何れかを優先させた順番で、メッセージ長Ｍｓｇ（ｘｉ）について全ての通信アルゴリズムの通信速度の測定を行うように制御する。
【０１３８】
この制御に基づいて、通信部１２はメッセージ長Ｍｓｇ（ｘｉ）における各通信アルゴリズムのテスト通信を行い、通信速度測定部１４Ａは、テスト通信の速度を測定する（ステップＳ２８）。測定結果は、記憶部１５に記憶される。
【０１３９】
変数ｉがゼロの場合、メッセージ長Ｍｓｇ（ｘｉ）は、短メッセージ長と中メッセージ長との間に設定される。制御部１３は、変数ｉをインクリメントする（ステップＳ２９）。変数ｉはゼロであったため、変数ｉの値は「１」になる。
【０１４０】
そして、制御部１３は、変数ｉの値が２ｎに達したか否かを判定する（ステップＳ３０）。ｎ＝１の場合（３つのメッセージ長の場合）、変数ｉは２ｎに達していない。この場合（ステップＳ３０でＮＯ）、処理はステップＳ２３に戻る。
【０１４１】
変数ｉが「１」である場合、中メッセージ長と長メッセージ長との間にメッセージ長Ｍｓｇ（ｘｉ）が新規に設定される。そして、メッセージ長Ｍｓｇ（ｘｉ）における各通信アルゴリズムの通信速度の測定が行われる。
【０１４２】
以上により、新たに２つのメッセージ長における各通信アルゴリズムの通信速度の測定が行われる。アルゴリズム決定部１６は、合計５つのメッセージ長における各通信アルゴリズムの通信速度のうち最速の通信速度である通信アルゴリズムを決定する（ステップＳ３１）。
【０１４３】
このため、通信速度の測定点を２つ増やすことができ、適切な通信アルゴリズムの決定をより細かく行うことができる。
【０１４４】
上述した処理により、合計５つのメッセージ長における最速の通信アルゴリズムが決定される。計算ノード２は、ステップＳ２１のｎを「２」に設定して、図１１の処理を実行することで、合計９つのメッセージ長における最速の通信アルゴリズムを決定することができる。
【０１４５】
図９乃至図１１のフローチャートの各処理は、集団通信に参加する計算ノード２の数が固定された条件下で行われる。制御部１３は、計算ノード２の数（ノード数）を変化させて、メッセージ長に応じた通信アルゴリズムを決定してもよい。
【０１４６】
集団通信に参加するノード数が変化すると、各メッセージ長における最速の通信アルゴリズムが変化する場合がある。そこで、ノード数を変化させて、メッセージ長に応じた通信アルゴリズムを決定することで、ノード数とメッセージ長とに応じた適切な通信アルゴリズムが決定される。
【０１４７】
＜計算ノードのハードウェア構成の一例＞
次に、図１２の例を参照して、計算ノード２のハードウェア構成の一例を説明する。図１２の例に示すように、バス１００に対して、プロセッサ１１１とRandom Access Memory(RAM)１１２とRead Only Memory(ROM)１１３と補助記憶装置１１４と媒体接続部１１５と通信インタフェース１１６とが接続されている。
【０１４８】
プロセッサ１１１は任意の処理回路である。プロセッサ１１１には、例えば、上述したＣＰＵが適用されてもよい。
【０１４９】
プロセッサ１１１はＲＡＭ１１２（主記憶装置）に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態の処理を行うプログラムが適用されてもよい。ＲＯＭ１１３はＲＡＭ１１２に展開されるプログラムを記憶する不揮発性の記憶装置である。
【０１５０】
補助記憶装置１１４は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等が補助記憶装置１１４に適用されてもよい。媒体接続部１１５は、可搬型記録媒体１１９と接続可能に設けられている。
【０１５１】
可搬型記録媒体１１９としては、可搬型のメモリや光学式ディスク（例えば、Compact Disc(CD)やDigital Versatile Disc(DVD)等）が適用されてもよい。この可搬型記録媒体１１９に実施形態の処理を行うプログラムが記録されてもよい。
【０１５２】
計算ノード２のうち、通信部１２は、通信インタフェース１１６により実現されてよい。記憶部１５は、ＲＡＭ１１２または補助記憶装置１１４により実現されてよい。計算ノード２のうち、通信部１２および記憶部１５以外の各部は、プロセッサ１１１が与えられたプログラムを実行することにより実現されてよい。
【０１５３】
ＲＡＭ１１２、ＲＯＭ１１３、補助記憶装置１１４および可搬型記録媒体１１９は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
【０１５４】
＜その他＞
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【０１５５】
１    並列計算機システム
２    計算ノード
３    制御ノード
４    ストレージ
５    端末
６    第１ネットワーク
７    第２ネットワーク
８    第３ネットワーク
１１    演算部
１２    通信部
１３    制御部
１４    測定部
１４Ａ  通信速度測定部
１４Ｂ  手順決定部
１５    記憶部
１６    アルゴリズム決定部
１１１    プロセッサ
１１２    ＲＡＭ
１１３    ＲＯＭ
【図１】
2017102510.tif 000003
【図２】
2017102510.tif 000004
【図３】
2017102510.tif 000005
【図４】
2017102510.tif 000006
【図５】
2017102510.tif 000007
【図６】
2017102510.tif 000008
【図７】
2017102510.tif 000009
【図８】
2017102510.tif 000010
【図９】
2017102510.tif 000011
【図１０】
2017102510.tif 000012
【図１１】
2017102510.tif 000013
【図１２】
2017102510.tif 000014