説明

通信プログラム、情報処理装置、情報通信システム及び通信方法

【課題】情報処理装置が有する全てのネットワークインターフェースを利用し、ネットワークインタフェースの競合を抑制する。
【解決手段】情報処理装置1は、各インターフェースの通信状況に応じて、通信に使用するインターフェースを選択する。また、情報処理装置1は、選択されたインターフェースを使用して、他の情報処理装置へ接続要求情報を送信する。また、情報処理装置1は、接続要求情報に対する応答情報を他の情報処理装置から受信した場合には、受信された応答情報から、他の情報処理装置が応答情報を送信するために使用したインターフェースを特定する。そして、情報処理装置1は、接続要求情報を送信するために使用したインターフェースと、特定されたインターフェースとを使用して、他の情報処理装置1aと情報の送受信を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信プログラム、情報処理装置、情報通信システム及び通信方法に関する。
【背景技術】
【0002】
従来、複数の情報処理装置がネットワークを使用して相互に情報を送受信するシステムが知られている。このようなシステムの一例として、複数の情報処理装置がMPI(Message Passing Interface)ライブラリを利用して相互に情報を送受信するネットワーク分散並列計算機などが知られている。
【0003】
このようなシステムの情報処理装置は、HCA(Host Channel Adapter)やNIC(Network Interface Card)等のネットワークインターフェースを複数有する。そして、情報処理装置は、ネットワークインターフェースを使用して他の情報処理装置と情報の送受信を行う。
【0004】
このような構成のもと、相互に対応付けられた複数のネットワークインターフェースから、自装置の通信状況に応じて、通信に使用するネットワークインターフェースを選択する技術が知られている。以下、図14を用いて、通信に使用するネットワークインターフェースを選択する処理について説明する。図14は、従来の送受信処理を説明するための図である。なお、図14に示す例では、情報処理装置#1のNIC#1は、情報処理装置#3のNIC#5と対応付けられているものとする。
【0005】
まず、情報処理装置#1は、情報処理装置#3に情報を送信する場合には、自装置の通信状況に応じて、送信元のネットワークインターフェースを自装置が有するNIC#1〜#2から選択する。図14に示す例では、情報処理装置#1は、NIC#1を送信元のネットワークインターフェースとして選択する。そして、情報処理装置#1は、送信先のネットワークインターフェースとして、NIC#1と対応付けられたNIC#5を使用して情報処理装置#3へ情報を送信する。
【0006】
また、複数のネットワークインターフェースを使用して他の情報処理装置と情報の送受信を行う技術として、分割された情報をそれぞれ独立した経路で送信するトランキングという技術が知られている。例えば、図15に示す例では、トランキングの技術が適用された情報処理装置#1は、送信されるデータを4つのデータ#1〜#4に分割し、それぞれ異なるネットワークインターフェースを使用して情報処理装置#2へ同時に送信する。なお、図15は、トランキングを説明するための図である。
【0007】
また、トランキングの技術が適用された情報処理装置は、ネットワークインターフェース間を接続する経路(以下、リンクという)がそれぞれ独立しているファットツリー型のネットワークに接続される。例えば、図16に示す例では、各情報処理装置#1〜#2は、NIC#1からNIC#3を接続するリンクと、NIC#2からNIC#4を接続するリンクとが独立したファットツリー型のネットワークに接続される。なお、図16は、ファットツリー構造のネットワークを説明するための図である。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2006−121414号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、上述したネットワークインターフェースを選択する技術では、送信元の通信状況に応じて、送信先のネットワークインターフェースが選択されるので、送信先での競合を発生させる場合がある。つまり、情報処理装置は、送信先の通信状況と関係なく通信に使用するネットワークインターフェースを選択するので、送信先のネットワークインターフェースで競合を発生させる場合がある。このため、情報処理装置は、システム全体のスループットを悪化させてしまうという問題があった。
【0010】
例えば、図17に示す例では、NIC#3は、NIC#5と対応付けられており、NC#5は、通信中であるものとする。図17は、競合を説明するための図である。図17に示す例では、情報処理装置#2は、自装置の通信状況に応じて、通信に使用するNICとしてNIC#3を選択する。
【0011】
そして、情報処理装置#2は、送信先のNICとして、NIC#3に対応付けられたNIC#5を選択する。このため、図17中星印で示すように、情報処理装置#1と情報処理装置#2とがNIC#5を同時に使用して通信することとなり、情報処理装置#3へ送信される情報がNIC#5に集中するため、NIC#5で競合を発生させてしまう。
【0012】
この結果、情報を受信するための待ち行列がNIC#5で発生し、NIC#5がボトルネックとなるため、システム全体のスループットを悪化させてしまうという問題があった。なお、情報処理装置は、あらかじめ対応付けられたネットワークインターフェースの組を使用して情報を送信するので、ネットワークインターフェースの組み合わせパターンが限定されてしまう。この結果、特定のネットワークインターフェースを利用することによる競合が頻繁に発生しやすい。
【0013】
また、上述したトランキングの技術では、ネットワークインターフェース同士を接続するリンクごとに異なる情報を同時に送信する。このため、情報処理装置は、各ネットワークインターフェースがリンクを共用する構造のネットワークに接続された場合には、スループットを悪化させてしまうという問題があった。
【0014】
例えば、図18に例示するように、各情報処理装置#1〜#2がメッシュネットワークに接続されている場合には、図18中のAに示す共用のリンクを使用するための順番待ちが発生し、システム全体のスループットが悪化してしまうという問題があった。図18は、メッシュネットワークを説明するための図である。
【0015】
一つの側面では、本発明は、ネットワークインタフェースの競合の抑制を図ることを目的とする。
【課題を解決するための手段】
【0016】
本願に開示の技術は、一つの態様によれば、各インターフェースの通信状況に応じて、通信に使用するインターフェースを選択する通信プログラムである。また、通信プログラムは、選択されたインターフェースを使用して、他の情報処理装置へ接続要求情報を送信する。その後、通信プログラムは、接続要求情報に対する応答情報を他の情報処理装置から受信した場合には、受信された応答情報から、他の情報処理装置が応答情報を送信するために使用したインターフェースを特定する。そして、通信プログラムは、接続要求情報を送信するために使用したインターフェースと、特定されたインターフェースとを使用して、他の情報処理装置と情報の送受信を行う。
【発明の効果】
【0017】
一つの態様によれば、ネットワークインタフェースの競合の抑制を抑制することができる。
【図面の簡単な説明】
【0018】
【図1】図1は、実施例1に係る情報処理装置を説明するためのブロック図である。
【図2】図2は、実施例2に係る情報処理システムを説明するための図である。
【図3】図3は、実施例2に係るコンピュータを説明するためのブロック図である。
【図4】図4は、保留された処理を説明するための図である。
【図5】図5は、保留された処理の実行を説明するための図である。
【図6】図6は、実施例2に係るコンピュータの効果を説明するための図である。
【図7】図7は、接続要求情報と接続要求情報に対する応答情報とを説明するための図である。
【図8】図8は、情報の送受信を説明するための図である。
【図9】図9は、Rendezvous要求を送信する処理について説明するための図である。
【図10】図10は、受信側のコンピュータがNICを選択する処理を説明するための図である。
【図11】図11は、実施例2に係るコンピュータが情報を送受信する処理を説明するための図である。
【図12】図12は、実施例2に係るコンピュータが実行する処理の流れを説明するためのシーケンス図である。
【図13】図13は、通信プログラムを実行するコンピュータの一例を説明するための図である。
【図14】図14は、従来の送受信処理を説明するための図である。
【図15】図15は、トランキングを説明するための図である。
【図16】図16は、ファットツリー構造のネットワークを説明するための図である。
【図17】図17は、競合を説明するための図である。
【図18】図18は、メッシュネットワークを説明するための図である。
【発明を実施するための形態】
【0019】
以下に添付図面を参照して本願に係る通信プログラム、情報処理装置、情報通信システム及び通信方法について説明する。
【実施例1】
【0020】
以下の実施例1では、図1を用いて、情報処理装置の一例を説明する。図1は、実施例1に係る情報処理装置を説明するためのブロック図である。なお、情報処理装置は、少なくとも、同様の通信プログラムを実行する情報処理装置と相互に通信を行う情報処理装置である。
【0021】
図1に示すように、情報処理装置1は、第一選択部2、接続要求送信部3、特定部4、通信部5、第二選択部6、応答送信部7、インターフェース8a〜8cを有する。また、情報処理装置1は、情報処理装置1と同一の機能を有する情報処理装置1aとネットワークを介して通信を行う。なお、情報処理装置1aが有する各部2a〜7a、8d〜8fは、情報処理装置1が有する各部2〜7、8a〜8cと同様の機能を発揮するものとし、情報処理装置1aの各部についての説明は省略する。
【0022】
第一選択部2は、各インターフェース8a〜8cの通信状況に応じて、通信に使用するインターフェースを選択する。接続要求送信部3は、第一選択部2によって選択されたインターフェースを使用して、情報処理装置1aへ接続要求情報を送信する。
【0023】
特定部4は、接続要求送信部3によって送信された接続要求情報に対する応答情報を情報処理装置1aから受信した場合には、受信された応答情報から情報処理装置1aが応答情報を送信するために使用したインターフェースを特定する。通信部5は、接続要求送信部3が接続要求情報を送信するために使用したインターフェースと特定部4によって特定されたインターフェースとを使用して、情報処理装置1aと情報の送受信を行う。
【0024】
つまり、情報処理装置1が送信側であり、情報処理装置1aが受信側である場合に、送信側である情報処理装置1は、自装置に都合の良いインターフェースを使用して接続要求情報を送信する。そして、情報処理装置1は、受信側の情報処理装置1aが選択したインターフェースを特定し、特定された受信側に都合の良いインターフェースを使って通信する。
【0025】
第二選択部6は、情報処理装置1aから接続要求情報を受信した場合には、各インターフェース8a〜8cの通信状況に応じて、情報処理装置1aとの通信に使用するインターフェースを選択する。応答送信部7は、第二選択部6によって選択されたインターフェースを使用して、情報処理装置1aへ接続要求情報に対する応答情報を送信する。
【0026】
つまり、情報処理装置1が受信側であり、情報処理装置1aが送信側である場合に、受信側である情報処理装置1は、受信側に都合の良いインターフェースを選択し、選択したインターフェースを使用して応答情報を情報処理装置1aに通知する。
【0027】
上述したように、情報処理装置1は、自装置の通信状態に応じて選択されたインターフェースを使用して接続要求情報を情報処理装置1aへ送信する。また、情報処理装置1は、送信した接続要求情報に対する応答情報を情報処理装置1aから受信した場合には、受信された応答情報から、情報処理装置1aが使用したインターフェースを特定する。そして、情報処理装置1は、接続要求情報を送信するために使用したインターフェースと特定されたインターフェースとを使用して、情報処理装置1aと情報の送受信を行う。
【0028】
また、情報処理装置1aは、接続要求情報を受信した場合には、各インターフェース8d〜8fの通信状態に応じて、情報処理装置1との通信に使用されるインターフェースを選択する。そして、情報処理装置1aは、選択されたインターフェースを用いて、応答情報を送信する。
【0029】
このため、情報処理装置1は、情報の送信先となる情報処理装置1aの通信状態に応じて、通信に用いるインターフェースを選択することができる。また、情報処理装置1は、通信に用いるインターフェースを限定せずに、情報の送受信を行う事ができる。このため、情報処理装置1は、送信側と受信側との通信状況に応じて、使用するネットワークインターフェースを決定することで、ネットワークインタフェースの競合を抑制する。また、情報処理装置1は、スループットを向上させる。
【実施例2】
【0030】
以下の実施例2では通信プログラムを実行するコンピュータを複数有する情報処理システムを説明する。
【0031】
まず、図2を用いて、実施例2に係る情報処理システムを説明する。図2は、実施例2に係る情報処理システムを説明するための図である。図2に示すように、情報処理システムは、複数のコンピュータ20〜25を有する。各コンピュータ20〜25は、それぞれ4つのNIC(Network Interface Card)を有する。NIC30〜50は、ネットワークを介して、各コンピュータ20〜25を接続する。また、各コンピュータ20〜25は、ネットワークを介して各NIC30〜50によってそれぞれ接続されている。
【0032】
各コンピュータ20〜25は、同一のプログラムを実行することで、同様の処理を行うものとする。以下の説明では、コンピュータ20が有する各部について説明し、他のコンピュータ21〜25については、説明を省略する。
【0033】
次に、図3を用いて、コンピュータ20が有する各部について説明する。図3は、実施例2に係るコンピュータを説明するためのブロック図である。図3に示す例では、コンピュータ20は、4つのNIC30〜33を有する。また、コンピュータ20は、プロセス実行部10、情報記憶部16を有する。以下に各部について説明する。
【0034】
情報記憶部16は、他のコンピュータ21〜25へ送信する情報を一時的に記憶する。また、情報記憶部16は、他のコンピュータ21〜25からNIC30〜33を使用して受信した情報を一時的に記憶する。
【0035】
NIC30は、ネットワークを介して、他のコンピュータ21〜25が有する各NIC34〜53と接続され、各NIC34〜53との通信処理を制御する。具体的には、NIC30は、他のコンピュータ21〜25の各NIC34〜53から接続要求情報を受信した場合には、受信された接続要求情報を応答送信部13へ転送する。
【0036】
例えば、NIC30は、コンピュータ25のNIC50から接続要求情報を受信した場合には、受信された接続要求情報を応答送信部13へ転送する。また、NIC30は、コンピュータ25のNIC51から情報を受信した場合には、受信された情報を通信部14に転送する。
【0037】
また、NIC30は、コンピュータ25のNIC51に応答情報を送信する関数呼び出し情報を保留部15から取得した場合には、コンピュータ25のNIC51を送信先として応答情報を送信する。また、NIC30は、保留部15から、コンピュータ25のNIC51を使用して情報の送信を行うための関数呼び出し情報を取得した場合には、コンピュータ25のNIC51に対して、情報を送信する。
【0038】
プロセス実行部10は、実施例2に係る通信プログラムを実行する。具体的には、プロセス実行部10は、選択部11、接続要求送信部12、応答送信部13、通信部14、保留部15を有する。そして、プロセス実行部10は、各部11〜15を用いて、通信プログラムを実行し、他のコンピュータ21〜25と情報の送受信を実行する。
【0039】
以下の説明では、プロセス実行部10が有する各部の機能について説明する。また、以下の説明では、プロセス実行部10が、MPI(Message Passing Interface)ライブラリを使用してコンピュータ20が有する情報を他のコンピュータ25へ送信する例について説明する。
【0040】
保留部15は、通信予約を各NICごとに一時的に保留する。また、保留部15は、通信を終了したNICに係る通信予約のうち、最初に保留された通信予約が示す処理を実行する。ここで、通信予約とは、通信処理を各NIC30〜33に実行させるために必要な関数呼び出しを識別する情報であり、例えば、「MPI_Isend」や「MPI_Irecv」等である。
【0041】
具体的には、保留部15は、接続要求送信部12、応答送信部13及び通信部14から送信された通信予約を受信する。そして、保留部15は、通信予約を実行するNICが通信中である場合には、受信された通信予約を一時的に保留する。その後、保留部15は、受信された通信予約を実行するNICが通信を終了した場合には、保留された通信予約のうち、通信を終了したNICを使用する通信予約であって、かつ、最初に記憶された通信予約をNICに通知する。そして、保留部15は、通知された通信予約に係る通信処理が終了した場合には、終了した通信処理に係る通信予約を消去する。
【0042】
例えば、保留部15は、図4に示す例では、NIC30の通信予約を1件、NIC31の通信予約を2件、NIC32の通信予約を3件、NIC33の通信予約を4件記憶している。また、保留部15は、図4中の点線で例示するように、NIC30が実行する通信予約を新たに受信した場合には、NIC30に対応付けて、通信予約を新たに記憶する。図4は、保留された処理を説明するための図である。
【0043】
また、図5に示す例では、保留部15は、NIC30を使用する通信予約を3件、NIC31を使用する通信予約を1件、NIC32を使用する通信予約を2件、NIC33を使用する通信予約を3件記憶している。図5は、保留された処理の実行を説明するための図である。この例では、保留部15は、NIC30が実行中の通信処理が終了した場合には、図5の点線で示すように、NIC30が実行した通信予約を消去する。
【0044】
ここで、保留部15は、NIC30の通信予約を実行する場合には、通信予約に含まれる関数呼び出しを識別する情報をNIC30に送信する。NIC30は、保留部15から関数呼び出しを識別する情報を取得した場合には、取得された関数呼び出しを識別する情報に応じた処理を実行する。
【0045】
このように、保留部15は、NIC30〜33が通信中に接続要求送信部12、応答送信部13、通信部14によって生成された通信予約を受信した場合には、通信予約を一時的に保留する。そして、保留部15は、保留された通信予約が使用するNICが通信処理を終了し、新たな通信予約に係る通信処理を実行することができる場合には、保留された通信予約に係る通信処理を実行させる。また、保留部15は、保留された処理を関数呼び出しを識別する情報で記憶し、通信予約が格納されたメモリのアドレスを通信予約の順番管理に使用する。
【0046】
図3に戻って、選択部11は、各NIC30〜33の通信状況に応じて、通信に使用するNICを選択する。また、選択部11は、他のコンピュータ21〜25から接続要求情報を受信した場合には、各NIC30〜33の通信状況に応じて、他のコンピュータ21〜25との通信に使用するNICを選択する。
【0047】
また、選択部11は、各NIC30〜33を使用するための通信予約に応じて、他のコンピュータ21〜25への情報の送信に使用されるNICを選択する。また、選択部11は、各NIC30〜33を使用するための通信予約に応じて、他のコンピュータ21〜25からの情報の受信に使用されるNICを選択する。
【0048】
具体的には、選択部11は、後述する接続要求送信部12からNICを選択する旨の指示を受けた場合には、保留部15によって保留された通信予約が最も少ないNICを選択する。そして、選択部11は、選択されたNICを接続要求送信部12に通知する。
【0049】
また、選択部11は、後述する応答送信部13からNICを選択する旨の指示を受けた場合にも同様に、保留部15によって保留された通信予約が最も少ないNICを選択する。そして、選択部11は、選択されたNICを応答送信部13に通知する。
【0050】
ここで、図4の例を用いて、選択部11が実行する処理を説明する。例えば、選択部11は、後述する接続要求送信部12から、NICを選択する旨の指示を取得した場合には、保留部15によって保留された各NIC30〜33を使用する処理を識別する。
【0051】
ここで、保留部15は、図4に示す例では、NIC30の通信予約を1件、NIC31の通信予約を2件、NIC32の通信予約を3件、NIC33の通信予約を4件記憶している。このため、選択部11は、保留された処理が最も少ないNIC30を選択する。つまり、選択部11は、通信に使用するNICとしてNIC30を選択する。そして、選択部11は、NIC30を接続要求送信部12へ通知する。
【0052】
また、選択部11は、応答送信部13からNICを選択する旨の指示を取得した場合には、保留部15によって保留された通信予約の件数に基づいて、通信に使用するNICとしてNIC30を選択する。その後、選択部11は、NIC30を接続要求送信部12へ通知する。
【0053】
図3に戻って、接続要求送信部12は、選択部11によって選択されたNICを使用して、他のコンピュータへ接続要求情報を送信する。具体的には、接続要求送信部12は、情報を送信する旨の通知を通信部14から取得した場合には、NICを選択する旨の指示を選択部11へ送信する。また、接続要求送信部12は、後述するように、情報の送信先となるコンピュータを通信部14から通知される。
【0054】
そして、接続要求送信部12は、選択部11から通信に使用するNICを通知された場合には、送信先のコンピュータが有するNICのうち、選択部11から通知されたNICに対応付けられたNICを判別する。また、接続要求送信部12は、選択部11から通知されたNICのアドレスを含む接続要求情報を生成する。そして、接続要求送信部12は、選択部11から通知されたNICと判別されたNICとを使用して接続要求情報を送信する処理を通信予約として保留部15に送信する。
【0055】
例えば、接続要求送信部12は、コンピュータ25に情報を送信する旨の通知を通信部14から取得した場合には、NICを選択する旨の指示を選択部11へ送信する。また、接続要求送信部12は、選択部11から通信に使用するNICとしてNIC30を通知される。
【0056】
接続要求送信部12は、通信に使用するNICとしてNIC30が通知された場合には、コンピュータ25が有するNIC50〜53のうち、通知されたNIC30に対応付けられたNICであるNIC50を判別する。また、接続要求送信部12は、接続要求情報として、NIC30のアドレスを含んだ接続要求情報を生成する。そして、接続要求送信部12は、生成された接続要求情報をNIC30とNIC50を使用してコンピュータ25へ送信する処理を示す通信予約を生成する。その後、接続要求送信部12は、生成された通信予約を保留部15に送信する。
【0057】
応答送信部13は、選択部11によって選択されたNICを使用して、接続要求情報の送信元へ接続要求情報に対する応答情報を送信する。また、応答送信部13は、選択部11によって選択されたNICを一意に特定するアドレスを含んだ応答情報を送信する。
【0058】
具体的には、応答送信部13は、他のコンピュータ20〜25から送信された接続要求情報を受信した場合には、NICを選択する旨の指示を選択部11へ送信する。また、応答送信部13は、受信された接続要求情報に含まれるNICのアドレスに基づいて、受信された接続要求情報を送信するために使用された送信元のNICを判別する。
【0059】
また、応答送信部13は、通信に使用されるNICを選択部11から通知された場合には、選択部11から通知されたNICのアドレスを含む応答情報を生成する。そして、応答送信部13は、選択部11から通知されたNICと接続要求の送信元が使用したNICとを使用して、生成された応答情報を送信する処理を示す通信予約を生成する。
【0060】
その後、応答送信部13は、生成された通信予約を保留部15に送信する。また、応答送信部13は、接続要求情報を受信した場合には、他のコンピュータから情報が送信されてくる旨の通知を通信部14に送信する。
【0061】
ここで、応答送信部13が実行する処理の例を説明するが、以下の例では、応答送信部13は、コンピュータ25から送信された接続要求情報を受信するものとする。また、コンピュータ25は、NIC51とNIC31を使用して接続要求情報を送信したものとする。例えば、応答送信部13は、コンピュータ25から送信された接続要求情報をNIC31を介して受信した場合には、NICを選択する旨の指示を選択部11へ送信する。
【0062】
また、応答送信部13は、受信された応答情報に基づいて、受信された接続要求情報を送信するために使用されたコンピュータ25のNIC51を判別する。また、応答送信部13は、通信に使用するNICとしてNIC30を選択部11から通知された場合には、NIC30のアドレスを含んだ応答情報を生成する。そして、応答送信部13は、生成された応答情報をNIC30とNIC51とを使用してコンピュータ25に送信する処理を示す通信予約を生成する。その後、応答送信部13は、生成された通信予約を保留部15に送信する。
【0063】
通信部14は、接続要求送信部12によって送信された接続要求情報に対する応答情報を、他のコンピュータ21〜25から受信した場合には、受信された応答情報から、他のコンピュータ21〜25が応答情報を送信するために使用したNICを特定する。また、通信部14は、応答情報を他のコンピュータ21〜25から受信した場合には、受信された応答情報から、他のコンピュータ21〜25に係る選択部によって選択されたNICを一意に特定するアドレスを識別する。
【0064】
そして、通信部14は、識別されたアドレスから、応答情報を送信したコンピュータが応答情報を送信するために使用したNICを特定する。そして、通信部14は、接続要求送信部12が接続要求情報を送信するために使用したNICと特定されたNICとを使用して、他のコンピュータ21〜25と情報の送受信を行う。
【0065】
具体的には、通信部14は、情報記憶部16に記憶された情報を他のコンピュータ21〜25のいずれかに送信する場合には、情報を送信する旨の通知を接続要求送信部12へ送信する。また、通信部14は、情報の送信先となるコンピュータを接続要求送信部12に通知する。
【0066】
また、通信部14は、コンピュータ20から送信された接続要求情報に対する応答情報を他のコンピュータより受信する。また、通信部14は、応答情報を受信した場合には、受信された応答情報に含まれているNICのアドレスに基づいて、受信された応答情報を送信するために使用された送信元のNICを判別する。
【0067】
そして、通信部14は、応答情報を受信したコンピュータ20のNICと、判別された送信元のNICとを使用して情報記憶部16に記憶された情報を送信先のコンピュータへ送信する処理を実行する。つまり、通信部14は、処理を示す通信予約を生成し、生成された通信予約を保留部15に送信する。
【0068】
また、通信部14は、他のコンピュータから情報が送信されてくる旨の通知を応答送信部13から取得した場合には、送信されてくる情報を格納するための領域を情報記憶部16に確保する。そして、通信部14は、他のコンピュータから送信された情報を各NIC30〜33のいずれかが受信した場合には、受信された情報を取得し、情報記憶部16に確保された領域に取得された情報を格納する。
【0069】
ここで、通信部14が実行する処理の例を説明するが、以下の例では、通信部14は、応答情報をコンピュータ25から受信するものとする。また、コンピュータ25はNIC51とNIC30とを使用して応答情報を送信したものとする。
【0070】
例えば、通信部14は、コンピュータ20からコンピュータ25へ送信された接続要求情報に対する応答情報をNIC30を使用して受信した場合には、応答情報に含まれたNICのアドレスに基づいて、送信元のNIC51を判別する。そして、通信部14は、NIC30とNIC51とを使用して情報記憶部16に記憶された情報をコンピュータ25へ送信する処理を示す通信予約を生成する。その後、通信部14は、生成された通信予約を保留部15に送信する。
【0071】
また、通信部14は、コンピュータ25から情報が送信されてくる旨の通知を応答送信部13から取得した場合には、送信されてくる情報を格納するための領域を情報記憶部16に確保する。そして、通信部14は、コンピュータ25から送信された情報をNIC31が受信した場合には、受信された情報を取得し、情報記憶部16に確保された領域に取得された情報を格納する。
【0072】
このように、コンピュータ20は、コンピュータ25に情報を送信する場合には、自装置の各NIC30〜33のうち、情報の送受信処理に最適なNICを使用してコンピュータ25に接続要求情報を送信する。また、コンピュータ25は、接続要求情報に対応する応答情報を、自装置の各NIC50〜53のうち、情報の送受信処理に最適なNICを使用してコンピュータ20に応答情報を送信する。そして、コンピュータ20は、コンピュータ25から応答情報を受信した場合には、自装置が接続要求情報を送信するために使用したNICと、コンピュータ25が応答情報を送信するために使用したNICとを用いて、情報の送受信処理を実行する。
【0073】
つまり、コンピュータ20は、自装置の通信状況だけではなく、コンピュータ25の通信状況も考慮して通信に使用されるNICを選択する。このため、コンピュータ20は、情報の送受信処理に最適な自装置のNICと、情報の送受信処理に最適な送信先のNICとを使用して情報の送受信処理を実行することができる。この結果、コンピュータ20は、送信先のNICで競合を起こす可能性を低くすることができる結果、システム全体のスループットを改善することができる。
【0074】
また、コンピュータ20は、情報を送受信するために使用されるNICの組み合わせを限定することなく、情報の送受信を実行することができる。例えば、N個のNICを有する2台のコンピュータが情報の送受信を行う場合には、使用されるNICの組み合わせの数はNの累乗個となる。このため、図6に示すように、コンピュータ20は、インターフェースの組み合わせが多く、ネットワークインタフェースの競合を抑制することができる。この結果、コンピュータ20は、システム全体のスループットを改善することができる。図6は、実施例2に係るコンピュータの効果を説明するための図である。
【0075】
次に、図7を用いて、接続要求情報と、接続要求情報に対する応答情報とを送受信する具体例を説明する。図7は、接続要求情報と接続要求情報に対する応答情報とを説明するための図である。図7に示す例では、コンピュータ20及びコンピュータ25は、Rendezvousプロトコルを利用してメッセージ通信を実行するアプリケーションプログラムを実行するものする。
【0076】
このアプリケーションプログラムは、上述したプロセス実行部10によって実行されるものとする。また、図7に示す例では、コンピュータ20、及び、コンピュータ25は、MPIライブラリを使用して接続要求情報と応答情報とを送受信するものとする。なお、各コンピュータが有するNICのうち、NIC32〜33、52〜53については、図示を省略した。
【0077】
まず、コンピュータ20で実行されるアプリケーションプログラムは、接続要求情報として、「MPI_Isend」を呼び出すことによって、NIC30からRendezvous要求をコンピュータ25へ送信する。コンピュータ25で実行されるアプリケーションプログラムは、NIC30から送信されたRendezvous要求を受信すると、メモリ上にデータ領域を作成する。
【0078】
また、コンピュータ25で実行されるアプリケーションプログラムは、自装置にとって情報の送受信を行うのに適切なNICであるNIC51を選択する。そして、コンピュータ25で実行されるアプリケーションプログラムは、「MPI_Irecv」を呼び出して、Rendezvous応答を応答情報としてコンピュータ20へ送信する。
【0079】
この時、コンピュータ25は、Rendezvous応答をNIC51から送信することで、コンピュータ25にとって情報の受信を行うために適切なNICをコンピュータ20のアプリケーションプログラムに通知することとなる。
【0080】
このように、受信側のアプリケーションは、送信側のアプリケーションプログラムからRendezvous要求を受信した場合には、情報を受信するための準備、つまり、データ領域の作成、及び、使用するNICの選択を実行する。そして、受信側のアプリケーションは、情報を受信するための準備が終了した場合には、Rendezvous応答をRendezvous要求の送信元へ送信する。
【0081】
次に、図8を用いて、コンピュータ20の情報をコンピュータ25へ送信する処理の流れを説明する。図8は、情報の送受信を説明するための図である。まず、コンピュータ20は、Rendezvous要求を送信するためのNICとして、自装置のNIC31を選択する。次に、コンピュータ20は、NIC31からRendezvous要求を送信する。ここで、Rendezvous要求には、NIC31のアドレスである「Send NIC:31」と、送信される情報を格納したメモリアドレスを示す情報である「Send Address:X」とが格納される。
【0082】
コンピュータ25は、NIC31から送信されたRendezvous要求を受信した場合には、情報を受信するためのNICとして、自装置のNIC52を選択する。そして、コンピュータ25は、Rendezvous応答として「GET」をNIC52から送信する。
【0083】
ここで、Rendezvous応答として送信された「GET」には、Rendezvous要求に格納された情報に加えて、コンピュータ25によって選択されたNIC52のアドレスである「Recv NIC:52」が格納される。また、Rendezvous応答として送信された「GET」には、送信される情報を格納するコンピュータ25のメモリアドレス「Recv Address:Y」が格納される。
【0084】
コンピュータ20は、Rendezvous応答として送信された「GET」を受信した場合には、受信された「GET」に格納された情報に従って、自装置の情報をコンピュータ25へ送信する。つまり、コンピュータ20は、NIC31とNIC52とを使用して、自装置のメモリアドレスXに格納されたデータを、コンピュータ25のメモリアドレスYへ送信する。
【0085】
次に、図9〜11を用いて、実施例2に係るコンピュータが実行する通信処理の流れを説明する。まず、図9を用いて、Rendezvous要求を送信する処理について説明する。図9は、Rendezvous要求を送信する処理について説明するための図である。
【0086】
図9に示す例では、コンピュータ20は、プロセスの中で送信関数「MPI_Isend」が呼び出されると、コンピュータ20が有する各NIC30〜33のうち、最も空いているNIC30を選択する。そして、コンピュータ20は、「MPI_Isend」によって送信される情報のメモリアドレス情報とNIC30のアドレスとを含むRendezvous要求を、NIC30を使用して送信する。
【0087】
次に、図10を用いて、受信側のコンピュータがNICを選択する処理について説明する。図10は、受信側のコンピュータがNICを選択する処理を説明するための図である。図10に示す例では、コンピュータ25は、コンピュータ20で呼び出された「MPI_Isend」に対応する「MPI_Irecv」が呼び出された場合には、コンピュータ20が送信したRendezvous要求を受信する。次に、コンピュータ25は、最も空いているNIC51を選択する。
【0088】
次に、図11を用いて、コンピュータが情報を送受信する処理について説明する。図11は、実施例2に係るコンピュータが情報を送受信する処理を説明するための図である。図11に示す例では、コンピュータ25は、NIC51と、コンピュータ20が情報を送信するのに最適なNICであるNIC30とを使用して、「GET」をコンピュータ20へ送信する。
【0089】
そして、コンピュータ25は、図11中の点線で示すように、NIC30とNIC51とを使用して、情報を受信する。なお、「GET」には、NIC30を示す情報、コンピュータ20から送信される情報のアドレス、NIC51を示す情報、及びコンピュータ25が情報を格納するアドレスが含まれる。また、図11に示す例では、コンピュータ25は、「GET」によるRDMA(Remote Direct Memory Access)転送によって、情報を受信する。
【0090】
[コンピュータの処理の流れ]
次に、図12を用いて、実施例2に係るコンピュータが実行する処理の流れを説明する。図12は、実施例2に係るコンピュータが実行する処理の流れを説明するためのシーケンス図である。図12に示す例では、コンピュータ20は、実行するプロセスによって「MPI_Isend」が呼び出されたことをトリガとして処理を開始する。また、コンピュータ25は、実行するプロセスによって「MPI_Irecv」が呼び出されたことをトリガとして処理を開始する。
【0091】
まず、コンピュータ20は、情報を送信するのに適切な空きNICを検索する(ステップS101)。次に、コンピュータ20は、Rendezvous要求を送信する処理を示す通信予約を追加する(ステップS102)。次に、コンピュータ20は、通信予約に係るRendezvous要求を送信する処理を実行する(ステップS103)。
【0092】
一方、コンピュータ25は、「MPI_Irecv」が呼び出された場合には、対応する「MPI_Isend」によるRendezvous要求の受信を待つ(ステップS104)。そして、コンピュータ25は、Rendezvous要求を受信すると、自装置の空きNICを検索する(ステップS105)。
【0093】
次に、コンピュータ25は、通信予約リストにRendezvous応答である「GET」を送信する処理を示す通信予約を追加する(ステップS106)。そして、コンピュータ25は、選択された空きNICにGETを指示し(ステップS107)、GETの制御信号をコンピュータ20へ送信する(ステップS108)。
【0094】
コンピュータ20は、制御信号を受信した場合には(ステップS109)、I/F(Interface)の設定を行う(ステップS110)。つまり、コンピュータ20は、ステップS101にて選択されたNICとステップS105にて選択されたNICとを使用して情報を送信するための設定を行う。
【0095】
次に、コンピュータ20は、ステップS101にて選択されたNICとステップS105にて選択されたNICとを使用して、データをコンピュータ25へ送信する(ステップS111)。また、コンピュータ25は、ステップS101にて選択されたNICとステップS105にて選択されたNICとを使用して送信されたデータを受信する(ステップS112)。
【0096】
そして、コンピュータ25は、データを受信した場合には、実行したRendezvous応答に係る通信予約を削除する(ステップS113)。また、コンピュータ20は、データを送信した場合には、実行したRendezvous要求に係る通信予約を削除する(ステップS114)。
【0097】
[実施例2の効果]
上述したように、実施例2に係るコンピュータ20は、コンピュータ25と通信する場合には、NIC30〜31の通信状況に応じて、通信に使用するNICを選択する。そして、コンピュータ20は、選択されたNICからコンピュータ25へ接続要求情報を送信する。また、コンピュータ25は、接続要求情報を受信した場合には、通信に使用するNICを選択し、選択されたNICを使用して、接続要求情報に対する応答をコンピュータ20へ送信する。
【0098】
そして、コンピュータ20は、送信した接続要求情報に対する応答情報を他のコンピュータから受信した場合には、受信した応答情報から、コンピュータ25が使用したNICを特定する。その後、コンピュータ20は、自装置が選択したNICと、特定されたNICとを使用して、情報をコンピュータ25へ送信する。
【0099】
このため、コンピュータ20は、情報をコンピュータ25へ送信する場合には、コンピュータ25の通信状況に応じたNICを選択することができる。つまり、送信側と受信側との通信状況に応じて、通信を行うために都合の良いNICを決定することができる。この結果、コンピュータ20は、コンピュータ25でのネットワークインタフェースの競合の抑制することができる。また、コンピュータ20は、システム全体のスループットを改善することができる。また、コンピュータ20は、コンピュータ20とコンピュータ25が有する全てのNICを利用することができるため、ネットワークインタフェースの競合を抑制し、システム全体のスループットを向上させることができる。
【0100】
また、コンピュータ20は、システムの構造に関係なくネットワークインタフェースの競合を抑制することができるので、システム全体のスループットを向上させることができる。
【0101】
また、コンピュータ20は、インターフェースを使用するための通信予約に応じて、コンピュータ25との通信に使用されるインターフェースを選択する。また、コンピュータ20は、NICを使用するための通信予約に応じて、コンピュータ25からの情報の受信に使用されるNICを選択する。このため、コンピュータ20は、通信に用いられるNICを適切に選択することが出来る結果、システム全体のスループットを改善することができる。
【0102】
また、コンピュータ25は、自装置が選択したNICのアドレスを含んだ応答情報を送信する。このため、コンピュータ20は、通信に用いられる適切なNICを選択することができるので、ネットワークインタフェースの競合を抑制し、システム全体のスループットを向上させることができる。
【0103】
また、メッセージ通信のたびに送信側と受信側とで互いに適切なネットワークインターフェースを調べ、その情報を相互で共有するのは、情報共有のための通信が別途必要となり、オーバーヘッドが大きくなる結果、システムのスループットを悪化させてしまう。
【0104】
しかし、各コンピュータ20〜25は、Rendezvous要求とRendezvous応答のやり取りを利用することによって、自装置が通信に用いたいNICを通知するので、ごく少ないオーバーヘッドで情報を共有することができる。この結果、各コンピュータ20〜25は、効率的にネットワークインターフェース利用頻度を平準化し、システム全体のスループットを向上させる。
【0105】
なお、本実施例の説明においては、コンピュータ20とコンピュータ25との通信について説明した。しかし、本実施例に開示の発明は、コンピュータ20とコンピュータ25との間の通信のみならず、任意のコンピュータ間における通信について、適用することができ、同様の効果を奏することは言うまでもない。
【実施例3】
【0106】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例3として本発明に含まれる他の実施例を説明する。
【0107】
(1)NICについて
上述した実施例では、ネットワークインターフェースを有する情報処理装置の一例として、NIC(Network Interface Card)を有するコンピュータについて説明した。しかし、実施例は、これに限定されるものではなく、例えば、ネットワークインターフェースとして、HCA(Host Channel Adapter)やSCSI(Small Computer System Interface)であってもよい。
【0108】
(2)プロトコルについて
上述した実施例では、Rendezvousプロトコルを利用した通信を行うコンピュータについて説明した。しかし、実施例は、これに限定されるものではなく、例えば、通信を行う情報処理装置間で、接続要求情報と応答情報とをやり取りするプロトコルであれば、本願の発明を適用可能である。
【0109】
(3)保留部について
上述した実施例では、保留部15によって一時的に保留された通信予約の数によって、通信に使用されるNICを選択していた。しかし、実施例は、これに限定されるものではなく、例えば、各通信予約が示す処理がNICを使用するであろう時間を算出し、算出された時間が最も短いNICを選択してもよい。また、通信予約が示す処理が通信処理によってやり取りする情報量を算出し、算出された情報量が最も小さいNICを選択してもよい。
【0110】
(4)プログラム
ところで、実施例1に係る情報処理装置、および実施例2に示すコンピュータは、ハードウェアを利用して各種の処理を実現する場合を説明した。しかし、実施例はこれに限定されるものではなく、あらかじめ用意されたプログラムを情報処理装置、又は、コンピュータで実行することによって実現するようにしてもよい。そこで、以下では、図13を用いて、実施例1に示した情報処理装置と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図13は、通信プログラムを実行するコンピュータの一例を説明するための図である。
【0111】
図13に例示されたコンピュータ200は、RAM(Random Access Memory)120、ROM(Read Only Memory)130、HDD(Hard Disk Drive)150がバス170で接続される。また、図13に例示されたコンピュータ200は、CPU(Central Processing Unit)140がバス170で接続される。さらにバス170には、ネットワークと接続するための複数のインターフェースであるI/O(Input Output)160〜162が接続される。
【0112】
ROM130には、第一検索プログラム132、接続要求送信プログラム133、特定プログラム134、通信プログラム135、第二選択プログラム136、応答送信プログラム137があらかじめ保持される。CPU140が各プログラム132〜137をROM130から読み出して実行することによって、図13に示す例では、各プログラム132〜133は、第一検索プロセス142、接続要求送信プロセス143として機能するようになる。
【0113】
また、各プログラム134〜137は、特定プロセス144、通信プロセス145、第二選択プロセス146、応答送信プロセス147として機能するようになる。なお、各プロセス142〜147は、図1に示した各部2〜7と同様の機能を発揮する。また、各プロセス142〜147は、実施例2に係る各部と同等の機能を発揮するようにすることも可能である。
【0114】
なお、本実施例で説明した通信プログラムは、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。
【0115】
また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM(Compact Disc Read Only Memory)、MO(Magneto Optical Disc)、DVD(Digital Versatile Disc)などのコンピュータで読取可能な記録媒体に記録される。また、このプログラムは、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【0116】
1 情報処理装置
2 第一選択部
3 接続要求送信部
4 特定部
5 通信部
6 第二選択部
7 応答送信部
8a〜8c インターフェース
10 プロセス実行部
11 選択部
12 接続要求送信部
13 応答送信部
14 通信部
15 保留部
16 情報記憶部
20 コンピュータ
30〜33 NIC

【特許請求の範囲】
【請求項1】
各インターフェースの通信状況に応じて、通信に使用するインターフェースを選択する第一選択手順と、
前記第一選択手順によって選択されたインターフェースを使用して、他の情報処理装置へ接続要求情報を送信する接続要求送信手順と、
前記接続要求送信手順によって送信された接続要求情報に対する応答情報を前記他の情報処理装置から受信した場合には、当該受信された応答情報から、該他の情報処理装置が応答情報を送信するために使用したインターフェースを特定する特定手順と、
前記接続要求送信手順が前記接続要求情報を送信するために使用したインターフェースと、前記特定手順によって特定されたインターフェースとを使用して、当該他の情報処理装置と情報の送受信を行う通信手順と、
他の情報処理装置から接続要求情報を受信した場合には、各インターフェースの通信状況に応じて、当該他の情報処理装置との通信に使用するインターフェースを選択する第二選択手順と、
前記第二選択手順によって選択されたインターフェースを使用して、前記受信された接続要求情報の送信元へ前記受信された接続要求情報に対する応答情報を送信する応答送信手順と
をコンピュータに実行させることを特徴とする通信プログラム。
【請求項2】
前記第一選択手順は、前記各インターフェースを使用するための通信予約に応じて、前記他の情報処理装置への情報の送信に使用されるインターフェースを選択し、
前記第二選択手順は、前記各インターフェースを使用するための通信予約に応じて、前記他の情報処理装置からの情報の受信に使用されるインターフェースを選択することを特徴とする請求項1に記載の通信プログラム。
【請求項3】
前記特定手順は、前記接続要求送信手順によって送信された接続要求情報に対する応答情報を前記他の情報処理装置から受信した場合には、当該受信された応答情報から、前記第二選択手順によって選択されたインターフェースを一意に特定する特定情報を識別し、当該識別された特定情報から、該他の情報処理装置が応答情報を送信するために使用したインターフェースを特定し、
前記応答送信手順は、前記第二選択手順によって選択されたインターフェースを一意に特定する前記特定情報を含んだ前記応答情報を送信することを特徴とする請求項1または2に記載の通信プログラム。
【請求項4】
複数のインターフェースと、
各インターフェースに係る通信状況に応じて、通信に使用するインターフェースを選択する第一選択部と、
前記第一選択部によって選択されたインターフェースを使用して、他の情報処理装置へ接続要求情報を送信する接続要求送信部と、
前記接続要求送信部によって送信された接続要求情報に対する応答情報を前記他の情報処理装置から受信した場合には、当該受信された応答情報から、該他の情報処理装置が応答情報を送信するために使用したインターフェースを特定する特定部と、
前記接続要求送信部が前記接続要求を送信するために使用したインターフェースと、前記特定部によって特定されたインターフェースとを使用して、当該他の情報処理装置と情報を送受信する通信部と、
他の情報処理装置から接続要求情報を受信した場合には、各インターフェースの通信状況に応じて、当該他の情報処理装置との通信に使用するインターフェースを選択する第二選択部と、
前記第二選択部によって選択されたインターフェースを使用して、前記受信された接続要求情報の送信元へ当該受信された接続要求情報に対する応答情報を送信する応答送信部と
を有することを特徴とする情報処理装置。
【請求項5】
互いに通信する第一の情報処理装置と第二の情報処理装置とを有し、
前記第一の情報処理装置は、
複数のインターフェースと、
各インターフェースの通信状況に応じて、前記第二の情報処理装置との通信に使用するインターフェースを選択する第一選択部と、
前記第一選択部によって選択されたインターフェースを使用して、前記第二の情報処理装置へ接続要求情報を送信する接続要求送信部と、
前記接続要求送信部によって送信された接続要求情報に対する応答情報を前記第二の情報処理装置から受信した場合には、当該受信された応答情報から、前記第二の情報処理装置が応答情報を送信するために使用したインターフェースを特定する特定部と、
前記接続要求送信部が前記接続要求情報を送信するために使用したインターフェースと、前記特定部によって特定されたインターフェースとを使用して、前記第二の情報処理装置と情報の送受信を行う通信部と、
を有し、
前記第二の情報処理装置は、
複数のインターフェースと、
前記第一の情報処理装置から接続要求情報を受信した場合には、各インターフェースの通信状況に応じて、前記第一の情報処理装置との通信に使用するインターフェースを選択する第二選択部と、
前記第二選択部によって選択されたインターフェースを使用して、前記受信された接続要求情報の送信元へ前記受信された接続要求情報に対する応答情報を送信する応答送信部と
を有する事を特徴とする情報通信システム。
【請求項6】
複数のインターフェースを有し、互いに通信する第一の情報処理装置と第二の情報処理装置とが実行する通信方法であって、
前記第一の情報処理装置が
各インターフェースの通信状況に応じて、前記第二の情報処理装置との通信に使用するインターフェースを選択する第一選択ステップと、
前記第一選択ステップによって選択されたインターフェースを使用して、前記第二の情報処理装置へ接続要求情報を送信する接続要求送信ステップと、
前記接続要求送信ステップによって送信された接続要求情報に対する応答情報を前記第二の情報処理装置から受信した場合には、当該受信された応答情報から、前記第二の情報処理装置が応答情報を送信するために使用したインターフェースを特定する特定ステップと、
前記接続要求送信ステップが前記接続要求情報を送信するために使用したインターフェースと、前記特定部によって特定されたインターフェースとを使用して、前記第二の情報処理装置と情報の送受信を行う通信ステップと
を含む方法を実行し、
前記第二の情報処理装置が
前記第一の情報処理装置から接続要求情報を受信した場合には、各インターフェースの通信状況に応じて、前記第一の情報処理装置との通信に使用するインターフェースを選択する第二選択ステップと、
前記第二選択ステップによって選択されたインターフェースを使用して、前記受信された接続要求情報の送信元へ前記受信された接続要求情報に対する応答情報を送信する応答送信ステップと
を含む方法を実行することを特徴とする通信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate