(57)【要約】【課題】プロトコルを選択する場合に、他のプロトコルよりも通信性能が低いプロトコルを選択してしまうことを抑制すること。【解決手段】通信プログラムは、コンピュータ群に含まれるコンピュータであって、複数の通信プロトコルのうちのいずれかの通信プロトコルを用いて、前記コンピュータ群に含まれる他のコンピュータにデータを送信するコンピュータに、前記複数の通信プロトコルのうち、前記コンピュータから前記他のコンピュータまでの通信経路上のホップ数と、前記データのデータサイズと、に基づいて予測される転送時間が他の通信プロトコルよりも短い通信プロトコルを選択し、選択した通信プロトコルを用いて前記データを送信することを実行させる。【選択図】図９
2012065281.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ群に含まれるコンピュータであって、複数の通信プロトコルのうちのいずれかの通信プロトコルを用いて、前記コンピュータ群に含まれる他のコンピュータにデータを送信するコンピュータに、
前記複数の通信プロトコルのうち、前記コンピュータから前記他のコンピュータまでの通信経路上のホップ数と、前記データのデータサイズと、に基づいて予測される転送時間が他の通信プロトコルよりも短い通信プロトコルを選択し、
選択した通信プロトコルを用いて前記データを送信すること
を実行させることを特徴とする通信プログラム。
【請求項２】
前記コンピュータに、
予め記憶手段に記憶された前記コンピュータ群に含まれるコンピュータ間の接続関係を示す情報に基づいて、前記コンピュータから前記他のコンピュータまでの通信経路上のホップ数を算出し、
前記複数の通信プロトコルのうち、算出したホップ数、及び前記データのデータサイズに基づいて予測された転送時間が他の通信プロトコルよりも短い通信プロトコルを選択すること
を実行させることを特徴とする請求項１に記載の通信プログラム。
【請求項３】
前記複数の通信プロトコルに、前記コンピュータが前記データを前記他のコンピュータに送信するまでに要する前記コンピュータと前記他のコンピュータとの間の通信回数が互いに異なる通信プロトコルが含まれること
を特徴とする請求項１又は２に記載の通信プログラム。
【請求項４】
前記コンピュータに、
前記ホップ数に基づいて、前記複数の通信プロトコルに含まれる他の通信プロトコルよりも転送時間の短い通信プロトコルが切り替わる閾値をデータサイズについて設定し、
設定した前記閾値と前記データのデータサイズとの大小に応じて、前記転送時間が他の通信プロトコルよりも小さい通信プロトコルを選択すること
を実行させることを特徴とする請求項１乃至３いずれか一項記載の通信プログラム。
【請求項５】
複数の通信プロトコルのうちのいずれかの通信プロトコルを用いて、通信装置群に含まれる他の通信装置にデータを送信する通信装置であって、
前記複数の通信プロトコルのうち、当該通信装置から前記他の通信装置までの通信経路上のホップ数と、前記データのデータサイズと、に基づいて予測される転送時間が他の通信プロトコルよりも短い通信プロトコルを選択する選択手段と、
選択した通信プロトコルを用いて前記データを送信する送信制御手段と
を有することを特徴とする通信装置。
【請求項６】
コンピュータ群に含まれるコンピュータであって、複数の通信プロトコルのうちのいずれかの通信プロトコルを用いて、前記コンピュータ群に含まれる他のコンピュータにデータを送信するコンピュータが、
前記複数の通信プロトコルのうち、前記コンピュータから前記他のコンピュータまでの通信経路上のホップ数と、前記データのデータサイズと、に基づいて予測される転送時間が他の通信プロトコルよりも短い通信プロトコルを選択し、
選択した通信プロトコルを用いて前記データを送信すること
を特徴とする通信方法。
【請求項７】
複数の通信プロトコルのうちのいずれかの通信プロトコルを用いて、通信装置群に含まれる他の通信装置にデータを送信する通信装置と、前記通信装置群に含まれない情報処理装置とを有する通信システムであって、
当該通信装置から前記他の通信装置までの通信経路上のホップ数を前記情報処理装置より取得する取得手段と、
前記複数の通信プロトコルのうち、前記取得部によって取得せれた前記ホップ数と、前記データのデータサイズと、に基づいて予測される転送時間が他の通信プロトコルよりも短い通信プロトコルを選択する選択部手段、
選択した通信プロトコルを用いて前記データを送信する送信制御手段と
を有し、
前記情報処理装置は、
予め記憶手段に記憶された前記通信装置群に含まれる通信装置間の接続関係を示す情報に基づいて、前記通信装置から前記他の通信装置までの通信経路上のホップ数を算出することを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信プログラム、通信装置、通信方法、及び通信システムに関する。通信プログラム、通信装置、通信方法として、例えばＲＤＭＡ通信の制御に関する通信プログラム、通信装置、通信方法、及び通信システムが含まれる。
【背景技術】
【０００２】
コンピュータ内のメモリに記憶されたデータを他のコンピュータ内のメモリに転送する通信技術は、ＲＤＭＡ（Remote Direct Memory Access）と呼ばれる。ＲＤＭＡでデーｆタ転送を行なう場合には、ＥａｇｅｒプロトコルやＲｅｎｄｅｚｖｏｕｓプロトコルなどの手順に沿って、指定された転送先のメモリ領域にデータを転送する。
【０００３】
データ転送に関して、例えば、方式の切り変えしきい値のメッセージ長を指定する技術がある（例えば、非特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−３３６１０１号公報
【非特許文献】
【０００５】
【非特許文献１】「IBM System BlueGene Solution: Application Development」、２００７年６月、fifth edition、ｐ．５
【非特許文献２】「ＭＶＡＰＩＣＨ２１．５  Ｕｓｅｒ  Ｇｕｉｄｅ」、11.21 MV2_IBA_EAGER_THRESHOLD、［online］、２０１０年７月１１日、［平成２２年９月１６日検索］、インターネット（ＵＲＬ：http://mvapich.cse.ohio-state.edu/support/user_guide_mvapich2-1.5.html#x1-11000011.21）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
プロトコルによってデータ転送に要する通信回数などが異なるため、転送先と転送元との間の通信遅延がデータ転送に要する時間に与える影響は異なる。そのため、転送するデータのデータサイズに応じてデータ転送に利用するプロトコルを選択した場合であっても、通信遅延によっては、選択されなかった他のプロトコルを利用した方が、データ転送に要する時間が少なくなる可能性がある。
【０００７】
本発明の一側面として、他のプロトコルよりも通信性能が低いプロトコルを選択してしまうことを抑制することを目的とする。
【課題を解決するための手段】
【０００８】
そこで上記課題を解決するため、通信プログラムは、コンピュータ群に含まれるコンピュータであって、複数の通信プロトコルのうちのいずれかの通信プロトコルを用いて、前記コンピュータ群に含まれる他のコンピュータにデータを送信するコンピュータに、前記複数の通信プロトコルのうち、前記コンピュータから前記他のコンピュータまでの通信経路上のホップ数と、前記データのデータサイズと、に基づいて予測される転送時間が他の通信プロトコルよりも短い通信プロトコルを選択し、選択した通信プロトコルを用いて前記データを送信することを実行させることを特徴とする。
【発明の効果】
【０００９】
本発明の一側面によれば、プロトコルを選択する場合に、他のプロトコルよりも通信性能が低いプロトコルを選択してしまうことを抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施の形態におけるＥａｇｅｒプロトコルを説明するための図である。
【図２】本実施の形態におけるＲｅｎｄｅｚｖｏｕｓプロトコルを説明するための図である。
【図３】ホップ数を説明するための図である。
【図４】ファットツリーの例を示す図である。
【図５】メッシュを構成する場合のコンピュータ群の接続例を示す図である。
【図６】トーラスを構成する場合のコンピュータ群の接続例を示す図である。
【図７】第一の実施の形態におけるコンピュータシステムの構成例を示す図である。
【図８】第一の実施の形態におけるコンピュータのハードウェア構成例を示す図である。
【図９】第一の実施の形態におけるコンピュータの機能構成例を示す図である。
【図１０】ホップ数管理テーブルの構成例を示す図である。
【図１１】送信側のコンピュータが実行するデータの送信処理の処理手順の一例を説明するためのフローチャートである。
【図１２】受信側のコンピュータが実行するデータの受信処理の処理手順の一例を説明するためのフローチャートである。
【図１３】第二の実施の形態におけるジョブ管理装置の機能構成例を示す図である。
【図１４】座標情報記憶部の構成例を示す図である。
【図１５】第二の実施の形態におけるコンピュータの機能構成例を示す図である。
【図１６】第二の実施の形態におけるアプリケーション実行開始時の処理手順の一例を説明するためのシーケンス図である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて本発明の実施の形態を説明する。まず、本実施の形態の考え方について説明する。
【００１２】
或るコンピュータの主記憶に記憶されているデータを、リモートの他のコンピュータの主記憶へＤＭＡ（Direct Memory Access）転送することは、ＲＤＭＡ（Remote Direct Memory Access）と呼ばれる。ＲＤＭＡのＷＲＩＴＥ（ＰＵＴとも呼ばれるデータの書き込み要求。）を用いて、一方のコンピュータｃ１の主記憶上の領域ｒ１にあるデータｄ１を、他方のコンピュータｃ２の主記憶上の領域ｒ２に転送する場合、コンピュータｃ１は領域ｒ２の仮想アドレス等を知っている必要がある。また、毎回同じ領域間でデータ転送が行われるとは限らない。すなわち、領域ｒ１’から領域ｒ２’への転送、領域ｒ１’’から領域ｒ２’’への転送も行われうる。ＲＤＭＡによってデータを転送する場合に、Ｅａｇｅｒプロトコル又はＲｅｎｄｅｚｖｏｕｓプロトコルが利用されている。
【００１３】
図１は、本実施の形態におけるＥａｇｅｒプロトコルを説明するための図である。
【００１４】
同図において、コンピュータＣ１とコンピュータＣ２とは、それぞれＲＤＭＡ（Remote Direct Memory Access）通信機能を有し、インターコネクト等のネットワークを介して接続されている。同図を用いて、コンピュータＣ１からコンピュータＣ２へ、Ｅａｇｅｒプロトコルを利用してデータ転送を行う場合の処理手順について説明する。
【００１５】
まず、コンピュータＣ１は、主記憶Ｍ１内の領域Ｒ１に記憶されている、転送対象のデータｄ１を主記憶Ｍ１内の送信バッファＲ３にメモリコピーする（Ｓ１）。続いて、コンピュータＣ１は、送信バッファＲ３のデータｄ１の前後のいずれか一方に、制御情報ｈ１を付加する（Ｓ２）。制御情報ｈ１には、例えば、Ｅａｇｅｒプロトコルの識別子等が含まれている。続いて、コンピュータＣ１は、送信バッファＲ３内のデータｄ１及び制御情報ｈ１を、コンピュータＣ２の主記憶Ｍ２内の受信バッファＲ４に転送する（Ｓ３）。なお、コンピュータＣ１は、受信バッファＲ４の仮想アドレス等を予め知っている。
【００１６】
続いて、コンピュータＣ２は、受信バッファＲ４の制御情報ｈ１を解読する（Ｓ４）。続いて、コンピュータＣ２は、格納領域（領域Ｒ２）を確定し、データｄ１を主記憶Ｍ２内の領域Ｒ２にメモリコピーする（Ｓ５）。Ｓ５において、コンピュータＣ２は、格納領域を確定させるまでに、データｄ１を不図示の退避領域に退避させておくなどの処理も行ない得る。
【００１７】
図１において、データｄ１の転送に関して、Ｅａｇｅｒプロトコルにおける通信に要する時間（Ｔ＿Ｅａｇｅｒ）は、例えば、以下の式（Ｅ）で表される。
【００１８】
Ｔ＿Ｅａｇｅｒ＝（Ｄ／Ｗ）＋（Ｌ＿１＋Ｄ／Ｂ）＋（Ｄ／Ｗ）＋Ｓ＿Ｅａｇｅｒ  ・・・（Ｅ）
Ｄ：データサイズ（ｂｙｔｅ）
Ｗ：メモリコピーのバンド幅（帯域幅）（ｂｙｔｅ／ｓｅｃ）
Ｂ：インターコネクトのバンド幅（ＲＤＭＡ通信のバンド幅）（ｂｙｔｅ／ｓｅｃ）
Ｌ＿１：インターコネクトのＲＤＭＡの通信遅延（ｓｅｃ）
Ｓ＿Ｅａｇｅｒ：Ｅａｇｅｒプロトコルにおけるソフトウェアオーバーヘッド時間（ｓｅｃ）
【００１９】
ここで、式（Ｅ）の右辺の第１項の（Ｄ／Ｗ）は、ステップＳ１におけるメモリコピーに要する時間である。第２項の（Ｌ＿１＋Ｄ／Ｂ）は、ステップＳ３におけるデータ転送に要する時間である。第３項の（Ｄ／Ｗ）は、ステップＳ５におけるメモリコピーに要する時間である。第４項のＳ＿Ｅａｇｅｒは、ステップＳ２及びＳ４等を含むソフトウェアの処理に要するオーバーヘッド時間である。
【００２０】
なお、Ｌ＿１の通信遅延とは、０バイトのデータの転送に要する、ハードウェアによるオーバーヘッド時間を意味する。
【００２１】
一方、図２は、本実施の形態におけるＲｅｎｄｅｚｖｏｕｓプロトコルを説明するための図である。コンピュータＣ１とコンピュータＣ２との関係は、図１と同じである。同図を用いて、コンピュータＣ１からコンピュータＣ２へ、Ｒｅｎｄｅｚｖｏｕｓプロトコルを利用してデータ転送を行う場合の処理手順について説明する。
【００２２】
まず、コンピュータＣ１は、制御情報ｈ２をコンピュータＣ２に送信する（Ｓ１１）。制御情報ｈ２には、例えば、Ｒｅｎｄｅｚｖｏｕｓプロトコルの識別子等が含まれている。コンピュータＣ２は、制御情報ｈ２を受信すると、制御情報ｈ２を解読する（Ｓ１２）。続いて、コンピュータＣ２は、制御情報ｈ３をコンピュータＣ１に送信する（Ｓ１３）。制御情報ｈ３には、例えば、主記憶Ｍ２内の受信用の領域Ｒ２の仮想アドレス等が含まれる。
【００２３】
コンピュータＣ１は、制御情報ｈ３を受信すると、制御情報ｈ３を解読して領域Ｒ２の仮想アドレス等を取得する（Ｓ１４）。続いて、コンピュータＣ１は、主記憶Ｍ１内の領域Ｒ１に記憶されているデータｄ１を、コンピュータＣ２の領域Ｒ２に転送する（Ｓ１５）。
【００２４】
図２において、データｄ１の転送に関して、Ｒｅｎｄｅｚｖｏｕｓプロトコルにおける通信にかかる時間（Ｔ＿Ｒｅｎｄｅｚｖｏｕｓ）は、例えば、以下の式（Ｒ）で表される。
【００２５】
Ｔ＿Ｒｅｎｄｅｚｖｏｕｓ＝Ｌ＿２×２＋（Ｌ＿１＋Ｄ／Ｂ）＋Ｓ＿Ｒｅｎｄｅｚｖｏｕｓ・・・（Ｒ）
Ｄ：データサイズ（ｂｙｔｅ）
Ｂ：インターコネクトのバンド幅（帯域幅）（ｂｙｔｅ／ｓｅｃ）
Ｌ＿１：インターコネクトのＲＤＭＡの通信遅延（ｓｅｃ）
Ｌ＿２：インターコネクトの制御通信の通信遅延（ｓｅｃ）
Ｓ＿Ｒｅｎｄｅｚｖｏｕｓ：Ｒｅｎｄｅｚｖｏｕｓプロトコルにおけるソフトウェアオーバーヘッド時間（ｓｅｃ）
【００２６】
ここで、式（Ｒ）の右辺の第１項Ｌ＿２×２は、ステップＳ１１及びＳ１３における制御情報ｈ２又はｈ３の送受信に要する時間である。制御情報ｈ２及びｈ３はデータサイズが非常に小さいため、通信遅延Ｌ＿２だけを要すると考えることができる。第２項の（Ｌ＿２＋Ｄ／Ｂ）は、ステップＳ１５に要する時間である。第３項Ｓ＿Ｒｅｎｄｅｚｖｏｕｓは、ステップＳ１２及びＳ１４等を含むソフトウェアの処理に要するオーバーヘッド時間である。
【００２７】
式（Ｅ）及び式（Ｒ）に関して、ネットワークトポロジーが任意のノード（コンピュータ）間の通信時間が略均一なものである場合は、一般的に、Ｗ、Ｂ、Ｌ＿１、Ｌ＿２、Ｓ＿Ｅａｇｅｒ、及びＳ＿Ｅａｇｅｒの値は、ハードウェアとソフトウェアとの特性によって決まる。したがって、これらのパラメータの値は、通信するコンピュータの組み合わせに関わらず、ほぼ定数であると考えることができる。
【００２８】
通常のネットワーク状態において、データサイズＤが小さくなればなるほど、Ｔ＿Ｅａｇｅｒ＜＜Ｔ＿Ｒｅｎｄｅｚｖｏｕｓとなる。一方、データサイズＤが大きくなればなるほどＴ＿Ｅａｇｅｒ＞＞Ｔ＿Ｒｅｎｄｅｚｖｏｕｓとなる。このことは、Ｔ＿ＥａｇｅｒとＴ＿Ｒｅｎｄｅｚｖｏｕｓの式でＤに０を代入した場合と、Ｄに∞（無限大）を代入した場合とを比較すれば明らかである。
【００２９】
また、式（Ｅ）及び式（Ｒ）は、いずれもデータサイズＤの一次式である。したがって、ＥａｇｅｒプロトコルとＲｅｎｄｅｚｖｏｕｓプロトコルとを切り替えるためのデータサイズＤの閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄは、式（Ｅ）と式（Ｒ）について、Ｔ＿Ｅａｇｅｒ＝Ｔ＿Ｒｅｎｄｅｚｖｏｕｓである場合のＤについて解けば求まる。その結果が、以下の式（Ｄｔ１）である。
【００３０】
Ｄ＿Ｔｈｒｅｓｈｏｌｄ＝（Ｌ＿２＋（Ｓ＿Ｒｅｎｄｅｚｖｏｕｓ−Ｓ＿Ｅａｇｅｒ）／２）×Ｗ  ・・・（Ｄｔ１）
【００３１】
ネットワークトポロジーが任意のノード間の通信時間が略均一なものである場合に、例えば、Ｗ、Ｌ＿２、Ｓ＿Ｅａｇｅｒ、及びＳ＿Ｅａｇｅｒの値を定数として代入して得られたＤ＿Ｔｈｒｅｓｈｏｌｄよりも、転送するデータのデータサイズが大きいか小さいかに基づいてプロトコルを切り替えることで、通信にかかる時間が抑制される。
【００３２】
図３は、ホップ数を説明するための図である。なお、ホップ数Ｈとは、二つのコンピュータＣｉ間の通信経路上のインターコネクトによる接続数をいう。ノードＮ１〜Ｎ５は、コンピュータ又はスイッチ等である。例えば、ノードＮ１が送信元であり、ノードＮ５が送信先である場合、ホップ数Ｈは４となる。
【００３３】
ネットワークトポロジーとしては、例えば、ファットツリー、メッシュ、トーラスなどがある。
【００３４】
図４は、ファットツリーの例を示す図である。同図のファットツリーにおいて、ルートスイッチＳＷ１及びＳＷ２は、ルートノードとしてのスイッチである。ルートスイッチＳＷ１及びＳＷ２のそれぞれには、リーフスイッチＳＷ３〜ＳＷ６が接続されている。各リーフスイッチＳＷ３〜６には、それぞれ、計算ノードとしてのコンピュータｃ３１〜ｃ３４、ｃ４１〜ｃ４４、ｃ５１〜ｃ５４、又はｃ６１〜ｃ６４が接続されている。
【００３５】
通常のツリーのネットワークトポロジーではルートノードが1個だけであるため、ルートノード付近に通信負荷が集中し、通信性能が低下する原因となる。このような通常のツリーの欠点を回避するために、ファットツリーのネットワークトポロジーでは、複数個のルートノードが配置される。
【００３６】
ファットツリーにおいて、Ｗ、Ｂ、Ｓ＿Ｅａｇｅｒ、及びＳ＿Ｅａｇｅｒの値は、ほぼ定数であると考えることができる。Ｌ＿１とＬ＿２については、ルートノードを介して通信する場合（例えばｃ３１とｃ６４との通信やｃ３１とｃ５１との通信）とルートノードを介さずに通信する場合（例えばｃ３１とｃ３２との通信）とでホップ数Ｈが異なるため、異なる値となることが予想される。しかしながら、通信先がファットツリーに含まれるほとんどの通信ノード（ｃ３１に対しては、ｃ４１〜ｃ４４、ｃ５１〜ｃ５４、及びｃ６１〜ｃ６４）については、ほぼ同じ値であることが予想される。
【００３７】
したがって、図１又は図２に示されるコンピュータＣ１及びＣ２が、ファットツリーにおける計算ノードとして配置される場合、データｄ１のデータサイズＤに応じて、ＥａｇｅｒプロトコルとＲｅｎｄｅｚｖｏｕｓプロトコルとを切り替えて利用するなどにより、コンピュータＣ１とコンピュータＣ２との間の通信時間を短縮すると考えられる。
【００３８】
図５は、コンピュータＣ１〜Ｃ９がメッシュを構成する接続例を示す図である。また、図６は、コンピュータＣ１〜Ｃ９がトーラスを構成する接続例を示す図である。各コンピュータＣｉを結ぶ線分は、当該線分の両端に係るコンピュータＣｉを接続するインターコネクトを示す。
【００３９】
なお、図５では、二次元のメッシュが示されている。また、図６では、二次元のトーラスが示されている。但し、それぞれの次元数は所定のものに限定されない。
【００４０】
また、図５及び図６に示すように、メッシュやトーラスでは任意のノード間のホップ数は定まらない。
【００４１】
ネットワークトポロジーによっては、Ｌ＿１及びＬ＿２の値が、通信を行うコンピュータの組み合わせによって変化する。Ｌ＿１又はＬ＿２は、通信を行うコンピュータ間のホップ数Ｈの一次関数として、以下のように表される。
【００４２】
Ｌ＿１＝Ｌ＿１Ｎ＋Ａ＿１×Ｈ  ・・・（Ｌ１）
Ｌ＿２＝Ｌ＿２Ｎ＋Ａ＿２×Ｈ  ・・・（Ｌ２）
【００４３】
ここで、Ａ＿１及びＡ＿２は、それぞれ、１ホップあたりのインターコネクトの通信遅延（ＲＤＭＡ通信の通信遅延）の増加量（ｓｅｃ／ホップ）である。なお、通常、Ａ＿１及びＡ＿２の値は一致するが、一般化のために式（Ｌ１）と式（Ｌ２）とで異なる変数が付与されている。
【００４４】
Ｌ＿１Ｎ及びＬ＿２Ｎは、１ホップ目（送信元とその隣のノードとの間）の通信遅延における、ハードウェアによるオーバーヘッド時間（ｓｅｃ）である。
【００４５】
Ａ＿１、Ａ＿２、Ｌ＿１Ｎ、及びＬ＿２Ｎの値は、実際に利用されるコンピュータシステムにおいて予め計測されればよい。具体的には、Ａ＿１については、Ｅａｇｅｒプロトコルを利用した場合の通信時に、ホップ数が１増加するごとの通信遅延の増加量が計測されればよい。Ｌ＿１Ｎについては、Ｅａｇｅｒプロトコルを利用した場合のホップ数Ｈの通信時において、実際の通信遅延よりＡ＿１×Ｈを差し引くことによって求めればよい。
【００４６】
同様に、Ａ＿２については、Ｒｅｎｄｅｚｖｏｕｓプロトコルを利用した場合の通信時に、ホップ数が１増加するごとの通信遅延の増加量が計測されればよい。Ｌ＿２Ｎについては、Ｒｅｎｄｅｚｖｏｕｓプロトコルを利用した場合のホップ数Ｈの通信時において、実際の通信遅延よりＡ＿２×Ｈを差し引くことによって求めればよい。
【００４７】
Ｌ＿１及びＬ＿２がホップ数Ｈの影響を受けるということは、閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄについてもホップ数Ｈの影響を受けることになる。したがって、Ｌ＿１やＬ＿２の値を定数として扱えないネットワークトポロジーに関しては、式（Ｄｔ１）によって算出される閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄでは、不十分であるということになる。すなわち、閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄの算出方法を工夫することにより、通信性能を更に向上させる余地があると考えられる。
【００４８】
そこで、式（Ｅ）、式（Ｒ）に対して、式（Ｌ１）及び式（Ｌ２）を代入すると、以下の式（Ｅｈ）及び式（Ｒｈ）を得ることができる。
【００４９】
Ｔ＿Ｅａｇｅｒ＝（Ｄ／Ｗ）×２＋（Ｌ＿１Ｎ＋Ａ＿１×Ｈ）＋Ｄ／Ｂ＋Ｓ＿Ｅａｇｅｒ  ・・・（Ｅｈ）
【００５０】
Ｔ＿Ｒｅｎｄｅｚｖｏｕｓ＝（Ｌ＿２Ｎ＋Ａ＿２×Ｈ）×２＋（Ｌ＿１Ｎ＋Ａ＿１×Ｈ）＋Ｄ／Ｂ＋Ｓ＿Ｒｅｎｄｅｚｖｏｕｓ  ・・・（Ｒｈ）
【００５１】
すなわち、Ｔ＿ＥａｇｅｒとＴ＿Ｒｅｎｄｅｚｖｏｕｓとが、ホップ数Ｈの一次式となる。
【００５２】
ＥａｇｅｒプロトコルとＲｅｎｄｅｚｖｏｕｓプロトコルとを切り替える閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄは、Ｔ＿Ｅａｇｅｒ＝Ｔ＿Ｒｅｎｄｅｚｖｏｕｓである場合のＤについて式（Ｅｈ）及び式（Ｒｈ）を解けばよい。
【００５３】
すなわち、
（２／Ｗ）×Ｄ＝（Ｌ＿２Ｎ＋Ａ＿２×Ｈ）×２＋（Ｓ＿Ｒｅｎｄｅｚｖｏｕｓ−Ｓ＿Ｅａｇｅｒ）
から、
Ｄ＿Ｔｈｒｅｓｈｏｌｄ＝［Ａ＿２×Ｈ＋Ｌ＿２Ｎ＋（Ｓ＿Ｒｅｎｄｅｚｖｏｕｓ−Ｓ＿Ｅａｇｅｒ）／２］×Ｗ  ・・・（Ｄｔ２）
が導かれる。
【００５４】
本実施の形態では、式（Ｄｔ２）の演算結果とデータＤのデータサイズとの比較に応じて、利用する通信プロトコルを切り替える。式（Ｄｔ２）は、ホップ数に応じて、Ｌ＿１及びＬ＿２が変化することが考慮されて導出された式である。したがって、式（Ｄｔ２）に基づく閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄによれば、データＤのデータサイズのみならず、通信を行うコンピュータ間のホップ数Ｈをも考慮して、利用する通信プロトコルを選択することができる。その結果、式（Ｄｔ１）に基づいて通信プロトコルを選択する場合に比べて、特に、メッシュやトーラスのネットワークトポロジーにおいて、通信性能の向上を期待することができる。
【００５５】
以上の考え方が適用された具体的なコンピュータシステムの一例について説明する。
【００５６】
図７は、第一の実施の形態におけるコンピュータシステムの構成例を示す図である。同図において、ジョブ管理装置２０とコンピュータ群Ｃｓとは、ＬＡＮ（Local Area Network）等のネットワーク３０を介して接続されている。
【００５７】
ジョブ管理装置２０は、ユーザからジョブの入力を受け付け、入力されたジョブのコンピュータ群Ｃｓへの割り当て順序（ディスパッチ順序）の判定、及びジョブのディスパッチ等を行うコンピュータである。ジョブの入力の受け付けは、ジョブ管理装置２０を直接操作することにより入力されたものでも良いし、ネットワーク４０を介して端末装置５０との通信により入力されたものであっても良い。なお、ジョブ管理装置２０は、情報処理装置の一例である。
【００５８】
コンピュータ群Ｃｓは、分散メモリ型の並列コンピュータの集合である。各コンピュータＣｉ（以降において、ｉはコンピュータごとに異なる整数が付与される。）は、インターコネクト等の回線（ネットワーク）によって接続され、ＲＤＭＡ通信機能を備えている。
【００５９】
例えば、コンピュータ群Ｃｓは、ネットワークトポロジーとしてメッシュ又はトーラスなどを構成するように接続される。
【００６０】
図８は、第一の実施の形態におけるコンピュータのハードウェア構成例を示す図である。同図においてコンピュータＣｉは、それぞれバスBで相互に接続されているドライブ装置１００と、補助記憶装置１０２と、主記憶装置１０３と、ＣＰＵ１０４と、インタフェース装置１０５とを有する。
【００６１】
コンピュータＣｉでの処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００６２】
主記憶装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、主記憶装置１０３に格納されたプログラムに従ってコンピュータＣｉに係る機能を実行する。インタフェース装置１０５は、ネットワーク（インターコネクト）に接続するためのインタフェースとして用いられる。
【００６３】
図９は、第一の実施の形態におけるコンピュータの機能構成例を示す図である。同図では、コンピュータＣ１がデータの送信側であり、コンピュータＣ２がデータの受信側とされている。
【００６４】
コンピュータＣ１は、アプリケーション１１及び送信制御部１２等を有する。アプリケーション１１は、ＲＤＭＡ通信を利用して、所定の処理を実行するプログラムである。各アプリケーション１１は、例えば、ジョブ管理装置２０によってジョブを割り当てられたコンピュータＣｉにおいてプロセスとして起動される。
【００６５】
送信制御部１２は、アプリケーション１１からのデータの送信要求に応じ、ＲＤＭＡ通信によるデータ送信を制御する。送信制御部１２は、コンピュータＣ１にインストールされたプログラムがコンピュータＣ１のＣＰＵ１０４に実行させる処理によって実現される。送信制御部１２は、例えば、ＭＰＩ（Message Passing Interface）ライブラリの一部として実装される。
【００６６】
同図において、送信制御部１２は、閾値算出部１２１、パラメータ記憶部１２２、プロトコル選択部１２３、Ｅ送信制御部１２４、及びＲ送信制御部１２５等を有する。
【００６７】
閾値算出部１２１は、上述の式（Ｄｔ２）に基づいて、閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄを算出する。パラメータ記憶部１２２は、閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄの算出に必要な各種のパラメータを、例えば、補助記憶装置１０２を用いて記憶する。具体的には、パラメータ記憶部１２２は、Ｗ、Ｌ＿２Ｎ、Ａ＿２、Ｓ＿Ｒｅｎｄｅｚｖｏｕｓ、及びＳ＿Ｅａｇｅｒについて、予め計測された値又は理論値を記憶する。
【００６８】
また、パラメータ記憶部１２２は、当該コンピュータＣｉから他のコンピュータＣｊへの最短の通信経路のホップ数Ｈが登録されたホップ数管理テーブル１２２ｔを記憶する。
【００６９】
図１０は、ホップ数管理テーブルの構成例を示す図である。同図に示されるように、ホップ数管理テーブル１２２ｔには、コンピュータ番号ごとに、ホップ数Ｈが記憶されている。ホップ数Ｈは、当該ホップ数管理テーブル１２２ｔを記憶しているコンピュータＣｉを起点とした相対的な値である。同図では、図５に示されるメッシュを構成する場合の、コンピュータＣ１から各コンピュータＣｊへのホップ数Ｈが記憶された例が示されている。なお、コンピュータ番号とは、各コンピュータＣｉ（厳密には、各コンピュータで動作するアプリケーション１１のプロセス）を識別するための番号である。
【００７０】
プロトコル選択部１２３は、アプリケーション１１より送信を要求されたデータのデータサイズと、閾値算出部１２１によって算出された閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄとの比較に基づいて、利用する通信プロトコルを選択する。Ｅ送信制御部１２４は、Ｅａｇｅｒプロトコルによるデータの送信処理を制御する。Ｒ送信制御部１２５は、Ｒｅｎｄｅｚｖｏｕｓプロトコルによるデータの送信処理を制御する。
【００７１】
一方、受信側であるコンピュータＣ２は、アプリケーション１１及び受信制御部１３等を有する。アプリケーション１１については、上述した通りである。但し、受信側において、アプリケーション１１は、データの受信を受信制御部１３に要求する。
【００７２】
受信制御部１３は、アプリケーション１１からのデータの受信要求に応じ、ＲＤＭＡ通信によるデータの受信を制御する。受信制御部は、コンピュータＣ２にインストールされたプログラムがコンピュータＣ１のＣＰＵ１０４に実行させる処理によって実現される。受信制御部１３は、例えば、ＭＰＩライブラリの一部として実装される。
【００７３】
同図において、受信制御部１３は、振り分け部１３１、Ｅ受信制御部１３２、及びＲ受信制御部１３３等を有する。振り分け部１３１は、送信側でいずれの通信プロトコルが選択されたかを判定し、受信処理の実行主体をＥ受信制御部１３２又はＲ受信制御部１３３に振り分ける。Ｅ受信制御部１３２は、Ｅａｇｅｒプロトコルによるデータの受信処理を制御する。Ｒ受信制御部１３３は、Ｒｅｎｄｅｚｖｏｕｓプロトコルによるデータの受信処理を制御する。
【００７４】
なお、送信側と受信側とは相対的な関係である。すなわち、各コンピュータＣｉは、或る時は送信側となり、或る時は受信側となる。したがって、各コンピュータＣｉは、送信制御部１２及び受信制御部１３の双方を有する。各コンピュータＣｉのアプリケーション１１は、送信制御部１２を利用してデータの送信を行い、受信制御部１３を利用したデータの受信を行う。
【００７５】
以下、コンピュータＣｉが実行する処理手順について説明する。図１１は、送信側のコンピュータが実行するデータの送信処理の処理手順の一例を説明するためのフローチャートである。
【００７６】
ステップＳ１０１において、送信制御部１２は、アプリケーション１１よりデータｄ１の送信要求を受け付ける。当該送信要求には、データｄ１、当該データｄ１のデータサイズＤ、及び送信先のコンピュータ番号等のパラメータが指定される。
【００７７】
続いて、閾値算出部１２１は、閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄを算出するためのパラメータである、Ｗ、Ｌ＿２Ｎ、Ａ＿２、Ｓ＿Ｒｅｎｄｅｚｖｏｕｓ、Ｓ＿Ｅａｇｅｒ、及びホップ数Ｈをパラメータ記憶部１２２より取得する（Ｓ１０２）。なお、ホップ数Ｈは、送信先のコンピュータＣｊのコンピュータ番号に対応付けられている値がホップ数管理テーブル１２２ｔより取得される。続いて、閾値算出部１２１は、取得されたパラメータを式（Ｄｔ２）に代入して、閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄを算出する（Ｓ１０３）。
【００７８】
続いて、プロトコル選択部１２３は、データサイズＤと閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄとを比較して、利用する通信プロトコルを選択する（Ｓ１０４）。データサイズＤが、閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄより小さい場合（Ｓ１０４でＹｅｓ）、プロトコル選択部１２３は、Ｅａｇｅｒプロトコルを選択する。当該選択に応じ、Ｅ送信制御部１２４は、図１のステップＳ１〜Ｓ３において説明した処理手順で、インターコネクトを介したデータｄ１の送信処理を実行する（Ｓ１０５）。
【００７９】
一方、データサイズＤが、閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄ以上である場合（Ｓ１０４でＮｏ）、プロトコル選択部１２３は、Ｒｅｎｄｅｚｖｏｕｓプロトコルを選択する。当該選択に応じ、Ｒ送信制御部１２５は、図２のステップＳ１１〜Ｓ１５において説明した手順で、インターコネクトを介した、データｄ１の送信を実行する（Ｓ１０６）。
【００８０】
なお、図１１では、データサイズＤと閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄとが一致する場合、Ｒｅｎｄｅｚｖｏｕｓプロトコルが選択されるが、Ｅａｇｅｒプロトコルが選択されても良い。
【００８１】
続いて、図１２は、受信側のコンピュータが実行するデータの受信処理の処理手順の一例を説明するためのフローチャートである。
【００８２】
ステップＳ２０１において、受信制御部１３は、データｄ１の受信要求を受け付ける。  続いて、振り分け部１３１は、インターコネクトを介して情報が受信されるのを待機する（Ｓ２０２）。情報が受信されると（Ｓ２０２でＹｅｓ）、振り分け部１３１は、受信情報を解読することにより、送信側においていずれの通信プロトコルが選択されたのかを判定する（Ｓ２０３）。すなわち、送信側においてＥａｇｅｒプロトコルが選択された場合、最初に受信される情報は、制御情報ｈ１及びデータｄ１である（図１参照）。一方、Ｒｅｎｄｅｚｖｏｕｓプロトコルの場合、最初に受信される情報は、制御情報ｈ２である（図２参照）。したがって、振り分け部１３１は、制御情報ｈ１又は制御情報ｈ２を解読して、送信側において選択された通信プロトコルを判定する。
【００８３】
振り分け部１３１は、送信側においてＥａｇｅｒプロトコルが選択されたと判定すると（Ｓ２０４でＥａｇｅｒ）、以降の受信処理をＥ受信制御部１３２に委譲する。したがって、Ｅ受信制御部１３２は、図１のステップＳ３〜Ｓ５において説明した処理手順で、インターコネクトを介したデータｄ１の受信処理を実行する（Ｓ２０５）。
【００８４】
一方、振り分け部１３１は、送信側においてＲｅｎｄｅｚｖｏｕｓプロトコルが選択されたと判定すると（Ｓ２０４でＲｅｎｄｅｚｖｏｕｓ）、以降の受信処理をＲ受信制御部１３３に委譲する。したがって、Ｒ受信制御部１３３は、図２のステップＳ１１〜Ｓ１５において説明した処理手順で、インターコネクトを介したデータｄ１の受信処理を実行する（Ｓ２０６）。
【００８５】
上述したように、第一の実施の形態によれば、ホップ数を考慮して、利用する通信プロトコルを判定するための閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄが決定される。ここで、閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄは、通信相手となるコンピュータＣｉに応じて異なりうる。したがって、メッシュやトーラスのように、任意のノード間の通信時間が均一でないネットワークトポロジーが構成されている場合であっても、通信性能の観点においてより効果的な通信プロトコルを選択することができる。
【００８６】
なお、本実施の形態は、ネットワークトポロジーがファットツリーである場合であっても適用可能である。この点について説明するため、以下に改めて式（Ｄｔ１）と式（Ｄｔ２）とを示す。
【００８７】
Ｄ＿Ｔｈｒｅｓｈｏｌｄ＝（Ｌ＿２＋（Ｓ＿Ｒｅｎｄｅｚｖｏｕｓ−Ｓ＿Ｅａｇｅｒ）／２）×Ｗ  ・・・（Ｄｔ１）
【００８８】
Ｄ＿Ｔｈｒｅｓｈｏｌｄ＝［Ａ＿２×Ｈ＋Ｌ＿２Ｎ＋（Ｓ＿Ｒｅｎｄｅｚｖｏｕｓ−Ｓ＿Ｅａｇｅｒ）／２］×Ｗ  ・・・（Ｄｔ２）
【００８９】
上記より明らかなように、式（Ｄｔ１）と式（Ｄｔ２）とは、式（Ｄｔ１）におけるＬ＿２が、式（Ｄｔ２）では、Ａ＿２×Ｈ＋Ｌ＿２Ｎに置き換わっている点について相違する。任意のノード間のホップ数の変化量が小さい場合、例えば、式（Ｄｔ２）のホップ数Ｈに、固定値（例えば、０）を代入すればよい。その場合、式（Ｄｔ２）は、式（Ｄｔ１）の近似式となる。
【００９０】
また、式（Ｄｔ２）は、運用上許容される範囲内において、簡素化されてもよい。例えば、Ｅａｇｅｒプロトコルにおけるソフトウェアオーバーヘッド時間及びＲｅｎｄｅｚｖｏｕｓプロトコルにおけるソフトーウェアオーバーベッド時間が運用上無視できる程度のものである場合、式（Ｄｔ２）から、（Ｓ＿Ｒｅｎｄｅｚｖｏｕｓ−Ｓ＿Ｅａｇｅｒ）／２の項が除去された、以下の式（Ｄｔ３）が用いられてもよい。
【００９１】
Ｄ＿Ｔｈｒｅｓｈｏｌｄ＝（Ａ＿２×Ｈ＋Ｌ＿２Ｎ）×Ｗ  ・・・（Ｄｔ３）
または、Ｌ＿２Ｎの値が運用上無視できる程度のものである場合、式（Ｄｔ２）から、Ｌ＿２Ｎの項が除去された、以下の式（Ｄｔ４）が用いられてもよい。
【００９２】
Ｄ＿Ｔｈｒｅｓｈｏｌｄ＝［Ａ＿２×Ｈ＋（Ｓ＿Ｒｅｎｄｅｚｖｏｕｓ−Ｓ＿Ｅａｇｅｒ）／２］×Ｗ  ・・・（Ｄｔ４）
【００９３】
更に、（Ｓ＿Ｒｅｎｄｅｚｖｏｕｓ−Ｓ＿Ｅａｇｅｒ）／２及びＬ＿２Ｎの双方が除去された、以下の式（Ｄｔ５）が用いられてもよい。
【００９４】
Ｄ＿Ｔｈｒｅｓｈｏｌｄ＝（Ａ＿２×Ｈ）×Ｗ  ・・・（Ｄｔ５）
【００９５】
換言すれば、式（Ｄｔ４）又は式（Ｄｔ２）を利用する場合、ソフトウェアオーバーヘッド時間をも考慮して閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄを算出することができる。また、式（Ｄｔ３）又は式（Ｄｔ２）を利用する場合、Ｌ＿２Ｎの値をも考慮して閾値Ｄ＿Ｔｈｒｅｓｈｏｌｄを算出することができる。
【００９６】
ところで、第一の実施の形態では、各コンピュータＣｉにおいて、ホップ数管理テーブル１２２ｔが記憶される。ホップ数管理テーブル１２２ｔの情報量は、コンピュータＣｉの台数の増加に応じて大きくなる。また、ホップ数管理テーブル１２２ｔの内容は、コンピュータＣｉごとに異なる。したがって、多数のコンピュータＣｉを利用する場合、ホップ数管理テーブル１２２ｔの設定作業の負担を非常に大きなものとなる。また、コンピュータＣｉの接続関係が変化した場合や、コンピュータＣｉの台数に増減が発生した場合等において、新たな構成に応じて各コンピュータＣｉのホップ数管理テーブル１２２ｔを更新するのは非常に大変である。
【００９７】
そこで、第二の実施の形態では、ホップ数管理テーブル１２２ｔの保守作業を簡素化した例について説明する。なお、第二の実施の形態では、第一の実施の形態と異なる点について説明する。したがって、特に言及しない点については第一の実施の形態と同様でよい。
【００９８】
図１３は、第二の実施の形態におけるジョブ管理装置の機能構成例を示す図である。同図において、ジョブ管理装置２０は、ジョブ割当部２１、ホップ数算出部２２、及び座標情報記憶部２３等を有する。コンピュータＣｓのうち、いずれかのコンピュータＣｉが、ジョブ割当部２１、ホップ数算出部２２、及び座標情報記憶部２３を含んで、ホップ数の算出を行なっても良い。もしくは、コンピュータＣｓのうちのコンピュータＣｉが、ホップ数算出部２２を含み、ジョブ管理装置に含まれる座標情報記憶部２３に記憶された座標値に基づいて、ホップ数の算出を行なっても良い。
【００９９】
ジョブ割当部２１は、ユーザからアプリケーション１１の実行指示を受け付け、アプリケーション１１の実行（すなわち、ジョブの実行）をコンピュータＣｎに指示する。
【０１００】
座標情報記憶部２３は、ネットワークトポロジーの座標系における、各コンピュータＣｉの座標値（位置情報）を、例えば、ジョブ管理装置２０の補助記憶装置を用いて記憶する。
【０１０１】
すなわち、メッシュやトーラスのネットワークトポロジーでは、コンピュータＣｉがｎ次元座標空間の論理的な格子点上に、通常ｎ次元直方体の形に配置される。ｎ次元座標系を（ｘ０，ｘ１，．．．，ｘｎ−１）と表現すれば、コンピュータＣｉはｎ次元直方体ｘｉ＿ｍｉｎ＜＝ｘｉ＜＝ｘｉ＿ｍａｘ（ｉ＝０，．．．，ｎ−１）に配置される。したがって、各コンピュータＣｉは座標値（ｘ０，ｘ１，．．．，ｘｎ−１）を有する。座標情報記憶部２３は、斯かる座標値をコンピュータＣｉごとに記憶する。
【０１０２】
図１４は、座標情報記憶部の構成例を示す図である。同図に示されるように、座標情報記憶部２３には、コンピュータ番号ごとに、ネットワークトポロジーの座標系における座標値が記憶されている。同図では、ネットワークトポロジーが、図５に示される２次元のメッシュの場合の各コンピュータＣｉの座標値が記憶された例が示されている。
【０１０３】
ホップ数算出部２２は、座標情報記憶部２３に記録されている座標値に基づいて、各コンピュータＣｉ間のホップ数Ｈを算出する。ホップ数Ｈの算出方法は、ネットワークトポロジーによって異なる。
【０１０４】
ホップ集の算出方法について説明する。メッシュのネットワークトポロジーではｘｉ＿ｍｉｎに位置するコンピュータＣｉとｘｉ＿ｍａｘに位置するコンピュータＣｉとがインターコネクトによって直接的に接続されていない。例えば、図５において、コンピュータＣ１（ｘ１＿ｍｉｎ，ｘ２＿ｍｉｎ）とコンピュータＣ３（ｘ１＿ｍａｘ，ｘ２＿ｍｉｎ）とは直接的に接続されていない。したがって、ｎ次元直方体におけるコンピュータＣ１の座標を（ｘ０＿１，ｘ１＿１，．．．，ｘｎ−１＿１）とし、Ｃ２の座標を（ｘ０＿２，ｘ１＿２，．．．，ｘｎ−１＿２）とした場合、この間の最短の通信経路のホップ数Ｈは、以下の式（Ｈｍ）によって算出される。
【０１０５】
Σ｜ｘｉ＿１−ｘｉ＿２｜＝｜ｘ０＿１−ｘ０＿２｜＋｜ｘ１＿１−ｘ１＿２｜＋．．．＋｜ｘｎ−１＿１−ｘｎ−１＿２｜・・・（Ｈｍ）
【０１０６】
例えば、隣接したコンピュータ間の最短の通信経路のホップ数Ｈは１である。
【０１０７】
一方、トーラスのネットワークトポロジーでは、ｘｉ＿ｍｉｎに位置するコンピュータＣｉとｘｉ＿ｍａｘに位置するコンピュータＣｉとがインターコネクトによって直接的に接続されている。例えば、図６において、コンピュータＣ１（ｘ１＿ｍｉｎ，ｘ２＿ｍｉｎ）とコンピュータＣ３（ｘ１＿ｍａｘ，ｘ２＿ｍｉｎ）とは直接的に接続されている。したがって、コンピュータＣ１とコンピュータＣ２との間の最短の通信経路のホップ数Ｈの計算式は、より複雑なものとなる。
【０１０８】
トーラスのネットワークトポロジーのｎ次元直方体のｉ次元の辺の長さＤｉａｍｅｔｅｒ＿ｉを、
Ｄｉａｍｅｔｅｒ＿ｉ＝ｘｉ＿ｍａｘ−ｘｉ＿ｍｉｎ＋１
とする。
【０１０９】
続いて、Ｄｉａｍｅｔｅｒ＿ｉの１／２の長さＲａｄｉｕｓ＿ｉを以下のように求める。
【０１１０】
Ｒａｄｉｕｓ＿ｉ＝（ｘｉ＿ｍａｘ−ｘｉ＿ｍｉｎ＋１）／２
【０１１１】
ｎ次元直方体におけるコンピュータＣ１の座標を（ｘ０＿１，ｘ１＿１，．．．，ｘｎ−１＿１）とし、Ｃ２の座標を（ｘ０＿２，ｘ１＿２，．．．，ｘｎ−１＿２）とする。この場合、コンピュータＣ１とコンピュータＣ２との最短の通信経路のホップ数Ｈは、以下の式（Ｈｔ１）又は式（Ｈｔ２）によって算出される。
【０１１２】
｜ｘｉ＿１−ｘｉ＿２｜＜＝Ｒａｄｉｕｓ＿ｉの場合、
Σ｜ｘｉ＿１−ｘｉ＿２｜  ・・・（Ｈｔ１）
｜ｘｉ＿１−ｘｉ＿２｜＞Ｒａｄｉｕｓ＿ｉの場合、
Σ（Ｄｉａｍｅｔｅｒ＿ｉ−｜ｘｉ＿１−ｘｉ＿２｜）  ・・・（Ｈｔ２）
【０１１３】
上記より、ホップ数算出部２２は、ネットワークトポロジーがメッシュであれば、式（Ｈｍ）に基づいてホップ数Ｈを算出する。また、ホップ数算出部２２は、ネットワークトポロジーがトーラスであれば、式（Ｈｔ１）又は式（Ｈｔ２）に基づいてホップ数Ｈを算出する。
【０１１４】
また、図１５は、第二の実施の形態におけるコンピュータの機能構成例を示す図である。図１５中、図９と同一部分には同一符号を付し、その説明は省略する。
【０１１５】
図１５において、コンピュータＣｉは、初期化部１４が明示されている。初期化部１４は、通信処理の実行前に必要とされる初期化処理を実行する。初期化部１４は、初期化処理において、ホップ数Ｈ等をジョブ管理装置２０より取得する。すなわち、初期化部は、取得手段の一例である。初期化部１４は、例えば、ＭＰＩライブラリの一部として実装される。この場合、初期化部１４は、初期化用の関数に相当する。
【０１１６】
以下、第二の実施の形態のコンピュータシステムの処理手順について説明する。図１６は、第二の実施の形態におけるアプリケーション実行開始時の処理手順の一例を説明するためのシーケンス図である。
【０１１７】
ステップＳ３０１において、ジョブ管理装置２０のジョブ割当部２１は、ユーザよりアプリケーション１１の実行指示を受け付ける。当該実行指示では、使用するコンピュータＣｉの台数も指定される。
【０１１８】
続いて、ジョブ割当部２１は、コンピュータ群Ｃｓの中から、ユーザによって指定された台数分のコンピュータＣｉを、アプリケーション１１の実行先として選択する（Ｓ３０２）。具体的には、アプリケーション１１の実行先として使用するコンピュータＣｉのコンピュータ番号が決定される。なお、コンピュータＣｉの選択は、公知のジョブスケジューリング技術等に基づいて行われればよい。続いて、ジョブ割当部２１は、選択された各コンピュータＣｉに、アプリケーション１１の実行指示を送信する（Ｓ３０３）。
【０１１９】
アプリケーション１１の実行を指示された各コンピュータＣｉは、アプリケーション１１を起動させる（Ｓ３０４）。アプリケーション１１は、起動に応じ、初期化部１４に対して初期化処理の実行を要求する（Ｓ３０５）。初期化部１４は、初期化処理の中で、アプリケーション１１の実行先として選択された全てのコンピュータＣｉのコンピュータ番号及びホップ数Ｈを問い合わせる（Ｓ３０６）。なお、当該問い合わせには、問い合わせ元のコンピュータＣｉのコンピュータ番号も指定される。
【０１２０】
ジョブ管理装置２０のホップ数算出部２２は、問い合わせ元のコンピュータＣｉのコンピュータ番号と、アプリケーション１１の実行先として選択された他のコンピュータＣｉの座標値とを座標情報記憶部２３より取得する（Ｓ３０７）。続いて、ホップ数算出部２２は、取得された座標値に基づいて、問い合わせ元のコンピュータＣｉから当該他のコンピュータＣｉへのホップ数Ｈを算出する（Ｓ３０８）。すなわち、問い合わせ元のコンピュータＣｉと、当該他のコンピュータＣｉとの位置関係に基づいてホップ数Ｈが算出される。なお、ネットワークトポロジーは静的に決まっているため、式（Ｈｍ）、又は式（Ｈｔ１）及び式（Ｈｔ２）のいずれを用いるかは予め決まっている。
【０１２１】
続いて、ホップ数算出部２２は、当該他のコンピュータＣｉのコンピュータ番号とホップ数Ｈとを問い合わせ元のコンピュータＣｉに返信する（Ｓ３０９）。当該他のコンピュータＣｉが複数である場合、コンピュータ番号とホップ数Ｈの組は複数返信される。
【０１２２】
続いて、初期化部１４は、受信されたコンピュータ番号及びホップ数Ｈを、パラメータ記憶部１２２のホップ数管理テーブル１２２ｔに記録する（Ｓ３１０）。
【０１２３】
その後に実行される通信処理については、第一の実施の形態と同様でよい。
【０１２４】
上述したように、第二の実施の形態によれば、各コンピュータＣｉに対して他のコンピュータＣｉのホップ数Ｈが自動的に登録される。したがって、各コンピュータＣｉへのホップ数Ｈの登録作業の作業負担を著しく軽減することができる。すなわち、管理者等は、ジョブ管理装置２０において一元的に管理されている座標情報記憶部２３を編集すればよい。
【０１２５】
なお、第一の実施の形態において各コンピュータＣｉに分散されているホップ数管理テーブル１２２ｔが、座標情報記憶部２３の代わりにジョブ管理装置２０に一元的に記憶されていてもよい。この場合も、図１６と同様の処理手順によって、各コンピュータＣｉに自動的にホップ数Ｈを登録することができる。この場合、ホップ数算出部２２は、ホップ数Ｈを算出する必要はない。ホップ数算出部２２は、問い合わせ元のコンピュータＣｉに関して記憶されているホップ数管理テーブル１２２ｔに基づいて、ホップ数Ｈ等を返信すればよい。
【０１２６】
但し、ホップ数管理テーブル１２２ｔは、コンピュータＣｉの台数分作成される必要がある。したがって、座標情報記憶部２３の登録作業の方が作業負担は小さいものと考えられる。
【０１２７】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【０１２８】
１１          アプリケーション
１２          送信制御部
１３          受信制御部
１４          初期化部
２０          ジョブ管理装置
２１          ジョブ割当部
２２          ホップ数算出部
２３          座標情報記憶部
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        主記憶装置
１０４        ＣＰＵ
１０５        インタフェース装置
１２１        閾値算出部
１２２        パラメータ記憶部
１２３        プロトコル選択部
１２４        Ｅ送信制御部
１２５        Ｒ送信制御部
１３１        振り分け部
１３２        Ｅ受信制御部
１３３        Ｒ受信制御部
Ｂ            バス
Ｃｓ          コンピュータ群
Ｃｉ          コンピュータ
【図１】
2012065281.tif 000003
【図２】
2012065281.tif 000004
【図３】
2012065281.tif 000005
【図４】
2012065281.tif 000006
【図５】
2012065281.tif 000007
【図６】
2012065281.tif 000008
【図７】
2012065281.tif 000009
【図８】
2012065281.tif 000010
【図９】
2012065281.tif 000011
【図１０】
2012065281.tif 000012
【図１１】
2012065281.tif 000013
【図１２】
2012065281.tif 000014
【図１３】
2012065281.tif 000015
【図１４】
2012065281.tif 000016
【図１５】
2012065281.tif 000017
【図１６】
2012065281.tif 000018