(57)【特許請求の範囲】
【請求項１】
複数のインターフェースを有する情報処理装置の通信プログラムにおいて、
前記情報処理装置に、
各インターフェースの通信状況に応じて、通信に使用するインターフェースを選択する第一選択手順と、
前記第一選択手順によって選択されたインターフェースを使用して、他の情報処理装置へ接続要求情報を送信する接続要求送信手順と、
前記接続要求送信手順によって送信された接続要求情報に対する応答情報を前記他の情報処理装置から受信した場合には、受信された前記応答情報から、該他の情報処理装置が応答情報を送信するために使用したインターフェースを特定する特定手順と、
前記接続要求送信手順が前記接続要求情報を送信するために使用したインターフェースと、前記特定手順によって特定されたインターフェースとを使用して、前記情報処理装置と情報の送受信を行う通信手順と、
他の情報処理装置から接続要求情報を受信した場合には、各インターフェースの通信状況に応じて、前記他の情報処理装置との通信に使用するインターフェースを選択する第二選択手順と、
前記第二選択手順によって選択されたインターフェースを使用して、前記受信された接続要求情報の送信元へ前記受信された接続要求情報に対する応答情報を送信する応答送信手順と
を実行させることを特徴とする情報処理装置の通信プログラム。
【請求項２】
前記情報処理装置の通信プログラムにおいて、
前記第一選択手順は、前記各インターフェースを使用するための通信予約に応じて、前記他の情報処理装置への情報の送信に使用されるインターフェースを選択し、
前記第二選択手順は、前記各インターフェースを使用するための通信予約に応じて、前記他の情報処理装置からの情報の受信に使用されるインターフェースを選択する
ことを特徴とする請求項１に記載の情報処理装置の通信プログラム。
【請求項３】
前記情報処理装置の通信プログラムにおいて、
前記特定手順は、前記接続要求送信手順によって送信された接続要求情報に対する応答情報を前記他の情報処理装置から受信した場合には、受信された前記応答情報から、前記他の情報処理装置が有する各インターフェースの通信状況に応じて選択された前記他の情報処理装置が前記情報処理装置との通信に使用するインターフェースを特定する特定情報を識別し、識別された前記特定情報から、該他の情報処理装置が応答情報を送信するために使用したインターフェースを特定し、
前記応答送信手順は、前記第二選択手順によって選択されたインターフェースを特定する前記特定情報を含んだ前記応答情報を送信する
ことを特徴とする請求項１または２に記載の情報処理装置の通信プログラム。
【請求項４】
複数のインターフェースと、
各インターフェースに係る通信状況に応じて、通信に使用するインターフェースを選択する第一選択部と、
前記第一選択部によって選択されたインターフェースを使用して、他の情報処理装置へ接続要求情報を送信する接続要求送信部と、
前記接続要求送信部によって送信された接続要求情報に対する応答情報を前記他の情報処理装置から受信した場合には、受信された前記応答情報から、該他の情報処理装置が応答情報を送信するために使用したインターフェースを特定する特定部と、
前記接続要求送信部が前記接続要求を送信するために使用したインターフェースと、前記特定部によって特定されたインターフェースとを使用して、前記他の情報処理装置と情報を送受信する通信部と、
他の情報処理装置から接続要求情報を受信した場合には、各インターフェースの通信状況に応じて、前記他の情報処理装置との通信に使用するインターフェースを選択する第二選択部と、
前記第二選択部によって選択されたインターフェースを使用して、前記受信された接続要求情報の送信元へ受信された前記接続要求情報に対する応答情報を送信する応答送信部と
を有することを特徴とする情報処理装置。
【請求項５】
互いに通信する第一の情報処理装置と第二の情報処理装置とを有し、
前記第一の情報処理装置は、
複数のインターフェースと、
各インターフェースの通信状況に応じて、前記第二の情報処理装置との通信に使用するインターフェースを選択する第一選択部と、
前記第一選択部によって選択されたインターフェースを使用して、前記第二の情報処理装置へ接続要求情報を送信する接続要求送信部と、
前記接続要求送信部によって送信された接続要求情報に対する応答情報を前記第二の情報処理装置から受信した場合には、受信された前記応答情報から、前記第二の情報処理装置が応答情報を送信するために使用したインターフェースを特定する特定部と、
前記接続要求送信部が前記接続要求情報を送信するために使用したインターフェースと、前記特定部によって特定されたインターフェースとを使用して、前記第二の情報処理装置と情報の送受信を行う通信部と、
を有し、
前記第二の情報処理装置は、
複数のインターフェースと、
前記第一の情報処理装置から接続要求情報を受信した場合には、各インターフェースの通信状況に応じて、前記第一の情報処理装置との通信に使用するインターフェースを選択する第二選択部と、
前記第二選択部によって選択されたインターフェースを使用して、前記受信された接続要求情報の送信元へ前記受信された接続要求情報に対する応答情報を送信する応答送信部と
を有することを特徴とする情報処理システム。
【請求項６】
複数のインターフェースを有し、互いに通信する第一の情報処理装置と第二の情報処理装置とを有する情報処理システムの通信方法であって、
前記第一の情報処理装置が
各インターフェースの通信状況に応じて、前記第二の情報処理装置との通信に使用するインターフェースを選択する第一選択ステップと、
前記第一選択ステップによって選択されたインターフェースを使用して、前記第二の情報処理装置へ接続要求情報を送信する接続要求送信ステップと、
前記接続要求送信ステップによって送信された接続要求情報に対する応答情報を前記第二の情報処理装置から受信した場合には、受信された前記応答情報から、前記第二の情報処理装置が応答情報を送信するために使用したインターフェースを特定する特定ステップと、
前記接続要求送信ステップが前記接続要求情報を送信するために使用したインターフェースと、前記特定ステップによって特定されたインターフェースとを使用して、前記第二の情報処理装置と情報の送受信を行う通信ステップと
を含む方法を実行し、
前記第二の情報処理装置が
前記第一の情報処理装置から接続要求情報を受信した場合には、各インターフェースの通信状況に応じて、前記第一の情報処理装置との通信に使用するインターフェースを選択する第二選択ステップと、
前記第二選択ステップによって選択されたインターフェースを使用して、前記受信された接続要求情報の送信元へ前記受信された接続要求情報に対する応答情報を送信する応答送信ステップと
を含む方法を実行することを特徴とする情報処理システムの通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信プログラム、情報処理装置、情報通信システム及び通信方法に関する。
【背景技術】
【０００２】
従来、複数の情報処理装置がネットワークを使用して相互に情報を送受信するシステムが知られている。このようなシステムの一例として、複数の情報処理装置がＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）ライブラリを利用して相互に情報を送受信するネットワーク分散並列計算機などが知られている。
【０００３】
このようなシステムの情報処理装置は、ＨＣＡ（Ｈｏｓｔ  Ｃｈａｎｎｅｌ  Ａｄａｐｔｅｒ）やＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークインターフェースを複数有する。そして、情報処理装置は、ネットワークインターフェースを使用して他の情報処理装置と情報の送受信を行う。
【０００４】
このような構成のもと、相互に対応付けられた複数のネットワークインターフェースから、自装置の通信状況に応じて、通信に使用するネットワークインターフェースを選択する技術が知られている。以下、図１４を用いて、通信に使用するネットワークインターフェースを選択する処理について説明する。図１４は、従来の送受信処理を説明するための図である。なお、図１４に示す例では、情報処理装置＃１のＮＩＣ＃１は、情報処理装置＃３のＮＩＣ＃５と対応付けられているものとする。
【０００５】
まず、情報処理装置＃１は、情報処理装置＃３に情報を送信する場合には、自装置の通信状況に応じて、送信元のネットワークインターフェースを自装置が有するＮＩＣ＃１〜＃２から選択する。図１４に示す例では、情報処理装置＃１は、ＮＩＣ＃１を送信元のネットワークインターフェースとして選択する。そして、情報処理装置＃１は、送信先のネットワークインターフェースとして、ＮＩＣ＃１と対応付けられたＮＩＣ＃５を使用して情報処理装置＃３へ情報を送信する。
【０００６】
また、複数のネットワークインターフェースを使用して他の情報処理装置と情報の送受信を行う技術として、分割された情報をそれぞれ独立した経路で送信するトランキングという技術が知られている。例えば、図１５に示す例では、トランキングの技術が適用された情報処理装置＃１は、送信されるデータを４つのデータ＃１〜＃４に分割し、それぞれ異なるネットワークインターフェースを使用して情報処理装置＃２へ同時に送信する。なお、図１５は、トランキングを説明するための図である。
【０００７】
また、トランキングの技術が適用された情報処理装置は、ネットワークインターフェース間を接続する経路（以下、リンクという）がそれぞれ独立しているファットツリー型のネットワークに接続される。例えば、図１６に示す例では、各情報処理装置＃１〜＃２は、ＮＩＣ＃１からＮＩＣ＃３を接続するリンクと、ＮＩＣ＃２からＮＩＣ＃４を接続するリンクとが独立したファットツリー型のネットワークに接続される。なお、図１６は、ファットツリー構造のネットワークを説明するための図である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−１２１４１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述したネットワークインターフェースを選択する技術では、送信元の通信状況に応じて、送信先のネットワークインターフェースが選択されるので、送信先での競合を発生させる場合がある。つまり、情報処理装置は、送信先の通信状況と関係なく通信に使用するネットワークインターフェースを選択するので、送信先のネットワークインターフェースで競合を発生させる場合がある。このため、情報処理装置は、システム全体のスループットを悪化させてしまうという問題があった。
【００１０】
例えば、図１７に示す例では、ＮＩＣ＃３は、ＮＩＣ＃５と対応付けられており、ＮＣ＃５は、通信中であるものとする。図１７は、競合を説明するための図である。図１７に示す例では、情報処理装置＃２は、自装置の通信状況に応じて、通信に使用するＮＩＣとしてＮＩＣ＃３を選択する。
【００１１】
そして、情報処理装置＃２は、送信先のＮＩＣとして、ＮＩＣ＃３に対応付けられたＮＩＣ＃５を選択する。このため、図１７中星印で示すように、情報処理装置＃１と情報処理装置＃２とがＮＩＣ＃５を同時に使用して通信することとなり、情報処理装置＃３へ送信される情報がＮＩＣ＃５に集中するため、ＮＩＣ＃５で競合を発生させてしまう。
【００１２】
この結果、情報を受信するための待ち行列がＮＩＣ＃５で発生し、ＮＩＣ＃５がボトルネックとなるため、システム全体のスループットを悪化させてしまうという問題があった。なお、情報処理装置は、あらかじめ対応付けられたネットワークインターフェースの組を使用して情報を送信するので、ネットワークインターフェースの組み合わせパターンが限定されてしまう。この結果、特定のネットワークインターフェースを利用することによる競合が頻繁に発生しやすい。
【００１３】
また、上述したトランキングの技術では、ネットワークインターフェース同士を接続するリンクごとに異なる情報を同時に送信する。このため、情報処理装置は、各ネットワークインターフェースがリンクを共用する構造のネットワークに接続された場合には、スループットを悪化させてしまうという問題があった。
【００１４】
例えば、図１８に例示するように、各情報処理装置＃１〜＃２がメッシュネットワークに接続されている場合には、図１８中のＡに示す共用のリンクを使用するための順番待ちが発生し、システム全体のスループットが悪化してしまうという問題があった。図１８は、メッシュネットワークを説明するための図である。
【００１５】
一つの側面では、本発明は、ネットワークインタフェースの競合の抑制を図ることを目的とする。
【課題を解決するための手段】
【００１６】
本願に開示の技術は、一つの態様によれば、各インターフェースの通信状況に応じて、通信に使用するインターフェースを選択する通信プログラムである。また、通信プログラムは、選択されたインターフェースを使用して、他の情報処理装置へ接続要求情報を送信する。その後、通信プログラムは、接続要求情報に対する応答情報を他の情報処理装置から受信した場合には、受信された応答情報から、他の情報処理装置が応答情報を送信するために使用したインターフェースを特定する。そして、通信プログラムは、接続要求情報を送信するために使用したインターフェースと、特定されたインターフェースとを使用して、他の情報処理装置と情報の送受信を行う。
【発明の効果】
【００１７】
一つの態様によれば、ネットワークインタフェースの競合の抑制を抑制することができる。
【図面の簡単な説明】
【００１８】
【図１】図１は、実施例１に係る情報処理装置を説明するためのブロック図である。
【図２】図２は、実施例２に係る情報処理システムを説明するための図である。
【図３】図３は、実施例２に係るコンピュータを説明するためのブロック図である。
【図４】図４は、保留された処理を説明するための図である。
【図５】図５は、保留された処理の実行を説明するための図である。
【図６】図６は、実施例２に係るコンピュータの効果を説明するための図である。
【図７】図７は、接続要求情報と接続要求情報に対する応答情報とを説明するための図である。
【図８】図８は、情報の送受信を説明するための図である。
【図９】図９は、Ｒｅｎｄｅｚｖｏｕｓ要求を送信する処理について説明するための図である。
【図１０】図１０は、受信側のコンピュータがＮＩＣを選択する処理を説明するための図である。
【図１１】図１１は、実施例２に係るコンピュータが情報を送受信する処理を説明するための図である。
【図１２】図１２は、実施例２に係るコンピュータが実行する処理の流れを説明するためのシーケンス図である。
【図１３】図１３は、通信プログラムを実行するコンピュータの一例を説明するための図である。
【図１４】図１４は、従来の送受信処理を説明するための図である。
【図１５】図１５は、トランキングを説明するための図である。
【図１６】図１６は、ファットツリー構造のネットワークを説明するための図である。
【図１７】図１７は、競合を説明するための図である。
【図１８】図１８は、メッシュネットワークを説明するための図である。
【発明を実施するための形態】
【００１９】
以下に添付図面を参照して本願に係る通信プログラム、情報処理装置、情報通信システム及び通信方法について説明する。
【実施例１】
【００２０】
以下の実施例１では、図１を用いて、情報処理装置の一例を説明する。図１は、実施例１に係る情報処理装置を説明するためのブロック図である。なお、情報処理装置は、少なくとも、同様の通信プログラムを実行する情報処理装置と相互に通信を行う情報処理装置である。
【００２１】
図１に示すように、情報処理装置１は、第一選択部２、接続要求送信部３、特定部４、通信部５、第二選択部６、応答送信部７、インターフェース８ａ〜８ｃを有する。また、情報処理装置１は、情報処理装置１と同一の機能を有する情報処理装置１ａとネットワークを介して通信を行う。なお、情報処理装置１ａが有する各部２ａ〜７ａ、８ｄ〜８ｆは、情報処理装置１が有する各部２〜７、８ａ〜８ｃと同様の機能を発揮するものとし、情報処理装置１ａの各部についての説明は省略する。
【００２２】
第一選択部２は、各インターフェース８ａ〜８ｃの通信状況に応じて、通信に使用するインターフェースを選択する。接続要求送信部３は、第一選択部２によって選択されたインターフェースを使用して、情報処理装置１ａへ接続要求情報を送信する。
【００２３】
特定部４は、接続要求送信部３によって送信された接続要求情報に対する応答情報を情報処理装置１ａから受信した場合には、受信された応答情報から情報処理装置１ａが応答情報を送信するために使用したインターフェースを特定する。通信部５は、接続要求送信部３が接続要求情報を送信するために使用したインターフェースと特定部４によって特定されたインターフェースとを使用して、情報処理装置１ａと情報の送受信を行う。
【００２４】
つまり、情報処理装置１が送信側であり、情報処理装置１ａが受信側である場合に、送信側である情報処理装置１は、自装置に都合の良いインターフェースを使用して接続要求情報を送信する。そして、情報処理装置１は、受信側の情報処理装置１ａが選択したインターフェースを特定し、特定された受信側に都合の良いインターフェースを使って通信する。
【００２５】
第二選択部６は、情報処理装置１ａから接続要求情報を受信した場合には、各インターフェース８ａ〜８ｃの通信状況に応じて、情報処理装置１ａとの通信に使用するインターフェースを選択する。応答送信部７は、第二選択部６によって選択されたインターフェースを使用して、情報処理装置１ａへ接続要求情報に対する応答情報を送信する。
【００２６】
つまり、情報処理装置１が受信側であり、情報処理装置１ａが送信側である場合に、受信側である情報処理装置１は、受信側に都合の良いインターフェースを選択し、選択したインターフェースを使用して応答情報を情報処理装置１ａに通知する。
【００２７】
上述したように、情報処理装置１は、自装置の通信状態に応じて選択されたインターフェースを使用して接続要求情報を情報処理装置１ａへ送信する。また、情報処理装置１は、送信した接続要求情報に対する応答情報を情報処理装置１ａから受信した場合には、受信された応答情報から、情報処理装置１ａが使用したインターフェースを特定する。そして、情報処理装置１は、接続要求情報を送信するために使用したインターフェースと特定されたインターフェースとを使用して、情報処理装置１ａと情報の送受信を行う。
【００２８】
また、情報処理装置１ａは、接続要求情報を受信した場合には、各インターフェース８ｄ〜８ｆの通信状態に応じて、情報処理装置１との通信に使用されるインターフェースを選択する。そして、情報処理装置１ａは、選択されたインターフェースを用いて、応答情報を送信する。
【００２９】
このため、情報処理装置１は、情報の送信先となる情報処理装置１ａの通信状態に応じて、通信に用いるインターフェースを選択することができる。また、情報処理装置１は、通信に用いるインターフェースを限定せずに、情報の送受信を行う事ができる。このため、情報処理装置１は、送信側と受信側との通信状況に応じて、使用するネットワークインターフェースを決定することで、ネットワークインタフェースの競合を抑制する。また、情報処理装置１は、スループットを向上させる。
【実施例２】
【００３０】
以下の実施例２では通信プログラムを実行するコンピュータを複数有する情報処理システムを説明する。
【００３１】
まず、図２を用いて、実施例２に係る情報処理システムを説明する。図２は、実施例２に係る情報処理システムを説明するための図である。図２に示すように、情報処理システムは、複数のコンピュータ２０〜２５を有する。各コンピュータ２０〜２５は、それぞれ４つのＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）を有する。ＮＩＣ３０〜５０は、ネットワークを介して、各コンピュータ２０〜２５を接続する。また、各コンピュータ２０〜２５は、ネットワークを介して各ＮＩＣ３０〜５０によってそれぞれ接続されている。
【００３２】
各コンピュータ２０〜２５は、同一のプログラムを実行することで、同様の処理を行うものとする。以下の説明では、コンピュータ２０が有する各部について説明し、他のコンピュータ２１〜２５については、説明を省略する。
【００３３】
次に、図３を用いて、コンピュータ２０が有する各部について説明する。図３は、実施例２に係るコンピュータを説明するためのブロック図である。図３に示す例では、コンピュータ２０は、４つのＮＩＣ３０〜３３を有する。また、コンピュータ２０は、プロセス実行部１０、情報記憶部１６を有する。以下に各部について説明する。
【００３４】
情報記憶部１６は、他のコンピュータ２１〜２５へ送信する情報を一時的に記憶する。また、情報記憶部１６は、他のコンピュータ２１〜２５からＮＩＣ３０〜３３を使用して受信した情報を一時的に記憶する。
【００３５】
ＮＩＣ３０は、ネットワークを介して、他のコンピュータ２１〜２５が有する各ＮＩＣ３４〜５３と接続され、各ＮＩＣ３４〜５３との通信処理を制御する。具体的には、ＮＩＣ３０は、他のコンピュータ２１〜２５の各ＮＩＣ３４〜５３から接続要求情報を受信した場合には、受信された接続要求情報を応答送信部１３へ転送する。
【００３６】
例えば、ＮＩＣ３０は、コンピュータ２５のＮＩＣ５０から接続要求情報を受信した場合には、受信された接続要求情報を応答送信部１３へ転送する。また、ＮＩＣ３０は、コンピュータ２５のＮＩＣ５１から情報を受信した場合には、受信された情報を通信部１４に転送する。
【００３７】
また、ＮＩＣ３０は、コンピュータ２５のＮＩＣ５１に応答情報を送信する関数呼び出し情報を保留部１５から取得した場合には、コンピュータ２５のＮＩＣ５１を送信先として応答情報を送信する。また、ＮＩＣ３０は、保留部１５から、コンピュータ２５のＮＩＣ５１を使用して情報の送信を行うための関数呼び出し情報を取得した場合には、コンピュータ２５のＮＩＣ５１に対して、情報を送信する。
【００３８】
プロセス実行部１０は、実施例２に係る通信プログラムを実行する。具体的には、プロセス実行部１０は、選択部１１、接続要求送信部１２、応答送信部１３、通信部１４、保留部１５を有する。そして、プロセス実行部１０は、各部１１〜１５を用いて、通信プログラムを実行し、他のコンピュータ２１〜２５と情報の送受信を実行する。
【００３９】
以下の説明では、プロセス実行部１０が有する各部の機能について説明する。また、以下の説明では、プロセス実行部１０が、ＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）ライブラリを使用してコンピュータ２０が有する情報を他のコンピュータ２５へ送信する例について説明する。
【００４０】
保留部１５は、通信予約を各ＮＩＣごとに一時的に保留する。また、保留部１５は、通信を終了したＮＩＣに係る通信予約のうち、最初に保留された通信予約が示す処理を実行する。ここで、通信予約とは、通信処理を各ＮＩＣ３０〜３３に実行させるために必要な関数呼び出しを識別する情報であり、例えば、「ＭＰＩ＿Ｉｓｅｎｄ」や「ＭＰＩ＿Ｉｒｅｃｖ」等である。
【００４１】
具体的には、保留部１５は、接続要求送信部１２、応答送信部１３及び通信部１４から送信された通信予約を受信する。そして、保留部１５は、通信予約を実行するＮＩＣが通信中である場合には、受信された通信予約を一時的に保留する。その後、保留部１５は、受信された通信予約を実行するＮＩＣが通信を終了した場合には、保留された通信予約のうち、通信を終了したＮＩＣを使用する通信予約であって、かつ、最初に記憶された通信予約をＮＩＣに通知する。そして、保留部１５は、通知された通信予約に係る通信処理が終了した場合には、終了した通信処理に係る通信予約を消去する。
【００４２】
例えば、保留部１５は、図４に示す例では、ＮＩＣ３０の通信予約を１件、ＮＩＣ３１の通信予約を２件、ＮＩＣ３２の通信予約を３件、ＮＩＣ３３の通信予約を４件記憶している。また、保留部１５は、図４中の点線で例示するように、ＮＩＣ３０が実行する通信予約を新たに受信した場合には、ＮＩＣ３０に対応付けて、通信予約を新たに記憶する。図４は、保留された処理を説明するための図である。
【００４３】
また、図５に示す例では、保留部１５は、ＮＩＣ３０を使用する通信予約を３件、ＮＩＣ３１を使用する通信予約を１件、ＮＩＣ３２を使用する通信予約を２件、ＮＩＣ３３を使用する通信予約を３件記憶している。図５は、保留された処理の実行を説明するための図である。この例では、保留部１５は、ＮＩＣ３０が実行中の通信処理が終了した場合には、図５の点線で示すように、ＮＩＣ３０が実行した通信予約を消去する。
【００４４】
ここで、保留部１５は、ＮＩＣ３０の通信予約を実行する場合には、通信予約に含まれる関数呼び出しを識別する情報をＮＩＣ３０に送信する。ＮＩＣ３０は、保留部１５から関数呼び出しを識別する情報を取得した場合には、取得された関数呼び出しを識別する情報に応じた処理を実行する。
【００４５】
このように、保留部１５は、ＮＩＣ３０〜３３が通信中に接続要求送信部１２、応答送信部１３、通信部１４によって生成された通信予約を受信した場合には、通信予約を一時的に保留する。そして、保留部１５は、保留された通信予約が使用するＮＩＣが通信処理を終了し、新たな通信予約に係る通信処理を実行することができる場合には、保留された通信予約に係る通信処理を実行させる。また、保留部１５は、保留された処理を関数呼び出しを識別する情報で記憶し、通信予約が格納されたメモリのアドレスを通信予約の順番管理に使用する。
【００４６】
図３に戻って、選択部１１は、各ＮＩＣ３０〜３３の通信状況に応じて、通信に使用するＮＩＣを選択する。また、選択部１１は、他のコンピュータ２１〜２５から接続要求情報を受信した場合には、各ＮＩＣ３０〜３３の通信状況に応じて、他のコンピュータ２１〜２５との通信に使用するＮＩＣを選択する。
【００４７】
また、選択部１１は、各ＮＩＣ３０〜３３を使用するための通信予約に応じて、他のコンピュータ２１〜２５への情報の送信に使用されるＮＩＣを選択する。また、選択部１１は、各ＮＩＣ３０〜３３を使用するための通信予約に応じて、他のコンピュータ２１〜２５からの情報の受信に使用されるＮＩＣを選択する。
【００４８】
具体的には、選択部１１は、後述する接続要求送信部１２からＮＩＣを選択する旨の指示を受けた場合には、保留部１５によって保留された通信予約が最も少ないＮＩＣを選択する。そして、選択部１１は、選択されたＮＩＣを接続要求送信部１２に通知する。
【００４９】
また、選択部１１は、後述する応答送信部１３からＮＩＣを選択する旨の指示を受けた場合にも同様に、保留部１５によって保留された通信予約が最も少ないＮＩＣを選択する。そして、選択部１１は、選択されたＮＩＣを応答送信部１３に通知する。
【００５０】
ここで、図４の例を用いて、選択部１１が実行する処理を説明する。例えば、選択部１１は、後述する接続要求送信部１２から、ＮＩＣを選択する旨の指示を取得した場合には、保留部１５によって保留された各ＮＩＣ３０〜３３を使用する処理を識別する。
【００５１】
ここで、保留部１５は、図４に示す例では、ＮＩＣ３０の通信予約を１件、ＮＩＣ３１の通信予約を２件、ＮＩＣ３２の通信予約を３件、ＮＩＣ３３の通信予約を４件記憶している。このため、選択部１１は、保留された処理が最も少ないＮＩＣ３０を選択する。つまり、選択部１１は、通信に使用するＮＩＣとしてＮＩＣ３０を選択する。そして、選択部１１は、ＮＩＣ３０を接続要求送信部１２へ通知する。
【００５２】
また、選択部１１は、応答送信部１３からＮＩＣを選択する旨の指示を取得した場合には、保留部１５によって保留された通信予約の件数に基づいて、通信に使用するＮＩＣとしてＮＩＣ３０を選択する。その後、選択部１１は、ＮＩＣ３０を接続要求送信部１２へ通知する。
【００５３】
図３に戻って、接続要求送信部１２は、選択部１１によって選択されたＮＩＣを使用して、他のコンピュータへ接続要求情報を送信する。具体的には、接続要求送信部１２は、情報を送信する旨の通知を通信部１４から取得した場合には、ＮＩＣを選択する旨の指示を選択部１１へ送信する。また、接続要求送信部１２は、後述するように、情報の送信先となるコンピュータを通信部１４から通知される。
【００５４】
そして、接続要求送信部１２は、選択部１１から通信に使用するＮＩＣを通知された場合には、送信先のコンピュータが有するＮＩＣのうち、選択部１１から通知されたＮＩＣに対応付けられたＮＩＣを判別する。また、接続要求送信部１２は、選択部１１から通知されたＮＩＣのアドレスを含む接続要求情報を生成する。そして、接続要求送信部１２は、選択部１１から通知されたＮＩＣと判別されたＮＩＣとを使用して接続要求情報を送信する処理を通信予約として保留部１５に送信する。
【００５５】
例えば、接続要求送信部１２は、コンピュータ２５に情報を送信する旨の通知を通信部１４から取得した場合には、ＮＩＣを選択する旨の指示を選択部１１へ送信する。また、接続要求送信部１２は、選択部１１から通信に使用するＮＩＣとしてＮＩＣ３０を通知される。
【００５６】
接続要求送信部１２は、通信に使用するＮＩＣとしてＮＩＣ３０が通知された場合には、コンピュータ２５が有するＮＩＣ５０〜５３のうち、通知されたＮＩＣ３０に対応付けられたＮＩＣであるＮＩＣ５０を判別する。また、接続要求送信部１２は、接続要求情報として、ＮＩＣ３０のアドレスを含んだ接続要求情報を生成する。そして、接続要求送信部１２は、生成された接続要求情報をＮＩＣ３０とＮＩＣ５０を使用してコンピュータ２５へ送信する処理を示す通信予約を生成する。その後、接続要求送信部１２は、生成された通信予約を保留部１５に送信する。
【００５７】
応答送信部１３は、選択部１１によって選択されたＮＩＣを使用して、接続要求情報の送信元へ接続要求情報に対する応答情報を送信する。また、応答送信部１３は、選択部１１によって選択されたＮＩＣを一意に特定するアドレスを含んだ応答情報を送信する。
【００５８】
具体的には、応答送信部１３は、他のコンピュータ２０〜２５から送信された接続要求情報を受信した場合には、ＮＩＣを選択する旨の指示を選択部１１へ送信する。また、応答送信部１３は、受信された接続要求情報に含まれるＮＩＣのアドレスに基づいて、受信された接続要求情報を送信するために使用された送信元のＮＩＣを判別する。
【００５９】
また、応答送信部１３は、通信に使用されるＮＩＣを選択部１１から通知された場合には、選択部１１から通知されたＮＩＣのアドレスを含む応答情報を生成する。そして、応答送信部１３は、選択部１１から通知されたＮＩＣと接続要求の送信元が使用したＮＩＣとを使用して、生成された応答情報を送信する処理を示す通信予約を生成する。
【００６０】
その後、応答送信部１３は、生成された通信予約を保留部１５に送信する。また、応答送信部１３は、接続要求情報を受信した場合には、他のコンピュータから情報が送信されてくる旨の通知を通信部１４に送信する。
【００６１】
ここで、応答送信部１３が実行する処理の例を説明するが、以下の例では、応答送信部１３は、コンピュータ２５から送信された接続要求情報を受信するものとする。また、コンピュータ２５は、ＮＩＣ５１とＮＩＣ３１を使用して接続要求情報を送信したものとする。例えば、応答送信部１３は、コンピュータ２５から送信された接続要求情報をＮＩＣ３１を介して受信した場合には、ＮＩＣを選択する旨の指示を選択部１１へ送信する。
【００６２】
また、応答送信部１３は、受信された応答情報に基づいて、受信された接続要求情報を送信するために使用されたコンピュータ２５のＮＩＣ５１を判別する。また、応答送信部１３は、通信に使用するＮＩＣとしてＮＩＣ３０を選択部１１から通知された場合には、ＮＩＣ３０のアドレスを含んだ応答情報を生成する。そして、応答送信部１３は、生成された応答情報をＮＩＣ３０とＮＩＣ５１とを使用してコンピュータ２５に送信する処理を示す通信予約を生成する。その後、応答送信部１３は、生成された通信予約を保留部１５に送信する。
【００６３】
通信部１４は、接続要求送信部１２によって送信された接続要求情報に対する応答情報を、他のコンピュータ２１〜２５から受信した場合には、受信された応答情報から、他のコンピュータ２１〜２５が応答情報を送信するために使用したＮＩＣを特定する。また、通信部１４は、応答情報を他のコンピュータ２１〜２５から受信した場合には、受信された応答情報から、他のコンピュータ２１〜２５に係る選択部によって選択されたＮＩＣを一意に特定するアドレスを識別する。
【００６４】
そして、通信部１４は、識別されたアドレスから、応答情報を送信したコンピュータが応答情報を送信するために使用したＮＩＣを特定する。そして、通信部１４は、接続要求送信部１２が接続要求情報を送信するために使用したＮＩＣと特定されたＮＩＣとを使用して、他のコンピュータ２１〜２５と情報の送受信を行う。
【００６５】
具体的には、通信部１４は、情報記憶部１６に記憶された情報を他のコンピュータ２１〜２５のいずれかに送信する場合には、情報を送信する旨の通知を接続要求送信部１２へ送信する。また、通信部１４は、情報の送信先となるコンピュータを接続要求送信部１２に通知する。
【００６６】
また、通信部１４は、コンピュータ２０から送信された接続要求情報に対する応答情報を他のコンピュータより受信する。また、通信部１４は、応答情報を受信した場合には、受信された応答情報に含まれているＮＩＣのアドレスに基づいて、受信された応答情報を送信するために使用された送信元のＮＩＣを判別する。
【００６７】
そして、通信部１４は、応答情報を受信したコンピュータ２０のＮＩＣと、判別された送信元のＮＩＣとを使用して情報記憶部１６に記憶された情報を送信先のコンピュータへ送信する処理を実行する。つまり、通信部１４は、処理を示す通信予約を生成し、生成された通信予約を保留部１５に送信する。
【００６８】
また、通信部１４は、他のコンピュータから情報が送信されてくる旨の通知を応答送信部１３から取得した場合には、送信されてくる情報を格納するための領域を情報記憶部１６に確保する。そして、通信部１４は、他のコンピュータから送信された情報を各ＮＩＣ３０〜３３のいずれかが受信した場合には、受信された情報を取得し、情報記憶部１６に確保された領域に取得された情報を格納する。
【００６９】
ここで、通信部１４が実行する処理の例を説明するが、以下の例では、通信部１４は、応答情報をコンピュータ２５から受信するものとする。また、コンピュータ２５はＮＩＣ５１とＮＩＣ３０とを使用して応答情報を送信したものとする。
【００７０】
例えば、通信部１４は、コンピュータ２０からコンピュータ２５へ送信された接続要求情報に対する応答情報をＮＩＣ３０を使用して受信した場合には、応答情報に含まれたＮＩＣのアドレスに基づいて、送信元のＮＩＣ５１を判別する。そして、通信部１４は、ＮＩＣ３０とＮＩＣ５１とを使用して情報記憶部１６に記憶された情報をコンピュータ２５へ送信する処理を示す通信予約を生成する。その後、通信部１４は、生成された通信予約を保留部１５に送信する。
【００７１】
また、通信部１４は、コンピュータ２５から情報が送信されてくる旨の通知を応答送信部１３から取得した場合には、送信されてくる情報を格納するための領域を情報記憶部１６に確保する。そして、通信部１４は、コンピュータ２５から送信された情報をＮＩＣ３１が受信した場合には、受信された情報を取得し、情報記憶部１６に確保された領域に取得された情報を格納する。
【００７２】
このように、コンピュータ２０は、コンピュータ２５に情報を送信する場合には、自装置の各ＮＩＣ３０〜３３のうち、情報の送受信処理に最適なＮＩＣを使用してコンピュータ２５に接続要求情報を送信する。また、コンピュータ２５は、接続要求情報に対応する応答情報を、自装置の各ＮＩＣ５０〜５３のうち、情報の送受信処理に最適なＮＩＣを使用してコンピュータ２０に応答情報を送信する。そして、コンピュータ２０は、コンピュータ２５から応答情報を受信した場合には、自装置が接続要求情報を送信するために使用したＮＩＣと、コンピュータ２５が応答情報を送信するために使用したＮＩＣとを用いて、情報の送受信処理を実行する。
【００７３】
つまり、コンピュータ２０は、自装置の通信状況だけではなく、コンピュータ２５の通信状況も考慮して通信に使用されるＮＩＣを選択する。このため、コンピュータ２０は、情報の送受信処理に最適な自装置のＮＩＣと、情報の送受信処理に最適な送信先のＮＩＣとを使用して情報の送受信処理を実行することができる。この結果、コンピュータ２０は、送信先のＮＩＣで競合を起こす可能性を低くすることができる結果、システム全体のスループットを改善することができる。
【００７４】
また、コンピュータ２０は、情報を送受信するために使用されるＮＩＣの組み合わせを限定することなく、情報の送受信を実行することができる。例えば、Ｎ個のＮＩＣを有する２台のコンピュータが情報の送受信を行う場合には、使用されるＮＩＣの組み合わせの数はＮの累乗個となる。このため、図６に示すように、コンピュータ２０は、インターフェースの組み合わせが多く、ネットワークインタフェースの競合を抑制することができる。この結果、コンピュータ２０は、システム全体のスループットを改善することができる。図６は、実施例２に係るコンピュータの効果を説明するための図である。
【００７５】
次に、図７を用いて、接続要求情報と、接続要求情報に対する応答情報とを送受信する具体例を説明する。図７は、接続要求情報と接続要求情報に対する応答情報とを説明するための図である。図７に示す例では、コンピュータ２０及びコンピュータ２５は、Ｒｅｎｄｅｚｖｏｕｓプロトコルを利用してメッセージ通信を実行するアプリケーションプログラムを実行するものする。
【００７６】
このアプリケーションプログラムは、上述したプロセス実行部１０によって実行されるものとする。また、図７に示す例では、コンピュータ２０、及び、コンピュータ２５は、ＭＰＩライブラリを使用して接続要求情報と応答情報とを送受信するものとする。なお、各コンピュータが有するＮＩＣのうち、ＮＩＣ３２〜３３、５２〜５３については、図示を省略した。
【００７７】
まず、コンピュータ２０で実行されるアプリケーションプログラムは、接続要求情報として、「ＭＰＩ＿Ｉｓｅｎｄ」を呼び出すことによって、ＮＩＣ３０からＲｅｎｄｅｚｖｏｕｓ要求をコンピュータ２５へ送信する。コンピュータ２５で実行されるアプリケーションプログラムは、ＮＩＣ３０から送信されたＲｅｎｄｅｚｖｏｕｓ要求を受信すると、メモリ上にデータ領域を作成する。
【００７８】
また、コンピュータ２５で実行されるアプリケーションプログラムは、自装置にとって情報の送受信を行うのに適切なＮＩＣであるＮＩＣ５１を選択する。そして、コンピュータ２５で実行されるアプリケーションプログラムは、「ＭＰＩ＿Ｉｒｅｃｖ」を呼び出して、Ｒｅｎｄｅｚｖｏｕｓ応答を応答情報としてコンピュータ２０へ送信する。
【００７９】
この時、コンピュータ２５は、Ｒｅｎｄｅｚｖｏｕｓ応答をＮＩＣ５１から送信することで、コンピュータ２５にとって情報の受信を行うために適切なＮＩＣをコンピュータ２０のアプリケーションプログラムに通知することとなる。
【００８０】
このように、受信側のアプリケーションは、送信側のアプリケーションプログラムからＲｅｎｄｅｚｖｏｕｓ要求を受信した場合には、情報を受信するための準備、つまり、データ領域の作成、及び、使用するＮＩＣの選択を実行する。そして、受信側のアプリケーションは、情報を受信するための準備が終了した場合には、Ｒｅｎｄｅｚｖｏｕｓ応答をＲｅｎｄｅｚｖｏｕｓ要求の送信元へ送信する。
【００８１】
次に、図８を用いて、コンピュータ２０の情報をコンピュータ２５へ送信する処理の流れを説明する。図８は、情報の送受信を説明するための図である。まず、コンピュータ２０は、Ｒｅｎｄｅｚｖｏｕｓ要求を送信するためのＮＩＣとして、自装置のＮＩＣ３１を選択する。次に、コンピュータ２０は、ＮＩＣ３１からＲｅｎｄｅｚｖｏｕｓ要求を送信する。ここで、Ｒｅｎｄｅｚｖｏｕｓ要求には、ＮＩＣ３１のアドレスである「Ｓｅｎｄ  ＮＩＣ：３１」と、送信される情報を格納したメモリアドレスを示す情報である「Ｓｅｎｄ  Ａｄｄｒｅｓｓ：Ｘ」とが格納される。
【００８２】
コンピュータ２５は、ＮＩＣ３１から送信されたＲｅｎｄｅｚｖｏｕｓ要求を受信した場合には、情報を受信するためのＮＩＣとして、自装置のＮＩＣ５２を選択する。そして、コンピュータ２５は、Ｒｅｎｄｅｚｖｏｕｓ応答として「ＧＥＴ」をＮＩＣ５２から送信する。
【００８３】
ここで、Ｒｅｎｄｅｚｖｏｕｓ応答として送信された「ＧＥＴ」には、Ｒｅｎｄｅｚｖｏｕｓ要求に格納された情報に加えて、コンピュータ２５によって選択されたＮＩＣ５２のアドレスである「Ｒｅｃｖ  ＮＩＣ：５２」が格納される。また、Ｒｅｎｄｅｚｖｏｕｓ応答として送信された「ＧＥＴ」には、送信される情報を格納するコンピュータ２５のメモリアドレス「Ｒｅｃｖ  Ａｄｄｒｅｓｓ：Ｙ」が格納される。
【００８４】
コンピュータ２０は、Ｒｅｎｄｅｚｖｏｕｓ応答として送信された「ＧＥＴ」を受信した場合には、受信された「ＧＥＴ」に格納された情報に従って、自装置の情報をコンピュータ２５へ送信する。つまり、コンピュータ２０は、ＮＩＣ３１とＮＩＣ５２とを使用して、自装置のメモリアドレスＸに格納されたデータを、コンピュータ２５のメモリアドレスＹへ送信する。
【００８５】
次に、図９〜１１を用いて、実施例２に係るコンピュータが実行する通信処理の流れを説明する。まず、図９を用いて、Ｒｅｎｄｅｚｖｏｕｓ要求を送信する処理について説明する。図９は、Ｒｅｎｄｅｚｖｏｕｓ要求を送信する処理について説明するための図である。
【００８６】
図９に示す例では、コンピュータ２０は、プロセスの中で送信関数「ＭＰＩ＿Ｉｓｅｎｄ」が呼び出されると、コンピュータ２０が有する各ＮＩＣ３０〜３３のうち、最も空いているＮＩＣ３０を選択する。そして、コンピュータ２０は、「ＭＰＩ＿Ｉｓｅｎｄ」によって送信される情報のメモリアドレス情報とＮＩＣ３０のアドレスとを含むＲｅｎｄｅｚｖｏｕｓ要求を、ＮＩＣ３０を使用して送信する。
【００８７】
次に、図１０を用いて、受信側のコンピュータがＮＩＣを選択する処理について説明する。図１０は、受信側のコンピュータがＮＩＣを選択する処理を説明するための図である。図１０に示す例では、コンピュータ２５は、コンピュータ２０で呼び出された「ＭＰＩ＿Ｉｓｅｎｄ」に対応する「ＭＰＩ＿Ｉｒｅｃｖ」が呼び出された場合には、コンピュータ２０が送信したＲｅｎｄｅｚｖｏｕｓ要求を受信する。次に、コンピュータ２５は、最も空いているＮＩＣ５１を選択する。
【００８８】
次に、図１１を用いて、コンピュータが情報を送受信する処理について説明する。図１１は、実施例２に係るコンピュータが情報を送受信する処理を説明するための図である。図１１に示す例では、コンピュータ２５は、ＮＩＣ５１と、コンピュータ２０が情報を送信するのに最適なＮＩＣであるＮＩＣ３０とを使用して、「ＧＥＴ」をコンピュータ２０へ送信する。
【００８９】
そして、コンピュータ２５は、図１１中の点線で示すように、ＮＩＣ３０とＮＩＣ５１とを使用して、情報を受信する。なお、「ＧＥＴ」には、ＮＩＣ３０を示す情報、コンピュータ２０から送信される情報のアドレス、ＮＩＣ５１を示す情報、及びコンピュータ２５が情報を格納するアドレスが含まれる。また、図１１に示す例では、コンピュータ２５は、「ＧＥＴ」によるＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送によって、情報を受信する。
【００９０】
［コンピュータの処理の流れ］
次に、図１２を用いて、実施例２に係るコンピュータが実行する処理の流れを説明する。図１２は、実施例２に係るコンピュータが実行する処理の流れを説明するためのシーケンス図である。図１２に示す例では、コンピュータ２０は、実行するプロセスによって「ＭＰＩ＿Ｉｓｅｎｄ」が呼び出されたことをトリガとして処理を開始する。また、コンピュータ２５は、実行するプロセスによって「ＭＰＩ＿Ｉｒｅｃｖ」が呼び出されたことをトリガとして処理を開始する。
【００９１】
まず、コンピュータ２０は、情報を送信するのに適切な空きＮＩＣを検索する（ステップＳ１０１）。次に、コンピュータ２０は、Ｒｅｎｄｅｚｖｏｕｓ要求を送信する処理を示す通信予約を追加する（ステップＳ１０２）。次に、コンピュータ２０は、通信予約に係るＲｅｎｄｅｚｖｏｕｓ要求を送信する処理を実行する（ステップＳ１０３）。
【００９２】
一方、コンピュータ２５は、「ＭＰＩ＿Ｉｒｅｃｖ」が呼び出された場合には、対応する「ＭＰＩ＿Ｉｓｅｎｄ」によるＲｅｎｄｅｚｖｏｕｓ要求の受信を待つ（ステップＳ１０４）。そして、コンピュータ２５は、Ｒｅｎｄｅｚｖｏｕｓ要求を受信すると、自装置の空きＮＩＣを検索する（ステップＳ１０５）。
【００９３】
次に、コンピュータ２５は、通信予約リストにＲｅｎｄｅｚｖｏｕｓ応答である「ＧＥＴ」を送信する処理を示す通信予約を追加する（ステップＳ１０６）。そして、コンピュータ２５は、選択された空きＮＩＣにＧＥＴを指示し（ステップＳ１０７）、ＧＥＴの制御信号をコンピュータ２０へ送信する（ステップＳ１０８）。
【００９４】
コンピュータ２０は、制御信号を受信した場合には（ステップＳ１０９）、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）の設定を行う（ステップＳ１１０）。つまり、コンピュータ２０は、ステップＳ１０１にて選択されたＮＩＣとステップＳ１０５にて選択されたＮＩＣとを使用して情報を送信するための設定を行う。
【００９５】
次に、コンピュータ２０は、ステップＳ１０１にて選択されたＮＩＣとステップＳ１０５にて選択されたＮＩＣとを使用して、データをコンピュータ２５へ送信する（ステップＳ１１１）。また、コンピュータ２５は、ステップＳ１０１にて選択されたＮＩＣとステップＳ１０５にて選択されたＮＩＣとを使用して送信されたデータを受信する（ステップＳ１１２）。
【００９６】
そして、コンピュータ２５は、データを受信した場合には、実行したＲｅｎｄｅｚｖｏｕｓ応答に係る通信予約を削除する（ステップＳ１１３）。また、コンピュータ２０は、データを送信した場合には、実行したＲｅｎｄｅｚｖｏｕｓ要求に係る通信予約を削除する（ステップＳ１１４）。
【００９７】
[実施例２の効果]
上述したように、実施例２に係るコンピュータ２０は、コンピュータ２５と通信する場合には、ＮＩＣ３０〜３１の通信状況に応じて、通信に使用するＮＩＣを選択する。そして、コンピュータ２０は、選択されたＮＩＣからコンピュータ２５へ接続要求情報を送信する。また、コンピュータ２５は、接続要求情報を受信した場合には、通信に使用するＮＩＣを選択し、選択されたＮＩＣを使用して、接続要求情報に対する応答をコンピュータ２０へ送信する。
【００９８】
そして、コンピュータ２０は、送信した接続要求情報に対する応答情報を他のコンピュータから受信した場合には、受信した応答情報から、コンピュータ２５が使用したＮＩＣを特定する。その後、コンピュータ２０は、自装置が選択したＮＩＣと、特定されたＮＩＣとを使用して、情報をコンピュータ２５へ送信する。
【００９９】
このため、コンピュータ２０は、情報をコンピュータ２５へ送信する場合には、コンピュータ２５の通信状況に応じたＮＩＣを選択することができる。つまり、送信側と受信側との通信状況に応じて、通信を行うために都合の良いＮＩＣを決定することができる。この結果、コンピュータ２０は、コンピュータ２５でのネットワークインタフェースの競合の抑制することができる。また、コンピュータ２０は、システム全体のスループットを改善することができる。また、コンピュータ２０は、コンピュータ２０とコンピュータ２５が有する全てのＮＩＣを利用することができるため、ネットワークインタフェースの競合を抑制し、システム全体のスループットを向上させることができる。
【０１００】
また、コンピュータ２０は、システムの構造に関係なくネットワークインタフェースの競合を抑制することができるので、システム全体のスループットを向上させることができる。
【０１０１】
また、コンピュータ２０は、インターフェースを使用するための通信予約に応じて、コンピュータ２５との通信に使用されるインターフェースを選択する。また、コンピュータ２０は、ＮＩＣを使用するための通信予約に応じて、コンピュータ２５からの情報の受信に使用されるＮＩＣを選択する。このため、コンピュータ２０は、通信に用いられるＮＩＣを適切に選択することが出来る結果、システム全体のスループットを改善することができる。
【０１０２】
また、コンピュータ２５は、自装置が選択したＮＩＣのアドレスを含んだ応答情報を送信する。このため、コンピュータ２０は、通信に用いられる適切なＮＩＣを選択することができるので、ネットワークインタフェースの競合を抑制し、システム全体のスループットを向上させることができる。
【０１０３】
また、メッセージ通信のたびに送信側と受信側とで互いに適切なネットワークインターフェースを調べ、その情報を相互で共有するのは、情報共有のための通信が別途必要となり、オーバーヘッドが大きくなる結果、システムのスループットを悪化させてしまう。
【０１０４】
しかし、各コンピュータ２０〜２５は、Ｒｅｎｄｅｚｖｏｕｓ要求とＲｅｎｄｅｚｖｏｕｓ応答のやり取りを利用することによって、自装置が通信に用いたいＮＩＣを通知するので、ごく少ないオーバーヘッドで情報を共有することができる。この結果、各コンピュータ２０〜２５は、効率的にネットワークインターフェース利用頻度を平準化し、システム全体のスループットを向上させる。
【０１０５】
なお、本実施例の説明においては、コンピュータ２０とコンピュータ２５との通信について説明した。しかし、本実施例に開示の発明は、コンピュータ２０とコンピュータ２５との間の通信のみならず、任意のコンピュータ間における通信について、適用することができ、同様の効果を奏することは言うまでもない。
【実施例３】
【０１０６】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例３として本発明に含まれる他の実施例を説明する。
【０１０７】
（１）ＮＩＣについて
上述した実施例では、ネットワークインターフェースを有する情報処理装置の一例として、ＮＩＣ（Network Interface Card）を有するコンピュータについて説明した。しかし、実施例は、これに限定されるものではなく、例えば、ネットワークインターフェースとして、ＨＣＡ（Host Channel Adapter）やＳＣＳＩ（Small Computer System Interface）であってもよい。
【０１０８】
（２）プロトコルについて
上述した実施例では、Ｒｅｎｄｅｚｖｏｕｓプロトコルを利用した通信を行うコンピュータについて説明した。しかし、実施例は、これに限定されるものではなく、例えば、通信を行う情報処理装置間で、接続要求情報と応答情報とをやり取りするプロトコルであれば、本願の発明を適用可能である。
【０１０９】
（３）保留部について
上述した実施例では、保留部１５によって一時的に保留された通信予約の数によって、通信に使用されるＮＩＣを選択していた。しかし、実施例は、これに限定されるものではなく、例えば、各通信予約が示す処理がＮＩＣを使用するであろう時間を算出し、算出された時間が最も短いＮＩＣを選択してもよい。また、通信予約が示す処理が通信処理によってやり取りする情報量を算出し、算出された情報量が最も小さいＮＩＣを選択してもよい。
【０１１０】
（４）プログラム
ところで、実施例１に係る情報処理装置、および実施例２に示すコンピュータは、ハードウェアを利用して各種の処理を実現する場合を説明した。しかし、実施例はこれに限定されるものではなく、あらかじめ用意されたプログラムを情報処理装置、又は、コンピュータで実行することによって実現するようにしてもよい。そこで、以下では、図１３を用いて、実施例１に示した情報処理装置と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図１３は、通信プログラムを実行するコンピュータの一例を説明するための図である。
【０１１１】
図１３に例示されたコンピュータ２００は、ＲＡＭ（Random Access Memory）１２０、ＲＯＭ（Read Only Memory）１３０、ＨＤＤ（Hard Disk Drive）１５０がバス１７０で接続される。また、図１３に例示されたコンピュータ２００は、ＣＰＵ（Central Processing Unit）１４０がバス１７０で接続される。さらにバス１７０には、ネットワークと接続するための複数のインターフェースであるＩ／Ｏ（Input Output）１６０〜１６２が接続される。
【０１１２】
ＲＯＭ１３０には、第一検索プログラム１３２、接続要求送信プログラム１３３、特定プログラム１３４、通信プログラム１３５、第二選択プログラム１３６、応答送信プログラム１３７があらかじめ保持される。ＣＰＵ１４０が各プログラム１３２〜１３７をＲＯＭ１３０から読み出して実行することによって、図１３に示す例では、各プログラム１３２〜１３３は、第一検索プロセス１４２、接続要求送信プロセス１４３として機能するようになる。
【０１１３】
また、各プログラム１３４〜１３７は、特定プロセス１４４、通信プロセス１４５、第二選択プロセス１４６、応答送信プロセス１４７として機能するようになる。なお、各プロセス１４２〜１４７は、図１に示した各部２〜７と同様の機能を発揮する。また、各プロセス１４２〜１４７は、実施例２に係る各部と同等の機能を発揮するようにすることも可能である。
【０１１４】
なお、本実施例で説明した通信プログラムは、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。
【０１１５】
また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＭＯ（Magneto Optical Disc）、ＤＶＤ（Digital Versatile Disc）などのコンピュータで読取可能な記録媒体に記録される。また、このプログラムは、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【０１１６】
１  情報処理装置
２  第一選択部
３  接続要求送信部
４  特定部
５  通信部
６  第二選択部
７  応答送信部
８ａ〜８ｃ  インターフェース
１０  プロセス実行部
１１  選択部
１２  接続要求送信部
１３  応答送信部
１４  通信部
１５  保留部
１６  情報記憶部
２０  コンピュータ
３０〜３３  ＮＩＣ
【図１】
0005573434.tif 000002
【図２】
0005573434.tif 000003
【図３】
0005573434.tif 000004
【図４】
0005573434.tif 000005
【図５】
0005573434.tif 000006
【図６】
0005573434.tif 000007
【図７】
0005573434.tif 000008
【図８】
0005573434.tif 000009
【図９】
0005573434.tif 000010
【図１０】
0005573434.tif 000011
【図１１】
0005573434.tif 000012
【図１２】
0005573434.tif 000013
【図１３】
0005573434.tif 000014
【図１４】
0005573434.tif 000015
【図１５】
0005573434.tif 000016
【図１６】
0005573434.tif 000017
【図１７】
0005573434.tif 000018
【図１８】
0005573434.tif 000019