図1は、本実施形態による計算システムの構成例を示す図である。計算システム100は、複数のプロセッシングエレメント(PE)101がネットワーク104に接続されている。各プロセッシングエレメント101は、処理を行う処理要素であり、演算処理用の中央処理装置(CPU)102及びCPU102に接続されたローカルメモリ103を有する。計算システム100は、単一のラックで構成されていてもよいし、複数のラックから構成されていてもよい。複数ラックの構成の場合は、プロセッシングエレメント101間のネットワーク104は、ラック内ネットワークとラック間ネットワークで構成される。
計算システム100では、処理対象とする並列処理プログラムの処理全体のうちの大部分を占める並列処理可能部分は並列プログラミングや並列化コンパイラ等により処理が類似した複数のサブタスクに分割される。これらのサブタスクは、プログラム実行時に各プロセッシングエレメント101(プロセッシングエレメント101がマルチコアプロセッサの場合はプロセッシングエレメント101内の各プロセッサコア)に割り当てられて、実行時に該当するプロセッシングエレメント101にロードされた上で並列に実行される。個々の並列処理プログラムは、タスクの規模により計算システム100全体で処理される場合もあれば、計算システム100全体を幾つかの部分に区画化したうちの一つで実行される場合もある。後者の場合、各区画には計算システム100全体の消費電力制約値が何らかのポリシに基づいてその区画の消費電力制約として分配される。各区画で処理される並列処理プログラムは、そのジョブを処理する区画に割り当てられた消費電力制約を満たすように実行されるため、この場合でも各区画を計算システム100の各区画の電力制約を計算システム100の電力制約とみなす。
並列処理プログラムの並列処理部分は、プロセッシングエレメント101の数に対して十分大きい並列数を持つ。並列処理部分の分割数(サブタスク数)は、並列処理プログラム作成時に予めパラメータ化されていたり、並列化コンパイラによる並列数を指定したコンパイル等により容易に変更可能である。また、並列実行数を調整することによるサブタスクの割り当てやサブタスク間の通信等のプロセッシングエレメント101間の通信時間の変動量は、各並列実行プロセッシングエレメント101の処理時間全体と比べて無視できるくらい小さいとする。
プロセッシングエレメント101の1個当たり消費電力Paは、そのCPU102内の全ゲートのクロック信号当たりの平均動作率をα、配線及び素子のスイッチングにかかわる総容量をC、CPU102の電源電圧をV、CPU102のリーク電流をIkとし、CPU102のクロック周波数(動作周波数)をfとすると、次式(1)のように表すことができる。ここで、Pbは、CPU102の固定電力であり、Pcは、メモリ関連電力である。
Pa=α×C×V2×f+Ik×V+Pb+Pc ・・・(1)
メモリ関連電力Pcは、ローカルメモリ103自体の消費電力並びにCPU102及びローカルメモリ103間のデータ転送にかかる消費電力であり、メモリアクセスの発生頻度と相関がある。CPU102の固定電力Pbは、CPU102内で別電源供給されたアナログマクロやシリアルI/O等のように半導体チップ内のクロック周波数にかかわらずに、一定量消費される電力成分を表す。
図2は、トランジスタのリーク電流Ikを示すグラフである。横軸は、ドレイン及びソース間電圧Vdsである。縦軸は、ドレイン及びソース間電流Idsである。DIBL(Drain Induced Barrier Lowering)効果等により、電圧Vdsが増加すると、閾値電圧Vthが減少し、リーク電流Ikが増加する。リーク電流Ikの曲線は、トランジスタの動作時に変動させる程度の狭い範囲では、2〜3次式程度の正係数の多項式で近似することができる。例えば、リーク電流Ikは、次式のように、2次曲線201に近似することができる。ここで、電圧Vdsは、例えば電源電圧Vであり、a及びbは定数である。
Ik=a×V2+b
図3は、クロック周波数301及び遅延時間302の例を示すグラフである。横軸は、電源電圧Vを示す。電源電圧Vが増加すると、素子のスイッチング性能が上がるため、遅延時間301が短くなり、クロック周波数302が上がる。逆に、電源電圧Vを下げていくと、素子のスイッチング性能が下がり、電源電圧Vが閾値電圧Vthより下がると、素子が動作しにくくなる。電源電圧Vとクロック周波数fの関係では、電源電圧Vは閾値電圧Vthを切片としたクロック周波数fの単調増加関数となり、実用的な電圧変動範囲では、1次直線303に近似すると、次式になる。ここで、γは定数である。
V=γ×f+Vth
ローカルメモリ103は、それが接続されるCPU102のクロック信号の周波数fが増加すると、内部処理速度の上昇により、メモリアクセス頻度も増加するため、メモリ関連電力Pcは、次式により、ある固定値P0mを切片として、クロック周波数fが線形増加するとしてモデル化できる。
Pc=P0m+f×Pm
このような関係を考慮して、上式(1)を、クロック周波数fについて整理すると、次式のように、正係数の多項式として近似することができる。ここで、C0、C1、C2、C3は、正の実数である。
Pa=α×C×V2×f+Ik×V+Pb+Pc
={α×C×V2×f+Ik×V}+{P0m+f×Pm}+Pb
=α×C×(γ×f+Vth)2×f+(a×V2+b)×V+P0m+f×Pm+Pb
=α×C×(γ×f+Vth)2×f+(a×(γ×f+Vth)2+b)×(γ×f+Vth)+P0m+f×pm+Pb
=(α×C×γ2+a×γ3)×f3+(2×α×C×γ×Vth+3×a×γ2×Vth)× f2+・・・
=C0×f3+C1×f2+C2×f+C3
プロセッシングエレメント101単体の性能は、クロック周波数fに比例するため、並列処理時の計算システム100全体の性能は並列処理を行っているプロセッシングエレメント101の数Nとそのクロック周波数fの積N×fに比例するとみなすことができる。ここで、計算システム100の電力をPs、プロセッシングエレメント101の電力をPpとすると、計算システム100の電力制約下での性能最大化を目指すためには、余剰電力が出ないように、Ps=N×Ppとなるように、プロセッシングエレメント数N、電源電圧V及びクロック周波数fを調整する。この時の計算システム100の性能Gsは、次式(2)のようになる。
Gs∝N×f=f×Ps/Pp
=f×Ps/(C0×f3+C1×f2+C2×f+C3)
= Ps/(C0×f2+C1×f+C2+C3/f) ・・・(2)
図4は、式(2)のプロセッシングエレメント101の稼働数N及び計算システム100の処理性能Gsを示すグラフである。横軸は、CPU102のクロック周波数fを示す。式(2)のように、計算システム100の性能Gsは、クロック周波数fの関数として表され、f>0で極大点401を一つ持つ曲線となる。ここまでの説明は、計算システム100内で非稼働となったプロセッシングエレメント101の消費電力をほぼ0とみなしたモデルの説明である。次に、非稼働時のプロセッシングエレメント101の電力が0ではない場合を考える。プロセッシングエレメント101の非稼働時電力をC4とし、計算システム100内の全プロセッシングエレメント101の数MのうちN個が稼働中とすると、上式(2)の性能Msは、次式(3)のようになる。
Gs∝N×f=(Ps−C4×M)/{C0×f2+C1×f+C2 +(C3−C4)/f} ・・・(3)
また、稼働時の最適のプロセッシングエレメント101の電力Pp1が導出された後の最適のプロセッシングエレメント101の数Nは次式で求められる。
N=(Ps−M×C4)/(Pp1−C4) ・・・(4)
この場合も、式(4)の分子は固定値であり、式(4)の分母は式(2)と同様の形となるので、式(2)と同様に、計算システム性能Gsは、図4のような、極大点401を一つ持つものとなる。ここで、非稼働時にクロック信号が停止すると考えれば、C3≧C4とみなすことができるため、1/fの係数も正と考えることができる。
このことから、計算システム100の消費電力制約の下で、計算システム100の性能Gsを最大化するクロック周波数fとそれに対応する電源電圧V及びプロセッシングエレメント101の数Nの最適値が存在し、使用可能なプロセッシングエレメント101をすべて使用することが、必ずしも計算システム100の性能Gsの最大化につながらないということがわかる。
高性能の超並列計算システム100では、プロセッシングエレメント101間通信による処理性能の低下を抑えるために、プロセッシングエレメント101間通信として消費電力の大きな高速入出力(I/O)制御回路を用いたシリアル転送を用いることができる。その場合には、入出力制御回路のアクセスの有無にかかわらず、常時大電力を消費し続けることになり、上のプロセッシングエレメント101の消費電力式の固定電力成分が非常に大きくなる。式(2)の性能Gsの最適点は、式の性質上、図4において、プロセッシングエレメント101の固定電力成分C3が大きくなると、クロック周波数fが大きい側(プロセッシングエレメント101数Nが少ない側)に移る。そのため、この様な固定電力成分C3の大きいプロセッシングエレメント101は全プロセッシングエレメント101を稼働させるより、稼働させるプロセッシングエレメント101の数Nを絞って、その分、電源電圧Vやクロック周波数fを上げた方が計算システム100全体の性能Gsは高くなるケースが多い。
また、式(2)からわかるように、図4の特性グラフの性能最大点401は、C0及びC1が大きい(実行するプログラムの消費電力が大きい)と、クロック周波数fが低い側(プロセッシングエレメント101数Nが多い側)に移る。このように、最適動作点401は、実行するプログラムの消費電力によっても変動することがわかる。
本実施形態は、動作点401を基に、稼働するプロセッシングエレメント101の数N、クロック周波数f及び電源電圧Vを調整することにより、計算システム100の性能Gsの最大化を図る。
図5は、計算システム100の電力管理方法を示すフローチャートである。図5の処理は、ステップ511のプロセッシングエレメント101の特性情報取得処理と、ステップS512の性能最大化プロセッシングエレメント数及び動作条件算出処理と、ステップS505の動作条件設定処理と、ステップS506の並列処理プログラム実行処理とを有する。ステップS511は、ステップS501及びS502を有する。ステップS512は、ステップS503及びS504を有する。
図6(A)は、図5の処理主体を説明するための図である。計算システム100は、複数のCPU102を有する。各CPU102は、複数の演算コア601を有するマルチコアプロセッサである。1個のCPU102内の1個の演算コア601は、プログラムを実行することにより図5の処理を行い、各CPU102から情報603を入力し、各CPU102に対して電源電圧V及びクロック周波数fなどを設定するための制御信号602を出力する。また、1個のプロセッシングエレメント101が図5の処理を行ってもよい。この場合、図5の処理を行うプロセッシングエレメント101は、図1のネットワーク104を介して、他のプロセッシングエレメント101に対して通信を行う。
図6(B)は、他の図5の処理主体を説明するための図である。計算システム100は、複数のCPU102の他に、電力管理コントローラ611を有する。電力管理コントローラ611は、プログラムを実行することにより図5の処理を行い、各CPU102から情報603を入力し、各CPU102に対して電源電圧V及びクロック周波数fなどを設定するための制御信号602を出力する。この場合、電力管理コントローラ611は、図1のネットワーク104とは別のネットワークを介して、プロセッシングエレメント101に対して通信を行う。以下、電力管理コントローラ611が図5の処理を行う例を説明する。
稼働させるすべてのプロセッシングエレメント101は、各並列タスクの処理時間を揃えるために、同一のクロック周波数fに設定される。電源電圧Vは、全プロセッシングエレメント101で同一でもよいし、プロセッシングエレメント101毎のプロセスばらつきに応じて調整してもよい。
プロセッシングエレメント101の消費電力、特にCPU102の電力については、ダイナミック電力とリーク電力がある。リーク電力については、計算システム100が水冷等により低温で温度管理され、リーク電力の変動が小さい領域で動作していう前提で、既知の固定値として扱う。プロセッシングエレメント101は、動作時に内部の各部の稼働情報を記録して、それを基に自身の消費電力(ダイナミック電力)を演算する機能を持つ。
電力管理コントローラ611は、同一のクロック周波数fの下でプロセッシングエレメント101の消費電力の異なる複数の動作負荷において、下記の3個のパラメータを求める。
(1)その負荷を特定の基準周波数下で処理した際のプロセッシングエレメント101のダイナミック電力
(2)その負荷での最適周波数(図4の最適動作点401)
(3) その負荷で周波数を(2)の最適周波数に変更した場合のプロセッシングエレメント101の電力
図7は、図5の最適周波数導出表521の構成例を示す図である。最適周波数導出表521は、例えば、電力管理コントローラ611内に記憶される。最適周波数導出表521は、規定周波数で実行した時のプロセッシングエレメント101のダイナック電力値P1〜Pmと、その時の性能最適周波数F1〜Fmと、その性能最適周波数F1〜Fm及びそれに対応する電源電圧V1〜Vmを使用した時の変更後電力P1a〜Pmaを有する。最適周波数導出表521は、予め作成される。
上の(1)〜(3)の情報は、プロセッシングエレメント101の電力及び周波数特性がわかっていれば求めることができるため、例えば、設計時の設計データを用いた消費電力解析や、製造後、プロセッシングエレメント101単体での実機測定等により、計算システム100を組む前に、最適周波数導出表521を求めることができる。
最適周波数導出表521は、後述する検索処理のために、予めダイナミック電力P1〜Pmの大きさで、エントリをソートしておく。最適周波数導出表521は、式(2)のGs∝f×Ps/Ppのうちのf/Ppの部分で決まる値で作成されるため、並列処理プログラムを計算システム100全体で処理する場合でも、区画化した一部分で処理する場合でも、同じ最適周波数導出表521を使用することができる。
実行される並列処理プログラムは、図5の処理開始前に並列実行数Nを実行時に指定できるように、Nをパラメータ化して作成(コンパイル)されているか、このプログラムの処理に割り当てられる全プロセッシングエレメント101の数Mと同じかそれより小さい並列数で、並列化コンパイラによって予めコンパイルされている。
まず、ステップS501では、電力管理コントローラ611は、電力情報取得用の並列処理プログラムを各プロセッシングエレメント101にテスト実行させる。この処理は、消費電力が計算システム100の制約電力を超えないような十分低い周波数で実行し、定常特性を取得するのに十分な時間実行させる。
次に、ステップS502では、電力管理コントローラ611は、1個又は複数のプロセッシングエレメント101の並列処理部分の定常的なダイナミック電力Pdを取得する。並列処理部分について、定常的なダイナミック電力の取得に十分な長さだけ並列処理プログラムを実行した上で、その時のプロセッシングエレメント101のダイナミック電力Pdを取得する。
ダイナック電力Pdを取得するプロセッシングエレメント101は1個でもいいし、ダイナミック電力Pdのばらつきを考慮する場合は、複数のプロセッシングエレメント101からダイナミック電力Pdを取得した上で、平均処理等を行い、1個のダイナミック電力Pdを求めてもよい。
また、プロセッシングエレメント101単体においても、異なる期間の定常状態のダイナミック電力Pdを保持する複数レジスタを用意するなどして、複数のダイナミック電力Pdを取得してもよい。電力管理コントローラ611は、得られた複数のダイナミック電力Pdを基に、平均ダイナミック電力Pdを用いる。
また、電力管理コントローラ611は、統計処理により分散を考慮して例えば「平均+1σ」相当のダイナミック電力Pdを求めてもよい。
また、複数のプロセッシングエレメント101が同時動作することにより、ばらつきが重なり合って緩和される効果を加味する為の係数αを導入し、以下の式で算出したダイナミック電力Pdを用いてもよい。
Pd=平均電力値+(最大電力−平均電力)×α
次に、ステップS512の性能最大化プロセッシングエレメント数及び動作条件算出処理を説明する。
ステップS503では、電力管理コントローラ611は、得られたダイナミック電力Pdを基に最適周波数導出表521を検索し、その並列処理プログラムに最適な周波数fを求める。例えば、図7の最適周波数導出表521を用いて、ダイナミック電力がP1の場合には、最適な周波数がF1になる。また、得られたダイナミック電力Pdが、図7の最適周波数導出表521のi番目のエントリのダイナミック電力P(i)とi+1番目のエントリのダイナミック電力P(i+1)の間の場合、電力管理コントローラ611は、i番目のエントリの最適周波数F(i)とi+1番目のエントリの最適周波数F(i+1)を用いて、次式の線形補間により、最適周波数fを導出する。
f=F(i)+{F(i+1)−F(i)}×{Pd−P(i)}/{P(i+1)+P(i)}
また、電力管理コントローラ611は、上記の最適周波数fに対応する最適電源電圧Vを求める。最適電源電圧Vは、最適周波数fでCPU102を正常動作させることができる電源電圧である。
次に、ステップS504では、電力管理コントローラ611は、図7の最適周波数導出表521を用いて、求めた最適周波数f及び最適電源電圧Vの動作時のプロセッシングエレメント101の電力を変更後電力P1a〜Pmaとして求める。この場合も、電力管理コントローラ611は、上記の最適周波数fの導出と同様に、線形補間により、変更後電力P1a〜Pmaを求める。
次に、電力管理コントローラ611は、計算システム100の制約電力Ps、最適動作時の変更後電力Pp(P1a〜Pma)、全プロセッシングエレメント数M及びプロセッシングエレメント101の非稼働時電力C4を基に、式(4)を用いて、次式により、最適稼働プロセッシングエレメント数Nを導出する。
N=(Ps−C4×M)/( Pp−C4)
ここで、最適稼働プロセッシングエレメント数Nが全プロセッシングエレメント数Mより多い場合は、最適稼働プロセッシングエレメント数NをMとする。その場合、各プロセッシングエレメント101は、Ps/Mの電力で動作させられる。この制御は、ステップS511の処理と同様のテスト実行を行い、最適周波数f及び最適電源電圧Vの組みを変化させながら、取得するダイナミック電力PdがPs/Mとなる最適周波数f及び最適電源電圧Vの組みを見つけてもいいし、Power Capping手法のように各プロセッシングエレメント101に制約電力Ps/Mを設定して、各プロセッシングエレメント101が設定電力以下で動作するように自律的に制御を行わせてもよい。
次に、ステップS505では、電力管理コントローラ611は、上記の最適稼働プロセッシングエレメント数Nに基づき稼働させるプロセッシングエレメント101を決定し、稼働させるプロセッシングエレメント101の上記の最適周波数f及び最適電源電圧Vを設定する。また、電力管理コントローラ611は、オペレーティングシステム(OS)等の並列タスクをスケジューリングするプロセスに最適稼働プロセッシングエレメント数Nを通知する。電力管理コントローラ611は、実行するタスクが並列実行数固定でコンパイルされている場合は、本処理内で対象タスクを並列化コンパイラを用いて、並列数を最適稼働プロセッシングエレメント数Nとして、対象タスクを再コンパイルする。タスクの並列数がパラメータ化されて作成されているプログラムの場合は、電力管理コントローラ611は、実行時の並列数の設定を最適稼働プロセッシングエレメント数Nに設定する。
次に、ステップS506では、電力管理コントローラ611は、ステップS505の動作条件設定に基づいて、対象の並列処理プログラムを各プロセッシングエレメント101に実行させる。
図8は、プロセッシングエレメント101の非稼働時電力C4に応じた最適動作点の変動を示すグラフである。計算システム100の性能801は、プロセッシングエレメント101の非稼働時電力C4が大きい場合の性能であり、最適動作点802を有する。計算システム100の性能803は、プロセッシングエレメント101の非稼働時電力C4が小さい場合の性能であり、最適動作点804を有する。
式(3)から分かるように、プロセッシングエレメント101の非稼働時電力C4の値が変わると、分母の1/fの係数C4−C3が変化するため、計算システム100の性能が最適となる周波数も変動する。つまり、プロセッシングエレメント101が休止時の消費電力が異なる複数の低電力モードを持っていた場合、休止させたプロセッシングエレメント101をどの低電力モードで待機させるかによって、最適な動作点802又は804が変わる。よって、プロセッシングエレメント101が休止時電力の異なる複数の低電力モードを持っていた場合、その低電力モードごとに図7の最適周波数導出表521を用意し、計算システム100の低電力モード設定によって、使用する最適周波数導出表521を切り替えることにより、休止時電力が異なるモードを持つ場合にも対応することができる。
図9は、マルチコアプロセッサのCPU102の構成例を示す図である。CPU102は、マルチコアプロセッサであり、複数の演算コア601を有する。また、CPU102は、共有キャッシュメモリ901、メモリ制御回路902及び入出力(I/O)制御回路903を有する。各演算コア601は、共有キャッシュメモリ901を介して、メモリ制御回路902に対して、コマンドCMDを出力し、データDTを入出力する。また、各演算コア601は、共有キャッシュメモリ901を介して、入出力制御回路903に対して、コマンドCMDを出力し、データDTを入出力する。メモリ制御回路902は、内部バッファを有し、ローカルメモリ103に対してデータを読み書き制御し、内部バッファがフルになるとビジー信号MBSYを出力する。入出力制御回路903は、内部バッファを有し、ネットワーク104に対してデータを入出力制御し、内部バッファがフルになるとビジー信号IBSYを出力する。
これまでの説明における計算システム100をマルチコアCPU102と考え、これまでの説明におけるプロセッシングエレメント101を演算コア601と考え、規模を縮小してこれまでの式を当てはめて考える。その場合、演算コア601は、式(1)の固定電力に相当する周波数f及び電源電圧Vに依存しない電力成分がほとんどないため、式(2)及び(3)の性能Gsで固定電力が0であるとみなして考えることにより、プロセッシングエレメント101内の全演算コア601を使用した場合が一番電力当たりの性能が高くなることが分かる。すなわち、周波数fを低くし、その分、大量のプロセッシングエレメント101を動作させた方が全体の性能が上がる。このことから、プロセッシングエレメント101がマルチコアプロセッサの場合は、プロセッシングエレメント101内の演算コア601は全て動作させた上で、プロセッシングエレメント101の数Nを本実施形態で決定することにより、性能を最大化できる。これにより、プロセッシングエレメント101がマルチコアプロセッサの場合でも、性能を最大化することが可能となる。
これまでの説明では、性能GsはN×fに比例するという前提で行ってきた。しかし、例えばメモリアクセスが多い処理の場合は、周波数fを上げても、メモリアクセスの処理待ちがボトルネックとなって、いくら周波数fを上げても、実際の処理性能は上がらず、Gs∝N×fという前提が崩れる場合がある。この代表的なものがCPU102のメモリ制御回路902や入出力制御回路903である。これらの制御回路902及び903は、仕様上、最大バンド幅や通信レイテンシが決まっているため、いくらCPU102内部の周波数fを上げても、速くはならない。本実施形態により求めた最適周波数fが、このようなメモリアクセスや入出力アクセスによる性能劣化が大きい領域に入っていた場合は、最高性能は達成できずに、性能向上に結び付かない無駄な電力が消費されることになる。このようなケースの対策として、以下の様に、メモリアクセス又は入出力アクセスによる性能劣化を検知して、周波数が無駄に高くならない機構を入れて、消費電力を抑制する。無駄な電力消費を抑えることにより、電気代の削減や故障発生率の抑制などにつながる。計算システム100を区画化して、複数のジョブを実行している場合には、上位のシステム制御において、この機構により生じた消費電力の余剰を別の区画で処理されているジョブの電力制約値に加えることにより、その別の区画のジョブの性能をさらに上げるといったことも可能となる。
図10は、バッファフル率検出回路を有するCPU102の構成例を示す図である。CPU102は、バッファフル率検出回路を有する。バッファフル率検出回路は、クロックカウンタ1001、カウンタ1002、除算器1003及びバッファフル率レジスタ1004を有し、メモリ制御回路902のバッファのバッファフル率を検出する。クロックカウンタ1001及びカウンタ1002は、リセット信号RSによりカウント値がリセットされる。クロックカウンタ1001は、クロック信号をカウントする。メモリ制御回路902は、内部バッファがフルになるとビジー信号MBSYを出力する。カウンタ1002は、メモリ制御回路902のビジー信号MBSYをカウントする。除算器1003は、カウンタ1002のカウント値とクロックカウンタ1001のカウント値との除算を行い、除算結果をバッファフル率として出力する。バッファフル率レジスタ1004は、保持信号HLDを入力すると、除算器1003が出力するバッファフル率を保持する。メモリ制御回路902のバッファフル率を検出する方法を説明したが、同様に、図9の入出力制御回路903のバッファフル率の検出回路を設けることができる。
メモリアクセス又は入出力アクセスによる性能劣化を検出する回路として、CPU102内のメモリ制御回路902及び入出力制御回路903のバッファにおいて、カウンタ1002は、バッファがフルになったクロック数をカウントする。バッファフル率レジスタ1004は、バッファフル率を保持する。バッファフル率は、全実行クロック数のうちのバッファフルとなったクロック数の割合である。
図11は、電力管理コントローラ611の図10のCPU102に対する処理例を示すフローチャートであり、図5のステップS511及びS512において最適周波数を求めた後かつステップS506の前に行われる処理である。この処理は、サンプル取得として十分な数のプロセッシングエレメント101で実行すればよく、全プロセッシングエレメント101で実行する必要はない。
ステップS1001では、電力管理コントローラ611は、リセット信号RSの印加及び解除を行い、クロックカウンタ1001及びカウンタ1002のカウント値をリセットする。
次に、ステップS1002では、電力管理コントローラ611は、一定期間(定常状態として十分な期間)プロセッシングエレメント101を動作させる。
次に、ステップS1003では、電力管理コントローラ611は、保持信号HLDにより、バッファフル率をレジスタ1004に格納する。
次に、ステップS1003では、電力管理コントローラ611は、バッファフル率レジスタ1004に格納されているバッファフル率を読み出す。
次に、電力管理コントローラ611は、バッファフル率が閾値より小さい場合は、メモリボトルネックは無視できるとみなして、設定された最適周波数で図5のステップS506の処理を各プロセッシングエレメント101に実行させる。
また、電力管理コントローラ611は、バッファフル率が閾値より大きい場合は、最適周波数から周波数を段階的に下げながら、上記と同様に、バッファフル率を取得する。そして、電力管理コントローラ611は、バッファフル率が閾値より小さくなった時点の周波数を設定し、図5のステップS506の処理を行う。
このような制御により、メモリボトルネックがある場合に無駄に周波数を上げることなく、適切な消費電力で並列処理を実行することができる。
これまでの説明からわかるように、計算システム100の性能特性から求められる最適プロセッシングエレメント数Nが計算システム100の全プロセッシングエレメント数Mより小さいような動作状況の場合、全プロセッシングエレメント101を動作させた時には、図4の特性グラフ上で最適点401ではない動作点で動作していることになる。そのため、その動作点の性能と最適動作点401の性能の差分に当たる分だけ、本実施形態を用いた方が性能が向上することがわかる。
図12は、本実施形態の効果を説明するためのグラフであり、計算システム100の性能1201及び稼働プロセッシングエレメント数1208を示す。例えば、計算システム100で図12のような特性を持った並列処理プログラムを実行したとする。計算システム100の全プロセッシングエレメント数1206が17000個だった場合、17000個のすべてのプロセッシングエレメント101を動作させた場合は、動作点1202で動作して、計算システム性能1201は8.0[a.u.]となる。これに対し、本実施形態の最適動作点1203は、稼働プロセッシングエレメント数1205が12500個であり、周波数1204が1.6[a.u.]である。本実施形態の最適動作点1203で動作させた場合には、計算システム性能1207は9.5[a.u.]となり、全プロセッシングエレメント稼働の動作点1202に対して、約19%の性能1209の向上となる。
図13は、図7の最適周波数導出表521の例を示す図である。以下、図13の最適周波数導出表521を用いた処理例を、図5を参照しながら説明する。例えば、全プロセッシングエレメント数Mは17000個であり、計算システム制約電力は950kWであり、非稼働プロセッシングエレメント電力C4は11Wである。
ステップS501では、電力管理コントローラ611は、まず最適周波数導出表521が前提としている基準動作モードの周波数f及び電源電圧Vで並列処理プログラムを各プロセッシングエレメント101に仮動作させる。
次に、ステップS502では、電力管理コントローラ611は、並列処理を受け持つプロセッシングエレメント101の定常的なダイナミック電力を取得する。このダイナミック電力が38Wだったとする。これは、前に述べたように複数の電力平均でもよいし、電力値のばらつきを考慮した補正値でもよい。
次に、ステップS503では、電力管理コントローラ611は、図13の最適周波数導出表521を基に、ダイナミック電力が38Wの時の最適周波数を求める。図13の最適周波数導出表521は、2行目が36Wであり、3行目が40Wであるので、最適周波数fは、次式の線形補間により、求められる。
f=1.7+(1.5−1.7)×(38−36)/(40−36)
=1.6[a.u.]
その後、電力管理コントローラ611は、最適周波数fに対応する電源電圧Vを導出する。
次に、ステップS504では、電力管理コントローラ611は、図13の最適周波数導出表521を基に、次式の線形補間により、プロセッシングエレメント101の変更後電力Ppを導出する。
Pp=73+(71−73)×(1.5−1.6)/(1.5−1.7)
=72[W]
次に、電力管理コントローラ611は、式(4)を用いて、最適稼働プロセッシング数Nを導出する。
N=(950000−17000×11)/(72−11)
≒12500個
次に、ステップS505では、電力管理コントローラ611は、上記で求めた最適周波数(=1.6[a.u.])、それに対応する電源電圧、及び稼働プロセッシングエレメント数(≒12500個)を計算システム100の設定に反映させる。さらに、電力管理コントローラ611は、プログラム並列数設定が12500でない場合は、パラメータ設定及び再コンパイル等の方法で並列数を12500にする。
次に、ステップS506では、電力管理コントローラ611は、上記で行った計算システム100の設定及び並列数設定に基づいて、各プロセッシングエレメント101に並列処理プログラムを実行させる。
次に、プロセッシングエレメント101が図7に示すm個の動作モードを有する例を説明する。m個の動作モードは、それぞれ、周波数及び電源電圧の組みが設定されている。例えば、第1の動作モードは、周波数F1及びそれに対応する電源電圧V1が設定されている。すなわち、プロセッシングエレメント101は、異なる複数の周波数Fi及び各周波数FiでCPU102を正常動作させる電源電圧Viの組(Fi,Vi)として規定される複数の動作モードMiを持つ。ここで、iは自然数である。動作モードは、図5の処理を実行するプログラムから設定可能である。この場合、図5のステップS503では、複数の動作モードMiの中から1個の動作モードを選択する。
ステップS503では、電力管理コントローラ611は、上記と同様に、図7の最適周波数導出表521を参照し、得られたダイナミック電力Pdを用いて、次式の線形補間により、最適周波数fを導出する。
f=F(i)+{F(i+1)−F(i)}×{Pd−P(i)}/{P(i+1)−P(i)}
次に、電力管理コントローラ611は、動作モードとして最適周波数fより周波数が低く最も最適周波数fに近い周波数Fiの動作モードMiを選択し、選択した動作モードMiの周波数Fi及び電源電圧Viを設定する。
次に、ステップS504では、電力管理コントローラ611は、図7の最適周波数導出表521を参照し、選択した動作モードMiの周波数Fi及び電源電圧Viにおけるプロセッシングエレメント101の変更後電力Ppを読み出す。そして、電力管理コントローラ611は、その変更後電力Ppを基に、上記と同様に、最適稼働プロセッシングエレメント数Nを求める。
仮に、周波数fが動作モードMiの周波数fiと動作モードMi+1の周波数fi+1の間の周波数だった場合、動作モードMiと動作モードMi+1のどちらで動作させた方が性能が出るかは特性によってどちらの場合も考えられるため、事前には決められない。本実施形態では、周波数が低い側の動作モードを選択し、選択した動作モードにおける変更後電力Ppを読み出し、総電力が計算システム100の制約電力を超えないことを保証している。なお、周波数fより周波数が低い動作モードで動作させるので、変更後の実際の電力は変更後電力Ppより小さくなるため、本来の最適稼働プロセッシングエレメント数Nは変更後電力Ppを用いて求めた稼働プロセッシングエレメント数Nより大きくなる。最適稼働プロセッシングエレメント数よりやや少ない稼働プロセッシングエレメント数で動作することになるため、計算システム100の電力が制約電力を超えることはない。このように、変更後電力Ppを基に稼働プロセッシングエレメント数Nを求めることにより、簡便に動作モードMi及び稼働プロセッシングエレメント数Nを決定することができる。動作モードM1〜Mmの周波数F1〜Fmのステップが十分細かければ、処理を簡略化することによる性能劣化も小さくなる。
次に、他の方法を説明する。例えば、図7の最適周波数導出表521の最後列の変更後電力をダイナミック電力とスタティック電力に分けて記録しておく。ここで、上の方法で最適周波数を求めるために用いた各動作モードの変更後電力をPpo1とし、変更後のダイナミック電力をPpd1とし、変更後のスタティック電力をPps1とする。また、目的とする動作モードでのダイナミック電力をPpo2とし、変更後のダイナミック電力をPpd2とし、変更後のスタティック電力をPps2とする。
この場合、目的とした動作モードでの電力Ppは、次式により導出する。
Pp=Ppo1×Ppd2/Ppo2+Pps2
電力Ppは、目的の動作モードにおける変更後のダイナミック電力の変動比Ppd2/Ppo2を用いて、元のダイナミック電力Ppo1を補正することにより、前述の簡便な変更後電力の導出よりも、電力の精度を上げて、より無駄の小さい最適稼働プロセッシングエレメント数Nを求めることができる。また、ダイナミック電力の変換係数Ppd2/Ppo2の部分を予め求めて表に格納して利用してもよい。
また、前述の簡便な方法では、動作モードは周波数が小さい側の動作モードを選択していたが、上記のようにプロセッシングエレメント電力の精度を向上させるため、得られた周波数fを挟む両側の動作モードMiの周波数Fiを用いて、次式により性能Gsを計算し、性能が高い側の動作モードを選択してもよい。
Gs∝N×Fi
次に、本実施形態の効果を説明する。計算システム100が並列処理プログラムを実行した時の並列演算部分の性能特性が図12のようになっていたとする。稼働プロセッシングエレメント数1208は、計算システム100全体の消費電力が規定の制約電力を超えない範囲で最大となるように調整する。横軸は、CPU102のクロック周波数を表す。計算システム性能1201は、右側の縦軸に表す。稼働プロセッシングエレメント数1208は、左側の縦軸に表す。計算システム性能1201は、式(3)で表されるように、周波数fに対して極大点203を一つ持つ曲線になる。稼働プロセッシングエレメント数1208は、周波数fが高くなるにつれて、プロセッシングエレメント101単体の消費電力が上昇するため、減少する特性となる。本実施形態では、計算システム100の全プロセッシングエレメント数1206を17000個としているため、稼働プロセッシングエレメント数1208は、全プロセッシングエレメント数1206を超えるグラフ左側では17000個で横ばいとなっており、対応する計算システム性能1201は、稼働プロセッシングエレメント数1208が増やせないため、周波数fを低くした時の性能が急激に減っている。
計算システム100の全プロセッシングエレメント101を動作させた場合は、周波数が1.0[a.u.]近辺のところが計算システム制約電力下で周波数最大となる動作点1202となる。これに対し、本実施形態では、計算システム性能1201から得られる最適動作点1203を予め求めて最適周波数導出表521にテーブル化して利用するため、計算システム性能1201は周波数1204が1.6[a.u.]付近の動作点1203となる。本実施形態の動作点1203の計算システム性能1207は、全プロセッシングエレメント動作時の動作点1202の計算システム性能に対して、8.0[a.u.]から9.5[a.u.]への約17%の改善となる。この時、稼働プロセッシングエレメント数1208は、17000個から約12000個程度に減少する。これより、本実施形態により計算システム性能が改善されることが分かる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。