(57)【要約】【課題】全プロセッシングエレメントを稼働させる場合より高い処理性能を達成することができる計算システム及びその電力管理方法を提供することを課題とする。【解決手段】計算システムは、複数のプロセッシングエレメントと、前記複数のプロセッシングエレメントのうちの少なくとも１個のプロセッシングエレメントの電力を基に、前記プロセッシングエレメントの周波数及び電源電圧を設定する第１の設定部（Ｓ５０３）と、前記周波数、前記電源電圧及び制約電力を基に、前記プロセッシングエレメントの稼働数を設定する第２の設定部（Ｓ５０４）とを有する。【選択図】図５
2014186522.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッシングエレメントと、
前記複数のプロセッシングエレメントのうちの少なくとも１個のプロセッシングエレメントの電力を基に、前記プロセッシングエレメントの周波数及び電源電圧を設定する第１の設定部と、
前記周波数、前記電源電圧及び制約電力を基に、前記プロセッシングエレメントの稼働数を設定する第２の設定部と
を有することを特徴とする計算システム。
【請求項２】
前記第２の設定部は、前記複数のプロセッシングエレメントのすべてを稼働するよりも性能が高くなるように、前記プロセッシングエレメントの稼働数を設定することを特徴とする請求項１記載の計算システム。
【請求項３】
前記第１の設定部は、性能が最大となるように前記周波数及び前記電源電圧を設定することを特徴とする請求項１又は２記載の計算システム。
【請求項４】
前記第１の設定部は、複数の周波数及び電源電圧の組みのうち、性能が最大となる組みの前記周波数及び前記電源電圧を設定することを特徴とする請求項１〜３のいずれか１項に記載の計算システム。
【請求項５】
前記第２の設定部は、前記周波数及び前記電源電圧を基に前記プロセッシングエレメントの電力を導出し、前記導出したプロセッシングエレメントの電力及び前記制約電力を基に、前記プロセッシングエレメントの稼働数を設定することを特徴とする請求項１〜４のいずれか１項に記載の計算システム。
【請求項６】
前記複数のプロセッシングエレメントのうちの少なくとも１個は、
メモリと、
バッファを有し、前記メモリを制御するメモリ制御回路と、
前記バッファのフル率を検出する検出回路とを有し、
前記第１の設定部は、前記バッファのフル率を基に、前記周波数を設定することを特徴とする請求項１〜５のいずれか１項に記載の計算システム。
【請求項７】
さらに、前記複数のプロセッシングエレメントに接続されるネットワークを有し、
前記複数のプロセッシングエレメントのうちの少なくとも１個は、
バッファを有し、前記ネットワークの入出力を制御する入出力制御回路と、
前記バッファのフル率を検出する検出回路とを有し、
前記第１の設定部は、前記バッファのフル率を基に、前記周波数を設定することを特徴とする請求項１〜６のいずれか１項に記載の計算システム。
【請求項８】
複数のプロセッシングエレメントを有する計算システムの電力管理方法であって、
前記複数のプロセッシングエレメントのうちの少なくとも１個のプロセッシングエレメントの電力を基に、前記プロセッシングエレメントの周波数及び電源電圧を設定し、
前記周波数、前記電源電圧及び制約電力を基に、前記プロセッシングエレメントの稼働数を設定することを特徴とする計算システムの電力管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算システム及びその電力管理方法に関する。
【背景技術】
【０００２】
産業・基礎科学など様々な分野での大規模な並列シミュレーションの活用増大により超並列高性能計算システム(いわゆるスーパーコンピュータ)の性能は年々高くなっている。このような計算システムの大規模化に向けた様々な課題の中に、消費電力の削減がある。ＣＰＵ（Central Processing Unit）の演算性能は上がっているのに、計算システムの消費電力制約のために、計算システムは処理性能を出し切れないという状況になりつつある。計算システムの低消費電力化と同様に与えられた消費電力制約下で、ジョブの実行効率を最大化することも重要となってきている。
【０００３】
サーバやデータセンタにおいては、多数のＣＰＵで構成されるシステムの消費電力制約を超えない範囲でジョブを実行させるための技術として、ＣＰＵ側の技術としては動的に周波数を調整するＤＦＳ（Dynamic Frequency Scaling）や周波数に合わせて電圧も制御するＤＶＦＳ（Dynamic Voltage and Frequency Scaling）の技術が知られている。また、ＣＰＵ内のレジスタに消費電力上限を設定して、その設定を自律的に守らせるPower Capping技術、又はPower Capping技術で電力が上限を超えた時の急速な消費電力低減に使用されるClock Throttling（クロックパルスのマスクによる周波数の強制低減）の技術が知られている。また、Pipeline Throttling（命令発行制限やメモリアクセス制限等による命令処理量の強制低減）の技術が知られている。
【０００４】
システム側の電力管理技術は、システムの電力制約、電力管理ポリシ又は電力管理モードなどが別途設定されていれば、その設定に基づき稼働中の各ＣＰＵに対する消費電力割り当て値を決定する。各ＣＰＵは、その割り当て値を守るように前述のＣＰＵ電力管理技術を使用してＣＰＵ電力を制御することでシステム全体の消費電力制約を守らせる。
【０００５】
また、少なくとも１台以上の演算器と制御部とを有する並列計算装置が知られている（例えば、特許文献１参照）。演算器は、その個数が処理タイミングによって変動し、かつ、それぞれの処理時間が一定のタスクを処理する。制御部は、演算器全体の処理能力を一定として、タスク処理に使用する演算器の台数と、使用する演算器の動作周波数を制御する。
【０００６】
また、並列コンピュータにおける事前対応型電力管理の方法が知られている（例えば、特許文献２参照）。並列コンピュータは、サービス・ノードと複数の計算ノードとを含む。サービス・ノードは、帯域外サービス・ネットワークを介して計算ノードに接続されている。各計算ノードは、コンピュータ・プロセッサと、コンピュータ・プロセッサに動作可能に連結されているコンピュータ・メモリとを含む。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−１９０１０４号公報
【特許文献２】特表２０１０−５３７２６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
並列処理プログラムの中には、並列化可能な部分と並列化不可能な逐次処理部分が存在する。並列処理プログラムの処理時間Ｔは、おおよそ次式のように示すことができる。ここで、Ｃｐは、並列処理部分ののべサイクル数である。Ｃｓは、逐次処理部分ののべサイクル数である。Ｆｐは、並列処理部分のクロック周波数である。Ｆｓは、逐次処理部分のクロック周波数である。ＰＬは、並列数である。
Ｔ＝Ｃｐ／（Ｆｐ×ＰＬ）＋Ｃｓ／Ｆｓ
【０００９】
このように並列処理プログラムの処理時間Ｔは、並列処理部分と逐次処理部分で分離されているため、並列処理部分の高速化の効果と逐次処理部分の高速化の効果を独立に考えることができる。逐次処理部分は、稼働ＣＰＵ数が１個なので、ＤＶＦＳを用いたクロック周波数及び電圧制御により高速化が可能である。しかし、並列処理プログラムの処理のうち並列処理部分の高速化には、改善の余地がある。
【００１０】
本発明の目的は、全プロセッシングエレメントを稼働させる場合より高い処理性能を達成することができる計算システム及びその電力管理方法を提供することである。
【課題を解決するための手段】
【００１１】
計算システムは、複数のプロセッシングエレメントと、前記複数のプロセッシングエレメントのうちの少なくとも１個のプロセッシングエレメントの電力を基に、前記プロセッシングエレメントの周波数及び電源電圧を設定する第１の設定部と、前記周波数、前記電源電圧及び制約電力を基に、前記プロセッシングエレメントの稼働数を設定する第２の設定部とを有する。
【発明の効果】
【００１２】
プロセッシングエレメントの周波数及び電源電圧の他に、プロセッシングエレメントの稼働数を設定することにより、全プロセッシングエレメントを稼働させる場合より高い処理性能を達成することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本実施形態による計算システムの構成例を示す図である。
【図２】図２は、トランジスタのリーク電流を示すグラフである。
【図３】図３は、クロック周波数及び遅延時間の例を示すグラフである。
【図４】図４は、プロセッシングエレメントの稼働数及び計算システムの性能を示すグラフである。
【図５】図５は、計算システムの電力管理方法を示すフローチャートである。
【図６】図６（Ａ）及び（Ｂ）は、図５の処理主体を説明するための図である。
【図７】図７は、図５の最適周波数導出表の構成例を示す図である。
【図８】図８は、プロセッシングエレメントの非稼働時電力に応じた最適動作点の変動を示すグラフである。
【図９】図９は、マルチコアプロセッサのＣＰＵの構成例を示す図である。
【図１０】図１０は、バッファフル率検出回路を有するＣＰＵの構成例を示す図である。
【図１１】図１１は、電力管理コントローラの処理例を示すフローチャートである。
【図１２】図１２は、本実施形態の効果を説明するためのグラフである。
【図１３】図１３は、図７の最適周波数導出表の例を示す図である。
【発明を実施するための形態】
【００１４】
図１は、本実施形態による計算システムの構成例を示す図である。計算システム１００は、複数のプロセッシングエレメント（ＰＥ）１０１がネットワーク１０４に接続されている。各プロセッシングエレメント１０１は、処理を行う処理要素であり、演算処理用の中央処理装置（ＣＰＵ）１０２及びＣＰＵ１０２に接続されたローカルメモリ１０３を有する。計算システム１００は、単一のラックで構成されていてもよいし、複数のラックから構成されていてもよい。複数ラックの構成の場合は、プロセッシングエレメント１０１間のネットワーク１０４は、ラック内ネットワークとラック間ネットワークで構成される。
【００１５】
計算システム１００では、処理対象とする並列処理プログラムの処理全体のうちの大部分を占める並列処理可能部分は並列プログラミングや並列化コンパイラ等により処理が類似した複数のサブタスクに分割される。これらのサブタスクは、プログラム実行時に各プロセッシングエレメント１０１(プロセッシングエレメント１０１がマルチコアプロセッサの場合はプロセッシングエレメント１０１内の各プロセッサコア)に割り当てられて、実行時に該当するプロセッシングエレメント１０１にロードされた上で並列に実行される。個々の並列処理プログラムは、タスクの規模により計算システム１００全体で処理される場合もあれば、計算システム１００全体を幾つかの部分に区画化したうちの一つで実行される場合もある。後者の場合、各区画には計算システム１００全体の消費電力制約値が何らかのポリシに基づいてその区画の消費電力制約として分配される。各区画で処理される並列処理プログラムは、そのジョブを処理する区画に割り当てられた消費電力制約を満たすように実行されるため、この場合でも各区画を計算システム１００の各区画の電力制約を計算システム１００の電力制約とみなす。
【００１６】
並列処理プログラムの並列処理部分は、プロセッシングエレメント１０１の数に対して十分大きい並列数を持つ。並列処理部分の分割数（サブタスク数）は、並列処理プログラム作成時に予めパラメータ化されていたり、並列化コンパイラによる並列数を指定したコンパイル等により容易に変更可能である。また、並列実行数を調整することによるサブタスクの割り当てやサブタスク間の通信等のプロセッシングエレメント１０１間の通信時間の変動量は、各並列実行プロセッシングエレメント１０１の処理時間全体と比べて無視できるくらい小さいとする。
【００１７】
プロセッシングエレメント１０１の１個当たり消費電力Ｐａは、そのＣＰＵ１０２内の全ゲートのクロック信号当たりの平均動作率をα、配線及び素子のスイッチングにかかわる総容量をＣ、ＣＰＵ１０２の電源電圧をＶ、ＣＰＵ１０２のリーク電流をＩｋとし、ＣＰＵ１０２のクロック周波数（動作周波数）をｆとすると、次式（１）のように表すことができる。ここで、Ｐｂは、ＣＰＵ１０２の固定電力であり、Ｐｃは、メモリ関連電力である。
Ｐａ＝α×Ｃ×Ｖ2×ｆ＋Ｉｋ×Ｖ＋Ｐｂ＋Ｐｃ      ・・・（１）
【００１８】
メモリ関連電力Ｐｃは、ローカルメモリ１０３自体の消費電力並びにＣＰＵ１０２及びローカルメモリ１０３間のデータ転送にかかる消費電力であり、メモリアクセスの発生頻度と相関がある。ＣＰＵ１０２の固定電力Ｐｂは、ＣＰＵ１０２内で別電源供給されたアナログマクロやシリアルＩ／Ｏ等のように半導体チップ内のクロック周波数にかかわらずに、一定量消費される電力成分を表す。
【００１９】
図２は、トランジスタのリーク電流Ｉｋを示すグラフである。横軸は、ドレイン及びソース間電圧Ｖｄｓである。縦軸は、ドレイン及びソース間電流Ｉｄｓである。ＤＩＢＬ（Drain Induced Barrier Lowering）効果等により、電圧Ｖｄｓが増加すると、閾値電圧Ｖｔｈが減少し、リーク電流Ｉｋが増加する。リーク電流Ｉｋの曲線は、トランジスタの動作時に変動させる程度の狭い範囲では、２〜３次式程度の正係数の多項式で近似することができる。例えば、リーク電流Ｉｋは、次式のように、２次曲線２０１に近似することができる。ここで、電圧Ｖｄｓは、例えば電源電圧Ｖであり、ａ及びｂは定数である。
Ｉｋ＝ａ×Ｖ2＋ｂ
【００２０】
図３は、クロック周波数３０１及び遅延時間３０２の例を示すグラフである。横軸は、電源電圧Ｖを示す。電源電圧Ｖが増加すると、素子のスイッチング性能が上がるため、遅延時間３０１が短くなり、クロック周波数３０２が上がる。逆に、電源電圧Ｖを下げていくと、素子のスイッチング性能が下がり、電源電圧Ｖが閾値電圧Ｖｔｈより下がると、素子が動作しにくくなる。電源電圧Ｖとクロック周波数ｆの関係では、電源電圧Ｖは閾値電圧Ｖｔｈを切片としたクロック周波数ｆの単調増加関数となり、実用的な電圧変動範囲では、１次直線３０３に近似すると、次式になる。ここで、γは定数である。
Ｖ＝γ×ｆ＋Ｖｔｈ
【００２１】
ローカルメモリ１０３は、それが接続されるＣＰＵ１０２のクロック信号の周波数ｆが増加すると、内部処理速度の上昇により、メモリアクセス頻度も増加するため、メモリ関連電力Ｐｃは、次式により、ある固定値Ｐ０ｍを切片として、クロック周波数ｆが線形増加するとしてモデル化できる。
Ｐｃ＝Ｐ０ｍ＋ｆ×Ｐｍ
【００２２】
このような関係を考慮して、上式（１）を、クロック周波数ｆについて整理すると、次式のように、正係数の多項式として近似することができる。ここで、Ｃ0、Ｃ1、Ｃ2、Ｃ3は、正の実数である。
【００２３】
Ｐａ＝α×Ｃ×Ｖ2×ｆ＋Ｉｋ×Ｖ＋Ｐｂ＋Ｐｃ
＝｛α×Ｃ×Ｖ2×ｆ＋Ｉｋ×Ｖ｝＋｛Ｐ０ｍ＋ｆ×Ｐｍ｝＋Ｐｂ
＝α×Ｃ×（γ×ｆ＋Ｖｔｈ）2×ｆ＋（ａ×Ｖ2＋ｂ）×Ｖ＋Ｐ０ｍ＋ｆ×Ｐｍ＋Ｐｂ
＝α×Ｃ×（γ×ｆ＋Ｖｔｈ）2×ｆ＋（ａ×（γ×ｆ＋Ｖｔｈ）2＋ｂ）×（γ×ｆ＋Ｖｔｈ）＋Ｐ０ｍ＋ｆ×ｐｍ＋Ｐｂ
＝（α×Ｃ×γ2＋ａ×γ3）×ｆ3＋（２×α×Ｃ×γ×Ｖｔｈ＋３×ａ×γ2×Ｖｔｈ）× ｆ2＋・・・
＝Ｃ0×ｆ3＋Ｃ1×ｆ2＋Ｃ2×ｆ＋Ｃ3
【００２４】
プロセッシングエレメント１０１単体の性能は、クロック周波数ｆに比例するため、並列処理時の計算システム１００全体の性能は並列処理を行っているプロセッシングエレメント１０１の数Ｎとそのクロック周波数ｆの積Ｎ×ｆに比例するとみなすことができる。ここで、計算システム１００の電力をＰｓ、プロセッシングエレメント１０１の電力をＰｐとすると、計算システム１００の電力制約下での性能最大化を目指すためには、余剰電力が出ないように、Ｐｓ＝Ｎ×Ｐｐとなるように、プロセッシングエレメント数Ｎ、電源電圧Ｖ及びクロック周波数ｆを調整する。この時の計算システム１００の性能Ｇｓは、次式（２）のようになる。
【００２５】
Ｇｓ∝Ｎ×ｆ＝ｆ×Ｐｓ／Ｐｐ
＝ｆ×Ｐｓ／（Ｃ0×ｆ3＋Ｃ1×ｆ2＋Ｃ2×ｆ＋Ｃ3）
＝ Ｐｓ／（Ｃ0×ｆ2＋Ｃ1×ｆ＋Ｃ2＋Ｃ3／ｆ）      ・・・（２）
【００２６】
図４は、式（２）のプロセッシングエレメント１０１の稼働数Ｎ及び計算システム１００の処理性能Ｇｓを示すグラフである。横軸は、ＣＰＵ１０２のクロック周波数ｆを示す。式（２）のように、計算システム１００の性能Ｇｓは、クロック周波数ｆの関数として表され、ｆ＞０で極大点４０１を一つ持つ曲線となる。ここまでの説明は、計算システム１００内で非稼働となったプロセッシングエレメント１０１の消費電力をほぼ０とみなしたモデルの説明である。次に、非稼働時のプロセッシングエレメント１０１の電力が０ではない場合を考える。プロセッシングエレメント１０１の非稼働時電力をＣ4とし、計算システム１００内の全プロセッシングエレメント１０１の数ＭのうちＮ個が稼働中とすると、上式（２）の性能Ｍｓは、次式（３）のようになる。
Ｇｓ∝Ｎ×ｆ＝（Ｐｓ−Ｃ4×Ｍ）／｛Ｃ0×ｆ2＋Ｃ1×ｆ＋Ｃ2 ＋（Ｃ3−Ｃ4）／ｆ｝      ・・・（３）
【００２７】
また、稼働時の最適のプロセッシングエレメント１０１の電力Ｐｐ１が導出された後の最適のプロセッシングエレメント１０１の数Ｎは次式で求められる。
Ｎ＝（Ｐｓ−Ｍ×Ｃ4）／（Ｐｐ１−Ｃ4）      ・・・（４）
【００２８】
この場合も、式（４）の分子は固定値であり、式（４）の分母は式（２）と同様の形となるので、式（２）と同様に、計算システム性能Ｇｓは、図４のような、極大点４０１を一つ持つものとなる。ここで、非稼働時にクロック信号が停止すると考えれば、Ｃ3≧Ｃ4とみなすことができるため、１／ｆの係数も正と考えることができる。
【００２９】
このことから、計算システム１００の消費電力制約の下で、計算システム１００の性能Ｇｓを最大化するクロック周波数ｆとそれに対応する電源電圧Ｖ及びプロセッシングエレメント１０１の数Ｎの最適値が存在し、使用可能なプロセッシングエレメント１０１をすべて使用することが、必ずしも計算システム１００の性能Ｇｓの最大化につながらないということがわかる。
【００３０】
高性能の超並列計算システム１００では、プロセッシングエレメント１０１間通信による処理性能の低下を抑えるために、プロセッシングエレメント１０１間通信として消費電力の大きな高速入出力（Ｉ／Ｏ）制御回路を用いたシリアル転送を用いることができる。その場合には、入出力制御回路のアクセスの有無にかかわらず、常時大電力を消費し続けることになり、上のプロセッシングエレメント１０１の消費電力式の固定電力成分が非常に大きくなる。式（２）の性能Ｇｓの最適点は、式の性質上、図４において、プロセッシングエレメント１０１の固定電力成分Ｃ3が大きくなると、クロック周波数ｆが大きい側（プロセッシングエレメント１０１数Ｎが少ない側）に移る。そのため、この様な固定電力成分Ｃ3の大きいプロセッシングエレメント１０１は全プロセッシングエレメント１０１を稼働させるより、稼働させるプロセッシングエレメント１０１の数Ｎを絞って、その分、電源電圧Ｖやクロック周波数ｆを上げた方が計算システム１００全体の性能Ｇｓは高くなるケースが多い。
【００３１】
また、式（２）からわかるように、図４の特性グラフの性能最大点４０１は、Ｃ0及びＣ1が大きい（実行するプログラムの消費電力が大きい）と、クロック周波数ｆが低い側（プロセッシングエレメント１０１数Ｎが多い側）に移る。このように、最適動作点４０１は、実行するプログラムの消費電力によっても変動することがわかる。
【００３２】
本実施形態は、動作点４０１を基に、稼働するプロセッシングエレメント１０１の数Ｎ、クロック周波数ｆ及び電源電圧Ｖを調整することにより、計算システム１００の性能Ｇｓの最大化を図る。
【００３３】
図５は、計算システム１００の電力管理方法を示すフローチャートである。図５の処理は、ステップ５１１のプロセッシングエレメント１０１の特性情報取得処理と、ステップＳ５１２の性能最大化プロセッシングエレメント数及び動作条件算出処理と、ステップＳ５０５の動作条件設定処理と、ステップＳ５０６の並列処理プログラム実行処理とを有する。ステップＳ５１１は、ステップＳ５０１及びＳ５０２を有する。ステップＳ５１２は、ステップＳ５０３及びＳ５０４を有する。
【００３４】
図６（Ａ）は、図５の処理主体を説明するための図である。計算システム１００は、複数のＣＰＵ１０２を有する。各ＣＰＵ１０２は、複数の演算コア６０１を有するマルチコアプロセッサである。１個のＣＰＵ１０２内の１個の演算コア６０１は、プログラムを実行することにより図５の処理を行い、各ＣＰＵ１０２から情報６０３を入力し、各ＣＰＵ１０２に対して電源電圧Ｖ及びクロック周波数ｆなどを設定するための制御信号６０２を出力する。また、１個のプロセッシングエレメント１０１が図５の処理を行ってもよい。この場合、図５の処理を行うプロセッシングエレメント１０１は、図１のネットワーク１０４を介して、他のプロセッシングエレメント１０１に対して通信を行う。
【００３５】
図６（Ｂ）は、他の図５の処理主体を説明するための図である。計算システム１００は、複数のＣＰＵ１０２の他に、電力管理コントローラ６１１を有する。電力管理コントローラ６１１は、プログラムを実行することにより図５の処理を行い、各ＣＰＵ１０２から情報６０３を入力し、各ＣＰＵ１０２に対して電源電圧Ｖ及びクロック周波数ｆなどを設定するための制御信号６０２を出力する。この場合、電力管理コントローラ６１１は、図１のネットワーク１０４とは別のネットワークを介して、プロセッシングエレメント１０１に対して通信を行う。以下、電力管理コントローラ６１１が図５の処理を行う例を説明する。
【００３６】
稼働させるすべてのプロセッシングエレメント１０１は、各並列タスクの処理時間を揃えるために、同一のクロック周波数ｆに設定される。電源電圧Ｖは、全プロセッシングエレメント１０１で同一でもよいし、プロセッシングエレメント１０１毎のプロセスばらつきに応じて調整してもよい。
【００３７】
プロセッシングエレメント１０１の消費電力、特にＣＰＵ１０２の電力については、ダイナミック電力とリーク電力がある。リーク電力については、計算システム１００が水冷等により低温で温度管理され、リーク電力の変動が小さい領域で動作していう前提で、既知の固定値として扱う。プロセッシングエレメント１０１は、動作時に内部の各部の稼働情報を記録して、それを基に自身の消費電力（ダイナミック電力）を演算する機能を持つ。
【００３８】
電力管理コントローラ６１１は、同一のクロック周波数ｆの下でプロセッシングエレメント１０１の消費電力の異なる複数の動作負荷において、下記の３個のパラメータを求める。
【００３９】
（１）その負荷を特定の基準周波数下で処理した際のプロセッシングエレメント１０１のダイナミック電力
（２）その負荷での最適周波数（図４の最適動作点４０１）
（３） その負荷で周波数を（２）の最適周波数に変更した場合のプロセッシングエレメント１０１の電力
【００４０】
図７は、図５の最適周波数導出表５２１の構成例を示す図である。最適周波数導出表５２１は、例えば、電力管理コントローラ６１１内に記憶される。最適周波数導出表５２１は、規定周波数で実行した時のプロセッシングエレメント１０１のダイナック電力値Ｐ１〜Ｐｍと、その時の性能最適周波数Ｆ１〜Ｆｍと、その性能最適周波数Ｆ１〜Ｆｍ及びそれに対応する電源電圧Ｖ１〜Ｖｍを使用した時の変更後電力Ｐ１ａ〜Ｐｍａを有する。最適周波数導出表５２１は、予め作成される。
【００４１】
上の（１）〜（３）の情報は、プロセッシングエレメント１０１の電力及び周波数特性がわかっていれば求めることができるため、例えば、設計時の設計データを用いた消費電力解析や、製造後、プロセッシングエレメント１０１単体での実機測定等により、計算システム１００を組む前に、最適周波数導出表５２１を求めることができる。
【００４２】
最適周波数導出表５２１は、後述する検索処理のために、予めダイナミック電力Ｐ１〜Ｐｍの大きさで、エントリをソートしておく。最適周波数導出表５２１は、式（２）のＧｓ∝ｆ×Ｐｓ／Ｐｐのうちのｆ／Ｐｐの部分で決まる値で作成されるため、並列処理プログラムを計算システム１００全体で処理する場合でも、区画化した一部分で処理する場合でも、同じ最適周波数導出表５２１を使用することができる。
【００４３】
実行される並列処理プログラムは、図５の処理開始前に並列実行数Ｎを実行時に指定できるように、Ｎをパラメータ化して作成（コンパイル）されているか、このプログラムの処理に割り当てられる全プロセッシングエレメント１０１の数Ｍと同じかそれより小さい並列数で、並列化コンパイラによって予めコンパイルされている。
【００４４】
まず、ステップＳ５０１では、電力管理コントローラ６１１は、電力情報取得用の並列処理プログラムを各プロセッシングエレメント１０１にテスト実行させる。この処理は、消費電力が計算システム１００の制約電力を超えないような十分低い周波数で実行し、定常特性を取得するのに十分な時間実行させる。
【００４５】
次に、ステップＳ５０２では、電力管理コントローラ６１１は、１個又は複数のプロセッシングエレメント１０１の並列処理部分の定常的なダイナミック電力Ｐｄを取得する。並列処理部分について、定常的なダイナミック電力の取得に十分な長さだけ並列処理プログラムを実行した上で、その時のプロセッシングエレメント１０１のダイナミック電力Ｐｄを取得する。
【００４６】
ダイナック電力Ｐｄを取得するプロセッシングエレメント１０１は１個でもいいし、ダイナミック電力Ｐｄのばらつきを考慮する場合は、複数のプロセッシングエレメント１０１からダイナミック電力Ｐｄを取得した上で、平均処理等を行い、１個のダイナミック電力Ｐｄを求めてもよい。
【００４７】
また、プロセッシングエレメント１０１単体においても、異なる期間の定常状態のダイナミック電力Ｐｄを保持する複数レジスタを用意するなどして、複数のダイナミック電力Ｐｄを取得してもよい。電力管理コントローラ６１１は、得られた複数のダイナミック電力Ｐｄを基に、平均ダイナミック電力Ｐｄを用いる。
【００４８】
また、電力管理コントローラ６１１は、統計処理により分散を考慮して例えば「平均＋１σ」相当のダイナミック電力Ｐｄを求めてもよい。
【００４９】
また、複数のプロセッシングエレメント１０１が同時動作することにより、ばらつきが重なり合って緩和される効果を加味する為の係数αを導入し、以下の式で算出したダイナミック電力Ｐｄを用いてもよい。
Ｐｄ＝平均電力値＋（最大電力−平均電力）×α
【００５０】
次に、ステップＳ５１２の性能最大化プロセッシングエレメント数及び動作条件算出処理を説明する。
【００５１】
ステップＳ５０３では、電力管理コントローラ６１１は、得られたダイナミック電力Ｐｄを基に最適周波数導出表５２１を検索し、その並列処理プログラムに最適な周波数ｆを求める。例えば、図７の最適周波数導出表５２１を用いて、ダイナミック電力がＰ１の場合には、最適な周波数がＦ１になる。また、得られたダイナミック電力Ｐｄが、図７の最適周波数導出表５２１のｉ番目のエントリのダイナミック電力Ｐ（ｉ）とｉ＋１番目のエントリのダイナミック電力Ｐ（ｉ＋１）の間の場合、電力管理コントローラ６１１は、ｉ番目のエントリの最適周波数Ｆ（ｉ）とｉ＋１番目のエントリの最適周波数Ｆ（ｉ＋１）を用いて、次式の線形補間により、最適周波数ｆを導出する。
ｆ＝Ｆ（ｉ）＋｛Ｆ（ｉ＋１）−Ｆ（ｉ）｝×｛Ｐｄ−Ｐ（ｉ）｝／｛Ｐ（ｉ＋１）＋Ｐ（ｉ）｝
【００５２】
また、電力管理コントローラ６１１は、上記の最適周波数ｆに対応する最適電源電圧Ｖを求める。最適電源電圧Ｖは、最適周波数ｆでＣＰＵ１０２を正常動作させることができる電源電圧である。
【００５３】
次に、ステップＳ５０４では、電力管理コントローラ６１１は、図７の最適周波数導出表５２１を用いて、求めた最適周波数ｆ及び最適電源電圧Ｖの動作時のプロセッシングエレメント１０１の電力を変更後電力Ｐ１ａ〜Ｐｍａとして求める。この場合も、電力管理コントローラ６１１は、上記の最適周波数ｆの導出と同様に、線形補間により、変更後電力Ｐ１ａ〜Ｐｍａを求める。
【００５４】
次に、電力管理コントローラ６１１は、計算システム１００の制約電力Ｐｓ、最適動作時の変更後電力Ｐｐ（Ｐ１ａ〜Ｐｍａ）、全プロセッシングエレメント数Ｍ及びプロセッシングエレメント１０１の非稼働時電力Ｃ4を基に、式（４）を用いて、次式により、最適稼働プロセッシングエレメント数Ｎを導出する。
Ｎ＝（Ｐｓ−Ｃ4×Ｍ）／（ Ｐｐ−Ｃ4）
【００５５】
ここで、最適稼働プロセッシングエレメント数Ｎが全プロセッシングエレメント数Ｍより多い場合は、最適稼働プロセッシングエレメント数ＮをＭとする。その場合、各プロセッシングエレメント１０１は、Ｐｓ／Ｍの電力で動作させられる。この制御は、ステップＳ５１１の処理と同様のテスト実行を行い、最適周波数ｆ及び最適電源電圧Ｖの組みを変化させながら、取得するダイナミック電力ＰｄがＰｓ／Ｍとなる最適周波数ｆ及び最適電源電圧Ｖの組みを見つけてもいいし、Power Capping手法のように各プロセッシングエレメント１０１に制約電力Ｐｓ／Ｍを設定して、各プロセッシングエレメント１０１が設定電力以下で動作するように自律的に制御を行わせてもよい。
【００５６】
次に、ステップＳ５０５では、電力管理コントローラ６１１は、上記の最適稼働プロセッシングエレメント数Ｎに基づき稼働させるプロセッシングエレメント１０１を決定し、稼働させるプロセッシングエレメント１０１の上記の最適周波数ｆ及び最適電源電圧Ｖを設定する。また、電力管理コントローラ６１１は、オペレーティングシステム（ＯＳ）等の並列タスクをスケジューリングするプロセスに最適稼働プロセッシングエレメント数Ｎを通知する。電力管理コントローラ６１１は、実行するタスクが並列実行数固定でコンパイルされている場合は、本処理内で対象タスクを並列化コンパイラを用いて、並列数を最適稼働プロセッシングエレメント数Ｎとして、対象タスクを再コンパイルする。タスクの並列数がパラメータ化されて作成されているプログラムの場合は、電力管理コントローラ６１１は、実行時の並列数の設定を最適稼働プロセッシングエレメント数Ｎに設定する。
【００５７】
次に、ステップＳ５０６では、電力管理コントローラ６１１は、ステップＳ５０５の動作条件設定に基づいて、対象の並列処理プログラムを各プロセッシングエレメント１０１に実行させる。
【００５８】
図８は、プロセッシングエレメント１０１の非稼働時電力Ｃ4に応じた最適動作点の変動を示すグラフである。計算システム１００の性能８０１は、プロセッシングエレメント１０１の非稼働時電力Ｃ4が大きい場合の性能であり、最適動作点８０２を有する。計算システム１００の性能８０３は、プロセッシングエレメント１０１の非稼働時電力Ｃ4が小さい場合の性能であり、最適動作点８０４を有する。
【００５９】
式（３）から分かるように、プロセッシングエレメント１０１の非稼働時電力Ｃ4の値が変わると、分母の１／ｆの係数Ｃ4−Ｃ3が変化するため、計算システム１００の性能が最適となる周波数も変動する。つまり、プロセッシングエレメント１０１が休止時の消費電力が異なる複数の低電力モードを持っていた場合、休止させたプロセッシングエレメント１０１をどの低電力モードで待機させるかによって、最適な動作点８０２又は８０４が変わる。よって、プロセッシングエレメント１０１が休止時電力の異なる複数の低電力モードを持っていた場合、その低電力モードごとに図７の最適周波数導出表５２１を用意し、計算システム１００の低電力モード設定によって、使用する最適周波数導出表５２１を切り替えることにより、休止時電力が異なるモードを持つ場合にも対応することができる。
【００６０】
図９は、マルチコアプロセッサのＣＰＵ１０２の構成例を示す図である。ＣＰＵ１０２は、マルチコアプロセッサであり、複数の演算コア６０１を有する。また、ＣＰＵ１０２は、共有キャッシュメモリ９０１、メモリ制御回路９０２及び入出力（Ｉ／Ｏ）制御回路９０３を有する。各演算コア６０１は、共有キャッシュメモリ９０１を介して、メモリ制御回路９０２に対して、コマンドＣＭＤを出力し、データＤＴを入出力する。また、各演算コア６０１は、共有キャッシュメモリ９０１を介して、入出力制御回路９０３に対して、コマンドＣＭＤを出力し、データＤＴを入出力する。メモリ制御回路９０２は、内部バッファを有し、ローカルメモリ１０３に対してデータを読み書き制御し、内部バッファがフルになるとビジー信号ＭＢＳＹを出力する。入出力制御回路９０３は、内部バッファを有し、ネットワーク１０４に対してデータを入出力制御し、内部バッファがフルになるとビジー信号ＩＢＳＹを出力する。
【００６１】
これまでの説明における計算システム１００をマルチコアＣＰＵ１０２と考え、これまでの説明におけるプロセッシングエレメント１０１を演算コア６０１と考え、規模を縮小してこれまでの式を当てはめて考える。その場合、演算コア６０１は、式（１）の固定電力に相当する周波数ｆ及び電源電圧Ｖに依存しない電力成分がほとんどないため、式（２）及び（３）の性能Ｇｓで固定電力が０であるとみなして考えることにより、プロセッシングエレメント１０１内の全演算コア６０１を使用した場合が一番電力当たりの性能が高くなることが分かる。すなわち、周波数ｆを低くし、その分、大量のプロセッシングエレメント１０１を動作させた方が全体の性能が上がる。このことから、プロセッシングエレメント１０１がマルチコアプロセッサの場合は、プロセッシングエレメント１０１内の演算コア６０１は全て動作させた上で、プロセッシングエレメント１０１の数Ｎを本実施形態で決定することにより、性能を最大化できる。これにより、プロセッシングエレメント１０１がマルチコアプロセッサの場合でも、性能を最大化することが可能となる。
【００６２】
これまでの説明では、性能ＧｓはＮ×ｆに比例するという前提で行ってきた。しかし、例えばメモリアクセスが多い処理の場合は、周波数ｆを上げても、メモリアクセスの処理待ちがボトルネックとなって、いくら周波数ｆを上げても、実際の処理性能は上がらず、Ｇｓ∝Ｎ×ｆという前提が崩れる場合がある。この代表的なものがＣＰＵ１０２のメモリ制御回路９０２や入出力制御回路９０３である。これらの制御回路９０２及び９０３は、仕様上、最大バンド幅や通信レイテンシが決まっているため、いくらＣＰＵ１０２内部の周波数ｆを上げても、速くはならない。本実施形態により求めた最適周波数ｆが、このようなメモリアクセスや入出力アクセスによる性能劣化が大きい領域に入っていた場合は、最高性能は達成できずに、性能向上に結び付かない無駄な電力が消費されることになる。このようなケースの対策として、以下の様に、メモリアクセス又は入出力アクセスによる性能劣化を検知して、周波数が無駄に高くならない機構を入れて、消費電力を抑制する。無駄な電力消費を抑えることにより、電気代の削減や故障発生率の抑制などにつながる。計算システム１００を区画化して、複数のジョブを実行している場合には、上位のシステム制御において、この機構により生じた消費電力の余剰を別の区画で処理されているジョブの電力制約値に加えることにより、その別の区画のジョブの性能をさらに上げるといったことも可能となる。
【００６３】
図１０は、バッファフル率検出回路を有するＣＰＵ１０２の構成例を示す図である。ＣＰＵ１０２は、バッファフル率検出回路を有する。バッファフル率検出回路は、クロックカウンタ１００１、カウンタ１００２、除算器１００３及びバッファフル率レジスタ１００４を有し、メモリ制御回路９０２のバッファのバッファフル率を検出する。クロックカウンタ１００１及びカウンタ１００２は、リセット信号ＲＳによりカウント値がリセットされる。クロックカウンタ１００１は、クロック信号をカウントする。メモリ制御回路９０２は、内部バッファがフルになるとビジー信号ＭＢＳＹを出力する。カウンタ１００２は、メモリ制御回路９０２のビジー信号ＭＢＳＹをカウントする。除算器１００３は、カウンタ１００２のカウント値とクロックカウンタ１００１のカウント値との除算を行い、除算結果をバッファフル率として出力する。バッファフル率レジスタ１００４は、保持信号ＨＬＤを入力すると、除算器１００３が出力するバッファフル率を保持する。メモリ制御回路９０２のバッファフル率を検出する方法を説明したが、同様に、図９の入出力制御回路９０３のバッファフル率の検出回路を設けることができる。
【００６４】
メモリアクセス又は入出力アクセスによる性能劣化を検出する回路として、ＣＰＵ１０２内のメモリ制御回路９０２及び入出力制御回路９０３のバッファにおいて、カウンタ１００２は、バッファがフルになったクロック数をカウントする。バッファフル率レジスタ１００４は、バッファフル率を保持する。バッファフル率は、全実行クロック数のうちのバッファフルとなったクロック数の割合である。
【００６５】
図１１は、電力管理コントローラ６１１の図１０のＣＰＵ１０２に対する処理例を示すフローチャートであり、図５のステップＳ５１１及びＳ５１２において最適周波数を求めた後かつステップＳ５０６の前に行われる処理である。この処理は、サンプル取得として十分な数のプロセッシングエレメント１０１で実行すればよく、全プロセッシングエレメント１０１で実行する必要はない。
【００６６】
ステップＳ１００１では、電力管理コントローラ６１１は、リセット信号ＲＳの印加及び解除を行い、クロックカウンタ１００１及びカウンタ１００２のカウント値をリセットする。
【００６７】
次に、ステップＳ１００２では、電力管理コントローラ６１１は、一定期間（定常状態として十分な期間）プロセッシングエレメント１０１を動作させる。
【００６８】
次に、ステップＳ１００３では、電力管理コントローラ６１１は、保持信号ＨＬＤにより、バッファフル率をレジスタ１００４に格納する。
【００６９】
次に、ステップＳ１００３では、電力管理コントローラ６１１は、バッファフル率レジスタ１００４に格納されているバッファフル率を読み出す。
【００７０】
次に、電力管理コントローラ６１１は、バッファフル率が閾値より小さい場合は、メモリボトルネックは無視できるとみなして、設定された最適周波数で図５のステップＳ５０６の処理を各プロセッシングエレメント１０１に実行させる。
【００７１】
また、電力管理コントローラ６１１は、バッファフル率が閾値より大きい場合は、最適周波数から周波数を段階的に下げながら、上記と同様に、バッファフル率を取得する。そして、電力管理コントローラ６１１は、バッファフル率が閾値より小さくなった時点の周波数を設定し、図５のステップＳ５０６の処理を行う。
【００７２】
このような制御により、メモリボトルネックがある場合に無駄に周波数を上げることなく、適切な消費電力で並列処理を実行することができる。
【００７３】
これまでの説明からわかるように、計算システム１００の性能特性から求められる最適プロセッシングエレメント数Ｎが計算システム１００の全プロセッシングエレメント数Ｍより小さいような動作状況の場合、全プロセッシングエレメント１０１を動作させた時には、図４の特性グラフ上で最適点４０１ではない動作点で動作していることになる。そのため、その動作点の性能と最適動作点４０１の性能の差分に当たる分だけ、本実施形態を用いた方が性能が向上することがわかる。
【００７４】
図１２は、本実施形態の効果を説明するためのグラフであり、計算システム１００の性能１２０１及び稼働プロセッシングエレメント数１２０８を示す。例えば、計算システム１００で図１２のような特性を持った並列処理プログラムを実行したとする。計算システム１００の全プロセッシングエレメント数１２０６が１７０００個だった場合、１７０００個のすべてのプロセッシングエレメント１０１を動作させた場合は、動作点１２０２で動作して、計算システム性能１２０１は８．０［ａ.ｕ.］となる。これに対し、本実施形態の最適動作点１２０３は、稼働プロセッシングエレメント数１２０５が１２５００個であり、周波数１２０４が１．６［ａ.ｕ.］である。本実施形態の最適動作点１２０３で動作させた場合には、計算システム性能１２０７は９．５［ａ.ｕ.］となり、全プロセッシングエレメント稼働の動作点１２０２に対して、約１９％の性能１２０９の向上となる。
【００７５】
図１３は、図７の最適周波数導出表５２１の例を示す図である。以下、図１３の最適周波数導出表５２１を用いた処理例を、図５を参照しながら説明する。例えば、全プロセッシングエレメント数Ｍは１７０００個であり、計算システム制約電力は９５０ｋＷであり、非稼働プロセッシングエレメント電力Ｃ4は１１Ｗである。
【００７６】
ステップＳ５０１では、電力管理コントローラ６１１は、まず最適周波数導出表５２１が前提としている基準動作モードの周波数ｆ及び電源電圧Ｖで並列処理プログラムを各プロセッシングエレメント１０１に仮動作させる。
【００７７】
次に、ステップＳ５０２では、電力管理コントローラ６１１は、並列処理を受け持つプロセッシングエレメント１０１の定常的なダイナミック電力を取得する。このダイナミック電力が３８Ｗだったとする。これは、前に述べたように複数の電力平均でもよいし、電力値のばらつきを考慮した補正値でもよい。
【００７８】
次に、ステップＳ５０３では、電力管理コントローラ６１１は、図１３の最適周波数導出表５２１を基に、ダイナミック電力が３８Ｗの時の最適周波数を求める。図１３の最適周波数導出表５２１は、２行目が３６Ｗであり、３行目が４０Ｗであるので、最適周波数ｆは、次式の線形補間により、求められる。
ｆ＝１．７＋（１．５−１．７）×（３８−３６）／（４０−３６）
＝１．６［ａ.ｕ.］
その後、電力管理コントローラ６１１は、最適周波数ｆに対応する電源電圧Ｖを導出する。
【００７９】
次に、ステップＳ５０４では、電力管理コントローラ６１１は、図１３の最適周波数導出表５２１を基に、次式の線形補間により、プロセッシングエレメント１０１の変更後電力Ｐｐを導出する。
Ｐp＝７３＋（７１−７３）×（１．５−１．６）／（１．５−１．７）
＝７２［Ｗ］
【００８０】
次に、電力管理コントローラ６１１は、式（４）を用いて、最適稼働プロセッシング数Ｎを導出する。
Ｎ＝（９５００００−１７０００×１１）／（７２−１１）
≒１２５００個
【００８１】
次に、ステップＳ５０５では、電力管理コントローラ６１１は、上記で求めた最適周波数（＝１．６［ａ.ｕ.］）、それに対応する電源電圧、及び稼働プロセッシングエレメント数（≒１２５００個）を計算システム１００の設定に反映させる。さらに、電力管理コントローラ６１１は、プログラム並列数設定が１２５００でない場合は、パラメータ設定及び再コンパイル等の方法で並列数を１２５００にする。
【００８２】
次に、ステップＳ５０６では、電力管理コントローラ６１１は、上記で行った計算システム１００の設定及び並列数設定に基づいて、各プロセッシングエレメント１０１に並列処理プログラムを実行させる。
【００８３】
次に、プロセッシングエレメント１０１が図７に示すｍ個の動作モードを有する例を説明する。ｍ個の動作モードは、それぞれ、周波数及び電源電圧の組みが設定されている。例えば、第１の動作モードは、周波数Ｆ１及びそれに対応する電源電圧Ｖ１が設定されている。すなわち、プロセッシングエレメント１０１は、異なる複数の周波数Ｆｉ及び各周波数ＦｉでＣＰＵ１０２を正常動作させる電源電圧Ｖｉの組（Ｆｉ，Ｖｉ）として規定される複数の動作モードＭｉを持つ。ここで、ｉは自然数である。動作モードは、図５の処理を実行するプログラムから設定可能である。この場合、図５のステップＳ５０３では、複数の動作モードＭｉの中から１個の動作モードを選択する。
【００８４】
ステップＳ５０３では、電力管理コントローラ６１１は、上記と同様に、図７の最適周波数導出表５２１を参照し、得られたダイナミック電力Ｐｄを用いて、次式の線形補間により、最適周波数ｆを導出する。
ｆ＝Ｆ（ｉ）＋｛Ｆ（ｉ＋１）−Ｆ（ｉ）｝×｛Ｐｄ−Ｐ（ｉ）｝／｛Ｐ（ｉ＋１）−Ｐ（ｉ）｝
【００８５】
次に、電力管理コントローラ６１１は、動作モードとして最適周波数ｆより周波数が低く最も最適周波数ｆに近い周波数Ｆｉの動作モードＭｉを選択し、選択した動作モードＭｉの周波数Ｆｉ及び電源電圧Ｖｉを設定する。
【００８６】
次に、ステップＳ５０４では、電力管理コントローラ６１１は、図７の最適周波数導出表５２１を参照し、選択した動作モードＭｉの周波数Ｆｉ及び電源電圧Ｖｉにおけるプロセッシングエレメント１０１の変更後電力Ｐｐを読み出す。そして、電力管理コントローラ６１１は、その変更後電力Ｐｐを基に、上記と同様に、最適稼働プロセッシングエレメント数Ｎを求める。
【００８７】
仮に、周波数ｆが動作モードＭｉの周波数ｆｉと動作モードＭｉ＋１の周波数ｆｉ＋１の間の周波数だった場合、動作モードＭｉと動作モードＭｉ＋１のどちらで動作させた方が性能が出るかは特性によってどちらの場合も考えられるため、事前には決められない。本実施形態では、周波数が低い側の動作モードを選択し、選択した動作モードにおける変更後電力Ｐｐを読み出し、総電力が計算システム１００の制約電力を超えないことを保証している。なお、周波数ｆより周波数が低い動作モードで動作させるので、変更後の実際の電力は変更後電力Ｐｐより小さくなるため、本来の最適稼働プロセッシングエレメント数Ｎは変更後電力Ｐｐを用いて求めた稼働プロセッシングエレメント数Ｎより大きくなる。最適稼働プロセッシングエレメント数よりやや少ない稼働プロセッシングエレメント数で動作することになるため、計算システム１００の電力が制約電力を超えることはない。このように、変更後電力Ｐｐを基に稼働プロセッシングエレメント数Ｎを求めることにより、簡便に動作モードＭｉ及び稼働プロセッシングエレメント数Ｎを決定することができる。動作モードＭ１〜Ｍｍの周波数Ｆ１〜Ｆｍのステップが十分細かければ、処理を簡略化することによる性能劣化も小さくなる。
【００８８】
次に、他の方法を説明する。例えば、図７の最適周波数導出表５２１の最後列の変更後電力をダイナミック電力とスタティック電力に分けて記録しておく。ここで、上の方法で最適周波数を求めるために用いた各動作モードの変更後電力をＰｐｏ１とし、変更後のダイナミック電力をＰｐｄ１とし、変更後のスタティック電力をＰｐｓ１とする。また、目的とする動作モードでのダイナミック電力をＰｐｏ２とし、変更後のダイナミック電力をＰｐｄ２とし、変更後のスタティック電力をＰｐｓ２とする。
【００８９】
この場合、目的とした動作モードでの電力Ｐｐは、次式により導出する。
Ｐｐ＝Ｐｐｏ１×Ｐｐｄ２／Ｐｐｏ２＋Ｐｐｓ２
【００９０】
電力Ｐｐは、目的の動作モードにおける変更後のダイナミック電力の変動比Ｐｐｄ２／Ｐｐｏ２を用いて、元のダイナミック電力Ｐｐｏ１を補正することにより、前述の簡便な変更後電力の導出よりも、電力の精度を上げて、より無駄の小さい最適稼働プロセッシングエレメント数Ｎを求めることができる。また、ダイナミック電力の変換係数Ｐｐｄ２／Ｐｐｏ２の部分を予め求めて表に格納して利用してもよい。
【００９１】
また、前述の簡便な方法では、動作モードは周波数が小さい側の動作モードを選択していたが、上記のようにプロセッシングエレメント電力の精度を向上させるため、得られた周波数ｆを挟む両側の動作モードＭｉの周波数Ｆｉを用いて、次式により性能Ｇｓを計算し、性能が高い側の動作モードを選択してもよい。
Ｇｓ∝Ｎ×Ｆｉ
【００９２】
次に、本実施形態の効果を説明する。計算システム１００が並列処理プログラムを実行した時の並列演算部分の性能特性が図１２のようになっていたとする。稼働プロセッシングエレメント数１２０８は、計算システム１００全体の消費電力が規定の制約電力を超えない範囲で最大となるように調整する。横軸は、ＣＰＵ１０２のクロック周波数を表す。計算システム性能１２０１は、右側の縦軸に表す。稼働プロセッシングエレメント数１２０８は、左側の縦軸に表す。計算システム性能１２０１は、式（３）で表されるように、周波数ｆに対して極大点２０３を一つ持つ曲線になる。稼働プロセッシングエレメント数１２０８は、周波数ｆが高くなるにつれて、プロセッシングエレメント１０１単体の消費電力が上昇するため、減少する特性となる。本実施形態では、計算システム１００の全プロセッシングエレメント数１２０６を１７０００個としているため、稼働プロセッシングエレメント数１２０８は、全プロセッシングエレメント数１２０６を超えるグラフ左側では１７０００個で横ばいとなっており、対応する計算システム性能１２０１は、稼働プロセッシングエレメント数１２０８が増やせないため、周波数ｆを低くした時の性能が急激に減っている。
【００９３】
計算システム１００の全プロセッシングエレメント１０１を動作させた場合は、周波数が１．０［ａ．ｕ．］近辺のところが計算システム制約電力下で周波数最大となる動作点１２０２となる。これに対し、本実施形態では、計算システム性能１２０１から得られる最適動作点１２０３を予め求めて最適周波数導出表５２１にテーブル化して利用するため、計算システム性能１２０１は周波数１２０４が１．６［ａ.ｕ.］付近の動作点１２０３となる。本実施形態の動作点１２０３の計算システム性能１２０７は、全プロセッシングエレメント動作時の動作点１２０２の計算システム性能に対して、８．０［ａ.ｕ.］から９．５［ａ.ｕ.］への約１７％の改善となる。この時、稼働プロセッシングエレメント数１２０８は、１７０００個から約１２０００個程度に減少する。これより、本実施形態により計算システム性能が改善されることが分かる。
【００９４】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００９５】
１００  計算システム
１０１  プロセッシングエレメント
１０２  ＣＰＵ
１０３  ローカルメモリ
１０４  ネットワーク
【図１】
2014186522.tif 000003
【図２】
2014186522.tif 000004
【図３】
2014186522.tif 000005
【図４】
2014186522.tif 000006
【図５】
2014186522.tif 000007
【図６】
2014186522.tif 000008
【図７】
2014186522.tif 000009
【図８】
2014186522.tif 000010
【図９】
2014186522.tif 000011
【図１０】
2014186522.tif 000012
【図１１】
2014186522.tif 000013
【図１２】
2014186522.tif 000014
【図１３】
2014186522.tif 000015