(57)【要約】【課題】  情報処理装置間での通信量を抑えて、他の情報処理装置に対する処理の遅れの程度を判定する。【解決手段】  複数の情報処理装置を含み、処理を並列に実行する情報処理システムにおいて、複数の情報処理装置の各々は、複数の情報処理装置のうち、他の情報処理装置の少なくともいずれかである第１の情報処理装置から処理の完了を示す完了情報を受信する受信部と、自情報処理装置による処理の完了に基づいて、他の情報処理装置の少なくともいずれかであり第１の情報処理装置と異なる第２の情報処理装置に完了情報を送信する送信部と、自情報処理装置による処理の実行中に第１の情報処理装置からの完了情報を受信部で受信した場合、受信した完了情報に基づいて、他の情報処理装置に対する自情報処理装置の処理の遅れの程度を判定する判定部とを有する。【選択図】    図１
2018206319.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置を含み、処理を並列に実行する情報処理システムにおいて、
前記複数の情報処理装置の各々は、
前記複数の情報処理装置のうち、他の情報処理装置の少なくともいずれかである第１の情報処理装置から処理の完了を示す完了情報を受信する受信部と、
自情報処理装置による処理の完了に基づいて、前記他の情報処理装置の少なくともいずれかであり前記第１の情報処理装置と異なる第２の情報処理装置に完了情報を送信する送信部と、
前記自情報処理装置による処理の実行中に前記第１の情報処理装置からの完了情報を前記受信部で受信した場合、受信した完了情報に基づいて、前記他の情報処理装置に対する前記自情報処理装置の処理の遅れの程度を判定する判定部と
を備えることを特徴とする情報処理システム。
【請求項２】
前記複数の情報処理装置の各々において、前記送信部は、前記自情報処理装置による処理の実行中に前記受信部が完了情報を受信した場合、前記受信部が受信した完了情報を含む完了情報を、前記第２の情報処理装置に送信することを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記複数の情報処理装置の各々は、さらに、
前記判定部で判定された前記遅れの程度に基づいて、前記自情報処理装置の動作周波数を増加するかを決定する周波数決定部と、
前記周波数決定部の決定に基づいて、前記自情報処理装置の動作周波数を増加させる動作制御部と
を備えることを特徴とする請求項１または請求項２記載の情報処理システム。
【請求項４】
前記完了情報は、前記他の情報処理装置の少なくともいずれかの処理の完了時刻を示す時刻情報を含み、
前記判定部は、前記自情報処理装置の処理の遅れの程度として、前記自情報処理装置による処理の完了時刻と前記時刻情報が示す完了時刻との差を求め、
前記周波数決定部は、順次実行される処理の実行間隔に対する前記差の比率に基づいて、前記自情報処理装置の動作周波数の増加量を決定することを特徴とする請求項３記載の情報処理システム。
【請求項５】
前記送信部は、前記自情報処理装置による処理の実行中に前記受信部が複数の前記時刻情報を含む前記完了情報を受信した場合、最も早い完了時刻を示す時刻情報を含む完了情報を前記第２の情報処理装置に送信することを特徴とする請求項４記載の情報処理システム。
【請求項６】
前記完了情報は、前記他の情報処理装置のうち、処理が完了した情報処理装置の数を示す完了数情報を含み、
前記判定部は、前記完了数情報に基づいて前記自情報処理装置の処理の遅れの程度を判定することを特徴とする請求項３記載の情報処理システム。
【請求項７】
前記情報処理システムは、
前記複数の情報処理装置の消費電力量を監視する電力監視部と、
前記複数の情報処理装置のいずれかの動作周波数の増加により、前記複数の情報処理装置の消費電力量が規定の電力量を超える可能性がある場合、前記複数の情報処理装置のうち所定数の情報処理装置の動作周波数を減少させる周波数制御部と
を備えることを特徴とする請求項３ないし請求項６のいずれか１項記載の情報処理システム。
【請求項８】
前記情報処理システムは、処理を実行するために前記複数の情報処理装置の各々が実行するプログラムに、前記受信部、前記送信部、前記判定部、前記周波数決定部および前記動作制御部の機能を実現する命令を挿入する命令挿入部を備えることを特徴とする請求項３ないし請求項７のいずれか１項記載の情報処理システム。
【請求項９】
前記第１の情報処理装置および前記第２の情報処理装置は、前記複数の情報処理装置毎に異なることを特徴とする請求項１ないし請求項８のいずれか１項記載の情報処理システム。
【請求項１０】
前記第１の情報処理装置および前記第２の情報処理装置は、前記複数の情報処理装置により並列に実行される処理の完了毎に変更されることを特徴とする請求項１ないし請求項９のいずれか１項記載の情報処理システム。
【請求項１１】
処理を並列に実行する情報処理システムに含まれる情報処理装置において、
前記情報処理システムに含まれる他の情報処理装置の少なくともいずれかである第１の情報処理装置から処理の完了を示す完了情報を受信する受信部と、
自情報処理装置による処理の完了に基づいて、前記他の情報処理装置の少なくともいずれかであり前記第１の情報処理装置と異なる第２の情報処理装置に完了情報を送信する送信部と、
前記自情報処理装置による処理の実行中に前記第１の情報処理装置からの完了情報を前記受信部で受信した場合、受信した完了情報に基づいて、前記他の情報処理装置に対する前記自情報処理装置の処理の遅れの程度を判定する判定部と
を備えることを特徴とする情報処理装置。
【請求項１２】
処理を並列に実行する情報処理システムに含まれる複数の情報処理装置のうち、他の情報処理装置の少なくともいずれかである第１の情報処理装置から処理の完了を示す完了情報を受信し、
自情報処理装置による処理の完了に基づいて、前記他の情報処理装置の少なくともいずれかであり前記第１の情報処理装置と異なる第２の情報処理装置に完了情報を送信し、
前記自情報処理装置による処理の実行中に前記第１の情報処理装置から完了情報を受信した場合、受信した完了情報に基づいて、前記他の情報処理装置に対する前記自情報処理装置の処理の遅れの程度を判定する
処理を、前記複数の情報処理装置のいずれかに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置およびプログラムに関する。
【背景技術】
【０００２】
複数の計算機に処理を分散して実行させる並列計算機システムでは、複数の計算機による処理の完了を待ち合わせた後、複数の計算機に次の処理を開始させる同期制御が行われる。同期制御は、同期点への到達を示す到達通知を複数の計算機が相互に送受信することにより行われ、あるいは、複数の計算機を管理する管理装置が到達通知を各計算機から受信することにより行われる（例えば、特許文献１、２参照）。また、プロセッサの動作に空き時間が生じることを情報処理装置により検出し、空き時間の前に、プロセッサが実行する処理の動作周波数を下げることで、消費電力が平準化される（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１１／０８７０７６号
【特許文献２】特開２０１２−２２１００４号公報
【特許文献３】特開２０１４−２１９７８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
情報処理装置は、情報処理装置に含まれるプロセッサの動作周波数を制御することで、消費電力が規定の電力量を超えることを抑止する。また、情報処理装置は、情報処理装置に含まれるファンの回転数を制御することで、情報処理装置の筐体内の温度が規定の温度より高くなることを抑止する。例えば、プロセッサに含まれるトランジスタのリーク電流は、トランジスタの閾値電圧（絶対値）が低いほど増加する。プロセッサに含まれるトランジスタのリーク電流が増加するほど、プロセッサのスタンバイ電流は増加し、情報処理装置の消費電力は増加する。消費電力が所定の電力量を超えた場合、情報処理装置は、プロセッサの動作周波数を下げることで、消費電力を所定の電力量以下に抑える。すなわち、プロセッサの動作周波数は、プロセッサのスタンバイ電流が大きいほど低く抑えられる傾向にある。このため、情報処理装置の処理性能は、プロセッサのスタンバイ電流が大きいほど低下する。すなわち、製造工程に起因するプロセッサの電気的特性のばらつきにより、情報処理装置の処理性能はばらつく。ここで、プロセッサの電気的特性は、例えば、プロセッサに含まれるトランジスタの閾値電圧である。なお、情報処理装置の処理性能は、情報処理装置の設置場所の温度に依存して変化する冷却性能の差によってもばらつき、プロセッサが実行するＯＳ（Operating System）等による割り込み処理の発生タイミングによってもばらつく。
【０００５】
複数の情報処理装置を含み処理を並列に実行する情報処理システムでは、情報処理装置の処理性能のばらつきは、情報処理装置による処理の完了時刻の差、すなわち、他の情報処理装置に対する処理の遅れとして現れる。他の情報処理装置に対する処理の遅れは、複数の情報処理装置間で相互に通信することで検出可能であるが、処理の遅れを検出するための通信は、処理の実行効率を低下させるため、最小限に抑えることが望ましい。
【０００６】
１つの側面では、本発明は、情報処理装置間での通信量を抑えて、他の情報処理装置に対する処理の遅れの程度を判定することを目的とする。
【課題を解決するための手段】
【０００７】
一つの実施態様では、複数の情報処理装置を含み、処理を並列に実行する情報処理システムにおいて、複数の情報処理装置の各々は、複数の情報処理装置のうち、他の情報処理装置の少なくともいずれかである第１の情報処理装置から処理の完了を示す完了情報を受信する受信部と、自情報処理装置による処理の完了に基づいて、他の情報処理装置の少なくともいずれかであり第１の情報処理装置と異なる第２の情報処理装置に完了情報を送信する送信部と、自情報処理装置による処理の実行中に第１の情報処理装置からの完了情報を受信部で受信した場合、受信した完了情報に基づいて、他の情報処理装置に対する自情報処理装置の処理の遅れの程度を判定する判定部とを有する。
【発明の効果】
【０００８】
１つの側面では、本発明は、情報処理装置間での通信量を抑えて、他の情報処理装置に対する処理の遅れの程度を判定することができる。
【図面の簡単な説明】
【０００９】
【図１】情報処理システム、情報処理装置およびプログラムの一実施形態を示す図である。
【図２】図１に示す情報処理システムの動作の一例を示す図である。
【図３】図１に示す情報処理システムの動作の別の例を示す図である。
【図４】図１に示す各計算サーバの動作フローの一例を示す図である。
【図５】情報処理システム、情報処理装置およびプログラムの別の実施形態を示す図である。
【図６】図５に示す情報処理システムの動作の一例を示す図である。
【図７】図５に示す各計算サーバの動作フローの一例を示す図である。
【図８】図５に示す電力監視サーバの動作フローの一例を示す図である。
【図９】完了情報に基づいて動作周波数を増加させるコードが、処理を実行するソースコードに挿入されたプログラムの一例を示す図である。
【図１０】図５に示すコード変換サーバの動作フローの一例を示す図である。
【図１１】情報処理システムの別の実施形態における動作の一例を示す図である。
【図１２】図１１に示す動作を実行する各計算サーバの動作フローの一例を示す図である。
【図１３】情報処理システムの別の実施形態における動作の一例を示す図である。
【図１４】完了情報の送信先を処理毎に変更する例を示す図である。
【図１５】完了情報の送信先を処理毎に変更する別の例を示す図である。
【図１６】図１、図５、図１１および図１３に示す計算サーバのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を用いて実施形態を説明する。
【００１１】
図１は、情報処理システム、情報処理装置およびプログラムの一実施形態を示す。図１に示す情報処理システム１００は、複数の計算サーバＳＶ（ＳＶ０、ＳＶ１、ＳＶ２、ＳＶ３）を有する。例えば、各計算サーバＳＶは、他の計算サーバＳＶのいずれかから処理の完了を示す完了情報を受信し、他の計算サーバＳＶのいずれに完了情報を送信する。計算サーバＳＶは、情報処理装置の一例である。
【００１２】
完了情報を送受信する計算サーバＳＶは、自情報処理装置の一例である。自情報処理装置が受信する完了情報の送信元の計算サーバＳＶは、第１の情報処理装置の一例であり、自情報処理装置が送信する完了情報の送信先の計算サーバＳＶは、第２の情報処理装置の一例である。例えば、自情報処理装置が計算サーバＳＶ０の場合、第１の情報処理装置は、計算サーバＳＶ３であり、第２の情報処理装置は、計算サーバＳＶ１である。以下では、計算サーバＳＶは、単にサーバとも称される。第１の情報処理装置および第２の情報処理装置の割り当ては、計算サーバＳＶ毎に異なる。
【００１３】
各サーバＳＶは、受信部１０、送信部１２、判定部１４、周波数決定部１６および動作制御部１８を有する。受信部１０、送信部１２、判定部１４、周波数決定部１６および動作制御部１８は、各サーバＳＶに含まれる図示しないプロセッサが実行するプログラムが、各サーバＳＶに含まれるハードウェアを制御することにより実現される。なお、受信部１０、送信部１２、判定部１４、周波数決定部１６および動作制御部１８は、各サーバＳＶに含まれる各種のハードウェアにより実現されてもよい。
【００１４】
各サーバＳＶにおいて、受信部１０は、他のサーバＳＶのいずれかである第１の情報処理装置から処理の完了を示す完了情報を受信する。送信部１２は、自サーバＳＶによる処理の実行中に受信部１０が完了情報を受信した場合、自サーバＳＶによる処理の完了に基づいて、受信部１０が受信した完了情報を含む完了情報を、他のサーバＳＶのいずれかである第２の情報処理装置に送信する。
【００１５】
また、送信部１２は、自サーバＳＶによる処理の実行中に受信部１０が完了情報を受信しない場合、自サーバＳＶによる処理の完了に基づいて、完了情報を第２のサーバＳＶに送信する。例えば、完了情報は、処理の完了時刻を示す時刻情報を含む。判定部１４は、受信部１０で受信した完了情報の受信タイミング（例えば、処理の実行中の受信の有無）と完了情報の内容とに基づいて、他のサーバＳＶに対する自サーバＳＶの処理の遅れの程度を判定する。遅れの程度の判定方法は、図２で説明する。
【００１６】
周波数決定部１６は、判定部１４で判定された他のサーバＳＶに対する自サーバＳＶの処理の遅れの程度に基づいて、自サーバＳＶの動作周波数を増加するか否かを決定する。動作制御部１８は、周波数決定部１６が動作周波数の増加を決定した場合、自サーバＳＶの動作周波数を増加させる。なお、動作制御部１８は、動作周波数を増加させる場合、動作周波数の増加とともに自サーバＳＶの動作電圧を上昇させてもよい。この場合、タイミングマージンの不足による誤動作を抑止するために、動作制御部１８は、動作電圧を上昇させた後、動作周波数を増加させる。
【００１７】
図２は、図１に示す情報処理システム１００の動作の一例を示す。図２に示す例では、情報処理システム１００は、処理Ａ、Ｂ、Ｃの各々をサーバＳＶ０−ＳＶ３に均等に分散し、分散した処理Ａ、Ｂ、Ｃの各々をサーバＳＶ０−ＳＶ３に並列に実行させる。また、各サーバＳＶ０−ＳＶ３は、各処理Ａ、Ｂ、Ｃの完了を待ち合わせる通信処理を実行する。すなわち、情報処理システム１００は、サーバＳＶ０−ＳＶ３に、各処理Ａ、Ｂ、Ｃの完了を待ち合わせるバリア同期等の同期制御を実行させた後、次の処理を開始する。
【００１８】
なお、各処理Ａ、Ｂ、Ｃの完了後の通信処理では、同期制御だけでなく、処理の実行結果がサーバＳＶ間で相互に通信されてもよく、次の処理に使用するデータ等の情報がサーバＳＶ間で相互に通信されてもよい。図２に示す各サーバＳＶ０−ＳＶ３の動作において、斜線を含む矩形は、処理の完了後に実行される送信部１２と判定部１４の動作期間を示す。周波数決定部１６および動作制御部１８は、斜線を含む矩形の期間に動作してもよく、通信処理の実行期間に動作してもよい。なお、受信部１０は、常に動作する。
【００１９】
図２に示す例では、処理Ａは、サーバＳＶ１、ＳＶ０、ＳＶ２、ＳＶ３の順で完了する。サーバＳＶ１は、処理Ａを完了した時点でサーバＳＶ０から完了情報を受信していない。このため、サーバＳＶ１は、自サーバによる処理Ａの完了に基づいて、自サーバによる処理Ａの完了時刻を示す時刻情報ｔ１１を含む完了情報をサーバＳＶ２に送信する（図２（ａ））。サーバＳＶ１は、処理Ａの完了時にサーバＳＶ０から完了情報を受信していないため、他のサーバＳＶに対する自サーバの処理に遅れがないと判定する。
【００２０】
処理Ａを次に完了したサーバＳＶ０は、処理Ａを完了した時点でサーバＳＶ３から完了情報を受信していない。このため、サーバＳＶ０は、自サーバによる処理Ａの完了に基づいて、自サーバによる処理Ａの完了時刻を示す時刻情報ｔ１０を含む完了情報をサーバＳＶ１に送信する（図２（ｂ））。サーバＳＶ０は、処理Ａの完了時にサーバＳＶ３から完了情報を受信していないため、他のサーバＳＶに対する自サーバの処理に遅れがないと判定する。
【００２１】
処理Ａを次に完了したサーバＳＶ２は、自サーバによる処理Ａの実行中にサーバＳＶ１から完了情報（ｔ１１）を受信する。このため、サーバＳＶ２は、自サーバによる処理Ａの完了に基づいて、時刻情報ｔ１１と、自サーバによる処理Ａの完了時刻を示す時刻情報ｔ１２とを含む完了情報をサーバＳＶ３に送信する（図２（ｃ））。サーバＳＶ２は、処理Ａの実行中にサーバＳＶ１から完了情報（ｔ１１）を受信したため、他のサーバＳＶに対する自サーバの処理に遅れがあると判定する。例えば、サーバＳＶ２は、受信した完了情報に１つの時刻情報ｔ１１が含まれるため、処理Ａの遅れの程度がレベル１であると判定する。
【００２２】
処理Ａを最後に完了したサーバＳＶ３は、自サーバによる処理Ａの実行中にサーバＳＶ２から完了情報（ｔ１１、ｔ１２）を受信する。このため、サーバＳＶ３は、自サーバによる処理Ａの完了に基づいて、時刻情報ｔ１１、ｔ１２と、自サーバによる処理Ａの完了時刻を示す時刻情報ｔ１３とを含む完了情報をサーバＳＶ０に送信する（図２（ｄ））。サーバＳＶ３は、処理Ａの実行中にサーバＳＶ１から完了情報（ｔ１１、ｔ１２）を受信したため、他のサーバＳＶに対する自サーバの処理に遅れがあると判定する。例えば、サーバＳＶ３は、受信した完了情報に２つの時刻情報ｔ１１、ｔ１２が含まれるため、処理Ａの遅れの程度が、レベル１より高いレベル２であると判定する。
【００２３】
なお、各サーバＳＶ０−ＳＶ３は、処理の実行中に他のサーバＳＶから完了情報を受信した場合、自サーバによる処理の完了時刻と、受信した完了情報に含まれる時刻情報が示す完了時刻との差に基づいて、処理の遅れの程度を判定してもよい。この際、完了時刻の差が所定の閾値（時間差）以下である場合、処理の遅れがないと判定されてもよい。また、受信した完了情報に複数の時刻情報が含まれる場合、各サーバＳＶ０−ＳＶ３は、自サーバによる処理の完了時刻と、受信した複数の時刻情報が示す完了時刻のうち、最も早い完了時刻との差に基づいて、処理の遅れの程度を判定してもよい。この場合にも、完了時刻の差が所定の閾値（時間差）以下である場合、処理の遅れがないと判定されてもよい。
【００２４】
さらに、各サーバＳＶ０−ＳＶ３は、処理の実行中に他のサーバＳＶから完了情報を受信した場合、受信した完了情報のみを含む完了情報を他のサーバＳＶに送信してもよい。この際、受信した完了情報に複数の時刻情報が含まれる場合、各サーバＳＶ０−ＳＶ３は、受信した複数の時刻情報が示す完了時刻のうち、最も早い完了時刻を示す時刻情報のみを含む完了情報を送信してもよい。
【００２５】
このように、各サーバＳＶは、他のサーバＳＶのいずれかに完了情報を送信する。そして、各サーバＳＶは、他のサーバＳＶのいずれかである第１の情報処理装置から受信した完了情報の受信タイミングと完了情報に含まれる時刻情報とに基づいて、他のサーバＳＶに対する自サーバの遅れの程度を判定する。すなわち、各サーバＳＶは、他の全てのサーバＳＶとの間で相互に完了情報を送受信することなく、他の１つのサーバＳＶに完了情報を送信することで、他のサーバＳＶに対する自サーバの遅れの程度を判定することができる。これにより、各サーバＳＶは、サーバＳＶ間での通信量を抑えて、他のサーバＳＶに対する処理の遅れの程度を判定することができる。
【００２６】
処理Ａの完了後、各サーバＳＶ０−ＳＶ３の周波数決定部１６は、判定部１４による遅れの程度の判定結果に基づいて、自サーバの動作周波数を増加するか否かを決定する。また、各サーバＳＶ０−ＳＶ３の周波数決定部１６は、動作周波数の増加を決定した場合、動作周波数の増加量または増加後の動作周波数を決定する。
【００２７】
サーバＳＶ０、ＳＶ１の周波数決定部１６は、判定部１４により遅れがないと判定されるため、現在の動作周波数を維持することを決定する。このため、サーバＳＶ０、ＳＶ１の動作制御部１８は、動作周波数を変更する制御を実行しない。
【００２８】
サーバＳＶ２の周波数決定部１６は、判定部１４により遅れの程度がレベル１であると判定されるため、動作周波数を１段階増加することを決定する。サーバＳＶ２の動作制御部１８は、周波数決定部１６による決定に基づいて、動作周波数を１段階増加させる。サーバＳＶ３の周波数決定部１６は、判定部１４により遅れの程度がレベル２であると判定されるため、動作周波数を２段階増加することを決定する。サーバＳＶ３の動作制御部１８は、周波数決定部１６による決定に基づいて、動作周波数を２段階増加する。なお、各サーバＳＶの消費電力は、動作周波数が増加された場合にも、各サーバＳＶに許容される規定の電力量を超えないものとする。また、情報処理システム１００は、複数のサーバＳＶの動作周波数が増加された場合にも、情報処理システム１００に許容される規定の電力量を超えないものとする。
【００２９】
サーバＳＶ０−ＳＶ３の各々は、処理Ａを完了した後、同期制御のための通信処理を開始し、処理Ａの完了を相互に待ち合わせる（図２（ｅ））。そして、サーバＳＶ０−ＳＶ３は、サーバＳＶ０−ＳＶ３による処理Ａの完了を待ち合わせた後、処理Ｂの実行を開始する（図２（ｆ））。サーバＳＶ２による処理Ｂの処理時間は、動作周波数を１段階増加したことにより、動作周波数を増加しない場合に比べて短縮される（図２（ｇ））。サーバＳＶ３による処理Ｂの処理時間は、動作周波数を２段階増加したことにより、動作周波数を増加しない場合に比べてさらに短縮される（図２（ｈ））。
【００３０】
サーバＳＶ０、ＳＶ１、ＳＶ２は、処理Ｂをほぼ同時に完了し、サーバＳＶ３は、処理ＢをサーバＳＶ０、ＳＶ１、ＳＶ２より遅れて完了する。このため、サーバＳＶ０、ＳＶ１、ＳＶ２は、処理Ｂの完了時に他のサーバ（ＳＶ３、ＳＶ０、ＳＶ１）から完了情報を受信しない。したがって、サーバＳＶ０、ＳＶ１、ＳＶ２は、自サーバによる処理Ｂの完了時刻を示す時刻情報（ｔ２０、ｔ２１またはｔ２２）を含む完了情報を他のサーバ（ＳＶ１、ＳＶ２、ＳＶ３）に送信する（図２（ｉ）、（ｊ）、（ｋ））。
【００３１】
サーバＳＶ３は、処理Ｂの完了前にサーバＳＶ２から時刻情報ｔ２２を含む完了情報を受信するため、時刻情報ｔ２２と、自サーバによる処理Ｂの完了時刻を示す時刻情報ｔ２３とを含む完了情報をサーバＳＶ０に送信する（図２（ｌ））。サーバＳＶ０、ＳＶ１、ＳＶ２の各々は、処理Ｂの完了後、他のサーバＳＶに対する遅れがないと判定し、動作周波数を増加しないことを決定する。サーバＳＶ３は、処理Ｂの完了後、他のサーバＳＶに対する遅れの程度がレベル１であると判定し、動作周波数を１段階増加することを決定し、動作周波数を１段階増加する。
【００３２】
サーバＳＶ０−ＳＶ３の各々は、処理Ｂを完了した後、同期制御のための通信処理を開始し、処理Ｂの完了を待ち合わせた後、処理Ｃの実行を同時に開始する（図２（ｍ）、（ｎ））。サーバＳＶ３による処理Ｃの処理時間は、動作周波数を１段階増加したことにより、動作周波数を増加しない場合に比べて短縮される（図２（ｏ））。そして、サーバＳＶ０−ＳＶ３は、処理Ｃをほぼ同時に完了する。
【００３３】
このように、各サーバＳＶは、通信量を抑えた通信により判定した処理の遅れの程度に基づいて、動作周波数を増加することで、複数のサーバＳＶによる次の処理の完了時刻が揃う方向に、処理性能を調整することができる。すなわち、通信量を抑えて完了情報を通信することで、完了情報の通信による各サーバＳＶの処理の遅れの影響を最小限にして、サーバＳＶの処理性能を調整することができる。したがって、複数のサーバＳＶによる処理の完了時刻の差を小さくすることができ、各サーバＳＶにより処理が実行されない空き時間を減らすことができる。例えば、空き時間の減少は、各処理の完了後に実行される通信処理の時間の減少として現れる。この結果、図２に示す制御を実行しない場合に比べて、情報処理システム１００の処理性能を向上することができる。
【００３４】
図３は、図１に示す情報処理システム１００の動作の別の例を示す。図２と同様の動作については、詳細な説明は省略する。図３に示す例では、情報処理システム１００は、処理Ａを複数の処理Ａ１、Ａ２、Ａ３、...に分割し、分割した処理Ａ１、Ａ２、Ａ３、...の各々をサーバＳＶ０−ＳＶ３に均等に分散し、サーバＳＶ０−ＳＶ３に並列に実行させる。なお、各サーバＳＶ０−ＳＶ３は、各処理Ａ１、Ａ２、Ａ３、...の完了を待ち合わせる通信処理を実行しない。
【００３５】
サーバＳＶ０−ＳＶ３により処理Ａ１が完了する順序は、図２に示す処理Ａが完了する順序と同じである。このため、サーバＳＶ２は、他のサーバＳＶに対する自サーバの処理Ａ１の遅れの程度がレベル１であると判定し、動作周波数を１段階増加させる（図３（ａ））。サーバＳＶ３は、他のサーバＳＶに対する自サーバの処理Ａ１の遅れの程度がレベル２であると判定し、動作周波数を２段階増加させる（図３（ｂ））。
【００３６】
各サーバＳＶ０−ＳＶ３は、処理Ａ１の完了に基づいて完了情報を他のサーバＳＶのいずれかに送信した後、他のサーバＳＶとの間で同期を取ることなく、次の処理Ａ２を開始する（図３（ｃ））。サーバＳＶ２による処理Ａ２の処理時間は、動作周波数を１段階増加したことにより、動作周波数を増加しない場合に比べて短縮される（図３（ｄ））。サーバＳＶ３による処理Ａ２の処理時間は、動作周波数を２段階増加したことにより、動作周波数を増加しない場合に比べてさらに短縮される（図３（ｅ））。
【００３７】
図３において、破線の矢印は、各サーバＳＶが、処理を実行中に、他のサーバＳＶによる１つ前の処理の完了に基づいて完了情報を受信することを示す。各サーバＳＶは、破線の矢印で示す完了情報を、当該処理の遅れの判定に使用しない。例えば、完了情報が１つ前の処理の完了に基づくものか、当該処理の完了に基づくものかは、処理を識別する識別情報を完了情報に含めることにより判定可能である。
【００３８】
サーバＳＶ０−ＳＶ３により処理Ａ２が完了する順序は、処理Ａ１が完了する順序とほぼ同じである。サーバＳＶ２は、他のサーバＳＶに対する自サーバの処理Ａ２の遅れの程度がレベル１であると判定し、動作周波数を１段階増加させる（図３（ｆ））。サーバＳＶ３は、他のサーバＳＶに対する自サーバの処理Ａ２の遅れの程度がレベル２であると判定し、動作周波数を２段階増加させる（図３（ｇ））。各サーバＳＶ０−ＳＶ３は、処理Ａ２の完了に基づいて完了情報を他のサーバＳＶに送信した後、処理Ａ３を開始する（図３（ｈ））。サーバＳＶ０−ＳＶ３により処理Ａ３が完了する順序は、図２に示す処理Ｂが完了する順序と同じである。
【００３９】
図３においても、図２と同様に、各サーバＳＶは、サーバＳＶ間での通信量を抑えて、他のサーバＳＶに対する処理の遅れの程度を判定することができる。また、処理の遅れの程度に基づいて、動作周波数を増加することで、サーバＳＶ間での通信量を抑えて、複数のサーバＳＶによる次の処理の完了時刻が揃う方向に、処理性能を調整することができる。この際、処理の完了を待ち合わせる通信処理を実行せずに、次の処理の開始時刻がサーバＳＶ０−ＳＶ３で異なる場合にも、処理を順次実行することにより、処理の完了時刻が揃う方向にサーバＳＶの処理性能を調整することができる。
【００４０】
図４は、図１に示す各計算サーバＳＶの動作フローの一例を示す。図４に示す動作フローは、各サーバＳＶに含まれるプロセッサが、プログラムを実行することで実現される。すなわち、図４は、各計算サーバＳＶが実行するプログラムの一例を示し、各計算サーバＳＶが実行する情報処理方法の一例を示す。図４に示す動作フローは、各計算サーバによる各処理の開始に基づいて開始される。
【００４１】
まず、ステップＳ１０において、サーバＳＶは、図２に示した処理Ａまたは図３に示した処理Ａ１等の処理が完了するまで待ち、処理が完了した場合、動作をステップＳ１２に移行する。ステップＳ１２において、サーバＳＶの受信部１０は、処理の実行中に他のサーバＳＶのいずれかである第１の情報処理装置から完了情報を受信したか否かを判定する。処理の実行中に他のサーバＳＶから完了情報を受信した場合、動作はステップＳ１４に移行され、処理の実行中に他のサーバＳＶから完了情報を受信しない場合、動作はステップＳ２２に移行される。
【００４２】
ステップＳ１４において、サーバＳＶの送信部１２は、他のサーバＳＶのいずれかから受信した時刻情報と、自サーバによる処理の完了時刻を示す時刻情報とを含む完了情報を他のサーバＳＶのいずれかである第２の情報処理装置に送信する。完了情報の送信元のサーバＳＶは、第１の情報処理装置の一例であり、完了情報の送信先のサーバＳＶは、第２の情報処理装置の一例である。なお、後述するステップＳ２２と同様に、サーバＳＶの送信部１２は、自サーバによる処理の完了時刻を示す時刻情報のみを含む完了情報を他のサーバＳＶのいずれかである第２の情報処理装置に送信してもよい。
【００４３】
次に、ステップＳ１６において、サーバＳＶの判定部１４は、他のサーバＳＶのいずれかである第１の情報処理装置から受信した時刻情報が示す完了時刻と、自サーバによる処理の完了時刻とに基づいて、他のサーバＳＶに対する自サーバの遅れの程度を判定する。
【００４４】
次に、ステップＳ１８において、サーバＳＶの周波数決定部１６は、ステップＳ１６で判定した遅れの程度に基づいて、増加する動作周波数を決定する。次に、ステップＳ２０において、サーバＳＶの動作制御部１８は、ステップＳ１８で周波数決定部１６が決定した値まで動作周波数を増加し、動作を終了する。
【００４５】
一方、処理の実行中に他のサーバＳＶから完了情報を受信しない場合、ステップＳ２２において、サーバＳＶの送信部１２は、自サーバによる処理の完了時刻を示す時刻情報を含む完了情報を他のサーバＳＶのいずれかである第２の情報処理装置に送信する。そして、サーバＳＶは、動作を終了する。
【００４６】
以上、図１から図４に示す実施形態では、各サーバＳＶは、他のサーバＳＶのいずれかに完了情報を送信する。そして、各サーバＳＶは、他のサーバＳＶのいずれかから受信した完了情報に基づいて、他のサーバＳＶに対する自サーバの遅れの程度を判定する。したがって、各サーバＳＶは、サーバＳＶ間での通信量を抑えて、他のサーバＳＶに対する処理の遅れの程度を判定することができる。
【００４７】
各サーバＳＶは、通信量を抑えた通信により判定した処理の遅れの程度に基づいて、動作周波数を増加することで、複数のサーバＳＶによる次の処理での完了時刻が揃う方向に、処理性能を調整することができる。すなわち、完了情報の通信による各サーバＳＶの処理の遅れの影響を最小限にして、サーバＳＶの処理性能を調整して、複数のサーバＳＶによる処理の完了時刻の差を減らすことができる。この結果、各サーバＳＶにより処理が実行されない空き時間を減らすことができ、情報処理システム１００の処理性能を向上することができる。
【００４８】
図５は、情報処理システム、情報処理装置およびプログラムの別の実施形態を示す。図１に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。図５に示す情報処理システム１００Ａは、複数の計算サーバＳＶ（ＳＶ０−ＳＶ１５）、電力監視サーバＳＶＭ１およびコード変換サーバＳＶＭ２を有する。また、情報処理システム１００Ａは、計算サーバＳＶ、電力監視サーバＳＶＭ１およびコード変換サーバＳＶＭ２を相互に接続する複数のネットワークスイッチＳＷを有する。計算サーバＳＶは、図１に示す計算サーバＳＶと同様に、図示しない受信部１０、送信部１２、判定部１４、周波数決定部１６および動作制御部１８を有する。計算サーバＳＶは、情報処理装置の一例であり、以下では、サーバＳＶとも称される。なお、情報処理システム１００Ａに含まれる計算サーバＳＶの数は、１６台に限定されない。
【００４９】
また、情報処理システム１００Ａは、インターネットまたはイントラネット等のネットワークＮＷを介して複数の端末装置ＴＭに接続される。なお、情報処理システム１００Ａは、ネットワークＮＷを介さずに複数の端末装置ＴＭに接続されてもよい。例えば、端末装置ＴＭは、サーバＳＶの起動要求等を発行し、または、所定数のサーバＳＶに処理を実行させる。
【００５０】
電力監視サーバＳＶＭ１は、電力監視部１０２および周波数制御部１０４を有する。電力監視部１０２は、各サーバＳＶの消費電力量を監視し、情報処理システム１００Ａに含まれる全てのサーバＳＶの消費電力量の総量を算出する。電力監視部１０２は、消費電力量の総量を示す情報を周波数制御部１０４に出力する。なお、情報処理システム１００Ａが、所定数のサーバＳＶに電力を供給する複数の電源装置を有する場合、電力監視部１０２は、各電源装置に接続される所定数のサーバＳＶ毎に消費電力量の総量を算出してもよい。
【００５１】
周波数制御部１０４は、電力監視部１０２から受信する消費電力量の総量を示す情報に基づいて、消費電力量の総量が規定の電力量を超える可能性がある場合、所定数のサーバＳＶの動作周波数を減少させる制御を実行する。例えば、周波数制御部１０４は、分散された処理を並列に実行する複数のサーバＳＶのうち、所定数のサーバＳＶの動作周波数を減少させる。
【００５２】
この際、周波数制御部１０４は、分散された処理を並列に実行する複数のサーバＳＶのうち、処理の完了時刻に基づいて動作周波数が増加されたサーバＳＶを除くサーバＳＶの動作周波数を減少させてもよい。この場合、電力監視サーバＳＶＭ１は、各サーバＳＶの動作周波数をモニタする周波数モニタ部を有する。
【００５３】
また、周波数制御部１０４は、情報処理システム１００Ａに含まれる全てのサーバＳＶの動作周波数を減少させる制御を実行してもよい。なお、情報処理システム１００Ａが、所定数のサーバＳＶに電力を供給する複数の電源装置を有する場合、動作周波数を減少させる制御は、各電源装置に接続される所定数のサーバＳＶを対象に実行される。
【００５４】
コード変換サーバＳＶＭ２は、ソースコード変換部１０６を有する。ソースコード変換部１０６は、他のサーバＳＶに対する自サーバＳＶの遅れの程度を算出して動作周波数を増加させるソースコード（プログラムに含まれる命令の記述）を、各サーバＳＶが実行する処理の実行用のプログラムのソースコードに追加する機能を有する。サーバＳＶが有する図示しない受信部１０、送信部１２、判定部１４、周波数決定部１６および動作制御部１８の機能は、処理を実行するためのプログラムに追加されるソースコードにより実現される。ソースコードが追加されたプログラムは、コンパイラ等によりオブジェクトプログラムに変換され、サーバＳＶに含まれる主記憶装置等に転送されることで、サーバＳＶに含まれるプロセッサにより実行可能になる。
【００５５】
他のサーバＳＶに対する自サーバＳＶの遅れの程度を判定して動作周波数を増加させるコードをソースコードに追加する例は、図９に示される。ソースコード変換部１０６は、他のサーバＳＶに対する自サーバＳＶの遅れの程度に基づいて、処理を実行するためのプログラムに動作周波数を増加させる命令を挿入する命令挿入部の一例である。なお、図９に示すプログラムのソースコードが予め準備される場合、情報処理システム１００Ａは、コード変換サーバＳＶＭ２を持たなくてもよい。また、情報処理システム１００Ａは、情報処理システム１００Ａの全体の動作を制御する管理サーバおよびサーバＳＶが実行する処理の負荷を分散させるロードバランサ等を有してもよい。この場合、電力監視サーバＳＶＭ１の機能は、管理サーバにより実現されてもよい。
【００５６】
図６は、図５に示す情報処理システム１００Ａの動作の一例を示す。図２と同様の動作については、詳細な説明は省略する。なお、図６では、説明を分かりやすくするために、情報処理システム１００Ａが４つのサーバＳＶ０−ＳＶ３に処理を分散させて並列に実行させるものとする。各サーバＳＶは、他のサーバＳＶのいずれかである第１の情報処理装置から完了情報を受信し、他のサーバＳＶのいずれかである第２の情報処理装置に完了情報を送信する。第１の情報処理装置および第２の情報処理装置は、複数のサーバＳＶ毎に異なる。
【００５７】
図６に示す例では、各サーバＳＶの送信部１２は、自サーバによる処理の実行中に受信部１０が完了情報を受信した場合、自サーバによる処理の完了に基づいて、受信部１０が受信した完了情報を他のサーバＳＶのいずれかに送信する。また、各サーバＳＶの送信部１２は、自サーバによる処理の実行中に受信部１０が完了情報を受信しない場合、自サーバによる処理の完了に基づいて生成した完了情報を他のサーバＳＶのいずれかに送信する。完了情報は、自サーバＳＶまたは他のサーバＳＶによる処理の完了時刻を示す時刻情報を含む。
【００５８】
サーバＳＶ０−ＳＶ３により処理Ａが完了する順序は、図２において処理Ａが完了する順序と同じである。但し、サーバＳＶ２の送信部１２は、サーバＳＶ１の処理の完了時刻ｔ１１を含む完了情報をサーバＳＶ３に送信し、自サーバによる処理の完了時刻ｔ１２を含む完了情報を送信しない（図６（ａ））。サーバＳＶ３の送信部１２は、サーバＳＶ２から受信したサーバＳＶ１の処理の完了時刻ｔ１１を含む完了情報をサーバＳＶ０に送信し、自サーバによる処理の完了時刻ｔ１３を含む完了情報を送信しない（図６（ｂ））。すなわち、各サーバＳＶによる処理が完了する前に、他のサーバＳＶによる処理が完了した場合、各サーバＳＶの送信部１２は、最も早い完了時刻を示す時刻情報を含む完了情報を、他のサーバＳＶのいずれかに送信する。これにより、各サーバＳＶが処理の遅れを検出するために送信する完了情報の情報量を最小限にすることができ、完了情報の送信による処理の実行効率の低下を最小限にすることができる。
【００５９】
サーバＳＶ０、ＳＶ１の判定部１４は、処理Ａの実行中に他のサーバＳＶのいずれかから完了情報を受信しないため、他のサーバＳＶに対する自サーバの処理に遅れがないと判定し、動作周波数を増加しない。一方、サーバＳＶ２、ＳＶ３の判定部１４は、処理Ａの実行中に他のサーバＳＶのいずれかから完了情報を受信したため、他のサーバＳＶに対する自サーバの処理に遅れがあると判定する。各サーバＳＶ２、ＳＶ３の判定部１４は、式（１）に基づいて、他のサーバＳＶに対する自サーバの処理の遅れの程度αを算出する。各サーバＳＶ２、ＳＶ３の周波数決定部１６は、式（２）に基づいて、変更後の動作周波数を算出する。すなわち、周波数決定部１６は、増加後の動作周波数を算出する。
処理の遅れの程度α＝（自サーバＳＶの処理の完了時刻−受信した完了時刻）／処理の実行間隔  ‥‥（１）
変更後の動作周波数＝現在の動作周波数・（１＋α）  ‥‥（２）
値αは、処理の実行間隔に対する、自サーバＳＶの処理の完了時刻と受信した完了時刻の差の比率の一例であり、αの値が大きいほど処理の遅れの程度は大きい。例えば、処理の実行間隔は、１つ前の処理の開始時刻と当該処理の開始時刻の差である。
【００６０】
例えば、サーバＳＶ２の判定部１４は、自サーバによる処理Ａの完了時刻ｔ１２とサーバＳＶ１から受信した完了情報に含まれる完了時刻ｔ１１との差を、処理Ａを実行する前の処理の実行間隔Ｐ０で除することで処理の遅れの程度αを算出する。サーバＳＶ３の判定部１４は、自サーバによる処理Ａの完了時刻ｔ１３とサーバＳＶ２から受信した完了情報に含まれる完了時刻ｔ１１との差を、実行間隔Ｐ０で除することで処理の遅れの程度αを算出する。
【００６１】
そして、各サーバＳＶ２、ＳＶ３は、現在の動作周波数に”（１＋α）”を乗じることにより変更後の動作周波数を算出し、動作周波数を変更する。すなわち、各サーバＳＶ２、ＳＶ３において、動作周波数が増加される。ここで、動作周波数の増加量は、変更後の動作周波数と現在の動作周波数との差である。なお、サーバＳＶは、動作周波数を増加させる場合、動作周波数の増加とともに自サーバＳＶの動作電圧を上昇させてもよい。
【００６２】
式（１）により算出される処理の遅れの程度αを使用することで、図２で説明した完了情報に含まれる時刻情報の数に基づいて変更後の動作周波数を算出する場合に比べて、変更後の動作周波数の最適値を高い精度で算出することができる。この結果、複数のサーバＳＶによる処理の完了時刻を揃えるための処理性能の調整（すなわち、動作周波数の変更）を、図２に比べて効率的に行うことができる。
【００６３】
各サーバＳＶ０−ＳＶ３は、処理Ａの完了を待ち合わせる同期制御等の通信処理を実行した後、次の処理Ｂを開始する。なお、図３と同様に、各サーバＳＶ０−ＳＶ３は、同期制御等の通信処理を実行せずに、次の処理Ｂを開始してもよい。図６において、サーバＳＶ０−ＳＶ３により処理Ｂが完了する順序は、図２において処理Ｂが完了する順序と同じである。但し、サーバＳＶ３は、サーバＳＶ１の処理の完了時刻ｔ２２を含む完了情報をサーバＳＶ０に送信する（図６（ｃ））。
【００６４】
サーバＳＶ０、ＳＶ１、ＳＶ２は、処理Ｂの実行中に他のサーバＳＶのいずれかから完了情報を受信しないため、他のサーバＳＶに対する自サーバの処理に遅れがないと判定し、動作周波数を増加しない。一方、サーバＳＶ３は、処理Ｂの実行中にサーバＳＶ２から完了情報を受信したため、他のサーバＳＶに対する自サーバの処理に遅れがあると判定する。サーバＳＶ３は、式（１）に基づいて、他のサーバＳＶに対する自サーバＳＶの処理の遅れの程度αを算出し、式（２）に基づいて、変更後の動作周波数を算出し、動作周波数を変更する。そして、図２と同様に、サーバＳＶ０−ＳＶ３は、処理Ｃをほぼ同時に完了する。
【００６５】
なお、サーバＳＶ２、ＳＶ３の動作周波数の増加により、所定数のサーバＳＶの消費電力の総量が規定の電力量を超える可能性があることを検出した周波数制御部１０４は、所定数のサーバＳＶの動作周波数を減少させる制御を実行する。また、各サーバＳＶ０−ＳＶ３が、処理の完了を待ち合わせる通信処理を実行しない場合の動作の例は、最も早い時刻情報を含む完了情報を送信することを除き、図３に示した動作と同様である。
【００６６】
図７は、図５に示す各計算サーバＳＶの動作フローの一例を示す。図４と同一または同様の動作については、詳細な説明は省略する。図７に示す動作フローは、各サーバＳＶに含まれるプロセッサが、プログラムを実行することで実現される。すなわち、図７は、各サーバＳＶが実行するプログラムの一例を示し、各サーバＳＶが実行する情報処理方法の一例を示す。図７に示す動作フローは、各サーバＳＶによる各処理の開始に基づいて開始される。
【００６７】
図７に示す動作フローでは、図４に示すステップＳ１４、Ｓ１６、Ｓ１８の代わりにステップＳ１４Ａ、Ｓ１６Ａ、Ｓ１８Ａが実行される。ステップＳ１０の動作は、図４に示すステップＳ１０の動作と同じである。ステップＳ１２の動作は、完了情報に含まれる時刻情報の数が異なることを除き、図４に示すステップＳ１２の動作と同じである。
【００６８】
ステップＳ１４Ａにおいて、サーバＳＶの送信部１２は、他のサーバＳＶのいずれかである第１の情報処理装置から受信した時刻情報を含む完了情報を、他のサーバＳＶのいずれかである第２の情報処理装置に送信する。
【００６９】
次に、ステップＳ１６Ａにおいて、サーバＳＶの判定部１４は、自サーバによる処理の完了時刻と第１の情報処理装置から受信した時刻情報が示す完了時刻との差に基づいて、他のサーバＳＶに対する自サーバの処理の遅れの程度αを算出する。処理の遅れの程度αは、式（１）を使用して算出される。
【００７０】
次に、ステップＳ１８Ａにおいて、サーバＳＶの周波数決定部１６は、ステップＳ１６Ａで算出された処理の遅れの程度αに基づいて、自サーバＳＶの変更後の動作周波数（すなわち、動作周波数の増加量）を算出する。変更後の動作周波数は、式（２）を使用して算出される。そして、ステップＳ２０において、サーバＳＶの動作制御部１８は、ステップＳ１８Ａで算出した値まで動作周波数を増加し、動作を終了する。
【００７１】
一方、処理の実行中に他のサーバＳＶから完了情報を受信しない場合、ステップＳ２２において、サーバＳＶの送信部１２は、自サーバによる処理の完了時刻を示す時刻情報を含む完了情報を、他のサーバＳＶのいずれかである第２の情報処理装置に送信する。そして、サーバＳＶは、動作を終了する。
【００７２】
図８は、図５に示す電力監視サーバＳＶＭ１の動作フローの一例を示す。図８に示す動作フローは、所定の周期で実行される。まず、ステップＳ３０において、電力監視サーバＳＶＭ１の電力監視部１０２は、各サーバＳＶから消費電力量を示す情報を読み込む。次に、ステップＳ３２において、電力監視部１０２は、所定数のサーバＳＶの消費電力量の総量を算出する。
【００７３】
次に、ステップＳ３４において、電力監視サーバＳＶＭ１の周波数制御部１０４は、電力監視部１０２が算出した消費電力量の総量が規定の電力量を超える可能性がある場合、動作をステップＳ３６に移行する。周波数制御部１０４は、電力監視部１０２が算出した消費電力量の総量が規定の電力量を超える可能性がない場合、動作を終了する。ステップＳ３６において、周波数制御部１０４は、所定数のサーバＳＶの動作周波数を減少させる制御を実行し、動作を終了する。
【００７４】
図８に示す動作により、サーバＳＶが、プログラムの実行による自身の判断に基づいて動作周波数を個別に増加させる場合にも、情報処理システム１００Ａの消費電力の総量が規定の電力量を超えることを抑止することができる。この結果、情報処理システム１００Ａの信頼性を確保することができる。
【００７５】
図９は、完了情報に基づいて動作周波数を増加させるコードが、処理を実行するソースコードに挿入されたプログラムの一例を示す。すなわち、図９は、各計算サーバＳＶが実行するプログラムの一例を示す。図９に示す”挿入されるコード”は、図５に示すコード変換サーバＳＶＭ２のソースコード変換部１０６により、順次実行される２つの処理のソースコードの間に挿入される。
【００７６】
処理Ａおよび処理Ｂのソースコードの末尾に示すコメント文”／／チェックポイント”は、バリア同期等の同期制御を開始するチェックポイントであることを示す。図９は、完了情報に基づいて動作周波数を増加させるコードが、処理Ａの末尾に挿入される例を示す。以下では、挿入されるコードにより実行される処理の内容を説明する。ｎ行目からｎ＋１２行目に示すコードにより、図７に示したステップＳ１２、Ｓ１４Ａ、Ｓ１６Ａ、Ｓ１８Ａ、Ｓ２０、Ｓ２２の動作が実行される。
【００７７】
ｎ行目のコードでは、関数”ｇｅｔ＿ｔｉｍｅ（）”により、処理Ａが完了した時刻である現在時刻が取得され、完了時刻ｃｕｒ＿ｔｉｍｅとされる。ｎ＋１行目のコードでは、完了時刻ｃｕｒ＿ｔｉｍｅと、前回の処理の完了時刻ｐｒｅｖ＿ｔｉｍｅとの差が算出され、差ｄｅｌｔａとされる。
【００７８】
ｎ＋２行目のコードでは、完了時刻ｃｕｒ＿ｔｉｍｅが、処理の実行間隔の算出に使用される完了時刻ｐｒｅｖ＿ｔｉｍｅにされる。ｎ＋３行目のコードでは、関数ｒｅｃｖ＿ｔｉｍｅにより、時刻情報を含む完了情報を他のサーバＳＶのいずれから受信したか否かが判定される。”ｒｅｃｖ＿ｔａｒｇｅｔ”は、完了情報の送信元のサーバＳＶを示し、”＆ｏｔｈｅｒ＿ｓｅｖｅｒ＿ｔｉｍｅ”は、完了情報に含まれる完了時刻の格納先を示す。”ｒｅｓｕｌｔ”は、時刻情報を受信していない場合、”０”に設定され、時刻情報を受信した場合、”１”に設定される。
【００７９】
ｎ＋４行目とｎ＋５行目のコードにより、”ｒｅｓｕｌｔ”が”０”の場合、すなわち、処理Ａの実行中に他のサーバＳＶから時刻情報を受信していない場合の処理が実行される。ｎ＋５行目のコードでは、関数ｓｅｎｄ＿ｔｉｍｅにより、処理Ａの完了時刻を示す時刻情報が他のサーバＳＶのいずれかに送信される。”ｓｅｎｄ＿ｔａｒｇｅｔ”は、完了情報の送信先のサーバＳＶを示し、”＆ｃｕｒ＿ｔｉｍｅ”は、完了時刻ｃｕｒ＿ｔｉｍｅの格納先を示す。
【００８０】
ｎ＋６行目からｎ＋１２行目のコードにより、”ｒｅｓｕｌｔ”が”１”の場合、すなわち、処理Ａの実行中に他のサーバＳＶのいずれかから時刻情報を受信した場合の処理が実行される。ｎ＋８行目のコードでは、関数ｓｅｎｄ＿ｔｉｍｅにより、完了情報の送信元のサーバＳＶから送信される完了時刻を示す時刻情報が、他のサーバＳＶのいずれかに送信される。
【００８１】
ｎ＋９行目のコードでは、関数ｇｅｔ＿ｃｕｒ＿ｆｒｅｑ（）により、現在の動作周波数が取得され、動作周波数ｃｕｒ＿ｆｒｅｑとされる。ｎ＋１０行目のコードでは、式（１）と式（２）とを使用して、変更後の動作周波数ｔａｒｇｅｔ＿ｆｒｅｑが算出される。ｎ＋１１行目のコードでは、関数ｃｈａｎｇｅ＿ｆｒｅｑにより、動作周波数が、”ｔａｒｇｅｔ＿ｆｒｅｑ”が示す値に変更される。
【００８２】
図１０は、図５に示すコード変換サーバＳＶＭ２の動作フローの一例を示す。図１０に示す動作は、コード変換サーバＳＶＭ２が、図２および図３に示した処理Ａ、Ｂ、Ｃまたは処理Ａ１、Ａ２、Ａ３等を実行するプログラムのソースコードにコードを挿入する指示を端末装置ＴＭ等から受信したことに基づいて開始される。
【００８３】
まず、ステップＳ４０において、コード変換サーバＳＶＭ２のソースコード変換部１０６は、ソースコードの行番号を示す変数Ｌを”１”に設定する。次に、ステップＳ４２において、ソースコード変換部１０６は、ソースコードを１行読み込む。次に、ステップＳ４４において、ソースコード変換部１０６は、変数Ｌが処理の最終行を示す場合、動作をステップＳ４６に移行し、変数Ｌがソースコードの処理の最終行以外を示す場合、動作をステップＳ４８に移行する。例えば、各処理の最終行には、図９に示したコメント文”／／チェックポイント”が記述され、各処理の最終行か否かは、コメント文により判定される。
【００８４】
ステップＳ４６において、ソースコード変換部１０６は、ステップＳ４４で判定した処理の最終行の後にコードを挿入し、動作をステップＳ４８に移行する。ステップＳ４６により、例えば、図９に示したｎ行目からｎ＋１２行目までのコードがプログラムのソースコードに挿入される。
【００８５】
ステップＳ４８において、ソースコード変換部１０６は、変数Ｌを”１”増加し、動作をステップＳ５０に移行する。ステップＳ５０において、ソースコード変換部１０６は、変数Ｌがソースコードの最終行を示す場合、ソースコードの挿入動作を終了し、変数Ｌがソースコードの最終行以外を示す場合、動作をステップＳ４２に移行する。そして、ステップＳ４２からステップＳ５０の動作が繰り返されることにより、完了情報に基づいて動作周波数を増加させるコードが、順次実行される２つの処理の間に挿入される。
【００８６】
以上、図５から図１０に示す実施形態においても、図１から図４に示す実施形態と同様に、各サーバＳＶは、サーバＳＶ間での通信量を抑えて、他のサーバＳＶに対する処理の遅れの程度を判定することができる。判定した処理の遅れの程度に基づいて動作周波数を増加することで、サーバＳＶの処理性能を調整して、複数のサーバＳＶによる処理の完了時刻の差を減らすことができ、情報処理システム１００Ａの処理性能を向上することができる。
【００８７】
さらに、図５から図１０に示す実施形態では、各サーバＳＶが１つの完了時刻を含む完了情報を他のサーバＳＶのいずれか１つに送信することで、完了情報の情報量を最小限にすることができる。この結果、完了情報の送信による処理の実行効率の低下を最小限にすることができる。式（１）により算出される処理の遅れの程度αを使用することで、時刻情報の数に基づいて変更後の動作周波数を算出する場合に比べて、変更後の動作周波数の最適値を高い精度で算出することができる。電力監視サーバＳＶＭ１の動作により、サーバＳＶが、自身の判断に基づいて動作周波数を個別に増加させる場合にも、情報処理システム１００Ａの消費電力の総量が規定の電力量を超えることを抑止することができる。この結果、情報処理システム１００Ａの信頼性を確保することができる。
【００８８】
図１１は、情報処理システムの別の実施形態における動作の一例を示す。図１１に示す動作を実行する情報処理システム１００Ｂは、図５に示す情報処理システム１００Ａと同様に、複数のサーバＳＶ（ＳＶ０−ＳＶ１５）、電力監視サーバＳＶＭ１、コード変換サーバＳＶＭ２および複数のネットワークスイッチＳＷを有する。電力監視サーバＳＶＭ１の動作は、図８と同じであり、コード変換サーバＳＶＭ２の動作は、図１０のステップＳ４６において、処理を実行するソースコードに挿入されるコードが図９と異なることを除き、図１０と同じである。
【００８９】
各サーバＳＶは、他のサーバＳＶのいずれかである第１の情報処理装置から完了情報を受信し、他のサーバＳＶのいずれかである第２の情報処理装置に完了情報を送信する。第１の情報処理装置および第２の情報処理装置は、複数のサーバＳＶ毎に異なる。各サーバＳＶは、図１および図５に示すサーバＳＶと同様に、プログラムの実行により機能が実現される受信部１０、送信部１２、判定部１４、周波数決定部１６および動作制御部１８を有する。
【００９０】
但し、図１０のステップＳ４６において、処理を実行するソースコードに挿入されるコードが図９と異なるため、各サーバＳＶが実行するプログラムは、図５に示す各サーバＳＶが実行するプログラムと異なる。このため、図１１に示すサーバＳＶの送信部１２、判定部１４および周波数決定部１６の各々の機能は、図５に示すサーバＳＶの送信部１２、判定部１４および周波数決定部１６の各々の機能と異なる。
【００９１】
図１１では、説明を分かりやすくするために、情報処理システム１００Ｂが４つのサーバＳＶ０−ＳＶ３に処理を分散させて並列に実行させるものとする。各サーバＳＶの送信部１２は、自サーバによる処理の実行中に受信部１０が完了情報を受信した場合、処理の完了に基づいて、受信した完了情報に含まれる完了数情報が示す値に”１”を加えた値を含む完了情報を他のサーバＳＶのいずれかに送信する。また、各サーバＳＶの送信部１２は、自サーバによる処理の実行中に受信部１０が完了情報を受信しない場合、自サーバによる処理の完了に基づいて、完了数情報＝”０”を含む完了情報を他のサーバＳＶのいずれかに送信する。
【００９２】
完了情報に含まれる完了数情報が示す値は、自サーバＳＶよりも処理が早く完了したサーバＳＶの数を示す。すなわち、完了数情報が示す値は、他のサーバＳＶに対する自サーバの処理の遅れの程度（遅れのレベル）を示す。各サーバＳＶの判定部１４は、処理の実行中に完了数情報を含む完了情報を受信しない場合、処理の遅れがないと判定する。また、各サーバＳＶの判定部１４は、処理の実行中に完了数情報を含む完了情報を受信した場合、完了数情報が示す値が大きいほど遅れの程度が大きいと判定する。例えば、判定部は、処理の実行中に完了数情報＝”０”を受信した場合、遅れの程度がレベル１であると判定し、処理の実行中に完了数情報＝”１”を受信した場合、遅れの程度がレベル２であると判定する。また、判定部は、処理の実行中に完了数情報＝”２”を受信した場合、遅れの程度がレベル３であると判定する。
【００９３】
そして、各サーバＳＶの周波数決定部１６および動作制御部１８は、完了数情報が示す値（レベル）に基づいて、図２で説明した動作と同様に、動作周波数を増加させる制御を実行する。このため、図１１に示す動作は、図２に示す動作と同様になる。なお、動作制御部１８は、動作周波数を増加させる場合、動作周波数の増加とともに自サーバＳＶの動作電圧を上昇させてもよい。
【００９４】
なお、図１１に示す動作の代わりに、各サーバＳＶは、処理の実行中に完了情報を受信しない場合に完了数情報＝”０”を含む完了情報を送信し、処理の実行中に完了情報を受信した場合に完了数情報＝”１”を含む完了情報を送信してもよい。この場合、処理の実行中に受信した完了数情報＝”０”は、処理を完了したサーバＳＶが１つあることを示し、処理の実行中に受信した完了数情報＝”１”は、処理が完了したサーバＳＶが２以上あることを示す。各サーバＳＶは、処理の実行中に完了数情報＝”０”を受信した場合、遅れの程度がレベル１であると判定し、処理の実行中に完了数情報＝”１”を受信した場合、遅れの程度がレベル２であると判定する。レベル１およびレベル２と、動作周波数の増加との関係は、図２の説明と同じである。
【００９５】
なお、各サーバＳＶ０−ＳＶ３は、各処理の完了を待ち合わせる同期制御等の通信処理を実行した後、次の処理を開始する。しかしながら、図３と同様に、各サーバＳＶ０−ＳＶ３は、同期制御等の通信処理を実行せずに、次の処理を開始してもよい。
【００９６】
図１２は、図１１に示す動作を実行する各サーバＳＶの動作フローの一例を示す。図４と同一または同様の動作については、詳細な説明は省略する。図１２に示す動作フローは、各サーバＳＶに含まれるプロセッサが、プログラムを実行することで実現される。すなわち、図１２は、各計算サーバＳＶが実行するプログラムの一例を示し、各計算サーバＳＶが実行する情報処理方法の一例を示す。図１２に示す動作フローは、各サーバＳＶによる各処理の開始に基づいて開始される。
【００９７】
図１２に示す動作フローでは、図４に示すステップＳ１４、Ｓ１６、Ｓ２２の代わりにステップＳ１４Ｂ、Ｓ１６Ｂ、Ｓ２２Ｂが実行される。ステップＳ１０の動作は、図４に示すステップＳ１０の動作と同じである。ステップＳ１２の動作は、処理が早く完了したサーバＳＶの数を示す完了数情報が完了情報に含まれることを除き、図４に示すステップＳ１２の動作と同じである。
【００９８】
ステップＳ１４Ｂにおいて、サーバＳＶの送信部１２は、他のサーバＳＶのいずれかから受信した完了情報に含まれる完了数情報が示す値に”１”を加えた完了数情報を含む完了情報を他のサーバＳＶのいずれかに送信する。受信する完了情報の送信元のサーバＳＶは、第１の情報処理装置の一例であり、完了情報の送信先のサーバＳＶは、第２の情報処理装置の一例である。
【００９９】
ステップＳ１６Ｂにおいて、サーバＳＶの判定部１４は、完了数情報の値に基づいて、他のサーバＳＶに対する自サーバの処理の遅れの程度を判定する。次に、ステップＳ１８において、サーバＳＶの周波数決定部１６は、ステップＳ１６Ｂで判定した遅れの程度に基づいて、増加する動作周波数を決定する。次に、ステップＳ２０において、サーバＳＶの動作制御部１８は、ステップＳ１８で周波数決定部１６が決定した値まで動作周波数を増加し、動作を終了する。
【０１００】
一方、処理の実行中に他のサーバＳＶから完了情報を受信しない場合、ステップＳ２２において、サーバＳＶの送信部１２は、完了数情報＝”０”を含む完了情報を他のサーバＳＶのいずれかである第２の情報処理装置に送信し、動作を終了する。なお、図１２に示すステップＳ１２、Ｓ１４Ｂ、Ｓ１６Ｂ、Ｓ１８、Ｓ２０、Ｓ２２Ｂの動作は、図９に示した”挿入されるコード”とは異なるコードをコード変換サーバＳＶＭ２がソースコードに挿入することにより実現される。
【０１０１】
以上、図１１および図１２に示す実施形態においても、図１から図１０に示す実施形態と同様に、各サーバＳＶは、サーバＳＶ間での通信量を抑えて、他のサーバＳＶに対する処理の遅れの程度を判定することができる。例えば、各サーバＳＶが、処理が完了したサーバＳＶの数を示す完了数情報を他のサーバＳＶのいずれか１つに送信することで、時刻情報を送信する場合に比べて、完了情報の情報量を小さくすることができる。また、判定した処理の遅れの程度に基づいて動作周波数を増加することで、サーバＳＶの処理性能を調整して、複数のサーバＳＶによる処理の完了時刻の差を減らすことができ、情報処理システム１００Ｂの処理性能を向上することができる。
【０１０２】
図１３は、情報処理システムの別の実施形態における動作の一例を示す。図１３に示す動作を実行する情報処理システム１００Ｃは、図５に示す情報処理システム１００Ａと同様に、複数のサーバＳＶ（ＳＶ０−ＳＶ１５）、電力監視サーバＳＶＭ１、コード変換サーバＳＶＭ２および複数のネットワークスイッチＳＷを有する。電力監視サーバＳＶＭ１の動作は、図８と同じであり、コード変換サーバＳＶＭ２の動作は、図１０のステップＳ４６において、処理を実行するソースコードに挿入されるコードが異なることを除き、図１０と同じである。
【０１０３】
各サーバＳＶは、他のサーバＳＶのいずれか２つである第１の情報処理装置から完了情報を受信し、他のサーバＳＶのいずれか２つである第２の情報処理装置に完了情報を送信する。第１の情報処理装置および第２の情報処理装置は、複数のサーバＳＶ毎に異なる。各サーバＳＶは、図１および図５に示すサーバＳＶと同様に、プログラムの実行により機能が実現される受信部１０、送信部１２、判定部１４、周波数決定部１６および動作制御部１８を有する。但し、各サーバＳＶが実行するプログラムは、図５に示すサーバＳＶが実行するプログラムと異なる。このため、図１３に示すサーバＳＶの受信部１０、送信部１２、判定部１４および周波数決定部１６の各々の機能は、図５に示すサーバＳＶの受信部１０、送信部１２、判定部１４および周波数決定部１６の各々の機能と異なる。
【０１０４】
図１３では、説明を分かりやすくするために、情報処理システム１００Ｃが４つのサーバＳＶ０−ＳＶ３に処理を分散させて並列に実行させるものとする。各サーバＳＶの送信部１２は、自サーバによる処理の実行中に受信部１０が完了情報を受信した場合、処理の完了に基づいて、受信した完了情報に含まれる時刻情報を含む完了情報を他のサーバＳＶのいずれか２つに送信する。また、各サーバＳＶの送信部１２は、自サーバによる処理の実行中に受信部１０が完了情報を受信しない場合、自サーバによる処理の完了に基づいて、自サーバによる処理の完了時刻を含む完了情報を他のサーバＳＶのいずれか２つに送信する。各サーバＳＶの受信部１０は、他のサーバＳＶから完了情報を受信する毎に、受信した完了情報を記憶装置等に格納する。
【０１０５】
図１３に示す例では、サーバＳＶ０は、サーバＳＶ１、ＳＶ２に完了情報を送信し、サーバＳＶ１は、サーバＳＶ２、ＳＶ３に完了情報を送信する。サーバＳＶ２は、サーバＳＶ３、ＳＶ０に完了情報を送信し、サーバＳＶ３は、サーバＳＶ０、ＳＶ１に完了情報を送信する。また、処理Ａは、サーバＳＶ３、ＳＶ２、ＳＶ１、ＳＶ０の順に完了する。各サーバＳＶが２つのサーバＳＶに完了情報を送信し、各サーバＳＶが２つのサーバＳＶから完了情報を受信することで、処理の遅れの判定に使用する時刻情報の数を図６等に比べて増やすことができる。これにより、複数のサーバＳＶによる処理の完了時刻の差を、図６等に比べて早く小さくすることができる。
【０１０６】
サーバＳＶ０は、自サーバによる処理の完了時刻ｔ１０と、サーバＳＶ３による処理の完了時刻ｔ１３との差と、処理の実行間隔Ｐ０とに基づいて、式（１）、（２）を使用して変更後の動作周波数を算出し、動作周波数を増加する。ここで、サーバＳＶ０は、サーバＳＶ２、ＳＶ３から受信する完了情報にそれぞれ含まれる時刻情報ｔ１２、ｔ１３のうち、最も早い時刻情報ｔ１３が示す完了時刻ｔ１３を式（１）の”受信した完了時刻”に代入する。なお、サーバＳＶは、動作周波数を増加させる場合、動作周波数の増加とともに自サーバＳＶの動作電圧を上昇させてもよい。
【０１０７】
サーバＳＶ１は、自サーバによる処理の完了時刻ｔ１１と、サーバＳＶ３による処理の完了時刻ｔ１３との差と、処理の実行間隔Ｐ０とに基づいて、式（１）、（２）を使用して変更後の動作周波数を算出し、動作周波数を増加する。完了時刻の差ｔ１０−ｔ１３は、完了時刻の差ｔ１１−ｔ１３より大きいため、サーバＳＶ０の動作周波数の増加量は、サーバＳＶ１の動作周波数の増加量より大きくなる。サーバＳＶ２、ＳＶ３の各々は、処理の実行中に他の２つのサーバＳＶから完了情報を受信しないため、動作周波数を変更しない。
【０１０８】
動作周波数を増加したサーバＳＶ０、ＳＶ１は、処理性能が向上し、サーバＳＶ０、ＳＶ１による処理Ｂの実行時間は、サーバＳＶ３による処理Ｂの実行時間とほぼ等しくなる。サーバＳＶ２は、処理Ｂの完了後、自サーバによる処理の完了時刻ｔ２２と、サーバＳＶ１による処理の完了時刻ｔ２１との差と、処理の実行間隔Ｐ１とに基づいて、式（１）、（２）を使用して変更後の動作周波数を算出し、動作周波数を増加する。サーバＳＶ０、ＳＶ１、ＳＶ３の各々は、処理の実行中に他の２つのサーバＳＶから完了情報を受信しないため、動作周波数を変更しない。なお、サーバＳＶ０は、斜線を含む矩形の動作期間に、サーバＳＶ３から完了情報を受信するものとする。この後、各サーバＳＶ０−ＳＶ３による図示しない次の処理の実行時間は、ほぼ等しくなる。
【０１０９】
なお、各サーバＳＶ０−ＳＶ３は、各処理の完了を待ち合わせる同期制御等の通信処理を実行した後、次の処理を開始する。しかしながら、図３と同様に、各サーバＳＶ０−ＳＶ３は、同期制御等の通信処理を実行せずに、次の処理を開始してもよい。
【０１１０】
以上、図１３に示す実施形態においても、図１から図１２に示す実施形態と同様に、各サーバＳＶは、サーバＳＶ間での通信量を抑えて、他のサーバＳＶに対する処理の遅れの程度を判定することができる。判定した処理の遅れの程度に基づいて動作周波数を増加することで、サーバＳＶの処理性能を調整して、複数のサーバＳＶによる処理の完了時刻の差を減らすことができ、情報処理システム１００Ｂの処理性能を向上することができる。
【０１１１】
さらに、図１３に示す実施形態では、各サーバＳＶが他の２つのサーバＳＶから完了情報を受信し、他の２つのサーバＳＶに完了情報を送信することで、処理の遅れの判定に使用する時刻情報の数を図６等に比べて増やすことができる。これにより、複数のサーバＳＶによる処理の完了時刻の差を、図６等に比べて早く小さくすることができる。なお、各サーバＳＶは、他の３以上のサーバＳＶから完了情報を受信し、他の３以上のサーバＳＶに完了情報を送信してもよい。
【０１１２】
図１４は、完了情報の送信先を処理毎に変更する例を示す。図２、図３、図６および図１１では、完了情報を送信するサーバＳＶを変更しない例を示したが、図１４に示すように、完了情報を送信するサーバＳＶを、処理毎に変更してもよい。図１４では、処理が完了する毎に、完了情報の送信先のサーバＳＶの番号を１ずつ増加（＋１）する例を示す。例えば、サーバＳＶ０では、処理毎にサーバＳＶ１、ＳＶ２、ＳＶ３、ＳＶ１、ＳＶ２、...を巡回的に選択し、完了情報を送信する。図１４に示す完了時刻の変更方式は、図２、図３、図６および図１１だけでなく、図１３にも適用可能である。
【０１１３】
処理が完了する毎に、完了情報の送信先のサーバＳＶの番号を変更することで、処理の実行時間と完了情報の送信先との関係が、所定の関係に偏っている場合にも、複数のサーバＳＶの処理の完了時刻の差を小さくする方向に、動作周波数を増加することができる。例えば、図１３において、各サーバＳＶ０−ＳＶ３が、図６と同様に他のサーバＳＶの１つに完了情報を送信する場合、各サーバＳＶ０−ＳＶ３は、複数回の処理を実行しても、他のサーバＳＶに対応する自サーバの処理の遅れを検出できない。しかしながら、図１４に示すように、次の処理において、完了情報の送信先を変更することで、他のサーバＳＶに対応する自サーバの処理の遅れの程度を検出することができる。
【０１１４】
図１５は、完了情報の送信先を処理毎に変更する別の例を示す。図１５では、処理が完了する毎に、２のｎ乗の”ｎ”を０から１ずつ増加し、完了情報の送信元のサーバＳＶである自サーバの番号に２のｎ乗を加えた番号のサーバＳＶに完了情報を送信する。図１５に示す方式においても、図１４と同様に、各サーバＳＶは、処理毎に他のサーバＳＶのいずれかを巡回的に選択し、完了情報の送信する。これにより、処理の実行時間と、完了情報の送信先との関係が、所定の関係に偏っている場合にも、複数のサーバＳＶの処理の完了時刻を揃える方向に、動作周波数を増加することができる。図１５に示す方式は、図２、図３、図６および図１１に適用可能であり、図１３にも適用可能である。
【０１１５】
図１６は、図１、図５、図１１および図１３に示すサーバＳＶのハードウェア構成の一例を示す。サーバＳＶは、マザーボード２０、光学ドライブ装置３０、ハードディスク装置３２、入力装置３４および出力装置３６等を有する。マザーボード２０には、プロセッサ２１、主記憶装置２２、光学ドライブコントローラ２３、ハードディスクコントローラ２４、入力インタフェース２５、出力インタフェース２６およびネットワークインタフェース２７等の各種部品が搭載される。例えば、プロセッサ２１は、ＣＰＵ（Central Processing Unit）またはＧＰＵ（Graphics Processing Unit）等である。プロセッサ２１、主記憶装置２２、光学ドライブコントローラ２３、ハードディスクコントローラ２４、入力インタフェース２５、出力インタフェース２６およびネットワークインタフェース２７は、システムバスＳＢＵＳに接続される。なお、プロセッサ２１、光学ドライブコントローラ２３、ハードディスクコントローラ２４、入力インタフェース２５、出力インタフェース２６およびネットワークインタフェース２７は、共通の半導体チップに含まれてもよい。
【０１１６】
プロセッサ２１は、主記憶装置２２に格納されたプログラム（図９に示したプログラム等）を実行することで、例えば、処理Ａ、Ｂ等と図４、図７または図１２等に示す動作とを実行する。例えば、主記憶装置２２は、複数のＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）を含むメモリモジュールを有する。
【０１１７】
光学ドライブコントローラ２３は、光学ドライブ装置３０に接続され、光学ドライブ装置３０に装着される記録媒体３８にアクセス可能である。記録媒体３８は、ＣＤ（Compact Disc：登録商標）またはＤＶＤ（Digital Versatile Disc：登録商標）等であり、プロセッサ２１が実行するプログラムが格納される。プロセッサ２１が実行するプログラム等は、光学ドライブ装置３０を介して記録媒体３８からハードディスク装置３２にダウンロードされ、主記憶装置２２に転送される。なお、プロセッサ２１は、ハードディスク装置３２を介することなく、記録媒体３８から主記憶装置２２にプログラムをダウンロードしてもよい。
【０１１８】
ハードディスクコントローラ２４は、ハードディスク装置３２に接続される。例えば、サーバＳＶの電源が起動されたときに、プロセッサ２１は、ハードディスク装置３２に格納されているプログラムを主記憶装置２２に転送し、主記憶装置２２に転送されたプログラムを実行することで動作する。
【０１１９】
入力インタフェース２５は、キーボードやマウス等の入力装置３４に接続される。出力インタフェース２６は、ディスプレイやプリンタ等の出力装置３６に接続される。ネットワークインタフェース２７は、ネットワークに接続される。プロセッサ２１は、ネットワーク上の装置に格納されたプログラムを、ネットワークを介してハードディスク装置３２や主記憶装置２２にダウンロードしてもよい。
【０１２０】
以上の図１から図１６に示す実施形態に関し、さらに以下の付記を開示する。
（付記１）
複数の情報処理装置を含み、処理を並列に実行する情報処理システムにおいて、
前記複数の情報処理装置の各々は、
前記複数の情報処理装置のうち、他の情報処理装置の少なくともいずれかである第１の情報処理装置から処理の完了を示す完了情報を受信する受信部と、
自情報処理装置による処理の完了に基づいて、前記他の情報処理装置の少なくともいずれかであり前記第１の情報処理装置と異なる第２の情報処理装置に完了情報を送信する送信部と、
前記自情報処理装置による処理の実行中に前記第１の情報処理装置からの完了情報を前記受信部で受信した場合、受信した完了情報に基づいて、前記他の情報処理装置に対する前記自情報処理装置の処理の遅れの程度を判定する判定部と
を備えることを特徴とする情報処理システム。
（付記２）
前記複数の情報処理装置の各々において、前記送信部は、前記自情報処理装置による処理の実行中に前記受信部が完了情報を受信した場合、前記受信部が受信した完了情報を含む完了情報を、前記第２の情報処理装置に送信することを特徴とする付記１記載の情報処理システム。
（付記３）
前記複数の情報処理装置の各々は、さらに、
前記判定部で判定された前記遅れの程度に基づいて、前記自情報処理装置の動作周波数を増加するかを決定する周波数決定部と、
前記周波数決定部の決定に基づいて、前記自情報処理装置の動作周波数を増加させる動作制御部と
を備えることを特徴とする付記１または付記２記載の情報処理システム。
（付記４）
前記完了情報は、前記他の情報処理装置の少なくともいずれかの処理の完了時刻を示す時刻情報を含み、
前記判定部は、前記自情報処理装置の処理の遅れの程度として、前記自情報処理装置による処理の完了時刻と前記時刻情報が示す完了時刻との差を求め、
前記周波数決定部は、順次実行される処理の実行間隔に対する前記差の比率に基づいて、前記自情報処理装置の動作周波数の増加量を決定することを特徴とする付記３記載の情報処理システム。
（付記５）
前記送信部は、前記自情報処理装置による処理の実行中に前記受信部が複数の前記時刻情報を含む前記完了情報を受信した場合、最も早い完了時刻を示す時刻情報を含む完了情報を前記第２の情報処理装置に送信することを特徴とする付記４記載の情報処理システム。
（付記６）
前記完了情報は、前記他の情報処理装置のうち、処理が完了した情報処理装置の数を示す完了数情報を含み、
前記判定部は、前記完了数情報に基づいて前記自情報処理装置の処理の遅れの程度を判定することを特徴とする付記３記載の情報処理システム。
（付記７）
前記動作制御部は、前記自情報処理装置の動作周波数の増加とともに、前記自情報処理装置の動作電圧を上昇させることを特徴とする付記３ないし付記６のいずれか１項記載の情報処理システム。
（付記８）
前記情報処理システムは、
前記複数の情報処理装置の消費電力量を監視する電力監視部と、
前記複数の情報処理装置のいずれかの動作周波数の増加により、前記複数の情報処理装置の消費電力量が規定の電力量を超える可能性がある場合、前記複数の情報処理装置のうち所定数の情報処理装置の動作周波数を減少させる周波数制御部と
を備えることを特徴とする付記３ないし付記７のいずれか１項記載の情報処理システム。
（付記９）
前記情報処理システムは、処理を実行するために前記複数の情報処理装置の各々が実行するプログラムに、前記受信部、前記送信部、前記判定部、前記周波数決定部および前記動作制御部の機能を実現する命令を挿入する命令挿入部を備えることを特徴とする付記３ないし付記８のいずれか１項記載の情報処理システム。
（付記１０）
前記第１の情報処理装置および前記第２の情報処理装置は、前記複数の情報処理装置毎に異なることを特徴とする付記１ないし付記９のいずれか１項記載の情報処理システム。
（付記１１）
前記第１の情報処理装置および前記第２の情報処理装置は、前記複数の情報処理装置により並列に実行される処理の完了毎に変更されることを特徴とする付記１ないし付記１０のいずれか１項記載の情報処理システム。
（付記１２）
前記複数の情報処理装置の各々は、前記複数の情報処理装置が実行する処理の完了を互いに待ち合わせる同期制御を実行することを特徴とする付記１ないし付記１１のいずれか１項記載の情報処理システム。
（付記１３）
処理を並列に実行する情報処理システムに含まれる情報処理装置において、
前記情報処理システムに含まれる他の情報処理装置の少なくともいずれかである第１の情報処理装置から処理の完了を示す完了情報を受信する受信部と、
自情報処理装置による処理の完了に基づいて、前記他の情報処理装置の少なくともいずれかであり前記第１の情報処理装置と異なる第２の情報処理装置に完了情報を送信する送信部と、
前記自情報処理装置による処理の実行中に前記第１の情報処理装置からの完了情報を前記受信部で受信した場合、受信した完了情報に基づいて、前記他の情報処理装置に対する前記自情報処理装置の処理の遅れの程度を判定する判定部と
を備えることを特徴とする情報処理装置。
（付記１４）
処理を並列に実行する情報処理システムに含まれる複数の情報処理装置のうち、他の情報処理装置の少なくともいずれかである第１の情報処理装置から処理の完了を示す完了情報を受信し、
自情報処理装置による処理の完了に基づいて、前記他の情報処理装置の少なくともいずれかであり前記第１の情報処理装置と異なる第２の情報処理装置に完了情報を送信し、
前記自情報処理装置による処理の実行中に前記第１の情報処理装置から完了情報を受信した場合、受信した完了情報に基づいて、前記他の情報処理装置に対する前記自情報処理装置の処理の遅れの程度を判定する
処理を、前記複数の情報処理装置のいずれかに実行させるためのプログラム。
（付記１５）
処理を並列に実行する情報処理システムに含まれる複数の情報処理装置のうち、他の情報処理装置の少なくともいずれかである第１の情報処理装置から処理の完了を示す完了情報を受信し、
自情報処理装置による処理の完了に基づいて、前記他の情報処理装置の少なくともいずれかであり前記第１の情報処理装置と異なる第２の情報処理装置に完了情報を送信し、
前記自情報処理装置による処理の実行中に前記第１の情報処理装置から完了情報を受信した場合、受信した完了情報に基づいて、前記他の情報処理装置に対する前記自情報処理装置の処理の遅れの程度を判定する
処理を、前記複数の情報処理装置のいずれかに実行させるためのプログラムを記録した記録媒体。
【０１２１】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１２２】
１０…受信部；１２…送信部；１４…判定部；１６…周波数決定部；１８…動作制御部；２０…マザーボード；２１…プロセッサ；２２…主記憶装置；２３…光学ドライブコントローラ；２４…ハードディスクコントローラ；２５…入力インタフェース；２６…出力インタフェース；２７…ネットワークインタフェース；３０…光学ドライブ装置；３２…ハードディスク装置；３４…入力装置；３６…出力装置；３８…記録媒体；１００、１００Ａ、１００Ｂ、１００Ｃ…情報処理システム；１０２…電力監視部；１０４…周波数制御部；１０６…ソースコード変換部；ＮＷ…ネットワーク；ＳＢＵＳ…システムバス；ＳＶ…計算サーバ；ＳＶＭ１…電力監視サーバ；ＳＶＭ２…コード変換サーバ；ＳＷ…ネットワークスイッチ；ＴＭ…端末装置
【図１】
2018206319.tif 000003
【図２】
2018206319.tif 000004
【図３】
2018206319.tif 000005
【図４】
2018206319.tif 000006
【図５】
2018206319.tif 000007
【図６】
2018206319.tif 000008
【図７】
2018206319.tif 000009
【図８】
2018206319.tif 000010
【図９】
2018206319.tif 000011
【図１０】
2018206319.tif 000012
【図１１】
2018206319.tif 000013
【図１２】
2018206319.tif 000014
【図１３】
2018206319.tif 000015
【図１４】
2018206319.tif 000016
【図１５】
2018206319.tif 000017
【図１６】
2018206319.tif 000018