(57)【要約】【課題】並列計算機システムのプロセス間通信の性能向上。【解決手段】送信側通信部２は、送信側プロセス１から相手の計算機システムに送信するメッセージ数を一定時間毎に測定して送信先別送信数情報２４として蓄える。送信側通信方法作成部７は、相手の計算機システムの受信側で受信するメッセージ数を元に相手の計算機システムから送られる送信元別受信数情報５２と送信先別送信数情報２４とを参照して使用ＮＩＣ・通信方法リスト７２を作成する。送信側通信部２は、送信側および相手の計算機システムの受信側のそれぞれに含まれる複数のネットワークインタフェースカードを使用ＮＩＣ・通信方法リスト７２の内容に基づいてそれぞれ動的に切り替えるように選択してメッセージを相手に送信する。【選択図】図１
2007266973.tif 000002
【特許請求の範囲】
【請求項１】
並列計算機システムを構成する計算機システムであって、
他の計算機システムと接続するための複数のネットワークインタフェースカードと、
前記複数のネットワークインタフェースカードで接続した相手の計算機システムとの間の通信量を測定する測定手段と、
測定した前記通信量に応じて前記複数のネットワークインタフェースカード中の使用するネットワークインタフェースカードを動的に切り替える切替手段と、
を備えることを特徴とする計算機システム。
【請求項２】
前記測定手段は、所定時間あたりの転送メッセージ数によって前記通信量を測定し、
前記切替手段は、前記所定時間毎にネットワークインタフェースカードの動的切り替えを実行することを特徴とする請求項１記載の計算機システム。
【請求項３】
前記切替手段は、通信相手となるプロセスが２以上存在し、前記通信量に通信相手によって所定量以上の差がある場合には、メッセージ転送において前記複数のネットワークインタフェースカードを順次使用するように選択し、前記通信量が通信相手によって所定量未満の差である場合には、メッセージ転送に使用するネットワークインタフェースカードを固定とすることを特徴とする請求項２記載の計算機システム。
【請求項４】
並列計算機システムを構成する計算機システムであって、
相手の計算機システムの受信側ネットワークインタフェースカード群と接続すると共に複数のネットワークインタフェースカードを含む送信側ネットワークインタフェースカード群と、
送信側プロセスから前記送信側ネットワークインタフェースカード群を介して相手の計算機システムに送信するメッセージ数を一定時間毎に測定して送信先別送信数情報として蓄えると共に、通信方法リストに基づいて前記送信側ネットワークインタフェースカード群および相手の計算機システムの受信側ネットワークインタフェースカード群のそれぞれに含まれるネットワークインタフェースカードをそれぞれ選択して送信する送信側通信部と、
相手の計算機システムの受信側で受信するメッセージ数を元に相手の計算機システムから送られる送信元別受信数情報と前記送信先別送信数情報とを参照して前記通信方法リストを作成する前記送信側通信方法作成部と、
を送信側ノードに備え、
前記通信方法リストは、送信側および相手の計算機システムの受信側で使用するネットワークインタフェースカードの識別情報を含み、前記送信元別受信数情報と前記送信先別送信数情報とによって動的に変更されることを特徴とする計算機システム。
【請求項５】
相手の計算機システムの送信側ネットワークインタフェースカード群と接続すると共に複数のネットワークインタフェースカードを含む受信側ネットワークインタフェースカード群と、
受信側ネットワークインタフェースカード群から送信元別に受信して受信プロセスに渡すメッセージ数を一定時間毎に測定して送信元別受信数情報として蓄える受信側通信部と、
送信元別受信数情報を相手の計算機システムに送信する受信側通信方法作成部と、
をさらに受信側ノードに備えることを特徴とする請求項４記載の計算機システム。
【請求項６】
前記送信側通信方法作成部は、一定時間毎に測定されたメッセージ数を元に、通信相手となるプロセスが２以上存在し、メッセージ数に通信相手によって所定数以上の差がある場合には、メッセージ転送において前記複数のネットワークインタフェースカードを順次使用するように選択し、メッセージ数が通信相手によって所定数未満の差である場合には、メッセージ転送に使用するネットワークインタフェースカードを固定となるように前記通信方法リストを変更することを特徴とする請求項４記載の計算機システム。
【請求項７】
前記送信側通信方法作成部は、
（１）メッセージ数が閾値以上である相手先の数がノードあたりのＮＩＣ数未満の場合には、これらの相手先との通信方法をサイクリックにし、
（２）メッセージ数が閾値以上である相手先の数がノードあたりのＮＩＣ数以上で、かつ偶数の場合には、これらの相手先との通信方法をシングルにし、
（３）メッセージ数が閾値以上である相手先の数がノードあたりのＮＩＣ数以上で、かつ奇数の場合には、最もメッセージ数が少ない相手先との通信方法をサイクリックにして、残りの相手先との通信方法をシングルにし、
（４）メッセージ数が閾値未満である相手先との通信方法をサイクリックにするように、
前記通信方法リストにおける前記識別情報を変更することを特徴とする請求項４または６記載の計算機システム。
【請求項８】
請求項１〜７のいずれか一に記載の計算機システムを複数備えて構成される並列計算機システム。
【請求項９】
並列計算機システムを構成する計算機システムが他の計算機システムと接続するための複数のネットワークインタフェースカードを備えて通信する方法であって、
前記複数のネットワークインタフェースカードで接続した相手の計算機システムとの間の通信量を測定するステップと、
測定した前記通信量に応じて前記複数のネットワークインタフェースカード中の使用するネットワークインタフェースカードを動的に切り替えるステップと、
を含むことを特徴とする並列計算機システムにおける通信方法。
【請求項１０】
前記測定するステップにおいて、所定時間あたりの転送メッセージ数によって前記通信量を測定し、
前記切り替えるステップにおいて、前記所定時間毎にネットワークインタフェースカードの動的切り替えを実行することを特徴とする請求項９記載の並列計算機システムにおける通信方法。
【請求項１１】
前記切り替えるステップにおいて、通信相手となるプロセスが２以上存在し、前記通信量に通信相手によって所定量以上の差がある場合には、メッセージ転送において前記複数のネットワークインタフェースカードを順次使用するように選択し、前記通信量が通信相手によって所定量未満の差である場合には、メッセージ転送に使用するネットワークインタフェースカードを固定とすることを特徴とする請求項１０記載の並列計算機システムにおける通信方法。
【請求項１２】
並列計算機システムを構成する計算機システムが相手の計算機システムの受信側ネットワークインタフェースカード群と接続すると共に複数のネットワークインタフェースカードを含む送信側ネットワークインタフェースカード群を備えて送信側ノードとして通信する方法であって、
送信側プロセスから前記送信側ネットワークインタフェースカード群を介して相手の計算機システムに送信するメッセージ数を一定時間毎に測定して送信先別送信数情報として蓄えるステップと、
通信方法リストに基づいて送信側ネットワークインタフェースカード群および相手の計算機システムの受信側ネットワークインタフェースカード群のそれぞれに含まれるネットワークインタフェースカードをそれぞれ選択して送信するステップと、
相手の計算機システムの受信側で受信するメッセージ数を元に相手の計算機システムから送られる送信元別受信数情報と前記送信先別送信数情報とを参照して前記通信方法リストを作成するステップと、
を含み、
前記通信方法リストは、送信側および相手の計算機システムの受信側で使用するネットワークインタフェースカードの識別情報を含み、前記送信元別受信数情報と前記送信先別送信数情報とによって動的に変更されることを特徴とする並列計算機システムにおける通信方法。
【請求項１３】
前記計算機システムは、相手の計算機システムの送信側ネットワークインタフェースカード群と接続すると共に複数のネットワークインタフェースカードを含む受信側ネットワークインタフェースカード群をさらに備えて受信側ノードとして通信する方法を含み、
受信側ネットワークインタフェースカード群から送信元別に受信して受信プロセスに渡すメッセージ数を一定時間毎に測定して送信元別受信数情報として蓄えるステップと、
送信元別受信数情報を相手の計算機システムに送信するステップと、
をさらに含むことを特徴とする請求項１２記載の並列計算機システムにおける通信方法。
【請求項１４】
前記通信方法リストを作成するステップにおいて、一定時間毎に測定されたメッセージ数を元に、通信相手となるプロセスが２以上存在し、メッセージ数に通信相手によって所定数以上の差がある場合には、メッセージ転送において前記複数のネットワークインタフェースカードを順次使用するように選択し、メッセージ数が通信相手によって所定数未満の差である場合には、メッセージ転送に使用するネットワークインタフェースカードを固定となるように前記通信方法リストを変更することを特徴とする請求項１２記載の並列計算機システムにおける通信方法。
【請求項１５】
前記通信方法リストを作成するステップにおいて、
（１）メッセージ数が閾値以上である相手先の数がノードあたりのＮＩＣ数未満の場合には、これらの相手先との通信方法をサイクリックにし、
（２）メッセージ数が閾値以上である相手先の数がノードあたりのＮＩＣ数以上で、かつ偶数の場合には、これらの相手先との通信方法をシングルにし、
（３）メッセージ数が閾値以上である相手先の数がノードあたりのＮＩＣ数以上で、かつ奇数の場合には、最もメッセージ数が少ない相手先との通信方法をサイクリックにして、残りの相手先との通信方法をシングルにし、
（４）メッセージ数が閾値未満である相手先との通信方法をサイクリックにするように、
前記通信方法リストにおける前記識別情報を変更することを特徴とする請求項１２または１４記載の並列計算機システムにおける通信方法。
【請求項１６】
他の計算機システムと接続するための複数のネットワークインタフェースカードを備えて並列計算機システムを構成する計算機システムに、
前記複数のネットワークインタフェースカードで接続した相手の計算機システムとの間の通信量を測定する測定処理と、
前記通信量に応じて前記複数のネットワークインタフェースカード中の使用するネットワークインタフェースカードを動的に切り替える切替処理と、
を実行させるプログラム。
【請求項１７】
前記測定処理は、所定時間あたりの転送メッセージ数によって前記通信量を測定し、
前記切替処理は、前記所定時間毎にネットワークインタフェースカードの動的切り替えを実行することを特徴とする請求項１６記載のプログラム。
【請求項１８】
前記切替処理は、通信相手となるプロセスが２以上存在し、前記通信量に通信相手によって所定量以上の差がある場合には、メッセージ転送において前記複数のネットワークインタフェースカードを順次使用するように選択し、前記通信量が通信相手によって所定量未満の差である場合には、メッセージ転送に使用するネットワークインタフェースカードを固定とする処理であることを特徴とする請求項１７記載のプログラム。
【請求項１９】
相手の計算機システムの受信側ネットワークインタフェースカード群と接続すると共に複数のネットワークインタフェースカードを含む送信側ネットワークインタフェースカード群を備えて送信側ノードとして並列計算機システムを構成する計算機システムに、
送信側プロセスから送信側ネットワークインタフェースカード群を介して相手の計算機システムに送信するメッセージ数を一定時間毎に測定して送信先別送信数情報として蓄える処理と、
通信方法リストに基づいて前記送信側ネットワークインタフェースカード群および相手の計算機システムの受信側ネットワークインタフェースカード群のそれぞれに含まれるネットワークインタフェースカードをそれぞれ選択して送信する処理と、
相手の計算機システムの受信側で受信するメッセージ数を元に相手の計算機システムから送られる送信元別受信数情報と前記送信先別送信数情報とを参照して前記通信方法リストを作成する処理と、
を実行させ、
前記通信方法リストを作成する処理は、送信側および相手の計算機システムの受信側で使用するネットワークインタフェースカードの識別情報を含む前記通信方法リストを、前記送信元別受信数情報と前記送信先別送信数情報とによって動的に変更することを特徴とするプログラム。
【請求項２０】
計算機システムは、相手の計算機システムの送信側ネットワークインタフェースカード群と接続すると共に複数のネットワークインタフェースカードを含む受信側ネットワークインタフェースカード群をさらに備えて受信側ノードとして通信する処理において、
受信側ネットワークインタフェースカード群から送信元別に受信して受信プロセスに渡すメッセージ数を一定時間毎に測定して送信元別受信数情報として蓄える処理と、
送信元別受信数情報を相手の計算機システムに送信する処理と、
をさらに実行させることを特徴とする請求項１９記載のプログラム。
【請求項２１】
前記通信方法リストを作成する処理は、一定時間毎に測定されたメッセージ数を元に、通信相手となるプロセスが２以上存在し、メッセージ数に通信相手によって所定数以上の差がある場合には、メッセージ転送において前記複数のネットワークインタフェースカードを順次使用するように選択し、メッセージ数が通信相手によって所定数未満の差である場合には、メッセージ転送に使用するネットワークインタフェースカードを固定となるように前記通信方法リストを変更することを特徴とする請求項１９記載のプログラム。
【請求項２２】
前記通信方法リストを作成する処理は、
（１）メッセージ数が閾値以上である相手先の数がノードあたりのＮＩＣ数未満の場合には、これらの相手先との通信方法をサイクリックにし、
（２）メッセージ数が閾値以上である相手先の数がノードあたりのＮＩＣ数以上で、かつ偶数の場合には、これらの相手先との通信方法をシングルにし、
（３）メッセージ数が閾値以上である相手先の数がノードあたりのＮＩＣ数以上で、かつ奇数の場合には、最もメッセージ数が少ない相手先との通信方法をサイクリックにして、残りの相手先との通信方法をシングルにし、
（４）メッセージ数が閾値未満である相手先との通信方法をサイクリックにするように、
前記通信方法リストにおける前記識別情報を変更することを特徴とする請求項１９または２１記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システム、並列計算機システムにおける通信方法、およびプログラムに係り、特に並列計算機システムを構成する計算機システム間の通信技術に関する。
【背景技術】
【０００２】
構造・衝突・流体解析、気象シミュレーションなど膨大な計算が必要とされる数値計算の分野では、処理を高速にして、より多くの問題を解くために、あるいはより大きなモデルの問題を解くために、スーパーコンピュータと呼ばれる高価な専用マシンが開発されてきた。このようなマシンを利用できるのは、企業や国立研究所の一部の研究者などに限られていた。これに対し、近年のワークステーションやパーソナルコンピュータなどの性能向上に伴い、特定の研究者以外でもＰＣクラスタと呼ばれる高性能な計算機システムを容易に構築することが可能になってきた。
【０００３】
ＰＣクラスタは、複数台のパーソナルコンピュータをギガビットイーサネットなどコモディティなネットワークで接続することによって構成される。そして、並列計算用の通信ソフトウェアを使って各マシンを連携してアプリケーションの処理を分散させることによって処理を高速化する。
【０００４】
ところが、最近では、ＣＰＵ性能の向上に伴い、ギガビットイーサネットなどでは、ネットワークの性能がネックになり通信の割合が大きいアプリケーションではＣＰＵの性能を十分に使えない場合が生じている。このため、ミリネットやインフィニバンドと呼ばれる高速ネットワークが使われ始めている。これらのネットワークは、ギガビットイーサネットなどに比べて数倍以上性能が上である。しかし、ミリネットやインフィニバンドのように単一のネットワークの性能を向上させていくことは、たいへんコストがかかり、電気的な限界もある。
【０００５】
そこで、複数のネットワークインタフェースカード（以下、ＮＩＣと略す）を使って性能を向上させようという技術が生まれた。このような複数のＮＩＣを利用する手段として、ネットワークトランキングという技術がある。これは、複数のＮＩＣを仮想的に１つのＮＩＣに見せかける技術である。ネットワークトランキングを使用すると、理論的な性能は、使用したＮＩＣの性能の和になる。すなわちＮ個のＮＩＣを用いてネットワークトランキングをすれば、性能はＮ倍になる。
【０００６】
なお、関連する技術として、プロセッサ−メモリ間に２つのバッファをもつ多段切換えネットワークを含む相互接続用ネットワークを設け、当該２つの多段切換えネットワークのトラフィック状態の検出結果に基づいてトラフィックの割当て比率を制御するプロセッサ−メモリ間のトラフィック径路指定技術が特許文献１に記載されている。この技術は、トラフィックの不均一部分を１つの切換えネットワークに局限し、トラフィックの残りの部分を第２の切換えネットワークに割り当てることによって混雑を緩和するものである。また、あらゆる状態の下で性能が最大となるようにトラフィックの不均衡を検出して径路指定方法を動的に変更するものである。
【０００７】
【特許文献１】特開平７−２８７６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、複数のマシンをネットワークで接続して構築する並列計算システム上で動作させるアプリケーションは、各マシン間で通信をしながら計算を進める。近年のＣＰＵ性能の向上に伴い、ＣＰＵ性能に比べてネットワークの通信性能が低い。そのため、通信が頻繁に行われるアプリケーションでは、ネットワークの通信性能がボトルネックになることが多く、アプリケーションの実行時間を短くするには通信時間を短くすることが重要になってくる。ここでネットワークのピークバンド幅が広ければ広いほど、大きいサイズのデータをより速く転送できることになる。一方、整数変数１つ分などの小さいサイズのデータを数多く転送するようなアプリケーションでは、ネットワークのピークバンド幅は、アプリケーションの実行時間にはほとんど影響を与えないが、単位時間内に転送可能なメッセージを多くすることが実行時間を短くする上で重要である。
【０００９】
先に述べたネットワークトランキングによれば、最大性能は向上するが、一度に取り扱えるメッセージ数は、増大しない。その理由は、仮想的にＮＩＣを結合して、幅が太くなれば一度に転送可能なメッセージサイズは大きくなるが、ＮＩＣが１つしかないため、一度に転送可能なメッセージの数は、ＮＩＣが１つのときと変わらないからである。アプリケーションの通信パターンが、一つ一つのメッセージサイズが大きい場合は、ネットワークトランキングにより性能が向上するが、小さなサイズのメッセージが数多く転送される場合には、ネットワークトランキングでは、性能の向上は見込めない。
【００１０】
なお、特許文献１では、多段切換えネットワークの構成であるため、プロセッサとメモリ間のネットワークは共有されている。そのため一部のプロセッサとメモリ間でのみ通信が多量に発生すると、その通信に使われているパスでホットスポットが発生して、ネットワーク全体ではトラフィックが不均一になる場合がある。そこで、このトラフィックの不均一さを検出して、通信経路を変えることにより、ネットワーク全体でトラフィックを均一にして転送効率を向上させている。しかし、特定のプロセッサとメモリ間の通信経路は複数存在するが、経路を選択するだけであるので、複数の通信経路を同時に利用するなどして通信性能を向上させることはできない。
【００１１】
本発明は、通信性能を向上させる計算機システム、並列計算機システムにおける通信方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の１つのアスペクトに係る計算機システムは、並列計算機システムを構成する計算機システムであって、他の計算機システムと接続するための複数のネットワークインタフェースカードと、複数のネットワークインタフェースカードで接続した相手の計算機システムとの間の通信量を測定する測定手段と、測定した通信量に応じて複数のネットワークインタフェースカード中の使用するネットワークインタフェースカードを動的に切り替える切替手段と、を備える。
【００１３】
第１の展開形態の計算機システムにおいて、測定手段は、所定時間あたりの転送メッセージ数によって通信量を測定し、切替手段は、所定時間毎にネットワークインタフェースカードの動的切り替えを実行することが好ましい。
【００１４】
第２の展開形態の計算機システムにおいて、切替手段は、通信相手となるプロセスが２以上存在し、通信量に通信相手によって所定量以上の差がある場合には、メッセージ転送において複数のネットワークインタフェースカードを順次使用するように選択し、通信量が通信相手によって所定量未満の差である場合には、メッセージ転送に使用するネットワークインタフェースカードを固定とすることが好ましい。
【００１５】
本発明の他のアスペクトに係る計算機システムは、並列計算機システムを構成する計算機システムであって、相手の計算機システムの受信側ネットワークインタフェースカード群と接続すると共に複数のネットワークインタフェースカードを含む送信側ネットワークインタフェースカード群と、送信側プロセスから送信側ネットワークインタフェースカード群を介して相手の計算機システムに送信するメッセージ数を一定時間毎に測定して送信先別送信数情報として蓄えると共に、通信方法リストに基づいて送信側ネットワークインタフェースカード群および相手の計算機システムの受信側ネットワークインタフェースカード群のそれぞれに含まれるネットワークインタフェースカードをそれぞれ選択して送信する送信側通信部と、相手の計算機システムの受信側で受信するメッセージ数を元に相手の計算機システムから送られる送信元別受信数情報と送信先別送信数情報とを参照して通信方法リストを作成する送信側通信方法作成部と、を送信側ノードに備え、通信方法リストは、送信側および相手の計算機システムの受信側で使用するネットワークインタフェースカードの識別情報を含み、送信元別受信数情報と送信先別送信数情報とによって動的に変更される。
【００１６】
第３の展開形態の計算機システムにおいて、相手の計算機システムの送信側ネットワークインタフェースカード群と接続すると共に複数のネットワークインタフェースカードを含む受信側ネットワークインタフェースカード群と、受信側ネットワークインタフェースカード群から送信元別に受信して受信プロセスに渡すメッセージ数を一定時間毎に測定して送信元別受信数情報として蓄える受信側通信部と、送信元別受信数情報を相手の計算機システムに送信する受信側通信方法作成部と、をさらに受信側ノードに備えることが好ましい。
【００１７】
第４の展開形態の計算機システムにおいて、送信側通信方法作成部は、一定時間毎に測定されたメッセージ数を元に、通信相手となるプロセスが２以上存在し、メッセージ数に通信相手によって所定数以上の差がある場合には、メッセージ転送において複数のネットワークインタフェースカードを順次使用するように選択し、メッセージ数が通信相手によって所定数未満の差である場合には、メッセージ転送に使用するネットワークインタフェースカードを固定となるように通信方法リストを変更することが好ましい。
【００１８】
第５の展開形態の計算機システムにおいて、送信側通信方法作成部は、（１）メッセージ数が閾値以上である相手先の数がノードあたりのＮＩＣ数未満の場合には、これらの相手先との通信方法をサイクリックにし、（２）メッセージ数が閾値以上である相手先の数がノードあたりのＮＩＣ数以上で、かつ偶数の場合には、これらの相手先との通信方法をシングルにし、（３）メッセージ数が閾値以上である相手先の数がノードあたりのＮＩＣ数以上で、かつ奇数の場合には、最もメッセージ数が少ない相手先との通信方法をサイクリックにして、残りの相手先との通信方法をシングルにし、（４）メッセージ数が閾値未満である相手先との通信方法をサイクリックにするように、通信方法リストにおける識別情報を変更することが好ましい。
【００１９】
本発明の１つのアスペクトに係る並列計算機システムにおける通信方法は、並列計算機システムを構成する計算機システムが他の計算機システムと接続するための複数のネットワークインタフェースカードを備えて通信する方法であって、複数のネットワークインタフェースカードで接続した相手の計算機システムとの間の通信量を測定するステップと、測定した通信量に応じて複数のネットワークインタフェースカード中の使用するネットワークインタフェースカードを動的に切り替えるステップと、を含む。
【００２０】
本発明の他のアスペクトに係る並列計算機システムにおける通信方法は、並列計算機システムを構成する計算機システムが相手の計算機システムの受信側ネットワークインタフェースカード群と接続すると共に複数のネットワークインタフェースカードを含む送信側ネットワークインタフェースカード群を備えて送信側ノードとして通信する方法であって、送信側プロセスから送信側ネットワークインタフェースカード群を介して相手の計算機システムに送信するメッセージ数を一定時間毎に測定して送信先別送信数情報として蓄えるステップと、通信方法リストに基づいて送信側ネットワークインタフェースカード群および相手の計算機システムの受信側ネットワークインタフェースカード群のそれぞれに含まれるネットワークインタフェースカードをそれぞれ選択して送信するステップと、相手の計算機システムの受信側で受信するメッセージ数を元に相手の計算機システムから送られる送信元別受信数情報と送信先別送信数情報とを参照して通信方法リストを作成するステップと、を含み、通信方法リストは、送信側および相手の計算機システムの受信側で使用するネットワークインタフェースカードの識別情報を含み、送信元別受信数情報と送信先別送信数情報とによって動的に変更される。
【００２１】
本発明の１つのアスペクトに係るプログラムは、他の計算機システムと接続するための複数のネットワークインタフェースカードを備えて並列計算機システムを構成する計算機システムに、複数のネットワークインタフェースカードで接続した相手の計算機システムとの間の通信量を測定する測定処理と、通信量に応じて複数のネットワークインタフェースカード中の使用するネットワークインタフェースカードを動的に切り替える切替処理と、を実行させる。
【００２２】
本発明の他のアスペクトに係るプログラムは、相手の計算機システムの受信側ネットワークインタフェースカード群と接続すると共に複数のネットワークインタフェースカードを含む送信側ネットワークインタフェースカード群を備えて送信側ノードとして並列計算機システムを構成する計算機システムに、送信側プロセスから送信側ネットワークインタフェースカード群を介して相手の計算機システムに送信するメッセージ数を一定時間毎に測定して送信先別送信数情報として蓄える処理と、通信方法リストに基づいて送信側ネットワークインタフェースカード群および相手の計算機システムの受信側ネットワークインタフェースカード群のそれぞれに含まれるネットワークインタフェースカードをそれぞれ選択して送信する処理と、相手の計算機システムの受信側で受信するメッセージ数を元に相手の計算機システムから送られる送信元別受信数情報と送信先別送信数情報とを参照して通信方法リストを作成する処理と、を実行させ、通信方法リストを作成する処理は、送信側および相手の計算機システムの受信側で使用するネットワークインタフェースカードの識別情報を含む通信方法リストを、送信元別受信数情報と送信先別送信数情報とによって動的に変更する。
【発明の効果】
【００２３】
本発明によれば、ノードあたりに複数のＮＩＣが存在する場合に、各プロセス間の通信量が通信相手によって偏りがある場合であっても、複数のＮＩＣを平均的に利用することで、複数ＮＩＣを扱うオーバーヘッドを少なくできる。この結果、ノードあたりにＮＩＣが単一の場合よりも転送できるメッセージ数が増えて、通信性能が向上する。
【００２４】
その理由は、単位時間あたりの転送メッセージ数を測定し、各プロセス間の通信量が通信相手によって偏りがある場合は、複数のＮＩＣの使用率が平均的になるように調整し、各プロセス間の通信量が通信相手によって偏ることなくバランスが取れている場合は、オーバーヘッドを少なくするためにメッセージ転送に使用するＮＩＣを固定になるように調整しているからである。
【発明を実施するための最良の形態】
【００２５】
本発明の実施形態に係る計算機システムは、並列計算機システムを構成するノードに相当する計算機システムである。計算機システムの送信側ノードにおいて、相手の計算機システムの受信側ネットワークインタフェースカード群（図１の５）と接続すると共に複数のネットワークインタフェースカードを含む送信側ネットワークインタフェースカード群（図１の３）と、送信側通信部（図１の２）と、送信側通信方法作成部（図１の７）とを備える。送信側通信部は、送信側プロセス（図１の１）から送信側ネットワークインタフェースカード群を介して相手の計算機システムに送信するメッセージ数を一定時間毎に測定して送信先別送信数情報（図１の２４）として蓄えると共に、通信方法リスト（図１の７２）に基づいて送信側ネットワークインタフェースカード群および相手の計算機システムの受信側ネットワークインタフェースカード群のそれぞれに含まれるネットワークインタフェースカードをそれぞれ選択して送信する。送信側通信方法作成部は、相手の計算機システムの受信側で受信するメッセージ数を元に相手の計算機システムから送られる送信元別受信数情報（図１の５２）と送信先別送信数情報とを参照して通信方法リストを作成する。通信方法リストは、送信側および相手の計算機システムの受信側で使用するネットワークインタフェースカードの識別情報を含み、送信元別受信数情報と送信先別送信数情報とによって動的に変更される。
【００２６】
また、計算機システムの受信側ノードにおいて、相手の計算機システムの送信側ネットワークインタフェースカード群（図１の３）と接続すると共に複数のネットワークインタフェースカードを含む受信側ネットワークインタフェースカード群（図１の４）と、受信側ネットワークインタフェースカード群から送信元別に受信して受信プロセスに渡すメッセージ数を一定時間毎に測定して送信元別受信数情報として蓄える受信側通信部（図１の５）と、送信元別受信数情報（図１の５２）を相手の計算機システムに送信する受信側通信方法作成部（図１の８）と、をさらに備える。
【００２７】
送信側通信方法作成部は、一定時間毎に測定されたメッセージ数を元に、メッセージ数に通信相手によって所定数以上の差がある場合は、メッセージ転送において複数のネットワークインタフェースカードを順次使用するように選択し、メッセージ数が通信相手によって所定数未満の差である場合は、メッセージ転送に使用するネットワークインタフェースカードを固定とする。より具体的には、（１）メッセージ数が閾値以上である相手先の数がノードあたりのＮＩＣ数未満の場合には、これらの相手先との通信方法をサイクリックにし、（２）メッセージ数が閾値以上である相手先の数がノードあたりのＮＩＣ数以上で、かつ偶数の場合には、これらの相手先との通信方法をシングルにし、（３）メッセージ数が閾値以上である相手先の数がノードあたりのＮＩＣ数以上で、かつ奇数の場合には、最もメッセージ数が少ない相手先との通信方法をサイクリックにして、残りの相手先との通信方法をシングルにし、（４）メッセージ数が閾値未満である相手先との通信方法をサイクリックにするように、通信方法リストにおける識別情報を変更する。
【００２８】
以上のように構成される計算機システムは、ネットワークインタフェースカードが複数ある場合、使用するネットワークインタフェースカードをアプリケーションの通信パターンに応じて実行中に動的に変更し、使用するネットワークインタフェースカードと通信方法を変更するために、メッセージの転送処理とは別に一定時間ごとに変更手段を起動する。通信量に応じて使用するネットワークインタフェースカードを動的に切換えることによって、通信のパターンによらず複数のネットワークインタフェースカードを平均的に使用して、通信性能を向上させることができる。以下、実施例に即し、図面を参照して詳しく説明する。
【実施例１】
【００２９】
図１は、本発明の第１の実施例に係る並列計算システムの構成を示すブロック図である。図１では、並列計算システムを構成する複数の計算システムにおいて、各々が通信しながら計算を進めるアプリケーションのプロセス群における１対のプロセスのみを取り上げて示す。並列計算システムは、送信側ノードにおいて、通信時に送信側ノードのプロセスを示す送信側プロセス１と、送信側通信部２と、送信側ＮＩＣ３と、送信側通信方法作成部７と、を含む。また、受信側ノードにおいて、受信側ＮＩＣ４と、受信側通信部５と、受信側プロセス６と、受信側通信方法作成部８とを含む。このような構成において、送信側プロセス１が送信側ＮＩＣ３と受信側ＮＩＣ４を介して受信側プロセス６に通信を行うものとする。
【００３０】
送信側通信部２は、送信命令解析手段２１と、送信先情報２２と、使用ＮＩＣ選定手段２３と、送信先別送信数情報２４とを備える。送信命令解析手段２１は、送信側プロセス１から発行された送信命令の送信先を解析する。送信先情報２２は、送信命令解析手段２１で解析された送信先を示す情報である。アプリケーションのプロセス群において、プロセスを識別するために、各プロセスには一意なプロセスＩＤが付けられている。送信先情報２２は、送信先を識別するプロセスＩＤに相当する。使用ＮＩＣ選定手段２３は、送信先情報２２と使用ＮＩＣ・通信方法リスト７２を元に、メッセージ転送時に送信側で使用する送信側ＮＩＣ３中のＮＩＣと、受信側で使用する受信側ＮＩＣ４中のＮＩＣとを選定する。送信先別送信数情報２４は、送信先別の送信メッセージ数を記録した情報であり、送信先別送信数情報収集手段７１によって参照されるたびに情報がリセットされる。
【００３１】
送信側通信方法作成部７は、送信先別送信数情報収集手段７１と、使用ＮＩＣ・通信方法リスト７２と、使用ＮＩＣ・通信方法リスト生成手段７３とを備える。送信先別送信数情報収集手段７１は、送信先別送信数情報２４を元に、通信方法変更の対象となる送信先を選別し、その送信先へメッセージを送信するＮＩＣを選定して、選定情報を使用ＮＩＣ・通信方法リスト生成手段７３に送る。使用ＮＩＣ・通信方法リスト７２は、送信先別に、メッセージ転送時に送信側（送信元）と送信先のどのＮＩＣを使用するのか、およびどの通信方法を使用するのかを記録したリストである。ここで通信方法には、単一のＮＩＣのみを使用する「シングル」と称するモードと、複数のＮＩＣを順次使用する「サイクリック」と称するモードとを設ける。サイクリックの場合、連続するメッセージの送信において、複数のＮＩＣを周期的に使用する。使用ＮＩＣ・通信方法リスト生成手段７３は、送信先別送信数情報収集手段７１と送信元別受信数情報収集手段８１から送られてきた通信方法と使用ＮＩＣの更新指示に従って、使用ＮＩＣ・通信方法リスト７２を更新する。
【００３２】
受信側通信部５は、送信元別受信数情報保存手段５１と、送信元別受信数情報５２とを備える。送信元別受信数情報保存手段５１は、受信側ＮＩＣ４から受け取ったメッセージの送信元を解析して、送信元別受信数情報５２を更新する。送信元別受信数情報５２は、送信元別の受信メッセージ数を記録した情報であり、送信元別受信数情報収集手段８１によって参照されるたびに情報がリセットされる。
【００３３】
受信側通信方法作成部８は、送信元別受信数情報収集手段８１を備える。送信元別受信数情報収集手段８１は、送信元別受信数情報５２を元に、通信方法変更の対象となる送信元を選別し、その送信元からメッセージを受信するＮＩＣを選定して、選定情報を使用ＮＩＣ・通信方法リスト生成手段７３に送る。
【００３４】
以上のような構成において、送信側プロセス１、送信側通信部２、送信側通信方法作成部７、受信側通信部５、受信側通信方法作成部８、受信側プロセス６は、計算機システムにプログラムを実行させて実現するようにしてもよい。この場合、送信側プロセス１、受信側プロセス６は、並列計算用のアプリケーションプログラムに相当し、送信側通信部２、受信側通信部５は、それぞれ送信側および受信側の並列計算用通信ライブラリに相当し、送信側通信方法作成部７、受信側通信方法作成部８は、それぞれ送信側および受信側の使用ＮＩＣ・通信方法リスト作成ツールに相当する。
【００３５】
次に、図１を参照して並列計算システムの動作について詳細に説明する。メッセージの送信では、使用ＮＩＣ選定手段２３が使用ＮＩＣ・通信方法リスト７２を参照し、送信側と受信側で使用するＮＩＣを選定して通信を行う。また、送信命令解析手段２１は、送信したメッセージ数を送信先別送信数情報２４に保存し、送信先別送信数情報２４は、メッセージが１つ送信される度に１ずつ加算される。一方、送信元別受信数情報保存手段５１は、受信したメッセージ数を送信元別受信数情報５２に保存し、送信元別受信数情報５２は、メッセージが１つ受信される度に１ずつ加算される。
【００３６】
送信側通信方法作成部７は、メッセージの送信処理とは別に一定時間間隔で、送信先別送信数情報収集手段７１を起動して、送信先別送信数情報２４を参照し、単位時間あたりに送信したメッセージ数が閾値以上となるプロセスを同定して使用ＮＩＣ・通信方法リスト７２を更新する。そのときに送信先別送信数情報２４がリセットされる。一方、受信側通信方法作成部８は、メッセージの受信処理とは別に一定時間間隔で送信元別受信数情報収集手段８１を起動して、送信元別受信数情報５２を参照し、単位時間あたりに受信したメッセージ数が閾値以上となるプロセスを同定して、使用ＮＩＣ・通信方法リスト７２の更新を使用ＮＩＣ・通信方法リスト生成手段７３に指示する。そのときに送信元別受信数情報５２は、リセットされる。
【００３７】
使用ＮＩＣ選定手段２３は、使用ＮＩＣ・通信方法リスト７２を参照して送信先のプロセスＩＤによってリストを索引し、通信に使用する送信側ＮＩＣと受信側ＮＩＣを決定する。通信に使用する送信側ＮＩＣと受信側ＮＩＣは、送信先別に応じて決定される。また、通信方法は、送信先別に送信側と受信側の両方で定められている。通信方法がシングルの場合は、使用するＮＩＣは、使用ＮＩＣ・通信方法リスト生成手段７３から指示があるまで変化しない。通信方法がサイクリックの場合は、リスト参照後、次のＮＩＣを使うように更新される。例えばＮＩＣが２つである場合には、ＮＩＣ０とＮＩＣ１を順番に使用し、ＮＩＣが４つである場合は、ＮＩＣ０、１、２、３を順次繰り返して使用する。
【００３８】
使用ＮＩＣ・通信方法リスト７２の初期値は、図２に示すように通信方法が全てサイクリックとし、送信側、受信側ともに使用ＮＩＣは、送信先のＩＤをノードあたりのＮＩＣ数で割った余りの数字に対応するＮＩＣである。
【００３９】
図３は、プロセスＩＤ０の使用ＮＩＣ・通信方法リスト７２の変更の例を示す図である。使用ＮＩＣ・通信方法リスト７２は、図３（ａ）の状態のときに、プロセスＩＤ０からプロセスＩＤ１とプロセスＩＤ２に１回ずつメッセージが送信された場合に、図３（ｂ）に示すように更新される。すなわち、プロセスＩＤ１の送信側使用ＮＩＣおよびプロセスＩＤ２の受信側使用ＮＩＣ番号は、０から１に更新される。
【００４０】
次に、一定時間間隔で起動される送信先別送信数情報収集手段７１が、使用ＮＩＣ・通信方法リスト生成手段７３を通して使用ＮＩＣ・通信方法リスト７２を更新する方法について説明する。送信先別送信数情報収集手段７１は、一定時間ごとに起動され、前回起動したときから今回起動した間に送信された送信先別のメッセージ数を送信先別送信数情報２４で確認する。そして以下のような条件によって、通信方法が設定される。
（１）メッセージ数が閾値以上である送信先がノードあたりのＮＩＣ数未満の場合には、それらの送信先の送信側通信方法をサイクリックにする。
（２）メッセージ数が閾値以上である送信先がノードあたりのＮＩＣ数以上かつ偶数の場合には、それらの送信先の送信側通信方法をシングルに更新する。
（３）メッセージ数が閾値以上である送信先がノードあたりのＮＩＣ数以上かつ奇数の場合には、最もメッセージ数が少ない送信先は、送信側通信方法をサイクリックにして、残りの送信先はシングルに更新する。
（４）送信メッセージ数が閾値未満である送信先は、通信方法をサイクリックにする。
なお、送信側使用ＮＩＣは、送信先のＩＤをノードあたりのポート数で割った余りの数字に更新する。
【００４１】
次に、一定時間間隔で起動される送信元別受信数情報収集手段８１が、使用ＮＩＣ・通信方法リスト生成手段７３を通して使用ＮＩＣ・通信方法リスト７２を更新する方法について説明する。送信元別受信数情報収集手段８１は、一定時間ごとに起動され、前回起動したときから今回起動した間に受信された送信元別のメッセージ数を送信元別受信数情報５２によって確認する。そして以下のような条件によって、通信方法が設定される。
（１）メッセージ数が閾値以上である送信元がノードあたりのＮＩＣ数未満の場合には、それらの送信元の受信側通信方法をサイクリックにする。
（２）メッセージ数が閾値以上である送信元がノードあたりのＮＩＣ数以上かつ偶数の場合には、それらの送信元の受信側通信方法をシングルに更新する。
（３）メッセージ数が閾値以上である送信元がノードあたりのＮＩＣ数以上かつ奇数の場合には、最もメッセージ数が少ない送信元は、受信側通信方法をサイクリックにして、残りの送信元はシングルに更新する。
（４）受信メッセージ数が閾値未満である送信元は、通信方法をサイクリックにする。
なお、受信側使用ＮＩＣは、送信元のＩＤをノードあたりのポート数で割った余りの数字に更新する。
【００４２】
以上のようにして通信方法が変更される場合の使用ＮＩＣ・通信方法リスト７２の例を図３（ｃ）に示す。図３（ａ）の状態で、プロセスＩＤ２において、前回、送信元別受信数情報収集手段８１が起動したときから今回起動するまでの間にプロセスＩＤ０からのメッセージ数が閾値以上を越え、閾値以上となった送信元がＮＩＣ数以上かつ偶数であるとする。この場合、プロセスＩＤ２の送信元別受信数情報収集手段８１からプロセスＩＤ０の使用ＮＩＣ・通信方法リスト生成手段７３に通信方法の変更が指示されて、プロセスＩＤ０の使用ＮＩＣ・通信方法リスト７２が更新される。すなわち、プロセスＩＤ２の受信側通信方法が、上記の（２）の条件によってサイクリックからシングルに変更される。
【００４３】
次に、通信方法と通信量の関係について具体例を用いて説明する。図４は、通信形態を表す図であって、ノードあたり１つのＮＩＣを備えているマシン上で、プロセスＩＤ０からプロセスＩＤ２とプロセスＩＤ３への交互通信と、プロセスＩＤ１からプロセスＩＤ２とプロセスＩＤ３への交互通信とが、同時に繰り返し行われていることを示している。プロセスＩＤ０からプロセスＩＤ２とプロセスＩＤ３とへの送信は、ＮＩＣが１個しかないために同時に行うことができず交互に行われる。プロセスＩＤ１からプロセスＩＤ２とプロセスＩＤ３とへの送信もＮＩＣが１個しかないため交互に行われる。
【００４４】
ここでＮＩＣのレイテンシを２０μ秒とした場合、整数変数１つ分である４バイト程度のメッセージは、レイテンシと同様の時間で転送可能である。したがって、４バイト程度のメッセージの１秒間に転送可能な数は、５００００個である。このときにプロセスＩＤ０がプロセスＩＤ２とプロセスＩＤ３とに２５０００００個ずつ４バイトのメッセージを送信しようとする場合、同時には転送できず、交互に転送しなければならないために１００秒間かかることになる。プロセスＩＤ１からプロセスＩＤ２とプロセスＩＤ３とへのデータの転送も同様の時間がかかる。プロセスＩＤ２とプロセスＩＤ３では、プロセスＩＤ０とプロセスＩＤ１の両方からメッセージが来るために受信処理が重なる可能性がある。しかし、受信したメッセージは、一旦バッファに保存されるために、ＣＰＵスピードがネットワークの通信性能に比べて十分速ければ、同時に受信処理が可能である。
【００４５】
また、図５のように、ノードあたり２つのＮＩＣを備えているマシン上で、プロセスＩＤ０からプロセスＩＤ２への送信は、ＮＩＣ０とし、プロセスＩＤ０からプロセスＩＤ３への送信は、ＮＩＣ１とし、プロセスＩＤ１からプロセスＩＤ２への送信は、ＮＩＣ０とし、プロセスＩＤ１からプロセスＩＤ３への送信は、ＮＩＣ１として固定すれば、プロセスＩＤ２とプロセスＩＤ３への送信が同時に行えるので処理時間は、上述の半分の５０秒になる。この場合、送信するメッセージは、一旦バッファに保存されるので、ＣＰＵスピードがネットワークの通信性能に比べて十分速ければ、プロセスＩＤ０からプロセスＩＤ２とプロセスＩＤ３へは、メッセージを同時に送信処理が可能である。しかし、例えばプロセスＩＤ０からプロセスＩＤ２にのみ大量のメッセージが送信されていて、プロセスＩＤ０からプロセスＩＤ３にはほとんどメッセージが送信されない場合には、２つのＮＩＣの使用率に偏りが生じてしまい、複数あるＮＩＣを平均的に利用することができない。
【００４６】
さらに、図６では、ノードあたり２つのＮＩＣを備えているマシン上で、送信側と受信側のＮＩＣを交互に使ってメッセージを送信している。プロセスＩＤ０は、最初にプロセスＩＤ２にメッセージを送信するときには、送信側のＮＩＣ０から受信側のＮＩＣ０に送信する。次にプロセスＩＤ２にメッセージを送信するときには、送信側のＮＩＣ１から、受信側のＮＩＣ１に送信する。プロセスＩＤ０からプロセスＩＤ３への送信、プロセスＩＤ１からプロセスＩＤ２およびプロセスＩＤ３への送信も同様に行われる。この場合、送信側のＮＩＣと受信側のＮＩＣとが交互に使われるために、通信相手によって通信量に偏りがある場合であっても、複数あるＮＩＣが平均的に利用される。しかし、送信先に対してＮＩＣが複数ある場合には、受信側で到着するメッセージの順番が入れ替わったときの処理に対するコストがかかる。このコストをレイテンシに換算して１０μ秒とした場合、図４の例で２０μ秒であったレイテンシは、３０μ秒になる。このときの１秒間に転送可能なメッセージ数は、３３３３３個である。プロセスＩＤ０がプロセスＩＤ２とプロセスＩＤ３とに２５０００００個ずつ４バイトのメッセージを送信しようとした場合、約７０秒で転送することができる。
【００４７】
本実施例では、プロセスＩＤ０からプロセスＩＤ２とプロセスＩＤ３へのメッセージの送信と、プロセスＩＤ１からプロセスＩＤ２とプロセスＩＤ３へのメッセージの送信とは、初期状態では通信方法がサイクリックである。したがって、レイテンシは３０μ秒であり、１秒間に転送可能なメッセージ数は、３３３３３個である。送信先別送信数情報収集手段７１が例えば１０秒間隔で起動する場合、１０秒後に送信先別送信数情報収集手段７１が起動して、送信先別送信数情報２４を調べる。プロセスＩＤ２とプロセスＩＤ３への送信メッセージ数が十分多く閾値以上となり、閾値以上の送信先が２つと偶数であるため、送信側通信方法がシングルとなる。また、送信元別受信数情報収集手段８１が例えば１０秒間隔で起動する場合、１０秒後に送信元別受信数情報収集手段８１が起動して、送信元別受信数情報５２を調べる。プロセスＩＤ０とプロセスＩＤ１からの受信メッセージ数が十分多く閾値以上となり、閾値以上の送信元が２つと偶数であるため、受信側通信方法がシングルとなる。
【００４８】
送信側と受信側の通信方法がシングルの場合、図５で説明したようにレイテンシは２０μ秒であるので、１秒間に５００００個のメッセージを転送可能になる。最初の１０秒間にサイクリックの通信方法で３３３３３０個送信し、残りは、２５０００００−３３３３３０＝２１６６６７０個となり、２５０００００個のメッセージ送信にかかる時間は、約４３秒となる。したがって、２５０００００個のメッセージを送信するのにかかる時間は、約５３秒である。すべての転送で通信方法にサイクリックを使って通信するのに比べて、本実施例では、１．３２（＝７０／５３）倍に処理を速くすることが可能になる。通信相手ごとの通信量のバランスが取れているときにＮＩＣを固定して使用した場合の５０秒と比べて、性能差は１割以内に収まる。
【００４９】
さらに、一定時間後に、通信パターンが変わった場合であっても、例えば１０秒間隔で起動する送信先別送信数情報収集手段７１と送信元別受信数情報収集手段８１が通信パターンの変化を検出して、送信側と受信側の通信方法の変更が可能であるので、複数あるＮＩＣがバランスよく使用される。すなわち、複数のＮＩＣを平均的に利用して、複数ＮＩＣを扱うオーバーヘッドを少なくすることができる。この結果、ノードあたりにＮＩＣが単一の場合よりも転送できるメッセージ数が増えて、通信性能が向上してアプリケーションの実行を早く終わらせることができる。
【実施例２】
【００５０】
図７は、本発明の第２の実施例に係る並列計算システムの構成を示すブロック図である。図７において、並列計算システムは、ノードあたりに例えばＣＰＵを２つ備え、送信側と受信側とにそれぞれプロセスが２つずつ存在する点で図１と異なる。送信側ノードにおいて、送信側プロセス１ａは、送信側通信部２ａを介して送信側ＮＩＣ３ａにメッセージを送り、送信側プロセス１ｂは、送信側通信部２ｂを介して送信側ＮＩＣ３ａにメッセージを送る。送信側通信部２ａ、２ｂは、送信側通信方法作成部７ａを共有する。一方、受信側ノードにおいて、受信側プロセス６ａは、受信側通信部５ａを介して受信側ＮＩＣ４ａからメッセージを受け取り、受信側プロセス６ｂは、受信側通信部５ｂを介して受信側ＮＩＣ４ａからメッセージを受け取る。受信側通信部５ａ、５ｂは、受信側通信方法作成部８ａを共有する。
【００５１】
このような構成において、送信側通信部２ａ、２ｂ内の、図１に示した送信先別送信数情報２４は、送信側のプロセス毎に別々に管理され、受信側通信部５ａ、５ｂ内の、図１に示した送信元別受信数情報５２は、受信側のプロセス毎に別々に管理される。送信側通信方法作成部７ａと受信側通信方法作成部８ａとは、ノード内のプロセス数に関わらず１つずつ存在する。メッセージ送信時に、送信側プロセス１ａ、１ｂは、それぞれ共通の図１に示した使用ＮＩＣ・通信方法リスト７２を参照する。
【００５２】
一定時間間隔で起動される送信先別送信数情報収集手段７１が、使用ＮＩＣ・通信方法リスト生成手段７３を通して使用ＮＩＣ・通信方法リスト７２の更新する方法を説明する。送信側通信方法作成部７ａで一定時間ごとに起動される送信先別送信数情報収集手段７１は、ノード内の全送信側プロセスの、前回起動したときから今回起動した間に送信された送信先別のメッセージ数が記録されている送信先別送信数情報２４を確認する。
（１）メッセージ数が閾値以上の送信先がノードあたりのＮＩＣ数未満である場合は、それらの送信先の送信側通信方法をサイクリックにする。
（２）メッセージ数が閾値以上の送信先がノードあたりのＮＩＣ数以上かつ偶数である場合、それらの送信先の送信側通信方法をシングルに更新する。
（３）メッセージ数が閾値以上の送信先がノードあたりのＮＩＣ数以上かつ奇数である場合は、最もメッセージ数が少ない送信先は、送信側通信方法をサイクリックにし、残りの送信先はシングルに更新する。
（４）送信メッセージ数が閾値未満である送信先は、通信方法をサイクリックにする。
なお、送信側使用ＮＩＣは、送信先のＩＤをノードあたりのポート数で割った余りの数字に更新する。
【００５３】
次に、一定時間間隔で起動される送信元別受信数情報収集手段８１が、使用ＮＩＣ・通信方法リスト生成手段７３を通して使用ＮＩＣ・通信方法リスト７２を更新する方法について説明する。受信側通信方法作成部８ａで一定時間ごとに起動される送信元別受信数情報収集手段８１は、ノード内の全受信側プロセスの、前回起動したときから今回起動した間に受信された送信元別のメッセージ数が記録されている送信元別受信数情報５２を確認する。
（１）メッセージ数が閾値以上の送信元がノードあたりのＮＩＣ数未満である場合は、それらの送信元の受信側通信方法をサイクリックにする。
（２）メッセージ数が閾値以上の送信元がノードあたりのＮＩＣ数以上かつ偶数である場合、それらの送信元の受信側通信方法をシングルに更新する。
（３）メッセージ数が閾値以上の送信元がノードあたりのＮＩＣ数以上かつ奇数である場合は、最もメッセージ数が少ない送信元は、受信側通信方法をサイクリックにし、残りの送信元はシングルに更新する。
（４）受信メッセージ数が閾値未満である送信元は、通信方法をサイクリックにする。
なお、受信側使用ＮＩＣは、送信元のＩＤをノードあたりのポート数で割った余りの数字に更新する。
【００５４】
以上、ノード内に並列計算アプリケーションのプロセスが２個ずつ存在する場合を説明したが、３個以上あってもよいことはいうまでもない。本発明では単一プロセスのみの通信パターンだけでなく、ノード内の計算に関わる全プロセスの通信パターンを解析して、複数のＮＩＣを平均的かつ、複数ＮＩＣを扱うオーバーヘッドを少なく利用することができる。
【産業上の利用可能性】
【００５５】
本発明は、ハイパフォーマンスコンピューティングの分野に適用できる。特に最新のＣＰＵを搭載するマシンをギガビットイーサネットなど比較的低速なネットワークデバイスで接続するような、ＣＰＵスピードに比べてネットワークの転送速度が遅いシステムで、各マシン上で動くプロセスが通信をしながら問題を解く並列計算アプリケーションを実行するのに適用できる。
【図面の簡単な説明】
【００５６】
【図１】本発明の第１の実施例に係る並列計算システムの構成を示すブロック図である。
【図２】使用ＮＩＣ・通信方法リストの初期値を表す図である。
【図３】使用ＮＩＣ・通信方法リストの変更の例を表す図である。
【図４】ノード間の通信形態を表す第１の図である。
【図５】ノード間の通信形態を表す第３の図である。
【図６】ノード間の通信形態を表す第３の図である。
【図７】本発明の第２の実施例に係る並列計算システムの構成を示すブロック図である。
【符号の説明】
【００５７】
１、１ａ、１ｂ  送信側プロセス
２、２ａ、２ｂ  送信側通信部
３、３ａ  送信側ＮＩＣ
４、４ａ  受信側ＮＩＣ
５、５ａ、５ｂ  受信側通信部
６、６ａ、６ｂ  受信側プロセス
７、７ａ  送信側通信方法作成部
８、８ａ  受信側通信方法作成部
２１  送信命令解析手段
２２  送信先情報
２３  使用ＮＩＣ選定手段
２４  送信先別送信数情報
５１  送信元別受信数情報保存手段
５２  送信元別受信数情報
７１  送信先別送信数情報収集手段
７２  使用ＮＩＣ・通信方法リスト
７３  使用ＮＩＣ・通信方法リスト生成手段
８１  送信元別受信数情報収集手段
【図１】
2007266973.tif 000003
【図２】
2007266973.tif 000004
【図３】
2007266973.tif 000005
【図４】
2007266973.tif 000006
【図５】
2007266973.tif 000007
【図６】
2007266973.tif 000008
【図７】
2007266973.tif 000009