(57)【特許請求の範囲】
【請求項１】
演算処理の時間と通信処理の時間とを基に前記演算処理に必要となるデータの受信又はデータの送信に用いる通信帯域を算出し、前記算出した通信帯域を設定する通信手段と、
前記演算処理を実行し、前記演算処理においてデータの送信及び受信が必要な場合に通信手段に通信を依頼する演算手段と
を含む１つ又は複数の処理手段と、
前記処理手段の通信を仲介するため、前記通信帯域を用いて通信処理を実行する通信制御手段と
を含む情報処理装置。
【請求項２】
前記通信手段が、
前記演算処理の時間が、前記通信処理の時間より大きい場合、前記通信処理の時間が前記演算処理の時間と概略同じ時間となるように、前記通信帯域を算出する
請求項１に記載の情報処理装置。
【請求項３】
前記通信手段が、
前記演算処理の時間が、前記通信処理の時間より小さい場合、前記通信帯域として利用可能な最大の帯域を設定する
請求項１又は２に記載の情報処理装置。
【請求項４】
前記通信手段が、
初回の通信に用いる通信帯域として、利用可能な最大の帯域を用いる
請求項１ないし３のいずれが１項に記載の情報処理装置。
【請求項５】
前記通信手段が、
前記演算処理の時間として、前記演算手段からの通信処理の完了待ち合わせを受信した時刻と、前記演算手段に前記通信処理の起動の完了を送信した時刻との差分を用い、
前記通信処理の時間として、前記通信制御手段からの通信の完了を受信した時刻と、前記演算手段からの通信処理の起動の通知を受信した時刻との差分を用いる
請求項１ないし４のいずれか１項に記載の情報処理装置。
【請求項６】
演算処理の時間と通信処理の時間とを基に前記演算処理に必要となるデータの受信又は演算処理の結果であるデータの送信に用いる通信帯域を算出し、前記算出した通信帯域を設定し、
前記演算処理を実行し、前記演算処理においてデータの送信及び受信が必要な場合に前記通信を依頼し、
前記通信を仲介するため、前記通信帯域を用いて通信する
情報処理方法。
【請求項７】
演算処理の時間と通信処理の時間とを基に前記演算処理に必要となるデータの受信又は演算処理の結果であるデータの送信に用いる通信帯域を算出し、前記算出した通信帯域を設定する処理と、
前記演算処理を実行し、前記演算処理においてデータの送信及び受信が必要な場合に前記通信を依頼する処理と、
前記通信を仲介するため、前記通信帯域を用いる通信処理と
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理に関し、特に、通信処理を含む演算処理を実行する情報処理装置、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
情報処理システムは、一般的に、複数の情報処理装置を含む。このような情報処理システムにおいて、情報処理装置は、通信経路を介して、他の情報処理装置と連携した処理（分散並列プログラム）を実行する（例えば、特許文献１を参照）。
【０００３】
このようなシステム（分散処理システム）に含まれる情報処理装置は、分散並列プログラムの実行において、データを非同期に通信（送信又は受信）する。情報処理装置は、非同期の通信を利用して、演算処理と通信処理とを並列実行（オーバーラップ実行）することができる。このように、オーバーラップは、情報処理システムの実行性能を改善する手法の一つである。演算処理の時間が、通信処理の時間より短い場合、オーバーラップは、通信処理の影響を削減できる。特に、演算処理の時間と通信処理の時間とが等しい場合、オーバーラップに基づく性能改善効果は、最大（最適）となる。この最適な場合、情報処理装置は、オーバーラップを基に、実行時間を、おおよそ１／２に短縮できる。
【０００４】
しかし、演算処理時間と通信処理時間との比率は、実行するプログラム（分散並列プログラム）の特性に応じて、異なる。そのため、一般的な分散並列プログラムの実行において、オーバーラップは、必ずしも、最大効率まで効率を改善することができなかった。
【０００５】
例えば、特許文献１に記載の技術は、一般的な分散並列プログラムの処理おいて、オーバーラップに基づく効率を高めることができなかった。
【０００６】
そこで、演算処理と通信処理とのオーバーラップ効果を高める方法が、検討されている（例えば、特許文献２を参照）。
【０００７】
特許文献２に記載の演算処理装置は、オーバーラップ実行の対象となる演算処理と通信処理とにおいて、演算処理時間が通信処理時間を下回る場合、演算処理を実行するプロセッサのコア数（又は、演算処理を並列実行するスレッド数）を制限（減少）する。つまり、特許文献２に記載の演算処理装置は、コアの数の制限を基にしたメモリアクセスの負荷を軽減することを用いて、演算処理と通信処理とのメモリアクセスの競合を軽減する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−０７９６２２号公報
【特許文献２】特開２０１２−１６８７３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、特許文献２の記載の技術は、演算処理が並列的に処理されている場合（共有並列処理の場合）を前提としている。つまり、特許文献２に記載の技術は、分散並列処理と共有並列処理とを併用した場合に、適用可能な技術である。そのため、特許文献２に記載の技術は、共有並列処理を利用しない分散並列プログラムにおいて、オーバーラップに基づく効率を高めることができないという問題点があった。
【００１０】
本発明の目的は、上記問題点を解決し、共有並列処理に限らず、オーバーラップに基づく効率を高める情報処理装置、情報処理方法、及び、プログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明の一形態における情報処理装置は、演算処理の時間と通信処理の時間とを基に演算処理に必要となるデータの受信又はデータの送信に用いる通信帯域を算出し、算出した通信帯域を設定する通信手段と、演算処理を実行し、演算処理においてデータの送信及び受信が必要な場合に通信手段に通信を依頼する演算手段とを含む１つ又は複数の処理手段と、処理手段の通信を仲介するため、通信帯域を用いて通信処理を実行する通信制御手段とを含む。
【００１２】
本発明の一形態におけるデータ処理方法は、演算処理の時間と通信処理の時間とを基に演算処理に必要となるデータの受信又は演算処理の結果であるデータの送信に用いる通信帯域を算出し、算出した通信帯域を設定し、演算処理を実行し、演算処理においてデータの送信及び受信が必要な場合に通信を依頼し、通信を仲介するため、通信帯域を用いて通信する。
【００１３】
本発明の一形態におけるプログラムは、演算処理の時間と通信処理の時間とを基に演算処理に必要となるデータの受信又は演算処理の結果であるデータの送信に用いる通信帯域を算出し、算出した通信帯域を設定する処理と、演算処理を実行し、演算処理においてデータの送信及び受信が必要な場合に通信を依頼する処理と、通信を仲介するため、通信帯域を用いる通信処理とをコンピュータに実行させる。
【発明の効果】
【００１４】
本発明に基づけば、オーバーラップに基づく効率を高めるとの効果を奏することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、本発明における第１の実施形態に係る情報処理装置の通信処理を説明するための図である。
【図２】図２は、第１の実施形態に係る情報処理装置の通信処理の一例を説明するための図である。
【図３】図３は、第１の実施形態に係る情報処理装置を含む情報処理システムの構成の一例を示すブロック図である。
【図４】図４は、第１の実施形態に係る情報処理装置のデータ通信の起動までの動作の一例を示すフローチャートである。
【図５】図５は、第１の実施形態に係る情報処理装置の通信完了の待ち合わせ動作の一例を示すフローチャートである。
【図６】図６は、余剰帯域を用いない場合の動作の一例を示すシーケンス図である。
【図７】図７は、余剰帯域を用いる場合の動作の一例を示すシーケンス図である。
【図８】図８は、第１の実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【図９】図９は、第１の実施形態に係る情報処理装置の別の構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１６】
次に、本発明の実施形態について図面を参照して説明する。
【００１７】
なお、各図面は、本発明の実施形態を説明するものである。ただし、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。
【００１８】
また、以下の説明に用いる図面において、本発明の説明に関係しない部分の構成については、記載を省略し、図示しない場合もある。
【００１９】
本発明における実施形態の説明の前に、説明の前提となる分散並列プログラムにおける問題点を、説明する。
【００２０】
分散並列プログラムは、複数の処理部（例えば、プロセス）を含む。これらの処理部は、処理の同期のため、又は、データの送信若しくは受信のために、他の処理部（例えば、他のプロセス）と通信する場合がある。同一の資源（例えば、通信資源）を共有する複数の処理部（例えば、同一の情報処理装置（ホスト又はノード）上で動作する複数の処理部）が、並列的に（つまり同時に）、通信処理を実行する場合を想定する。この場合に、いずれかの処理部が、全ての通信処理資源を占有してしまうと、その他の処理部は、通信処理を開始することができない。そのため、その他の処理部に待ち合わせ状態が、発生する。その結果、その他の処理部における通信処理時間は、増加する。
【００２１】
特に、性能改善のために演算処理と通信処理とにおけるオーバーラップを実行している場合、オーバーラップを用いる装置は、「通信処理時間≦演算処理時間」であることを前提としている。この関係が成り立つ場合、通信処理の時間は、演算処理の時間に隠れる。以下、この効果を「オーバーラップ効果」と呼ぶ。しかし、上記のように、通信処理に待ち合わせが発生した場合、通信処理の時間が増加する。そして、その結果として、「通信処理時間＞演算処理時間」となると、情報処理装置は、オーバーラップ効果を得ることができなくなる。つまり、通信処理の時間が、演算処理の時間に隠れなくなる。そこで、通信処理における待ち合わせを改善する技術が、望まれていた。本実施形態は、以下で説明するように、通信処理における待ち合わせを改善する。
【００２２】
＜第１の実施形態＞
次に、図面を参照して、本発明における第１の実施形態に係る情報処理装置１０について説明する。なお、以下では、資源の一例として通信資源を用いて説明する。ただし、本実施形態は、通信資源に限る必要はない。
【００２３】
まず、第１の実施形態に係る情報処理装置１０を含む情報処理システム１００について説明する。
【００２４】
図３は、第１の実施形態に係る情報処理装置１０を含む情報処理システム１００の構成の一例を示すブロック図である。情報処理システム１００は、情報処理装置１０と、通信経路５０とを含む。
【００２５】
通信経路５０は、複数の情報処理装置１０間での通信を中継する。ただし、通信経路５０は、通信を中継できれば、用いる手段に制限はない。例えば、通信経路５０は、ＬＡＮ（Local Area Network）でもよい。そのため、通信経路５０の詳細な説明を省略する。なお、通信経路５０は、通信資源の一部に相当する。
【００２６】
情報処理装置１０は、後ほど説明するように、通信経路５０を介して通信処理を実行する１つ又は複数の処理部２０を含む。情報処理装置１０に含まれる処理部２０が、分散並列プログラムを実現する。なお、情報処理装置１０は、情報処理システム１００において、通信経路５０を介した通信処理を実現している。そのため、情報処理装置１０は、情報処理システム１００における「ノード」に相当する。
【００２７】
次に、本発明における第１の実施形態に係る情報処理装置１０について、さらに、図面を参照して説明する。
【００２８】
図８は、第１の実施形態に係る情報処理装置１０の構成の一例を示すブロック図である。図８に示すように、情報処理装置１０は、１つ又は複数の処理部２０と、通信制御部３０とを含む。
【００２９】
処理部２０は、後ほど説明するように、データを処理する演算処理と、他の処理部２０にデータを送信又はデータを受信する通信処理とを実行する。そのため、処理部２０は、データの演算を処理する演算部２１０と、データの通信を処理する通信部２２０とを含む。
【００３０】
演算部２１０は、データの演算処理を実行する。そして、演算部２１０は、データの演算処理において、他の処理部２０からのデータを受信する場合、又は、他の処理部２０にデータを送信する場合、通信部２２０にデータの通信を依頼する。演算部２１０は、通信部２２０に通信を依頼後、通信の終了を待たずに、演算処理を実行する。
【００３１】
そして、必要となる演算処理を終了後、演算部２１０は、通信部２２０に通信の終了を問い合わせる。通信が終了している場合、演算部２１０は、次の処理を実行する。例えば、データの受信の場合、演算部２１０は、通信部２２０からデータを受信し、演算処理を継続する。通信が終了していない場合、演算部２１０は、待ち合わせ処理を実行する。
【００３２】
通信部２２０は、演算部２１０からの依頼を基に、通信制御部３０にデータの送信又はデータの受信を依頼する。そして、通信部２２０は、通信制御部３０から通信（送信又は受信）の終了を受け取る。例えば、受信の場合、通信部２２０は、通信の終了と、受信データを受け取る。そして、通信部２２０は、演算部２１０から問い合わせに対して、通信状況（終了又は未終了）を通知する。
【００３３】
通信制御部３０は、通信部２２０からの依頼を基に、処理部２０における演算処理とは独立に、つまり、処理部２０の処理と、同時及び並行的に、データを通信（送信及び受信）する。ただし、図８に示すように、同一の情報処理装置１０（ノード）に含まれる処理部２０は、情報処理装置１０に含まれる通信制御部３０を、共有的に利用する。そして、情報処理装置１０の処理部２０は、通信制御部３０を介して、通信経路５０に接続し、他の情報処理装置１０上の処理部２０とのデータの通信（送信又は受信）を実現する。つまり、通信制御部３０は、通信資源の一部である。
【００３４】
なお、同一の情報処理装置１０で動作する処理部２０間でのデータの通信は、通信制御部３０での折り返し通信となる。この場合、通信資源は、通信制御部３０である。また、異なる情報処理装置１０で動作する処理部２０間でのデータ通信は、通信制御部３０と通信経路５０とを介した通信である。この場合、通信資源は、通信制御部３０と通信経路５０となる。以下の説明おいて、通信資源は、どちらの場合も含むとする。
【００３５】
情報処理システム１００において実現される分散並列プログラムは、上記のように、１つ又は複数の情報処理装置１０上で動作する複数の処理部２０の連携に基づいて、構成されている。
【００３６】
なお、１つの情報処理装置１０上で複数の処理部２０が、動作してもよい。そして、同じ情報処理装置１０上で動作する複数の処理部２０が、異なる情報処理装置１０において動作する処理部２０の場合と同様に、通信制御部３０で折り返さず、通信経路５０を介して、データを送信及び受信することも可能である。そのため、以下の説明において、複数の情報処理装置１０とは、１台の情報処理装置１０の場合を含むとする。このように、本実施形態における分散並列プログラムに含まれる処理部２０は、複数の情報処理装置１０（ノード）上に分散的に配置されている。また、各情報処理装置１０（ノード）上には、１つ又は複数の処理部２０が動作している。
【００３７】
次に、第１の実施形態の動作について、図面を参照して説明する。
【００３８】
図１は、第１の実施形態に係る情報処理装置１０のオーバーラップを用いた通信処理を説明するための図である。図１は、後ほど説明する帯域制限を用いない場合の動作の一例である。この場合の通信帯域（最大帯域）を、以下、「Ｂｎｏｗ」とする。
【００３９】
演算部２１０は、通信部２２０に通信処理の起動を依頼する（時刻ｔ１）。
【００４０】
通信部２２０は、演算部２１０からの依頼を基に、通信制御部３０に、データの通信（受信又は送信）の開始の指示（通知１）を送信する。そして、通信部２２０は、通知１を送信後、演算部２１０に、通信の起動の完了を通知する（時刻ｔ２）。
【００４１】
演算部２１０は、通信部２２０からの通信処理の起動の完了の通知を基に、演算処理を実行（継続）する。
【００４２】
通信制御部３０は、通信部２２０からの指示を基に、通信処理を実行する。図１に示す場合、通信制御部３０は、通信帯域を制限しないで、利用可能な最大帯域（Ｂｎｏｗ）を用いる。そして、処理終了後、通信制御部３０は、通信部２２０に、データの通信の完了の通知（通知２）を送信する。以下、通信制御部３０における通信処理の時間を、以下、「Ｔｃｏｍｍ」とする。通信部２２０は、通信制御部３０からの完了の通知（通知２）及び完了の通知を受信した時刻（ｔ３）を保持する。
【００４３】
演算部２１０は、演算処理の終了後に、通信部２２０に、通信の完了を問い合わせる。通信部２２０は、演算部２１０からの問い合わせの時刻（ｔ４）を保持する。そして、通信が完了していた場合、通信部２２０は、通信の完了の通知（通知３）を演算部２１０に送信する。通信が完了していない場合、通信部２２０は、通信の完了を待つ。そして、通信が完了した時に、通信部２２０は、演算部２１０に、通信の完了の通知を送信する。
【００４４】
このような動作を基に、情報処理装置１０の処理部２０は、演算処理と通信処理とを実現する。
【００４５】
図２は、第１の実施形態に係る情報処理装置１０の通信処理の一例を説明するための図である。
【００４６】
図２に中央に示されている帯域調整前に示すように、通信制御部３０における通信処理は、最大帯域（Ｂｎｏｗ）を用いる場合、通信処理を実行しない時間（余剰時間（Ｔｓｕｒｐ））発生したとする。つまり、演算処理時間（Ｔｃａｌｃ）が、通信処理時間（Ｔｃｏｍｍ）より大きいとする。この場合、通信制御部３０は、利用する帯域を、図２に右側に示されている帯域調整後に示すように、制限された帯域（Ｂｎｅｗ）とすることが可能である。その結果、通信制御部３０は、余剰帯域（Ｂｓｕｒｐ）を確保することできる。通信制御部３０は、余剰帯域（Ｂｓｕｒｐ）を、別の処理部２０の通信処理に適用できる。
【００４７】
そこで、第１の実施形態に係る情報処理装置１０は、次のように動作する。
【００４８】
図４は、第１の実施形態に係る情報処理装置１０のデータの通信の起動までの動作の一例を示すフローチャートである。
【００４９】
なお、通信部２２０は、以下の説明に用いる各時刻を取得するために、図示しない計時部を含んでもよい。あるいは、通信部２２０は、図示しない情報処理装置１０が含む計時部から時刻を取得してもよい。
【００５０】
通信部２２０は、演算部２１０からの依頼を基に、通信制御部３０における通信処理を起動する処理（起動処理）の開始（起動）時刻（ｔ１）を取得し、保持する（ステップＳ１０１）。
【００５１】
そして、通信部２２０は、通信制御部３０に依頼する通信処理が、初回か否かを判断する（ステップＳ１０２）。
【００５２】
初回の場合（ステップＳ１０２でＹｅｓ）、通信部２２０は、通信制御部３０が通信に用いる帯域として、利用可能な最大の通信帯域（制限しない通信帯域（Ｂｎｏｗ））を指定する（ステップＳ１０３）。
【００５３】
初回でない場合（ステップＳ１０２でＮｏ）、通信部２２０は、通信制御部３０が通信に用いる帯域として、前回の実行時に算出した通信帯域（Ｂｎｅｗ）を指定する（ステップＳ１０４）。なお、この算出について、後ほど説明する。
【００５４】
そして、通信部２２０は、通信制御部３０における通信を開始（起動）する。通信部２２０は、通信制御部３０における通信の起動の完了を、演算部２１０に通知する。そして、通信部２２０は、通知した時刻（データ通信の起動の完了の時刻（ｔ２））を取得し、保存する（ステップＳ１０５）。
【００５５】
次に、通信部２２０における通信完了の待ち合わせ処理について、図面を参照して説明する。
【００５６】
図５は、第１の実施形態に係る情報処理装置１０の通信完了の待ち合わせ動作の一例を示すフローチャートである。
【００５７】
なお、通信部２２０は、通信制御部３０から通信処理の完了の通知（通知２）を受信している場合、その時刻（ｔ３）を保持しておく（図１を参照）。
【００５８】
通信部２２０は、演算部２１０から完了待ちの問い合わせを受けると、まず、その時刻を、通信完了の問い合わせの時間（ｔ４）として保持する（ステップＳ２０１）。
【００５９】
次に、通信部２２０は、通信制御部３０におけるデータの通信（送信又は受信）の状態を取得する（ステップＳ２０２）。ただし、既に、通信制御部３０から完了の通知を受信している場合、通信部２２０は、通信制御部３０に問い合わせしないで、ステップＳ２０３に進む。
【００６０】
そして、通信部２２０は、通信が完了しているか否かを判断する（ステップＳ２０３）。
【００６１】
完了していない場合（ステップＳ２０３でＮｏ）、通信部２２０は、ステップＳ２０２に戻り、データの通信（送信又は受信）の状態を取得する動作に戻る。つまり、通信部２２０は、通信の完了まで待ち合わせる。
【００６２】
完了している場合（ステップＳ２０３でＹｅｓ）、通信部２２０は、演算処理時間（Ｔｃａｌｃ）及び通信処理時間（Ｔｃｏｍｍ）を算出する（ステップＳ２０４）。
【００６３】
そして、通信部２２０は、演算処理時間が通信処理時間より大きいか否かを判断する（ステップＳ２０５）。
【００６４】
通信部２２０は、演算処理時間と通信処理時間との大小関係を基に、次回の通信処理で利用する通信帯域（Ｂｎｅｗ）を算出する。
【００６５】
具体的には、通信部２２０は、次回の通信処理で利用する通信帯域（Ｂｎｅｗ）を次のように算出する。
【００６６】
演算処理時間が通信処理時間より大きい（Ｔｃａｌｃ≧Ｔｃｏｍｍ）場合（ステップＳ２０５でＹｅｓ）、通信部２２０は、通信処理時間が演算処理時間と同程度の時間となるように、制限された通信帯域（Ｂｎｅｗ）を算出する（ステップＳ２０６）。なお、通信部２２０は、演算部２１０との連携処理に必要な時間を考慮して、通信帯域（Ｂｎｅｗ）を補正してもよい。
【００６７】
演算処理時間が通信処理時間より小さい（Ｔｃａｌｃ＜Ｔｃｏｍｍ）場合（ステップＳ２０５でＮｏ）、通信部２２０は、通信帯域（Ｂｎｅｗ）として、利用可能な最大帯域を算出（設定）する（ステップＳ２０７）。これは、通信処理時間を短縮して、処理部２０の効率を改善するためである。
【００６８】
情報処理装置１０は、次の通信処理において、ここで算出した通信帯域（Ｂｎｅｗ）を用いる。
【００６９】
次に、通信部２２０における、ステップＳ２０４における演算処理時間と通信処理時間との測定方法、及び、ステップＳ２０６における通信帯域の算出方法について説明する。
【００７０】
まず、既に説明した変数も含め、以下の説明に用いる変数についてまとめる（図１及び２を参照）。
【００７１】
時刻の変数は、次のとおりである。
ｔ１：演算部２１０から通信処理の起動の通知を受信した時刻
ｔ２：演算部２１０に通信処理の起動の完了を送信（通知）した時刻
ｔ３：通信制御部３０からデータ通信の完了を受信した時刻
ｔ４：演算部２１０から通信処理の完了の問い合わせを受信した時刻
処理時間の変数は、次のとおりである。
Ｔｃａｌｃ：演算処理時間
Ｔｃｏｍｍ：通信処理時間（なお、特に初期の通信処理時間を明確する場合は、Ｔｃｏｍｍ０とする。）
Ｔｓｕｒｐ：余剰時間
また、通信帯域の変数は、次のとおりである。
Ｂｎｏｗ：利用可能な最大帯域（初回の帯域）
Ｂｎｅｗ：通信部２２０が算出した帯域（制限された帯域）
Ｂｓｕｒｐ：余剰帯域（＝Ｂｎｏｗ−Ｂｎｅｗ）
通信部２２０は、時刻情報を用いて、演算処理時間（Ｔｃａｌｃ）及び通信処理時間（Ｔｃｏｍｍ）を、次に示すように算出する。
【００７２】
演算処理時間：Ｔｃａｌｃ＝ｔ４−ｔ２
通信処理時間：Ｔｃｏｍｍ＝ｔ３−ｔ１
通信部２２０は、全ての時刻情報（ｔ１ないしｔ４）を保持している。そのため、通信部２２０は、上記の算出において、他の構成（例えば、演算部２１０）との情報の受渡しが不要である。
【００７３】
演算処理時間が通信処理時間より大きい（Ｔｃａｌｃ≧Ｔｃｏｍｍ）場合、通信部２２０は、ステップＳ２０６において、制限した帯域（Ｂｎｅｗ）を算出する。この算出方法について説明する。
【００７４】
ここで、処理部２０が通信したデータサイズを「Ｓ」とする。なお、データサイズの単位は、特に制限はない。例えば、単位は、「ｂｙｔｅ」でもよい。
【００７５】
また、情報処理装置１０は、初回の通信として、最大帯域を用いる。そのため、通信部２２０は、初回の通信処理時間（Ｔｃｏｍｍ０）を用いて、最大の通信帯域（Ｂｎｏｗ）を、次のように算出できる。
【００７６】
Ｂｎｏｗ＝Ｓ／Ｔｃｏｍｍ０
そして、演算処理時間（Ｔｃａｌｃ）が通信処理時間（Ｔｃｏｍｍ）より大きい場合、通信部２２０は、通信帯域を制限して、通信処理時間を、演算処理時間まで長くすることできる。この場合、通信部２２０は、ステップ２０６で用いる制限された通信帯域（Ｂｎｅｗ）を、次のように算出できる。
【００７７】
Ｂｎｅｗ＝Ｓ／Ｔｃａｌｃ
通信部２２０が、通信制御部３０で用いる通信帯域として、上記の通信帯域（Ｂｎｅｗ）を設定しても、通信処理時間（Ｔｃｏｍｍ）は、演算処理時間（Ｔｃａｌｃ）を超えない。そのため、通信部２２０が上記の帯域を設定しても、情報処理装置１０は、性能が低下しない（図２を参照）。
【００７８】
そして、他の処理部２０は、余剰帯域（Ｂｓｕｒｐ＝Ｂｎｏｗ−Ｂｎｅｗ）を、通信に利用することができる。そのため、他の処理部２０は、通信処理時間を短縮することができる。
【００７９】
次に、図面を参照して、余剰帯域（Ｂ）に利用について説明する。
【００８０】
図６は、余剰帯域を用いない場合の動作の一例を示すシーケンス図である。図６において、処理部Ａが、ここまで説明した情報処理装置１０上で動作する処理部２０である。また、処理部Ｂは、ここまでの説明における他の処理部２０に相当する。なお、図６は、通信経路５０を示していない。しかし、これは、図面を明確にするためである。図６に示す通信制御部３０の動作は、通信経路５０を用いた通信処理を実行してもよい。つまり、図６に示す処理部Ａ及び処理部Ｂは、別の情報処理装置１０上で動作する複数の処理部２０でもよい。ただし、以下の説明においては、説明の便宜のため、処理部Ａ及び処理部Ｂは、同じ情報処理装置１０上で動作する処理部２０とする。なお、図６に右側に記載したシーケンスは、処理部Ｂに通信待ちが発生しない場合の理想的な動作を示している。これは、後ほど用いる図７においても同様である。
【００８１】
処理部Ａ及び処理部Ｂは、ほぼ同時に、データの通信処理を開始しようとしたとする。ここで、処理部Ａが、先に、リソースである通信制御部３０の全通信帯域を占有して通信処理を開始したとする。
【００８２】
この時、処理部Ｂは、本来、図６の右側に示す理想的な動作を実行できず、右から２番目に示すシーケンスのように、処理部Ａのデータの通信が完了するまで待たされる。つまり、処理部Ｂの通信部２２０に通信待ちが、発生する。
【００８３】
次に、余剰帯域を用いた場合について説明する。
【００８４】
ここで、処理部Ａの通信部２２０が算出した演算処理時間（Ｔｃａｌｃ）及び通信処理時間（Ｔｃｏｍｍ）が、例えば、次の値であったとする。
【００８５】
演算処理時間（Ｔｃａｌｃ）＝１０［秒］
通信処理時間（Ｔｃｏｍｍ）＝６［秒］
この場合、通信部２２０は、通信するデータのサイズをＳとすると、最大の通信帯域（Ｂｎｏｗ）と制限された通信帯域（Ｂｎｅｗ）を、次のように算出する。
【００８６】
Ｂｎｏｗ＝Ｓ／６
Ｂｎｅｗ＝Ｓ／１０
ここで、ＢｎｅｗのＢｎｏｗに対する比率は、０．６（＝（Ｓ／１０）／（Ｓ／６））である。そのため、通信部２２０は、次の通信処理において、通信帯域を６０％まで絞ることができる。
【００８７】
図７は、余剰帯域を用いる場合の動作の一例を示すシーケンス図である。
【００８８】
図７に示すように、処理部Ａの通信部２２０は、通信帯域を制限して、通信処理を実行する。ただし、図７に示すように、処理部Ａの処理の終了時刻は、変化がない。つまり、処理部Ａの処理性能は、低下しない。
【００８９】
そして、処理部Ａが利用する通信帯域を制限した結果、余剰帯域が、通信制御部３０に発生する。
【００９０】
処理部Ｂは、この余剰帯域を利用し、データを通信することができる。その結果、処理部Ｂは、図７に右に表示した理想的な場合の動作と同様の時刻に、処理を終了できる。つまり、処理部Ｂの処理性能も、低下しない。
【００９１】
（効果の説明）
第１の形態に係る情報処理装置１０は、オーバーラップにおける効率を高めるとの効果を奏することができる。
【００９２】
その理由は、情報処理装置１０の処理部２０の通信部２２０が、演算部２１０における演算処理時間と通信制御部３０における通信処理時間とを基に、必要となる通信帯域を算出し、必要となる通信帯域を通信制御部３０に設定するためである。つまり、通信部２２０は、通信制御部３０に余剰帯域を確保する。そのため、他の処理部２０は、余剰帯域を用いて通信処理を実行できるためである。
【００９３】
さらに、第１の実施形態に係る情報処理装置１０において、通信部２２０が、上記処理を実現する。そのため、情報処理装置１０は、演算部２１０及び通信制御部３０を変更しなくても、上記効果を奏することができる。つまり、本実施形態に係る情報処理装置１０は、演算部２１０の動作を変更しないため、適用する並列プログラムに制限がない。例えば、本実施形態は、純粋な分散並列プログラム及びハイブリッド並列プログラムに適用可能である。
【００９４】
［変形例］
以上の説明した情報処理装置１０は、次のように構成される。
【００９５】
例えば、情報処理装置１０の各構成部は、ハードウェア回路で構成されても良い。
【００９６】
また、情報処理装置１０は、各構成部が、ネットワークを介して接続した複数の装置を用いて、構成されても良い。
【００９７】
また、情報処理装置１０は、複数の構成部を１つのハードウェアで構成しても良い。
【００９８】
また、情報処理装置１０は、ＣＰＵ（Central Processing Unit）と、ＲＯＭ（Read Only Memory）と、ＲＡＭ（Random Access Memory）とを含むコンピュータ装置として実現してもよい。情報処理装置１０は、上記構成に加え、さらに、入出力接続回路（ＩＯＣ：Input / Output Circuit）と、ネットワークインターフェース回路（ＮＩＣ：Network Interface Circuit）とを含むコンピュータ装置として実現しても良い。
【００９９】
図９は、本変形例に係る情報処理装置６００の構成の一例を示すブロック図である。
【０１００】
情報処理装置６００は、ＣＰＵ６１０と、ＲＯＭ６２０と、ＲＡＭ６３０と、内部記憶装置６４０と、ＩＯＣ６５０と、ＮＩＣ６８０とを含み、コンピュータ装置を構成している。
【０１０１】
ＣＰＵ６１０は、ＲＯＭ６２０からプログラムを読み込む。そして、ＣＰＵ６１０は、読み込んだプログラムに基づいて、ＲＡＭ６３０と、内部記憶装置６４０と、ＩＯＣ６５０と、ＮＩＣ６８０とを制御する。そして、ＣＰＵ６１０を含むコンピュータは、これらの構成を制御し、図８に示す、処理部２０（演算部２１０と通信部２２０）と、通信制御部３０としての各機能を実現する。
【０１０２】
ＣＰＵ６１０は、各機能を実現する際に、ＲＡＭ６３０又は内部記憶装置６４０を、プログラムの一時記憶として使用しても良い。
【０１０３】
また、ＣＰＵ６１０は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体７００が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでも良い。あるいは、ＣＰＵ６１０は、ＮＩＣ６８０を介して、図示しない外部の装置からプログラムを受け取り、ＲＡＭ６３０に保存して、保存したプログラムを基に動作しても良い。
【０１０４】
ＲＯＭ６２０は、ＣＰＵ６１０が実行するプログラム及び固定的なデータを記憶する。ＲＯＭ６２０は、例えば、Ｐ−ＲＯＭ（Programmable-ROM）又はフラッシュＲＯＭである。
【０１０５】
ＲＡＭ６３０は、ＣＰＵ６１０が実行するプログラム及びデータを一時的に記憶する。ＲＡＭ６３０は、例えば、Ｄ−ＲＡＭ（Dynamic-RAM）である。
【０１０６】
内部記憶装置６４０は、情報処理装置６００が長期的に保存するデータ及びプログラムを記憶する。また、内部記憶装置６４０は、ＣＰＵ６１０の一時記憶装置として動作しても良い。内部記憶装置６４０は、例えば、ハードディスク装置、光磁気ディスク装置、ＳＳＤ（Solid State Drive）又はディスクアレイ装置である。
【０１０７】
ここで、ＲＯＭ６２０と内部記憶装置６４０は、不揮発性（non-transitory）の記憶媒体である。一方、ＲＡＭ６３０は、揮発性（transitory）の記憶媒体である。そして、ＣＰＵ６１０は、ＲＯＭ６２０、内部記憶装置６４０、又は、ＲＡＭ６３０に記憶されているプログラムを基に動作可能である。つまり、ＣＰＵ６１０は、不揮発性記憶媒体又は揮発性記憶媒体を用いて動作可能である。
【０１０８】
ＩＯＣ６５０は、ＣＰＵ６１０と、入力機器６６０及び表示機器６７０とのデータを仲介する。ＩＯＣ６５０は、例えば、ＩＯインターフェースカード又はＵＳＢ（Universal Serial Bus）カードである。
【０１０９】
入力機器６６０は、情報処理装置６００の操作者からの入力指示を受け取る機器である。入力機器６６０は、例えば、キーボード、マウス又はタッチパネルである。
【０１１０】
表示機器６７０は、情報処理装置６００の操作者に情報を表示する機器である。表示機器６７０は、例えば、液晶ディスプレイである。
【０１１１】
ＮＩＣ６８０は、ネットワークを介した図示しない外部の装置とのデータのやり取りを中継する。ＮＩＣ６８０は、例えば、ＬＡＮ（Local Area Network）カードである。
【０１１２】
このように構成された情報処理装置６００は、情報処理装置１０と同様の効果を得ることができる。
【０１１３】
その理由は、情報処理装置６００のＣＰＵ６１０が、プログラムに基づいて情報処理装置１０と同様の機能を実現できるためである。
【０１１４】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成及び詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【０１１５】
本発明は、分散並列プログラムの実行において、非同期データの通信を利用して演算処理と通信処理とをオーバーラップさせるシステムに適用可能である。
【符号の説明】
【０１１６】
１０    情報処理装置
２０    処理部
３０    通信制御部
５０    通信経路
１００    情報処理システム
２１０    演算部
２２０    通信部
６００    情報処理装置
６１０    ＣＰＵ
６２０    ＲＯＭ
６３０    ＲＡＭ
６４０    内部記憶装置
６５０    ＩＯＣ
６６０    入力機器
６７０    表示機器
６８０    ＮＩＣ
７００    記憶媒体
【図１】
0006500461.tif 000002
【図２】
0006500461.tif 000003
【図３】
0006500461.tif 000004
【図４】
0006500461.tif 000005
【図５】
0006500461.tif 000006
【図６】
0006500461.tif 000007
【図７】
0006500461.tif 000008
【図８】
0006500461.tif 000009
【図９】
0006500461.tif 000010