(57)【特許請求の範囲】
【請求項１】
性能差のあるマシンを含んで構成されるグリッド環境において、性能差のあるマシン間のプロセス間通信処理を行う方法であって、
プロセス間通信情報処理部が、
プログラムの実行時に、当該通信の開始時間から、その前のマシン間のプロセス間通信の終了時間と、その間に発生した同一マシン内の通信時間を除いた、計算処理時間を計算するステップと、
当該通信の通信待ち時間から、通信パケットのマシン間伝送時間である通信マージン時間を除いた、真の通信待ち時間を計算するステップと、
前記計算処理時間と前記真の通信待ち時間の比率を基に、通信待ち時間が低減するように実行速度の速いマシン側の計算処理に関わる要素を調整するステップと、
を備える方法。
【請求項２】
前記計算処理に関わる要素は、ＣＰＵクロック数又はスレッド数を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記プロセス間通信情報処理部は、前記計算処理時間がある閾値を越えた場合又はある関数に到達した場合、それ以降の性能差のあるマシン間のプロセス間通信処理において、前記真の通信待ち時間が発生したプロセスは、自マシンが実行速度の速いマシンと判断し、通信待ち時間が低減するように、前記計算処理時間と前記真の通信待ち時間の比率を基に、前記計算処理に関わる要素を調整することを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記プロセス間通信情報処理部は、実行終了時には、変更した計算処理に関わる要素の設定を元に戻すことを特徴とする請求項１乃至３のいずれかに記載の方法。
【請求項５】
性能差のあるマシンを含んで構成されるグリッド環境において、性能差のあるマシン間のプロセス間通信処理を行う実行システムであって、
相手プロセスとの通信処理を実施するプロセス間通信処理部と、
プログラムの実行時に、当該通信の開始時間から、その前のマシン間のプロセス間通信の終了時間と、その間に発生した同一マシン内の通信時間を除いた、計算処理時間を計算し、かつ、当該通信の通信待ち時間から、通信パケットのマシン間伝送時間である通信マージン時間を除いた、真の通信待ち時間を計算するプロセス間通信情報処理部と、を備え、
前記プロセス間通信情報処理部は、前記計算処理時間と前記真の通信待ち時間の比率を基に、通信待ち時間が低減するように実行速度の速いマシン側の計算処理に関わる要素を調整することを特徴とする実行システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グリッド環境におけるメッセージパッシング型分散並列プログラムを実行する際のシステム資源の使用を効率化する手法に関する。
【背景技術】
【０００２】
従来、遠隔地にあるシステムを結合したグリッド環境上で、分散並列プログラムを実行する試みが行われている。このとき、各システムの実行速度がそれぞれ異なる場合、各システム間のプロセス間通信処理において、実行速度の差から生じる通信待ち時間が発生してしまう。特に、大規模データサイズ、大規模プロセス数でアプリケーション実行を行うＨＰＣ分野では、この消費電力またはシステム資源の浪費の影響は小さくなく、改善が望まれている。例えば、特許文献１は、グリッド環境における処理能力を低下させることなく消費電力を低減することが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１２８９３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
メッセージパッシング型分散並列プログラムについて簡単に説明すると、メッセージパッシング型分散並列プログラムは、データの計算処理と通信処理を繰り返し行う構成をとっており、通信処理では、送信プロセスが送信手続きを呼び出し、受信プロセスが受信手続きを呼び出すことで、通信を行っている。通信処理において、受信プロセスが受信手続きを呼び出した時に、送信プロセスにおいて計算処理が終了せず、送信手続きの呼び出しが遅れるような場合には、受信プロセスは送信プロセスで送信手続きが呼び出されるまで通信待ち状態となる。その後、送信手続きが呼び出されたら、両プロセス間で通信処理が開始される。
【０００５】
ところで、性能差のあるマシンから構成されるグリッド環境上で、計算インバランスのないメッセージパッシング型分散並列プログラムを実行する場合、実行速度の速いマシンで動作するプロセスと実行速度が遅いマシンで動作するプロセス間通信処理において、実行速度の速いマシンで動作するプロセスでは、実行速度の遅いシステムで動作するプロセスの計算処理の遅延により、上述した通信待ちが必ず発生する。このケースで発生する通信待ち時間は、本質的には不必要な時間であり、その間は確保しているＣＰＵ、メモリ等のシステム資源を無駄に消費していると言える。また、実行速度の速いマシンで動作するプロセスにおいて、通信待ち時間を短縮するために当該通信の前に行う計算処理を遅延させたとしても、プログラムの実行性能に影響はない。
【０００６】
本発明は、かかる実情に鑑み、計算インバランスのないメッセージパッシング型分散並列プログラムを実行する際に、プログラム全体での実行性能を維持しつつ、実行速度が速いマシンの消費電力を低減することのできるシステム及び方法を提供しようとするものである。
【課題を解決するための手段】
【０００７】
本発明の一実施形態によれば、性能差のあるマシンを含んで構成されるグリッド環境上における、性能差のあるマシン間のプロセス間通信処理において、プログラムの実行時に、当該通信の開始時間から、その前のマシン間のプロセス間通信の終了時間と、その間に発生した同一マシン内の通信時間を除いた時間（以下「計算処理時間」という。）を計算する。また、当該通信の通信待ち時間から通信マージン時間（通信パケットのマシン間伝送時間）を除いた時間（以下「真の通信待ち時間」という。）を計算する。これらの時間の比率を基に、通信待ち時間が低減するように実行速度の速いマシン側の計算処理に関わる要素を調整する。例えば、ＣＰＵクロック数、スレッド数などの要素が調整される。
【０００８】
一実施態様においては、計算処理時間がある閾値を越えた場合、または経過時間がある閾値を越えた場合、またはある関数に到達した場合、それ以降の性能差のあるマシン間のプロセス間通信処理において、真の通信待ち時間が発生したプロセスは、自マシンが実行速度の速いマシンと判断し、通信待ち時間が低減するように、計算処理時間と真の通信待ち時間の比率を基に、計算処理に関わる要素を調整する。真の通信待ち時間が発生しないプロセスは本調整を行わない。実行終了時には、変更した計算処理に関わる要素の設定を元に戻す。
【発明の効果】
【０００９】
本発明によれば、計算インバランスのないメッセージパッシング型分散並列プログラムを実行する際に、プログラム全体での実行性能は維持しつつ、実行速度が速いマシンの消費電力を低減することにより、消費電力の抑止やシステム資源使用の効率化を図ることができるという効果を奏し得る。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係るグリッド環境における分散並列プログラムの実行システムの概略構成を示すブロック図である。
【図２】本実施例における、メッセージパッシング型分散並列プログラムの初期化処理の流れを示すフローチャートである。
【図３】本実施例における、同一マシン内でのプロセス間通信処理の流れを示すフローチャートである。
【図４】本実施例における、性能差のあるマシン間のプロセス間通信処理の流れを示すフローチャートである。
【図５】本実施例における、メッセージパッシング型の分散並列プログラムの終了処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について図面を参照しつつ詳細に説明する。なお、同一の要素には同一の符号を付し、重複する説明を省略する。
【００１２】
図１は、本発明の一実施形態に係るグリッド環境における分散並列プログラムの実行システムの概略構成を示すブロック図である。同図に示すように、本分散並列プログラムの実行システムは、複数のプロセッサを備えたプロセッサシステムであって、実行速度の速いマシン１と実行速度の遅いマシン６とが、インターコネクト部１１を介して相互に接続されている。各マシンに接続されている。実行速度の速いマシン１はファイル５を備え、実行速度の遅いマシン６はファイル１０を備える。各ファイル５，１０は、計算処理に関わる要素が格納される。本実施例では、各ファイル５，１０に、性能差のあるマシン間の通信マージン時間、安定的に動作するＣＰＵクロック数の下限、および計算に関わる要素の調整のタイミングを決定するために用いる計算処理時間の閾値が格納されている。
【００１３】
各マシン１，６は、計算インバランスのないメッセージパッシング型の分散並列プログラム２，７、及び、メモリ４，９を有する。各分散並列プログラム２，７はそれぞれ、ｎ個のプロセス３−１〜ｎ，ｍ個のプロセス８−１〜ｍを有する。各プロセス３−１〜ｎ，８−１〜ｍはそれぞれ、ＣＰＵクロック数の取得及び設定を行うＣＰＵクロック数処理部３１−１〜ｎ，８１−１〜ｍ、プロセス間通信処理を行うプロセス間通信処理部３２−１〜ｎ，８２−１〜ｍ、及び、プロセス間通信に関数する性能情報の採取及び計算等の処理を行うプロセス間通信情報処理部３３−１〜ｎ、８３−１〜ｍを備える。同一マシン内のプロセス間通信はメモリを介して行い、異マシン間のプロセス間通信はインターコネクト部を介して行う。
【００１４】
次に、図２〜５を用いて、本実施例の動作について説明する。なお、説明では実行速度の速いマシン１を対象に説明するが、実行速度の遅いマシン６についても同様の動作を行う。
【００１５】
図２は、本実施例における、メッセージパッシング型分散並列プログラムの初期化処理の流れを示すフローチャートである。同図に示すように、メッセージパッシング型分散並列プログラムの初期化処理において、ＣＰＵクロック数処理部３１は、現在のＣＰＵクロック数および安定的に動作するＣＰＵクロック数の下限を、ファイル５から取得する。プロセス間通信情報処理部３３は、通信マージン時間および計算処理時間の閾値を、ファイル５から取得する（ステップＳ２１）。
【００１６】
図３は、本実施例における、同一マシン内でのプロセス間通信処理の流れを示すフローチャートである。同図に示すように、プロセス間通信処理部３２が相手プロセスとの通信処理を実施する際に、まず、プロセス間通信情報処理部３３が通信処理開始時間を計測する（ステップＳ３１）。そして、プロセス間通信処理部３２が、相手プロセスとの通信処理を実施する（ステップＳ３２）。当該通信処理が終了したとき、プロセス間通信情報処理部３３は、通信処理終了時間を計測する（ステップＳ３３）。そして、プロセス間通信情報処理部３３は、通信処理終了時間から通信処理開始時間を引いた時間をマシン内通信処理時間として加算する（ステップＳ３４）。
【００１７】
図４は、本実施例における、性能差のあるマシン間のプロセス間通信処理の流れを示すフローチャートである。同図に示すように、まず、プロセス間通信情報処理部３３は、通信処理の開始時間および通信待ち時間を計測する（ステップＳ４１、Ｓ４２）。プロセス間通信処理部３２は、相手プロセスとの通信処理を実施する（ステップＳ４３）。当該通信処理が終了したとき、プロセス間通信情報処理部３３は、通信処理の終了時間を計測する（ステップＳ４４）。そして、プロセス間通信情報処理部３３は、当該通信の通信処理開始時間からその前のマシン間のプロセス間通信の通信処理終了時間とマシン内通信処理時間を引いた値を算出し、これを計算処理時間とする。この計算処理時間が計算処理時間の閾値を越えた場合、次のステップを実施する（ステップＳ４５）。
【００１８】
プロセス間通信情報処理部３３は、通信待ち時間から通信マージン時間を引いた値を算出し、これを真の通信待ち時間とする。また、計算処理時間と真の通信待ち時間の比率を算出する（ステップＳ４６）。ＣＰＵクロック数処理部３１は、真の通信待ち時間が正の場合、実行速度の速いマシンであると判定し、次のステップを実施する（ステップＳ４７）。実行速度の速いマシンの場合、ＣＰＵクロック数処理部３１は、計算処理時間と真の通信待ち時間との比率を基にして、真の通信待ち時間が発生しないように、ステップＳ２１で取得した安定的に動作するＣＰＵクロック数の下限の範囲内で、ＣＰＵクロック数を低減する設定を行う（ステップＳ４８）。
【００１９】
計算処理に関わる要素の調整を行った場合、それ以降は、平衡状態が保たれると仮定し、調整を行った実行速度が速いマシン側のプロセスおよびそのペアである実行速度が遅い側のプロセスにおいて、再調整処理は行わないという動作も可能である。この場合、通信処理において、各種時間の計測・計算・判定処理も行わない。
【００２０】
図５は、本実施例における、メッセージパッシング型の分散並列プログラムの終了処理の流れを示すフローチャートである。ＣＰＵクロック数処理部３１は、ステップＳ４７において実行速度が速いマシンであると判定した場合（ステップＳ５０）、ＣＰＵクロック数を元に戻す（ステップＳ５１）。
【００２１】
また、ＣＰＵクロック数の調整方法の従来技術として、計算処理中はＣＰＵクロック数を維持し、通信待ち処理中はＣＰＵクロック数を最低限に落とすというものもあるが、本実施形態の方が消費電力量は低く抑えることができる。これを以下で説明する。本実施形態および従来技術の計算処理の消費電力量を比較するために、ＣＰＵクロック数をそれぞれｆ１、ｆ２、仕事量をＷ１、Ｗ２、消費電力量をＰ１、Ｐ２として、従来技術と本実施形態との計算処理の時間比率をｐ（＜１）とする。消費電力量はＣＰＵクロック数の２乗に比例するので、
Ｗ１＝ａ・ｆ１    （ａ：係数）
Ｗ２＝ａ・ｐ・ｆ２
Ｐ１＝ｂ・ｆ１2    （ｂ：係数）
Ｐ２＝ｂ・ｐ・ｆ２2
であり、
Ｗ１＝Ｗ２
だから（計算量は同じ）、
ｆ１＝ｐ・ｆ２
よって、
Ｐ１＝ｂ・ｐ２・ｆ２2＝Ｐ２・ｐ＜Ｐ２
従って、本発明の方が従来技術と比較して、消費電力量を低く抑えることができる。
【００２２】
なお、本発明は、上記した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において、他の様々な形で実施することができる。このため、上記実施形態はあらゆる点で単なる例示にすぎず、限定的に解釈されるものではない。例えば、上述の各処理ステップは処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【００２３】
例えば、計算処理時間の閾値および通信マージン時間は、実行時に実行時オプションまたは環境変数として与えてもよい。また、計算処理に関わる要素の調整のタイミングとして、計算処理時間の閾値を使用する代わりに、経過時間の閾値または関数名を使用することも可能である。経過時間の閾値を越えた後または当該関数を過ぎた後の最初のマシン間のプロセス間通信処理において、計算処理に関わる要素の調整を行う。また、メッセージパッシング型分散並列処理と共有並列処理を併用する、計算インバランスのないハイブリッド並列プログラムを実行する場合、各スレッドが同一ＣＰＵ上で動作するのならば、上記と同様にＣＰＵクロック数を低減すればよいが、各スレッドが別々のＣＰＵ上で動作するのならば、ＣＰＵクロック数を低減する代わりに、実行速度の速いマシンのスレッド数を低減することも可能である。
【００２４】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限
られない。
【００２５】
（付記１）性能差のあるマシンを含んで構成されるグリッド環境において、性能差のあるマシン間のプロセス間通信処理を行う方法であって、プロセス間通信情報処理部が、プログラムの実行時に、当該通信の開始時間から、その前のマシン間のプロセス間通信の終了時間と、その間に発生した同一マシン内の通信時間を除いた、計算処理時間を計算するステップと、当該通信の通信待ち時間から、通信パケットのマシン間伝送時間である通信マージン時間を除いた、真の通信待ち時間を計算するステップと、計算処理時間と真の通信待ち時間の比率を基に、通信待ち時間が低減するように実行速度の速いマシン側の計算処理に関わる要素を調整するステップと、を備える方法。
【００２６】
（付記２）計算処理に関わる要素は、ＣＰＵクロック数又はスレッド数を含むことを特徴とする付記１に記載の方法。
【００２７】
（付記３）プロセス間通信情報処理部は、計算処理時間がある閾値を越えた場合又はある関数に到達した場合、それ以降の性能差のあるマシン間のプロセス間通信処理において、真の通信待ち時間が発生したプロセスは、自マシンが実行速度の速いマシンと判断し、通信待ち時間が低減するように、計算処理時間と真の通信待ち時間の比率を基に、計算処理に関わる要素を調整することを特徴とする付記１又は２に記載の方法。
【００２８】
（付記４）プロセス間通信情報処理部は、実行終了時には、変更した計算処理に関わる要素の設定を元に戻すことを特徴とする付記１乃至３のいずれかに記載の方法。
【００２９】
（付記５）性能差のあるマシンを含んで構成されるグリッド環境において、性能差のあるマシン間のプロセス間通信処理を行う実行システムであって、相手プロセスとの通信処理を実施するプロセス間通信処理部と、プログラムの実行時に、当該通信の開始時間から、その前のマシン間のプロセス間通信の終了時間と、その間に発生した同一マシン内の通信時間を除いた、計算処理時間を計算し、かつ、当該通信の通信待ち時間から、通信パケットのマシン間伝送時間である通信マージン時間を除いた、真の通信待ち時間を計算するプロセス間通信情報処理部と、を備え、プロセス間通信情報処理部は、計算処理時間と真の通信待ち時間の比率を基に、通信待ち時間が低減するように実行速度の速いマシン側の計算処理に関わる要素を調整することを特徴とする実行システム。
【符号の説明】
【００３０】
１  実行速度の速いマシン、２，７  分散並列プログラム、３，８  プロセス、４，９  メモリ、５，１０  ファイル、６  実行速度の遅いマシン、１１  インターコネクト部、３１，８１  ＣＰＵクロック数処理部、３２，８２  プロセス間通信処理部、３３，８３  プロセス間通信情報処理部
【図１】
0005725446.tif 000002
【図２】
0005725446.tif 000003
【図３】
0005725446.tif 000004
【図４】
0005725446.tif 000005
【図５】
0005725446.tif 000006