Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP6933052B2 - 情報処理装置、コンパイル方法及びコンパイルプログラム - Google Patents
[go: Go Back, main page]

JP6933052B2 - 情報処理装置、コンパイル方法及びコンパイルプログラム - Google Patents

情報処理装置、コンパイル方法及びコンパイルプログラム Download PDF

Info

Publication number
JP6933052B2
JP6933052B2 JP2017160611A JP2017160611A JP6933052B2 JP 6933052 B2 JP6933052 B2 JP 6933052B2 JP 2017160611 A JP2017160611 A JP 2017160611A JP 2017160611 A JP2017160611 A JP 2017160611A JP 6933052 B2 JP6933052 B2 JP 6933052B2
Authority
JP
Japan
Prior art keywords
frequency control
code
loop
information
frequency
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017160611A
Other languages
English (en)
Other versions
JP2019040317A (ja
Inventor
由典 杉崎
由典 杉崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017160611A priority Critical patent/JP6933052B2/ja
Publication of JP2019040317A publication Critical patent/JP2019040317A/ja
Application granted granted Critical
Publication of JP6933052B2 publication Critical patent/JP6933052B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

本発明は、情報処理装置、コンパイル方法及びコンパイルプログラムに関する。
HPC(High Performance Computing)等の分野では、処理性能を維持しながら消費電力を削減することが重要となっている。処理性能を維持しながら消費電力を削減する技術としてDFS(Dynamic Frequency Scaling)制御がある。DFS制御は、動作周波数を制御することで電力消費を制御する。
図24は、DFS制御による省電力化を説明するための図である。図24において、コア#0及びコア#1は、CPU(Central Processing Unit)コアであり、p#1〜p#3はループ単位の処理単位である。縦軸は、上から下に向けて時間の経過を示す。図24(a)は、コアに対してのDFS制御による省電力化例を示し、図24(b)は、コアに対してのDFS制御が有効にならないケースを示す。
図24(a)では、コア#0でp#1の処理が行われ、コア#1でp#2の処理が行われ、p#1とp#2の処理が終了するとコア#1でp#3の処理が行われる。p#2の処理はp#1より早く終了するため、コア#1の動作に空きがある。したがって、例えば、コア#1の動作周波数を1/2にしてもp#2の完了時刻がp#1の完了時刻よりも遅くならない場合には、コア#1の消費電力を1/2とすることができる。このように、複数のコアが並列して動作する場合、いずれかのコアの動作に空きがあると、空きのあるコアの動作周波数を下げることで省電力化が可能となる。
なお、電力が供給されて所定の動作を行う複数のコンポーネントの少なくとも1つの動作状況に基づいて、あらかじめ設定された条件を満たすように複数のコンポーネントに配分する電力の割合を制御する技術がある。
また、コンピュータのメモリ性能に関する情報を閾値と比較することで、処理装置がメモリ性能に依存する制約状態であるかを判定し、処理装置がメモリ性能に依存する制約状態であるとき、処理装置の演算能力を下げる制御を行う技術がある。この技術によれば、不要な演算能力を削減することができ、性能低下を抑えながら処理装置の消費電力を削減することができる。
特開2016−189109号公報 国際公開第2008/120274号
図24(b)に示すように、コアの動作に空きがない場合には、DFS制御によりコアの消費電力を削減することができないという問題がある。いずれかのコアの動作周波数を下げると、処理に遅れが発生する。
本発明は、1つの側面では、性能低下を防ぎながら情報処理装置の消費電力を削減することを目的とする。
1つの態様では、情報処理装置は、コンパイル部と実行部と解析部とを有する。コンパイル部は、プロファイリングデータを採取するコードをソースプログラムの分岐のないループに対して挿入して第1の実行コードを生成する。実行部は、コンパイル部により生成された第1の実行コードを実行してプロファイリングデータに基づく電力プロファイラ情報を出力する。解析部は、実行部により出力された電力プロファイラ情報を解析して実行部に含まれる複数のハードウェアモジュールの周波数制御に用いられる周波数制御情報を作成する。そして、コンパイル部は、解析部により作成された周波数制御情報に基づいてソースプログラムのループに対して複数のハードウェアモジュールの周波数を制御する周波数制御コードを挿入して第2の実行コードを生成する。そして、実行部は、コンパイル部により生成された第2の実行コードを実行する。
1つの側面では、本発明は、性能低下を防ぎながら情報処理装置の消費電力を削減することができる。
図1は、DFS制御の対象とするループの条件を説明するための図である。 図2は、実施例に係る情報処理システムによる省電力化を説明するための図である。 図3は、性能低下せずに消費電力を低減できるケースを説明するための図である。 図4Aは、ループにおいて消費電力を低減できる第1のケースを説明するための図である。 図4Bは、ループにおいて消費電力を低減できる第2のケースを説明するための図である。 図4Cは、ループにおいて消費電力を低減できる第3のケースを説明するための図である。 図5は、実施例に係る情報処理システムの構成を示す図である。 図6Aは、情報処理システムの動作(データ採取)を示す図である。 図6Bは、情報処理システムの動作(データ解析)を示す図である。 図7は、コマンド例を示す図である。 図8は、プロファイリング用翻訳の処理フローを示すフローチャートである。 図9は、プロファイリング用翻訳の例を示す図である。 図10Aは、プロファイリングデータを採取する処理のフロー及び電力プロファイラ情報の例を示す図である。 図10Bは、プロファイリングデータの採取例を示す図である。 図11は、電力プロファイラ情報を解析する処理のフローを示すフローチャートである。 図12は、ビジー率を算出する処理のフローを示すフローチャートである。 図13は、ビジー率の算出式の例を示す図である。 図14は、ビジー率情報の例を示す図である。 図15は、周波数制御方法を決定する処理のフローを示すフローチャートである。 図16Aは、周波数制御情報の例を示す図である。 図16Bは、周波数制御情報の他の例を示す図である。 図17は、プロファイリングデータの解析例を示す図である。 図18は、周波数制御コードを埋め込む処理のフローを示すフローチャートである。 図19は、周波数制御コードとして挿入される周波数制御関数の例を示す図である。 図20は、プログラムコードへの周波数制御コードの埋め込み例を示す図である。 図21は、再翻訳コードによる省電力実行のフローを示すフローチャートである。 図22は、利用者によるカストマイズ例を示す図である。 図23は、実施例に係る管理プログラムを実行するコンピュータのハードウェア構成を示す図である。 図24は、DFS制御による省電力化を説明するための図である。
以下に、本願の開示する情報処理装置、コンパイル方法及びコンパイルプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
実施例に係るDFS制御では、ループを処理単位としてDFS制御を行う。そこで、まず、DFS制御の対象とするループの条件について説明する。図1は、DFS制御の対象とするループの条件を説明するための図である。図1に示すように、ループにはCPU資源のビジー(busy)状態が変化するループと変化しないループがある。ここで、CPU資源とは、CPUの処理に関係するハードウェアモジュールであり、例えば、メモリ、L2キャッシュ、L1キャッシュ、演算器がある。
ビジー状態が変化するループは、図1(a)に示すように、制御構造が複雑なループであり、if分等の分岐があるループである。分岐があると、命令実行による処理の流れが途切れるため、CPU資源の利用が均一でなくなる。すなわち、分岐が発生すると、命令シーケンスが途切れてしまい演算のビジー状態が変化する。また、データアクセスも連続性が途切れるため、メモリ及びキャッシュ系のビジー状態も変化する。
一方、ビジー状態が変化しないループは、図1(b)に示すように、制御構造が単純なループであり、if分等の分岐がないループである。分岐がないと、処理の流れが一律となるため、CPU資源の利用が均一となり、ビジー状態が変化しない。図1(b)では、複数行の演算処理となるが、基本的には、データをローディングして演算して結果をセーブする処理であるため、CPU資源の利用状況は均一となる。
ビジー状態が変化するループについては、一律なDFS制御は行えない。したがって、実施例に係る情報処理システムは、ビジー状態が変化しないループを対象としてDFS制御を行う。
次に、実施例に係る情報処理システムによる省電力化について説明する。図2は、実施例に係る情報処理システムによる省電力化を説明するための図である。図2において、Mはメモリを表し、L#2はL2キャッシュを表し、L#1はL1キャッシュを表し、Cは演算器を表す。p#1、p#2はループ単位の処理単位である。縦軸は、上から下に向けて時間の経過を示す。また、コア#0の処理に関係するハードウェアモジュールとしてメモリ、L2キャッシュ、L1キャッシュ及び演算器がある。ハードウェアモジュールの四角は、ハードウェアモジュールがビジーである時間を表す。
図2に示すように、通常状態において、コア#0の全体動作としては空きはないが、ハードウェアモジュール単位では空きがある。そこで、実施例に係る情報処理システムは、ハードウェアモジュール単位でDFS制御を行う。
例えば、p#1の処理では、L2キャッシュメモリの動作に空きがあるので、実施例に係る情報処理システムは、L2キャッシュメモリの電力を1/2とする。また、演算器の動作にも空きがあるので、実施例に係る情報処理システムは、演算器の電力を1/4とする。
演算器の電力を1/4とすることで、演算器の動作時間が4倍になるが、p#1の時間はメモリの時間によって決まるため、性能への影響はない。L2キャッシュについても同様で電力を1/2にしても性能への影響はない。
また、p#2の処理では、メモリの動作に空きがあるので、実施例に係る情報処理システムは、メモリの電力を1/2とする。なお、動作周波数を1/2とすることで、ハードウェアモジュールの電力は1/2となり、動作周波数を1/4とすることで、ハードウェアモジュールの電力は1/4となる。
図3は、性能低下せずに消費電力を低減できるケースを説明するための図である。図3において、値は時間比を表し、値が大きいほど処理は遅い。図3に示すように、ケース(1)では、メモリアクセスがネックであり、例えば演算器の動作周波数を1/4としても性能は低下しない。また、ケース(2)でも、メモリアクセスがネックであり、例えばL2キャッシュの動作周波数を1/2としても性能は低下しない。
ケース(3)では、L2キャッシュアクセスがネックであり、例えばメモリの動作周波数を1/2としても性能は低下しない。ケース(3)は、ケース(1)及び(2)とは動作周波数を低減できるメカニズムが異なる。ケース(1)及び(2)では、ハードウェアモジュール間の動作速度の違いにより、動作速度の速いハードウェアモジュールの動作周波数を下げる。一方、ケース(3)は、L2オンキャッシュでL2キャッシュネックとなった場合であり、オンキャッシュの状態が一定時間継続すれば、メモリから見るとL2キャッシュへのデータ供給が遅延しても問題とならないケースである。
図4A〜図4Cは、ループにおいて消費電力を低減できるケースを説明するための図である。図4Aはメモリアクセスネック時の演算処理の周波数低減のケースであり、図4Bはメモリアクセスネック時のキャッシュ処理の周波数低減のケースであり、図4Cはキャッシュアクセスネック時のメモリアクセスの周波数低減のケースである。
図4A〜図4Cにおいて、「−」は1回転目でハードウェアモジュールがビジー状態であることを表し、「=」は2回転目でハードウェアモジュールがビジー状態であることを表し、「+」は3回転目でハードウェアモジュールがビジー状態であることを表す。「−」、「=」、「+」の1文字が1単位時間を表す。また、メモリアクセス又はキャッシュアクセスが完了したところで演算処理が行われるため、演算処理はメモリアクセス又はキャッシュアクセスの完了を待つ。
図4A(a)は、図4Aに示すケースのプログラム例である。図4A(a)に示すように、図4Aのケースでは3回の繰り返し処理が行われる。図4A(b)は、性能低下しないケースを示す。図4A(b)に示すように、メモリアクセスに4単位時間かかり、演算処理に2単位時間かかる場合には、演算処理の周波数を1/2に低減させても最後の「++」のみコスト増加となるだけで、性能低下はほとんどない。
一方、図4A(c)に示すように、メモリアクセスに2単位時間かかり、演算処理に2単位時間かかる場合には、演算処理の周波数を1/2に低減させると、3回の繰り返し処理で8単位時間が14単位時間になり性能低下が発生する。
また、図4A(d)に示すように、繰り返し回数が1000000と大きい場合には、図4A(b)に示した最後の「++」は、全体の処理時間の中での比率が小さく性能低下は発生しない。
また、図4Bに示すように、キャッシュアクセスの周波数を1/2に低減させてもコスト増加はなく、性能低下はない。さらに、演算処理の周波数を1/2に低下させても最後の「+」のみコスト増加となるだけで、性能低下はほとんどない。
また、図4C(a)に示すように、メモリアクセスの周波数を1/2に低下させても、最初のメモリアクセスの遅延の影響で最後の「+」のみコスト増加となるだけで、性能低下はほとんどない。図4C(a)では、メモリアクセスとキャッシュアクセスは並行して動作するため、メモリアクセスがオンキャッシュのキャッシュアクセスに隠れて性能への影響はない。また、図4C(b)に示すように、回転数を1000000に増やすと、最後の「+」の影響は1/(1+1000000×5+1)であり、性能低下はほとんどない。
次に、実施例に係る情報処理システムの構成について説明する。図5は、実施例に係る情報処理システムの構成を示す図である。図5に示すように、実施例に係る情報処理システム1は、管理装置2と並列計算機3とを有する。管理装置2は、並列計算機3の実行を管理する。並列計算機3は複数の計算機を有し、各計算機あるいは各計算機が有する複数のコアが並列に処理を行う。複数の計算機は、2次元、3次元、6次元等にメッシュ接続あるいはトーラス接続される。
管理装置2は、コンパイル部21と結合部22と解析部23とを有する。コンパイル部21は、プログラムコード(ソースプログラム)4を翻訳する。コンパイル部21は、プロファイル採取が指定されるとプロファイリング用翻訳を行う。結合部22は、コンパイル部21によりプロファイリング用翻訳が行われた場合に、翻訳結果にプロファイラライブラリを結合し、実行コード5を作成する。
実行コード5は並列計算機3により実行される。コンパイル部21がプロファイリング用翻訳を行うと、並列計算機3は実行コード5を実行して電力プロファイラ情報6を出力する。電力プロファイラ情報6は、並列計算機3の電力に関連するハードウェアカウンタの情報である。
解析部23は、電力プロファイラ情報6を解析してループ毎に各ハードウェアモジュールの周波数制御方法を決定し、周波数制御情報7を作成する。周波数制御情報7は、ループ毎にハードウェアモジュール間の周波数比を定義する情報である。
コンパイル部21は、周波数制御情報7に基づいて周波数制御コードをプログラムコード4に挿入し、実行コード5を作成する。実行コード5は並列計算機3により実行される。実行コード5に周波数制御コードが含まれると、並列計算機3は、ハードウェアモジュールの周波数を制御しながら実行コード5を実行する。
コンパイル部21は、第1挿入部21aと第2挿入部21bを有する。第1挿入部21aは、コンパイル部21がプロファイリング用翻訳を行う場合に、ループ毎に分岐が含まれるか否かを判定し、分岐が含まれないループに対してプロファイラライブラリを呼び出すコードを挿入する。
第2挿入部21bは、周波数制御情報7に基づいて周波数制御コードをプログラムコード4に挿入する。第2挿入部21bは、周波数制御コードを挿入する際に最適化を行って不要な周波数制御コードを削除する。
解析部23は、算出部23aと作成部23bを有する。算出部23aは、電力プロファイラ情報6に基づいてループ毎に各ハードウェアモジュールのビジー率を算出し、ビジー率情報を作成する。作成部23bは、ビジー率情報に基づいてループ毎に各ハードウェアモジュールの周波数制御方法を決定し、周波数制御情報7を作成する。
なお、ここでは管理装置2がコンパイル部21、結合部22及び解析部23を有するが、管理装置2とは別の装置がコンパイル部21、結合部22及び解析部23を有してもよい。また、管理装置2とは別の装置がコンパイル部21及び結合部22と解析部23のいずれかを有してもよい。また、管理装置2とは別の第1装置がコンパイル部21及び結合部22を有し、管理装置2及び第1装置とは別の第2装置が解析部23を有してもよい。また、コンパイル部21が結合部22及び解析部23の機能を有してもよい。
次に、情報処理システム1の動作について説明する。図6Aは、情報処理システム1の動作(データ採取)を示す図であり、図6Bは、情報処理システム1の動作(データ解析)を示す図である。図6A及び図6Bにおいて、CMPはコンパイル処理を示し、EXEは実行コード5の実行を示し、ANLは電力制御解析を示す。
図6Aに示すように、情報処理システム1は、プログラムコード4を入力し、プロファイリング用の翻訳を行う(ステップS1)。なお、情報処理システム1は、プロファイリング用の翻訳が指定されている場合に、プロファイリング用の翻訳を行う。そして、情報処理システム1は、翻訳結果にプロファイラライブラリを結合し、実行コード5を生成する(ステップS2)。
プログラムコード4の修正は不要であり、情報処理システム1がプロファイリング用の翻訳を行ってプロファイラライブラリを結合するだけである。情報処理システム1は、プロファイリング用翻訳により、ループ毎に電力に関連するハードウェアカウンタ情報の採取コードを挿入する。
そして、情報処理システム1は、fappを実行する(ステップS3)。情報処理システム1は、fappコマンドを実行することで、プロファイラがループ毎に電力に関連するハードウェアカウンタ情報を採取し(ステップS4)、電力プロファイラ情報6を作成する。
そして、図6Bに示すように、情報処理システム1は、fapppxを実行する(ステップS5)。情報処理システム1は、fapppxコマンドにて、電力制御解析を実行する。電力制御解析において、情報処理システム1は、並列計算機3のハードウェアモジュールのビジー率を算出し、ビジー率から最適な周波数制御方法を決定して周波数制御情報7を出力する。
そして、情報処理システム1は、周波数制御情報7に従って周波数制御コードを埋め込み(ステップS6)、翻訳を行って実行コード5を作成する。実行コード5は周波数制御コードを含んでいるため、情報処理システム1は、実行コード5を実行することで、消費電力を低減できる。
図7は、コマンド例を示す図である。最初の翻訳(1)では、fcc −eco−busy a.cが用いられる。fccはCプログラムのコンパイルを指示するコマンドである。−eco−busyは、省電力モードでのビジー状態採取コードを挿入する翻訳を指定する。ここで、ビジー状態採取コードとは、ハードウェアモジュールのビジー状態を特定するための情報を採取するコードである。a.cはプログラム名である。
データ採取(2)では、fapp −eco −w Vprof.dat a.outが用いられる。fappは電力プロファイラ情報6の収集を指示するコマンドである。−ecoは省電力モードでのプロファイリング実行を指定する。−w Fileは電力プロファイラ情報6の出力先のファイル名を指定する。a.outは実行コード名である。
データ解析(3)では、fapppx −eco −w Vprof.dat −f freq.datが用いられる。fapppxは電力プロファイラ情報6の解析を指示するコマンドである。−ecoは省電力モードでのプロファイリングデータ解析を指定する。−w Dirは電力プロファイラ情報6の入力ファイル名を指定する。−f freq.datは周波数制御情報7の出力先ファイル名を指定する。
再翻訳(4)では、fcc −eco −f freq.txt a.cが用いられる。−ecoは省電力モードでの翻訳を指定する。−f Fileは周波数制御情報7のファイル名を指定する。
省電力実行(5)では、a.out [−eco|−noeco]が用いられる。−ecoは省電力モードでの実行を指定し、−noecoは省電力モードでない実行を指定する。省電力モードでない実行では周波数制御コードは無視される。−ecoがデフォルトである。a.outは実行コード名である。
次に、情報処理システム1の処理のフロー及び処理例について説明する。図8は、プロファイリング用翻訳の処理フローを示すフローチャートである。図8に示すように、コンパイル部21は、プログラムコード4の読み込みを行い(ステップS11)、ステップS12〜ステップS13の処理をループ(I)毎に実施する。
すなわち、コンパイル部21は、ループ内に分岐処理があるか否かを判定し(ステップS12)、ループ内に分岐処理がある場合には、次のループを処理する。一方、ループ内に分岐処理がない場合には、コンパイル部21は、ループの前後にプロファイリング用コードを挿入し(ステップS13)、次のループを処理する。そして、全てのループを処理すると、コンパイル部21は、プロファイリング用翻訳の処理を終了する。
このように、コンパイル部21が分岐処理がないループを対象としてプロファイリング用コードを挿入することで、CPU資源の利用が均一なループを対象とした周波数制御が可能となる。
図9は、プロファイリング用翻訳の例を示す図である。図9(a)はプログラムコード4を示し、図9(b)はビジー状態採取コードが挿入されたコードを示す。a.fは、プログラムコード4がFORTRANで記述されていることを示す。図9(a)に示すように、プログラムコード4には3つのdoループが含まれる。1つ目と3つ目のループには分岐処理がないので、図9(b)に示すように、ビジー状態採取コードとしてcall busy_start()及びcall busy_stop()が挿入される。一方、2つ目のループにはif文による分岐処理があるので、ビジー状態採取コードは挿入されない。
図10Aは、プロファイリングデータを採取する処理のフロー及び電力プロファイラ情報6の例を示す図であり、図10Bは、プロファイリングデータの採取例を示す図である。
図10Aに示すように、並列計算機3は、ループの先頭でハードウェアカウンタ情報の採取を開始する(ステップS21)。そして、並列計算機3は、以下のビジー率を求めるために必要なハードウェアカウンタ情報を採取する(ステップS22)。ビジー率には、メモリアクセス利用率、L2キャッシュアクセス利用率、L1キャッシュアクセス利用率及び演算処理利用率がある。
これらのビジー率を求めるために必要なハードウェアカウンタ情報には、サイクルカウント、L1キャッシュミス数、L2キャッシュミス数、命令コミット数、L1パイプバリッド及びL2ライトバックがある。電力プロファイラ情報6は、サイクルカウント、L1キャッシュミス数、L2キャッシュミス数、命令コミット数、L1パイプバリッド及びL2ライトバックの情報を呼出し回数とともにループに対応付ける情報である。なお、上記に上げたハードウェアカウンタ情報はCPUアーキテクチャに依存するため、CPUアーキテクチャに準じて必要なハードウェアカウンタ情報も変わる。
例えば、図10Aでは、「loop#1」に、サイクルカウント「145032」、L1キャッシュミス数「3985」、L2キャッシュミス数「7890」、命令コミット数「2298」、L1パイプバリッド「4982」、L2ライトバック「11208」、呼び出し回数「100」が対応付けられる。また、図10Aでは、電力プロファイラ情報6には、複数のレコードが含まれ、1レコードに1つのループに対応付けられる情報が含まれる。なお、1つのループには複数のレコードが対応付けられてもよい。
そして、並列計算機3は、ループの最後でハードウェアカウンタ情報の採取を終了する(ステップS23)。そして、並列計算機3は、採取したハードウェアカウンタ情報及び呼出し回数情報をループ毎に電力プロファイラ情報6として出力する(ステップS24)。
また、図10Bに示すように、1つ目と3つ目の分岐処理のないループについて、プロファイリングデータが採取される。図10Bにおいて、「func1−1」、「func1−2」は区間の名前である。区間は分岐処理のないループに対応付けられる。
図11は、電力プロファイラ情報6を解析する処理のフローを示すフローチャートである。図11に示すように、解析部23は、電力プロファイラ情報6を読み込み(ステップS31)、各ループのビジー率の算出を行う(ステップS32)。そして、解析部23は、ループ毎に各ハードウェアモジュールの周波数制御方法を決定し(ステップS33)、周波数制御情報7を作成する。
図12は、ビジー率を算出する処理のフローを示すフローチャートである。なお、図12では、1つの区間に複数の採取タイミングがあり、1レコードに1回の採取データが含まれる。図12に示すように、解析部23は、ビジー率の0初期化を行う(ステップS41)。
そして、解析部23は、電力プロファイラ情報6から情報を1レコード(I)毎に取り出し、ステップS42の処理を全レコードについて行う。ステップS42では、解析部23は、サイクルカウント、L1キャッシュミス数、L2キャッシュミス数、命令コミット数、L1パイプバリッド及びL2ライトバックを区間毎に加算する。
そして、解析部23は、区間毎のビジー率を算出し(ステップS43)、ビジー率情報を作成する。図13は、ビジー率の算出式の例を示す図である。図13に示すように、
メモリビジー率=メモリスループット/メモリスループット上限
L2ビジー率=(L2スループット+メモリスループット×係数)/L2スループット上限
L1ビジー率=L1パイプバリッド/サイクルカウント
演算ビジー率=浮動小数点演算パイプライン/サイクルカウント
である。
ここで、
メモリスループット=(L2キャッシュミス数+L2ライトバック)×キャッシュラインサイズ/サイクルカウント/クロック周波数
L2スループット=L1キャッシュミス数×キャッシュラインサイズ/サイクルカウント/クロック周波数
である。また、L2ビジー率の算出に用いる係数は0.3、0.6等である。
図14は、ビジー率情報の例を示す図である。図14に示すように、ビジー率情報は、各区間のメモリビジー率、L2ビジー率、L1ビジー率及び演算ビジー率を示す情報である。また、ビジー率情報は、各区間の合計時間及び呼出し回数も示す。例えば、「loop#1」のメモリビジー率は「80%」であり、L2ビジー率は「20%」であり、L1ビジー率は「30%」であり、演算ビジー率は「20%」であり、合計時間は「13秒」であり、呼出し回数は「100」である。
図15は、周波数制御方法を決定する処理のフローを示すフローチャートである。図15に示すように、解析部23は、ビジー率情報に含まれる各区間(I)について、ステップS51〜ステップS57の処理を行う。
すなわち、解析部23は、ビジー率が最大となるハードウェアモジュールMと値Rを記憶し、Mの電力比を1.00とする(ステップS51)。そして、解析部23は、残りの3つの各ハードウェアモジュール(J)について、ステップS52〜ステップS57の処理を行う。
すなわち、解析部23は、Jの電力比=Jのビジー率/Mのビジー率を計算する(ステップS52)。そして、解析部23は、2つの閾値0.4と0.2を用いて、電力比を1、0.50又は0.25に調整する。具体的には、解析部23は、電力比が0.4以上であるか否かを判定し(ステップS53)、0.4以上である場合には電力比を1.00とする(ステップS57)。一方、電力比が0.4以上でない場合には、解析部23は、電力比が0.2以上であるか否かを判定し(ステップS54)、0.2以上である場合は電力比を0.50とし(ステップS55)、0.2以上でない場合は電力比を0.25とする(ステップS56)。そして、解析部23は、周波数制御情報7を作成する。
このように、解析部23が周波数制御方法としてハードウェアモジュールの電力比を決定して周波数制御情報7を作成することで、コンパイル部21は周波数制御情報7に基づいて周波数制御コードを挿入することができる。
図16Aは、周波数制御情報7の例を示す図である。図16Aに示すように、周波数制御情報7は、各区間にメモリ周波数比、L2周波数比、L1周波数比及び演算周波数比を対応付ける。ここで、各ハードウェアモジュールの周波数比は、図15に示した処理で決定された電力比である。また、周波数制御情報7は、各区間に合計時間及び呼出し回数を対応付ける。例えば、区間「loop#1」のメモリ周波数比は「1.00」であり、L2周波数比は「0.25」であり、L1周波数比は「0.50」であり、演算周波数比は「0.25」であり、合計時間は「13秒」であり、呼出し回数は「100」である。
図16Bは、周波数制御情報7の他の例を示す図である。図16Bは、閾値を用いた電力比の調整を行わなかった場合を示す。例えば、区間「loop#1」のメモリ周波数比は「1.00」であり、L2周波数比は「0.20」であり、L1周波数比は「0.30」であり、演算周波数比は「0.20」であり、合計時間は「13秒」であり、呼出し回数は「100」である。
図17は、プロファイリングデータの解析例を示す図である。図17に示すように、電力プロファイラ情報6からビジー率情報が作成され、ビジー率情報から周波数制御情報7が作成される。
図18は、周波数制御コードを埋め込む処理のフローを示すフローチャートである。図18に示すように、コンパイル部21は、周波数制御情報7の読み込みを行う(ステップS61)。そして、コンパイル部21は、以下のステップS62〜ステップS63の処理を周波数制御情報7の区間(I)毎に実施する。
すなわち、コンパイル部21は、1回の区間平均時間が閾値未満であるか否かを判定する(ステップS62)。ここで、区間平均時間は合計時間/呼出し回数である。そして、コンパイル部21は、1回の区間平均時間が閾値未満である場合には次の区間を処理し、閾値以上である場合には、区間に対応するループの前後に周波数制御コードを挿入する(ステップS63)。そして、全ての区間についてステップS62〜ステップS63の処理を終了すると、コンパイル部21は、周波数制御命令を埋め込む処理を終了する。
このように、コンパイル部21は、1回の区間平均時間が閾値未満である場合には周波数制御コードを埋め込まないことで、省電力効果の少ないループについて周波数制御によるオーバヘッドの発生を防ぐことができる。
図19は、周波数制御コードとして挿入される周波数制御関数の例を示す図である。図19(a)は関数仕様を示し、図19(b)はコンパイル出力例を示す。図19(a)に示すように、周波数制御関数freqcntlは4つの引き数を有する。arg#1はメモリの周波数制御値であり、arg#2はL2キャッシュの周波数制御値であり、arg#3はL1キャッシュの周波数制御値であり、arg#4は演算器の周波数制御値である。
また、図19(b)に示すように、loop#1〜loop#4で表される4つのループの前後に周波数制御関数が挿入される。図19(b)において、L2周波数はL2キャッシュの周波数であり、L1周波数はL1キャッシュの周波数であり、演算周波数は演算器の周波数である。
また、取り消し線で削除された周波数制御関数は、コンパイル部21による最適化により削除された周波数制御関数である。周波数制御関数が連続した場合、前にある周波数制御関数は削除される。また、全引数の値が前と同じであって重複する周波数制御関数も削除される。
このように、コンパイル部21は、最適化を行うことによって、無駄な周波数制御のオーバーヘッドをなくすことができる。
図20は、プログラムコード4への周波数制御コードの埋め込み例を示す図である。図20に示すように、1つ目のループに対しては演算器の効率を0.5倍とする周波数制御コードが埋め込まれている。2つ目のループについては周波数制御コードはない。3つ目のループについては効率が1.0倍のままであるため、周波数制御コードは埋め込まれない。
図21は、再翻訳コードによる省電力実行のフローを示すフローチャートである。図21に示すように、並列計算機3は、−noecoオプションか否かを判定し(ステップS71)、−noecoオプションでない場合には、freqcntl関数にて、引数に従い、ハードウェアモジュール毎に周波数を設定変更する(ステップS72)。一方、−noecoオプションである場合には、並列計算機3は、ステップS72の処理は行わない。
このように、並列計算機3が−noecoオプションで実行コード5を実行することで、利用者は省電力実行との比較を行うことができる。
図22は、利用者によるカストマイズ例を示す図である。図22では、利用者は周波数制御情報7をカストマイズしている。図22に示すように、演算周波数比を0.50にしてプログラムを実行させても性能に影響がない場合、利用者は演算周波数比を0.25にしてプログラムを実行させる。このようなカストマイズにより、利用者は、性能低下を抑えながら省電力を図ることができる。
上述してきたように、実施例では、コンパイル部21がプログラムコード4の分岐のないループに対して電力プロファイラ情報6を出力するコードを挿入してコンパイルし、結合部22がコンパイル結果にプロファイラライブラリを結合して実行コード5を生成する。そして、並列計算機3が実行コード5を実行して電力プロファイラ情報6を出力する。そして、解析部23が電力プロファイラ情報6を解析して周波数制御情報7を作成し、コンパイル部21が周波数制御情報7に基づいてプログラムコード4に周波数制御コードを挿入してコンパイルし、実行コード5を生成する。そして、並列計算機3が周波数制御コードを含む実行コード5を実行する。
したがって、情報処理システム1は、性能低下を防ぎながら並列計算機3の消費電力を削減することができる。また、ループに対して1回だけ周波数制御を行うことで、段階的に周波数制御を行う場合と比較して周波数制御のオーバーヘッドを少なくすることができる。
また、実施例では、解析部23は、電力プロファイラ情報6に基づいてビジー率情報を作成し、ビジー率情報に基づいて周波数制御方法を決定して周波数制御情報7を作成する。したがって、解析部23は、正確な周波数制御情報7を作成することができる。
また、実施例では、電力プロファイラ情報6には、サイクルカウント、L1キャッシュミス数、L2キャッシュミス数、浮動小数点演算パイプライン、L1パイプバリッド及びL2ライトバックが含まれる。また、ハードウェアモジュールには、メモリ、L2キャッシュ、L1キャッシュ及び演算器が含まれる。そして、解析部23は、サイクルカウント、L1キャッシュミス数、L2キャッシュミス数、浮動小数点演算パイプライン、L1パイプバリッド及びL2ライトバックに基づいてメモリ、L2キャッシュ、L1キャッシュ及び演算器のビジー率を算出する。したがって、解析部23は、メモリ、L2キャッシュ、L1キャッシュ及び演算器のビジー率を正確に算出することができる。また、解析部23は、1回の採取でビジー率の算出に必要なハードウェアカウンタ情報を取得することができる。
また、実施例では、コンパイル部21は、周波数制御情報7に基づいてプログラムコード4に周波数制御コードを挿入する際に、1回の区間平均時間が閾値未満であるか否かを判定し、閾値未満である場合には、周波数制御コードを挿入しない。したがって、コンパイル部21は、省電力効果の少ないループについて周波数制御によるオーバヘッドの発生を防ぐことができる。
また、実施例では、コンパイル部21は、各ループの前に周波数を変更する周波数制御関数を挿入し、各ループの後に周波数を元に戻す周波数制御関数を挿入する。そして、コンパイル部21は、周波数を元に戻す周波数制御関数の直後に周波数を変更する周波数制御関数がある場合には、周波数を元に戻す周波数制御関数を削除する。したがって、コンパイル部21は、無駄な周波数制御のオーバーヘッドをなくすことができる。
なお、実施例では、管理装置2について説明したが、管理装置2が有する構成をソフトウェアによって実現することで、同様の機能を有する管理プログラムを得ることができる。そこで、管理プログラムを実行するコンピュータについて説明する。
図23は、実施例に係る管理プログラムを実行するコンピュータのハードウェア構成を示す図である。図23に示すように、コンピュータ50は、メインメモリ51と、CPU52と、LAN(Local Area Network)インタフェース53と、HDD(Hard Disk Drive)54とを有する。また、コンピュータ50は、スーパーIO(Input Output)55と、DVI(Digital Visual Interface)56と、ODD(Optical Disk Drive)57とを有する。
メインメモリ51は、プログラムやプログラムの実行途中結果などを記憶するメモリである。CPU52は、メインメモリ51からプログラムを読み出して実行する中央処理装置である。CPU52は、メモリコントローラを有するチップセットを含む。
LANインタフェース53は、コンピュータ50をLAN経由で他のコンピュータに接続するためのインタフェースである。HDD54は、プログラムやデータを格納するディスク装置であり、スーパーIO55は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。DVI56は、液晶表示装置を接続するインタフェースであり、ODD57は、DVDの読み書きを行う装置である。
LANインタフェース53は、PCIエクスプレス(PCIe)によりCPU52に接続され、HDD54及びODD57は、SATA(Serial Advanced Technology Attachment)によりCPU52に接続される。スーパーIO55は、LPC(Low Pin Count)によりCPU52に接続される。
そして、コンピュータ50において実行される管理プログラムは、コンピュータ50により読み出し可能な記録媒体の一例であるDVDに記憶され、ODD57によってDVDから読み出されてコンピュータ50にインストールされる。あるいは、管理プログラムは、LANインタフェース53を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ50にインストールされる。そして、インストールされた管理プログラムは、HDD54に記憶され、メインメモリ51に読み出されてCPU52によって実行される。
また、実施例では、並列計算機3が実行コード5を実行する場合について説明したが、ハードウェアモジュールの周波数制御が可能な情報処理装置が実行コード5を実行してもよい。
また、実施例では、メモリ、L2キャッシュ、L1キャッシュ及び演算器の動作周波数を制御する場合について説明したが、他のハードウェアモジュールの動作周波数を制御してもよい。また、ハードウェアカウンタ情報として、サイクルカウント、L1キャッシュミス数、L2キャッシュミス数、浮動小数点演算パイプライン、L1パイプバリッド及びL2ライトバック以外の情報を用いてもよい。
また、実施例では、解析部23が周波数制御情報7を作成する場合について説明したが、解析部23は解析結果を電力プロファイラ情報6に加えて表示装置に表示してもよい。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)プロファイリングデータを採取するコードをソースプログラムの分岐のないループに対して挿入して第1の実行コードを生成するコンパイル部と、
前記コンパイル部により生成された第1の実行コードを実行して前記プロファイリングデータに基づく電力プロファイラ情報を出力する実行部と、
前記実行部により出力された電力プロファイラ情報を解析して前記実行部に含まれる複数のハードウェアモジュールの周波数制御に用いられる周波数制御情報を作成する解析部とを有し、
前記コンパイル部は、前記解析部により作成された周波数制御情報に基づいて前記ソースプログラムの前記ループに対して前記複数のハードウェアモジュールの周波数を制御する周波数制御コードを挿入して第2の実行コードを生成し、
前記実行部は、前記コンパイル部により生成された第2の実行コードを実行することを特徴とする情報処理装置。
(付記2)前記解析部は、
前記電力プロファイラ情報に基づいて各ループにおける前記複数のハードウェアモジュールのビジー率を算出する算出部と、
前記算出部により算出された複数のビジー率に基づいて各ループの周波数制御方法を決定し前記周波数制御情報を作成する作成部と
を有することを特徴とする付記1に記載の情報処理装置。
(付記3)前記電力プロファイラ情報には、サイクルカウント、L1キャッシュミス数、L2キャッシュミス数、浮動小数点演算パイプライン、L1パイプバリッド及びL2ライトバックが含まれ、
前記実行部の複数のハードウェアモジュールにはメモリ、L2キャッシュ、L1キャッシュ及び演算装置が含まれ、
前記算出部は、サイクルカウント、L1キャッシュミス数、L2キャッシュミス数、浮動小数点演算パイプライン、L1パイプバリッド及びL2ライトバックに基づいてメモリ、L2キャッシュ、L1キャッシュ及び演算装置のビジー率を算出することを特徴とする付記2に記載の情報処理装置。
(付記4)前記周波数制御情報には、前記ループに対応する区間の実行時間が含まれ、
前記コンパイル部は、前記区間の平均実行時間が所定の閾値以上である場合に該ループに対して前記複数のハードウェアモジュールの周波数を制御する周波数制御コードを挿入して第2の実行コードを生成することを特徴とする付記1、2又は3に記載の情報処理装置。
(付記5)前記コンパイル部は、複数の前記ループについて各ループの前に周波数を変更する周波数制御コードを挿入し、各ループの後に周波数を元に戻す周波数制御コードを挿入し、周波数を元に戻す周波数制御コードの直後に周波数を変更する周波数制御コードがある場合には、周波数を元に戻す周波数制御コードを削除することを特徴とする付記1〜4のいずれか1つに記載の情報処理装置。
(付記6)コンピュータが、
プロファイリングデータを採取するコードをソースプログラムの分岐のないループに対して挿入して第1の実行コードを生成し、
前記第1の実行コードが処理装置により実行されて採取されたプロファイリングデータを用いて作成された電力プロファイラ情報に基づき前記処理装置に含まれる複数のハードウェアモジュールの周波数制御用に作成された周波数制御情報に基づいて、前記ソースプログラムの前記ループに対して前記複数のハードウェアモジュールの周波数を制御する周波数制御コードを挿入して第2の実行コードを生成する
処理を実行することを特徴とするコンパイル方法。
(付記7)コンピュータに、
プロファイリングデータを採取するコードをソースプログラムの分岐のないループに対して挿入して第1の実行コードを生成し、
前記第1の実行コードが処理装置により実行されて採取されたプロファイリングデータを用いて作成された電力プロファイラ情報に基づき前記処理装置に含まれる複数のハードウェアモジュールの周波数制御用に作成された周波数制御情報に基づいて、前記ソースプログラムの前記ループに対して前記複数のハードウェアモジュールの周波数を制御する周波数制御コードを挿入して第2の実行コードを生成する
処理を実行させることを特徴とするコンパイルプログラム。
(付記8)コンピュータに、
プロファイリングデータを採取するコードがソースプログラムの分岐のないループに対して挿入された実行コードが処理装置により実行されて採取されたプロファイリングデータを用いて作成された電力プロファイラ情報を読み込み、
読み込んだ電力プロファイラ情報を解析して前記処理装置に含まれる複数のハードウェアモジュールの周波数制御に用いられる周波数制御情報を作成する
処理を実行させることを特徴とする解析プログラム。
(付記9)前記作成する処理は、
前記電力プロファイラ情報に基づいて各ループにおける前記複数のハードウェアモジュールのビジー率を算出し、
算出した複数のビジー率に基づいて各ループの周波数制御方法を決定し前記周波数制御情報を作成する
ことを特徴とする付記8に記載の解析プログラム。
1 情報処理システム
2 管理装置
3 並列計算機
4 プログラムコード
5 実行コード
6 電力プロファイラ情報
7 周波数制御情報
21 コンパイル部
21a 第1挿入部
21b 第2挿入部
22 結合部
23 解析部
23a 算出部
23b 作成部
50 コンピュータ
51 メインメモリ
52 CPU
53 LANインタフェース
54 HDD
55 スーパーIO
56 DVI
57 ODD

Claims (5)

  1. プロファイリングデータを採取するコードをソースプログラムの分岐のないループに対して挿入して第1の実行コードを生成するコンパイル部と、
    前記コンパイル部により生成された第1の実行コードを実行して前記プロファイリングデータに基づく電力プロファイラ情報であってメモリ、L2キャッシュ、L1キャッシュ及び演算装置が含まれる複数のハードウェアモジュールに関するサイクルカウント、L1キャッシュミス数、L2キャッシュミス数、浮動小数点演算パイプライン、L1パイプバリッド及びL2ライトバックが含まれる電力プロファイラ情報を出力する実行部と、
    前記電力プロファイラ情報に基づいて各ループにおける前記複数のハードウェアモジュールのビジー率を算出する算出部と、
    前記算出部により算出された複数のビジー率に基づいて各ループの周波数制御方法を決定し周波数制御情報を作成する作成部と、を有し、
    前記コンパイル部は、前記作成部により作成された前記周波数制御情報に基づいて前記ソースプログラムの前記ループに対して前記複数のハードウェアモジュールの周波数を制御する周波数制御コードを挿入して第2の実行コードを生成し、
    前記実行部は、前記コンパイル部により生成された第2の実行コードを実行することを特徴とする情報処理装置。
  2. 前記周波数制御情報には、前記ループに対応する区間の実行時間が含まれ、
    前記コンパイル部は、前記区間の平均実行時間が所定の閾値以上である場合に該ループに対して前記複数のハードウェアモジュールの周波数を制御する周波数制御コードを挿入して第2の実行コードを生成することを特徴とする請求項1に記載の情報処理装置。
  3. 前記コンパイル部は、複数の前記ループについて各ループの前に周波数を変更する周波数制御コードを挿入し、各ループの後に周波数を元に戻す周波数制御コードを挿入し、周波数を元に戻す周波数制御コードの直後に周波数を変更する周波数制御コードがある場合には、周波数を元に戻す周波数制御コードを削除することを特徴とする請求項1又は2に記載の情報処理装置。
  4. コンピュータが、
    プロファイリングデータを採取するコードをソースプログラムの分岐のないループに対して挿入して第1の実行コードを生成し、
    前記第1の実行コードが処理装置により実行されて採取されたプロファイリングデータを用いて作成された電力プロファイラ情報であってメモリ、L2キャッシュ、L1キャッシュ及び演算装置が含まれる複数のハードウェアモジュールに関するサイクルカウント、L1キャッシュミス数、L2キャッシュミス数、浮動小数点演算パイプライン、L1パイプバリッド及びL2ライトバックが含まれる電力プロファイラ情報を出力し、
    前記電力プロファイラ情報に基づいて各ループにおける前記複数のハードウェアモジュールのビジー率を算出し、
    算出された複数のビジー率に基づいて各ループの周波数制御方法を決定し周波数制御情報を作成し、
    作成された前記周波数制御情報に基づいて前記ソースプログラムの前記ループに対して前記複数のハードウェアモジュールの周波数を制御する周波数制御コードを挿入して第2の実行コードを生成し、
    生成された第2の実行コードを前記処理装置に実行させる
    処理を実行することを特徴とするコンパイル方法。
  5. コンピュータに、
    プロファイリングデータを採取するコードをソースプログラムの分岐のないループに対して挿入して第1の実行コードを生成し、
    前記第1の実行コードが処理装置により実行されて採取されたプロファイリングデータを用いて作成された電力プロファイラ情報であってメモリ、L2キャッシュ、L1キャッシュ及び演算装置が含まれる複数のハードウェアモジュールに関するサイクルカウント、L1キャッシュミス数、L2キャッシュミス数、浮動小数点演算パイプライン、L1パイプバリッド及びL2ライトバックが含まれる電力プロファイラ情報を出力し、
    前記電力プロファイラ情報に基づいて各ループにおける前記複数のハードウェアモジュールのビジー率を算出し、
    算出された複数のビジー率に基づいて各ループの周波数制御方法を決定し周波数制御情報を作成し、
    作成された前記周波数制御情報に基づいて前記ソースプログラムの前記ループに対して前記複数のハードウェアモジュールの周波数を制御する周波数制御コードを挿入して第2の実行コードを生成し、
    生成された第2の実行コードを前記処理装置に実行させる
    処理を実行させることを特徴とするコンパイルプログラム。
JP2017160611A 2017-08-23 2017-08-23 情報処理装置、コンパイル方法及びコンパイルプログラム Active JP6933052B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017160611A JP6933052B2 (ja) 2017-08-23 2017-08-23 情報処理装置、コンパイル方法及びコンパイルプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017160611A JP6933052B2 (ja) 2017-08-23 2017-08-23 情報処理装置、コンパイル方法及びコンパイルプログラム

Publications (2)

Publication Number Publication Date
JP2019040317A JP2019040317A (ja) 2019-03-14
JP6933052B2 true JP6933052B2 (ja) 2021-09-08

Family

ID=65726624

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017160611A Active JP6933052B2 (ja) 2017-08-23 2017-08-23 情報処理装置、コンパイル方法及びコンパイルプログラム

Country Status (1)

Country Link
JP (1) JP6933052B2 (ja)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3520611B2 (ja) * 1995-07-06 2004-04-19 株式会社日立製作所 プロセッサの制御方法
JP4131909B2 (ja) * 2001-07-26 2008-08-13 株式会社東芝 コンパイル方法
US7185215B2 (en) * 2003-02-24 2007-02-27 International Business Machines Corporation Machine code builder derived power consumption reduction
JP2006127302A (ja) * 2004-10-29 2006-05-18 Internatl Business Mach Corp <Ibm> 情報処理装置、コンパイラ、及びコンパイラプログラム
JP4082706B2 (ja) * 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
JP2007334497A (ja) * 2006-06-13 2007-12-27 Renesas Technology Corp 情報処理装置の省電力化方法、プログラム、およびプログラム実行システム
JP6018022B2 (ja) * 2013-06-14 2016-11-02 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
JP6217008B2 (ja) * 2013-12-27 2017-10-25 高知県公立大学法人 電子機器、制御方法、及び、プログラム

Also Published As

Publication number Publication date
JP2019040317A (ja) 2019-03-14

Similar Documents

Publication Publication Date Title
US9946523B2 (en) Multiple pass compiler instrumentation infrastructure
US8104030B2 (en) Mechanism to restrict parallelization of loops
US9996325B2 (en) Dynamic reconfigurable compiler
US8886887B2 (en) Uniform external and internal interfaces for delinquent memory operations to facilitate cache optimization
US9027007B2 (en) Reducing excessive compilation times
JP3351725B2 (ja) パワーシミュレーション装置、パワーシミュレーション方法、及びパワーシミュレーションプログラムを記録した機械読み取り可能な記録媒体
US20090094590A1 (en) Detecting change in program behavior for adaptive code optimization
JP2007507807A (ja) ソフトウェアアプリケーションにおけるメモリ待ち時間を低減するための方法及び装置
JP2006260067A (ja) 先読み装置、先読み方法、および先読みプログラム
US12450062B2 (en) Deterministic replay of a multi-threaded trace on a multi-threaded processor
US11989537B2 (en) Dataflow-based computer program visualization and refactoring
Tang et al. Enabling transparent asynchronous I/O using background threads
US10761890B2 (en) Optimizing memory fences based on workload
JPH1196130A (ja) マルチプロセッシングシステムの性能評価方法および装置並びにマルチプロセッシングシステムの性能評価プログラムを格納した記憶媒体
CN108021563B (zh) 一种指令间数据依赖的检测方法和装置
JP6933052B2 (ja) 情報処理装置、コンパイル方法及びコンパイルプログラム
US8340952B2 (en) Power estimation method and device therefor
Yeh et al. Performing file prediction with a program-based successor model
US20130054494A1 (en) Efficient data profiling to optimize system performance
Kristien et al. Mitigating JIT compilation latency in virtual execution environments
Roba et al. An enhanced approach to dynamic power management for the Linux cpuidle subsystem
US10042645B2 (en) Method and apparatus for compiling a program for execution by a plurality of processing units
Crosbie et al. Strategies for improving data locality in embedded applications
KR20250167784A (ko) 모델관리장치 및 메모리 효율화 방법
Wu et al. CTFS: A Configurable Tuning Framework on SHENWEI System

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210324

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210406

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210521

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210608

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210706

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210720

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210802

R150 Certificate of patent or registration of utility model

Ref document number: 6933052

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150