JP6572610B2 - 情報処理装置、コンパイル方法およびコンパイルプログラム - Google Patents
情報処理装置、コンパイル方法およびコンパイルプログラム Download PDFInfo
- Publication number
- JP6572610B2 JP6572610B2 JP2015091855A JP2015091855A JP6572610B2 JP 6572610 B2 JP6572610 B2 JP 6572610B2 JP 2015091855 A JP2015091855 A JP 2015091855A JP 2015091855 A JP2015091855 A JP 2015091855A JP 6572610 B2 JP6572610 B2 JP 6572610B2
- Authority
- JP
- Japan
- Prior art keywords
- function
- call
- calls
- evaluation value
- function call
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4443—Inlining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
[第1の実施の形態]
第1の実施の形態を説明する。
第1の実施の形態の情報処理装置10は、高級言語で記載されたソースコードをコンパイルし、機械可読なオブジェクトコードを生成する。情報処理装置10は、コンパイル装置と呼ぶこともできる。情報処理装置10は、コンピュータであってもよい。例えば、情報処理装置10は、ソフトウェアとしてのコンパイラを実行する。情報処理装置10は、ユーザが操作する端末装置(クライアントコンピュータなど)でもよいし、端末装置からアクセスされるサーバ装置(サーバコンピュータなど)であってもよい。
次に、第2の実施の形態を説明する。
第2の実施の形態のコンパイル装置100は、高級言語で記述されたソースコードをコンパイルし、機械可読なオブジェクトコードを生成する。コンパイル装置100は、ユーザが操作する端末装置でもよいし、端末装置からアクセスされるサーバ装置でもよい。コンパイル装置100は、例えば、コンピュータを用いて実装される。その場合、コンパイル装置100は、ソフトウェアとしてのコンパイラおよびリンカを実行する。
コンパイル装置100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。上記ユニットはバス108に接続される。
コンパイル装置100は、ファイル記憶部120、コンパイラ130およびリンカ150を有する。ファイル記憶部120は、例えば、RAM102またはHDD103に確保した記憶領域として実現される。コンパイラ130およびリンカ150は、例えば、CPU101が実行するプログラムのモジュール(コンパイルプログラムおよびリンクプログラム)として実現できる。ただし、コンパイラ130およびリンカ150の機能の一部または全部を、ソフトウェアでなく電子回路として実現することも可能である。
図4は、インライン展開の例を示す図である。
ここでは説明を簡単にするため、ソースコードレベルで関数呼び出しのインライン展開について説明する。コンパイル装置100は、実際には、図4に記載されたソースコードに対応する中間コードに対して関数呼び出しのインライン展開を行う。
ここでは、階層的な関数呼び出しの一部をインライン展開する場合について説明する。関数31(rootSub)は、関数32(subA)を呼び出す関数呼び出しと、関数33(subB)を呼び出す関数呼び出しと、関数34(subC)を呼び出す関数呼び出しとを含む。関数32は、「A=A+1」という命令文を含む。関数33は、関数35(subX)を呼び出す関数呼び出しと、関数36(subY)を呼び出す関数呼び出しとを含む。関数34は、関数37(subZ)を呼び出す関数呼び出しを含む。関数35は、「X=X+2」という命令文を含む。関数36は、「Y=Y*3」という命令文を含む。関数37は、「Z=Z/2」という命令文を含む。
図6は、関数呼び出しグラフの例を示す図である。
関数呼び出しグラフ40は、解析部141が中間コード記憶部134に記憶された中間コードを解析することで生成する。関数呼び出しグラフ40は、関数を示すノードと関数呼び出しを示すリンクとを含む。関数呼び出しグラフ40は、階層的な関数呼び出しを表現したグラフであり、ツリーの形状またはツリーに類似する形状をもつ。具体的には、関数呼び出しグラフ40は、ルートとなる1つのノードを有する点でツリーと共通する。ただし、関数呼び出しグラフ40は、同じノード間に複数のリンクが設定され得る点、および、異なる親ノードが同じ子ノードと接続され得る点で、ツリーと異なることがある。
キュー161およびスタック162は、制御情報記憶部143に形成されている記憶領域である。キュー161およびスタック162はそれぞれ、関数#1〜#12を識別する関数IDを記憶する。キュー161は、先入れ先出し(FIFO:First In First Out)のデータ構造をもち、先に挿入された関数IDから先に抽出することができる。スタック162は、後入れ先出し(LIFO:Last In First Out)のデータ構造をもち、後に挿入された関数IDから先に抽出することができる。
解析部141は、関数IDをキュー161およびスタック162に挿入したとき、併せて関数データ163を生成する。関数データ163は、制御情報記憶部143に記憶される。関数データ163は、各関数に対応するレコードを含む。1つのレコードは、関数ID、アドレス、呼び出し元および呼び出し先の項目を有する。
解析部141は、順方向関数走査で、各関数呼び出しについての指標値を中間コードから抽出し、抽出した指標値を含む関数呼び出し指標データ164を生成する。関数呼び出し指標データ164は、制御情報記憶部143に記憶される。関数呼び出し指標データ164は、各関数呼び出しに対応するレコードを含む。1つのレコードは、関数呼び出しID、ループ回数、最内ループフラグおよび非パイプライン命令数の項目を有する。
ソースコード24は、ソースファイル121に含まれるソースコードの一例である。ソースコード24は、関数#11(func11と表記)を含む。関数#11は、関数#8(func8と表記)を呼び出す関数呼び出し#Eを含む。関数呼び出し#Eは、ループ回数が100回のループに属している。すなわち、関数#8が100回繰り返し呼び出されることになる。ソースコード24は、中間コード生成部133によって中間コード51に変換される。中間コード51は、中間コード記憶部134に記憶される。
ソースコード25は、ソースファイル121に含まれるソースコードの一例である。ソースコード25は、関数#8(func8と表記)を含む。関数#8は、関数#4(func4と表記)を呼び出す関数呼び出し#Jと、関数#3(func3と表記)を呼び出す関数呼び出し#Iと、関数#3を呼び出す関数呼び出し#Hとを含む。関数呼び出し#J,#Iは、ループ回数が10回のループに属している。すなわち、関数#3,#4が交互に10回呼び出される。ソースコード25は、中間コード生成部133によって中間コード52に変換される。中間コード51は、中間コード記憶部134に記憶される。
評価基準テーブル166は、関数呼び出し指標データ164および関数指標データ165から各関数呼び出しの評価値を算出する算出方法を示す。評価基準テーブル166は、プロセッサのアーキテクチャ毎に予め用意されて制御情報記憶部143に記憶されている。アーキテクチャ毎に用意されるのは、命令キャッシュのサイズや命令長がアーキテクチャによって異なり、実行効率が向上するか否かの基準がアーキテクチャに依存するためである。評価基準テーブル166は、アーキテクチャ名、L1命令キャッシュ、命令長、ループ回数、ソースコード行数、中間コード命令数、最内ループフラグ、ユーザ指示フラグ、関数呼び出し数および非パイプライン命令数の項目を有する。
解析部141は、上記の関数呼び出し指標データ164、関数指標データ165および評価基準テーブル166に基づいて、各関数呼び出しの評価値を算出して評価値テーブル167を生成する。評価値テーブル167は、制御情報記憶部143に記憶される。評価値テーブル167は、関数呼び出しIDおよび評価値の項目を有する。
レコード163aは、関数#11に対応する関数データ163のレコードである。レコード163bは、関数#8に対応する関数データ163のレコードである。関数#11から関数#8を呼び出す関数呼び出し#Eがインライン展開されると、関数#8の命令が関数#11に組み込まれる。関数#8が有する関数呼び出し#H,#I,#Jも関数#11に組み込まれることになる。そこで、解析部141は、関数呼び出し#Eのインライン展開を決定すると、図14に示すようにレコード163aを更新する。
ここでは、前述の関数呼び出しグラフ40において、関数呼び出し#Eがインライン展開された場合を考える。関数呼び出し#Eがインライン展開されると、関数#11のコードが変化するため、関数#11の指標値が変化する。そこで、解析部141は、関数指標データ165に含まれる関数#11のレコードを更新する。また、関数#11に組み込まれることで関数呼び出し#H,#I,#Jの周辺コードが変化するため、関数呼び出し#H,#I,#Jの指標値が変化する。また、関数呼び出し#Dの周辺コードが変化するため、関数呼び出し#Dの指標値も変化する。そこで、解析部141は、関数呼び出し指標データ164に含まれる関数呼び出し#D,#H,#I,#Jのレコードを更新する。
図16は、コンパイルの手順例を示すフローチャートである。
(S1)中間コード生成部133は、ソースファイル121からソースコードを呼び出し、ソースコードを解析する。ソースコードの解析には、字句解析、構文解析および意味解析が含まれる。そして、中間コード生成部133は、ソースコードを中間コードに変換し、中間コードを中間コード記憶部134に格納する。
(S6)ファイル出力部136は、アセンブリコード生成部135が生成したアセンブリコードをオブジェクトコードに変換し、オブジェクトファイル122に書き込む。
順方向関数走査は、上記のステップS2において実行される。
(S10)解析部141は、中間コードから最初の関数(例えば、メイン関数)を検出し、最初の関数の関数IDをキュー161およびスタック162に挿入する。
(S12)解析部141は、キュー161から関数IDを1つ抽出する。抽出される関数IDは、キュー161に記憶されている関数IDのうち最も早く挿入されたものである。図17において、ここで抽出された関数IDが示す関数を関数F1と表記する。
(S17)解析部141は、関数呼び出しC1の呼び出し先関数は検出済であるか、すなわち、呼び出し先関数の関数IDがスタック162に存在するか判断する。検出済である場合はステップ19に処理が進み、未検出である場合はステップS18に処理が進む。図17において、関数呼び出しC1の呼び出し先関数を関数F2と表記する。
(S19)解析部141は、関数F1のアドレスを、関数F2の呼び出し元として保存する。関数F2に対応するレコードが関数データ163に存在する場合、解析部141は、当該レコードに関数F1のアドレスを登録する。関数F2に対応するレコードがまだ関数データ163に存在しない場合、解析部141は、当該レコードが生成されたときにステップS13において関数F1のアドレスが登録されるように、関数F1のアドレスを別途保存しておく。そして、ステップS11に処理が進む。
関数呼び出し指標抽出は、上記のステップS16において実行される。
(S20)解析部141は、関数呼び出しC1(上記のステップS14で関数F1に含まれていた関数呼び出し)が属するブロックを特定する。ブロックは、ひと纏まりの処理を示す中間コードの単位であり、コンパイル処理の単位である。図18において、ここで特定されたブロックをブロックB1と表記する。
(S22)解析部141は、中間コードからループ回数を抽出する。
(S25)解析部141は、命令I1がパイプライン化可能であるか判断する。命令I1がパイプライン化可能か否かは、当該命令を実行するプロセッサのアーキテクチャに依存する。パイプライン化可能な命令の例として、算術演算命令、論理演算命令、メモリアクセス命令などが挙げられる。パイプライン化可能でない命令の例として、SIMD命令などの複合命令が挙げられる。命令I1がパイプライン化可能である場合はステップS27に処理が進み、パイプライン化可能でない場合はステップS26に処理が進む。
(S27)解析部141は、ステップS24においてブロックB1の全ての命令を選択したか判断する。ブロックB1の全ての命令を選択した場合はステップS28に処理が進み、未選択の命令がある場合はステップS24に処理が進む。
逆方向関数走査は、上記のステップS3において実行される。
(S30)解析部141は、スタック162が空であるか判断する。スタック162が空である場合は逆方向関数走査が終了し、空でない場合はステップS31に処理が進む。
(S34)解析部141は、関数F1に対応する関数データ163のレコードを参照して、関数F1が関数呼び出しを含むか判断する。関数F1が関数呼び出しを含む場合はステップS35に処理が進み、関数F1が関数呼び出しを含まない場合はステップS30に処理が進む。前者の場合、図19において、関数F1に含まれる関数呼び出しを関数呼び出しC1と表記する。なお、関数F1に複数の関数呼び出しが含まれる場合、関数F1に含まれる関数呼び出し毎に以下のステップS35〜S37の処理が実行される。
関数指標抽出は、上記のステップS33において実行される。
(S40)解析部141は、関数F1(上記のステップS31の関数)のソースコードを検索する。解析部141は、検索したソースコードに含まれる実質的な命令文(セミコロンで終わる行)をカウントすることで、関数F1のソースコード行数を算出する。
(S43)解析部141は、関数F1がループを含むか判断する。ループを含む場合はステップS44に処理が進み、含まない場合はステップS45に処理が進む。
(S45)解析部141は、中間コードにおける関数F1の命令を1つ選択する。図20において、ここで選択した命令を命令I1と表記する。
(S48)解析部141は、命令I1が関数呼び出し命令(図11のcallpe命令に相当)であるか判断する。関数呼び出し命令である場合はステップS49に処理が進み、それ以外の場合はステップS50に処理が進む。
(S50)解析部141は、ステップS45において関数F1の全ての命令を選択したか判断する。関数F1の全ての命令を選択した場合はステップS51に処理が進み、未選択の命令がある場合はステップS45に処理が進む。
インライン展開は、上記のステップS4において実行される。
(S60)解析部141は、算出した評価値を登録した評価値テーブル167に基づいて、関数呼び出しを評価値の高い順にソートする。
11 記憶部
12 変換部
13 コード
14a,14b,14c 関数
15a,15b,15c 関数呼び出し
16a,16b 指標値
17 評価値
Claims (6)
- 複数の関数とそれぞれが前記複数の関数の何れかを呼び出す複数の関数呼び出しとを含むコードを記憶する記憶部と、
前記コードに含まれる前記複数の関数それぞれについて、当該関数内のループの繰り返し状況を示す第1の指標値、当該関数のコード量を示す第2の指標値、および、当該関数に含まれる命令のうちパイプライン化されない命令の数を示す第3の指標値を含む複数の指標値を算出し、前記コードに含まれる前記複数の関数呼び出しそれぞれについて、呼び出し先の関数について算出した前記複数の指標値に基づいて評価値を算出し、前記評価値に基づいて前記複数の関数呼び出しの中から1以上の関数呼び出しを選択し、選択した前記1以上の関数呼び出しをインライン展開する変換部と、
を有し、
前記変換部は、前記複数の関数のうちの一の関数に含まれる第1の関数呼び出しをインライン展開すると、前記一の関数について前記複数の指標値を更新し、前記一の関数を呼び出す第2の関数呼び出しについて前記評価値を更新し、更新後の前記評価値に基づいて次にインライン展開する関数呼び出しを選択する情報処理装置。 - 前記複数の指標値は、当該関数に対してインライン展開を指示する付加情報が付加されているか否かを示す第4の指標値、および、当該関数に含まれる他の関数呼び出しの数を示す第5の指標値のうちの少なくとも1つを更に含む、
請求項1記載の情報処理装置。 - 前記変換部は更に、前記複数の関数呼び出しそれぞれについて、当該関数呼び出しが属するループの繰り返し状況を示す他の指標値を算出し、
前記評価値は、呼び出し先の関数について算出した前記複数の指標値に加えて、当該関数呼び出しについて算出した前記他の指標値に基づいて算出される、
請求項1または2記載の情報処理装置。 - 複数の関数とそれぞれが前記複数の関数の何れかを呼び出す複数の関数呼び出しとを含むコードを記憶する記憶部と、
前記コードに含まれる前記複数の関数それぞれについて、当該関数内のループの繰り返し状況を示す第1の指標値および当該関数のコード量を示す第2の指標値を含む複数の指標値を算出し、前記コードに含まれる前記複数の関数呼び出しそれぞれについて、呼び出し先の関数について算出した前記複数の指標値に基づいて評価値を算出し、前記評価値に基づいて前記複数の関数呼び出しの中から1以上の関数呼び出しを選択し、選択した前記1以上の関数呼び出しをインライン展開する変換部と、
を有し、
前記変換部は、前記複数の関数のうちの一の関数に含まれる第1の関数呼び出しをインライン展開すると、前記一の関数について前記複数の指標値を更新し、前記一の関数を呼び出す第2の関数呼び出しについて前記評価値を更新し、更新後の前記評価値に基づいて次にインライン展開する関数呼び出しを選択する情報処理装置。 - コンピュータが実行するコンパイル方法であって、
複数の関数それぞれについて、当該関数内のループの繰り返し状況を示す第1の指標値、当該関数のコード量を示す第2の指標値、および、当該関数に含まれる命令のうちパイプライン化されない命令の数を示す第3の指標値を含む複数の指標値を算出し、
前記複数の関数の何れかを呼び出す複数の関数呼び出しそれぞれについて、呼び出し先の関数について算出した前記複数の指標値に基づいて評価値を算出し、
前記評価値に基づいて前記複数の関数呼び出しの中から1以上の関数呼び出しを選択し、選択した前記1以上の関数呼び出しをインライン展開し、
前記複数の関数のうちの一の関数に含まれる第1の関数呼び出しをインライン展開すると、前記一の関数について前記複数の指標値を更新し、前記一の関数を呼び出す第2の関数呼び出しについて前記評価値を更新し、更新後の前記評価値に基づいて次にインライン展開する関数呼び出しを選択する、
コンパイル方法。 - コンピュータに、
複数の関数それぞれについて、当該関数内のループの繰り返し状況を示す第1の指標値、当該関数のコード量を示す第2の指標値、および、当該関数に含まれる命令のうちパイプライン化されない命令の数を示す第3の指標値を含む複数の指標値を算出し、
前記複数の関数の何れかを呼び出す複数の関数呼び出しそれぞれについて、呼び出し先の関数について算出した前記複数の指標値に基づいて評価値を算出し、
前記評価値に基づいて前記複数の関数呼び出しの中から1以上の関数呼び出しを選択し、選択した前記1以上の関数呼び出しをインライン展開し、
前記複数の関数のうちの一の関数に含まれる第1の関数呼び出しをインライン展開すると、前記一の関数について前記複数の指標値を更新し、前記一の関数を呼び出す第2の関数呼び出しについて前記評価値を更新し、更新後の前記評価値に基づいて次にインライン展開する関数呼び出しを選択する、
処理を実行させるコンパイルプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015091855A JP6572610B2 (ja) | 2015-04-28 | 2015-04-28 | 情報処理装置、コンパイル方法およびコンパイルプログラム |
US15/070,048 US9760354B2 (en) | 2015-04-28 | 2016-03-15 | Information processing apparatus and compiling method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015091855A JP6572610B2 (ja) | 2015-04-28 | 2015-04-28 | 情報処理装置、コンパイル方法およびコンパイルプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016207161A JP2016207161A (ja) | 2016-12-08 |
JP6572610B2 true JP6572610B2 (ja) | 2019-09-11 |
Family
ID=57204045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015091855A Expired - Fee Related JP6572610B2 (ja) | 2015-04-28 | 2015-04-28 | 情報処理装置、コンパイル方法およびコンパイルプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US9760354B2 (ja) |
JP (1) | JP6572610B2 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102063966B1 (ko) * | 2015-10-21 | 2020-01-09 | 엘에스산전 주식회사 | Plc 명령어 컴파일 최적화 방법 |
US11977484B2 (en) | 2016-07-19 | 2024-05-07 | Sap Se | Adapting in-memory database in hybrid memory systems and operating system interface |
US10452539B2 (en) | 2016-07-19 | 2019-10-22 | Sap Se | Simulator for enterprise-scale simulations on hybrid main memory systems |
US10387127B2 (en) | 2016-07-19 | 2019-08-20 | Sap Se | Detecting sequential access data and random access data for placement on hybrid main memory for in-memory databases |
US10783146B2 (en) | 2016-07-19 | 2020-09-22 | Sap Se | Join operations in hybrid main memory systems |
US10540098B2 (en) | 2016-07-19 | 2020-01-21 | Sap Se | Workload-aware page management for in-memory databases in hybrid main memory systems |
US10474557B2 (en) | 2016-07-19 | 2019-11-12 | Sap Se | Source code profiling for line-level latency and energy consumption estimation |
US10083183B2 (en) * | 2016-07-19 | 2018-09-25 | Sap Se | Full system simulator and memory-aware splay tree for in-memory databases in hybrid memory systems |
US10437798B2 (en) | 2016-07-19 | 2019-10-08 | Sap Se | Full system simulator and memory-aware splay tree for in-memory databases in hybrid memory systems |
US10698732B2 (en) | 2016-07-19 | 2020-06-30 | Sap Se | Page ranking in operating system virtual pages in hybrid memory systems |
US10261763B2 (en) * | 2016-12-13 | 2019-04-16 | Palantir Technologies Inc. | Extensible data transformation authoring and validation system |
US11010379B2 (en) | 2017-08-15 | 2021-05-18 | Sap Se | Increasing performance of in-memory databases using re-ordered query execution plans |
US10754763B2 (en) * | 2018-07-09 | 2020-08-25 | International Business Machines Corporation | Bypassing user-selected functions during test case generation |
US11327802B2 (en) * | 2019-07-31 | 2022-05-10 | Microsoft Technology Licensing, Llc | System and method for exporting logical object metadata |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04336333A (ja) * | 1991-05-13 | 1992-11-24 | Nec Corp | 原始プログラムの自動インライン展開方式 |
JPH05120029A (ja) | 1991-10-29 | 1993-05-18 | Hitachi Ltd | 最適化方法 |
JPH06202875A (ja) | 1992-12-28 | 1994-07-22 | Nec Corp | インライン展開による最適化を行うコンパイラ |
US5740443A (en) * | 1995-08-14 | 1998-04-14 | International Business Machines Corporation | Call-site specific selective automatic inlining |
JP3284956B2 (ja) * | 1998-01-26 | 2002-05-27 | 日本電気株式会社 | プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体 |
US6367071B1 (en) * | 1999-03-02 | 2002-04-02 | Lucent Technologies Inc. | Compiler optimization techniques for exploiting a zero overhead loop mechanism |
JP3431568B2 (ja) | 2000-03-30 | 2003-07-28 | 松下電器産業株式会社 | プログラム変換装置、プログラム変換方法及びプログラム記録媒体 |
JP2004102597A (ja) * | 2002-09-09 | 2004-04-02 | Fujitsu Ltd | コンパイル処理プログラム、コンパイル処理方法、およびコンパイル処理プログラム記録媒体 |
AU2003903652A0 (en) * | 2003-07-16 | 2003-07-31 | Infology Pty Ltd | Muvium |
US7383529B2 (en) * | 2004-02-13 | 2008-06-03 | The Regents Of The University Of California | Method and apparatus for designing circuits using high-level synthesis |
JP2006065682A (ja) * | 2004-08-27 | 2006-03-09 | Fujitsu Ltd | コンパイラプログラム、コンパイル方法およびコンパイラ装置 |
JP5589479B2 (ja) * | 2010-03-25 | 2014-09-17 | 富士ゼロックス株式会社 | データ処理装置 |
JP6080602B2 (ja) * | 2013-02-22 | 2017-02-15 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 実フットプリント算出方法、該算出方法を用いたインラインするメソッドの決定方法、装置及びプログラム |
-
2015
- 2015-04-28 JP JP2015091855A patent/JP6572610B2/ja not_active Expired - Fee Related
-
2016
- 2016-03-15 US US15/070,048 patent/US9760354B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2016207161A (ja) | 2016-12-08 |
US9760354B2 (en) | 2017-09-12 |
US20160321048A1 (en) | 2016-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6572610B2 (ja) | 情報処理装置、コンパイル方法およびコンパイルプログラム | |
US8291398B2 (en) | Compiler for optimizing program | |
US7856627B2 (en) | Method of SIMD-ization through data reshaping, padding, and alignment | |
EP3572952A1 (en) | Unified optimization of iterative analytical query processing | |
JP3901181B2 (ja) | プログラム並列化装置及びその方法並びにプログラム | |
JP5966509B2 (ja) | プログラム、コード生成方法および情報処理装置 | |
JP6432450B2 (ja) | 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム | |
US9658855B2 (en) | Compile method and compiler apparatus | |
US9823911B2 (en) | Method and apparatus for compiling code based on a dependency tree | |
JP6718119B2 (ja) | コンパイルプログラム、コンパイル方法および情報処理装置 | |
US20120079467A1 (en) | Program parallelization device and program product | |
US8468508B2 (en) | Parallelization of irregular reductions via parallel building and exploitation of conflict-free units of work at runtime | |
JP2006018445A (ja) | プログラム並列化装置及びその方法並びにプログラム | |
US20130262842A1 (en) | Code generation method and information processing apparatus | |
JP2015201119A (ja) | コンパイルプログラム、コンパイル方法およびコンパイル装置 | |
JP2015094960A (ja) | 情報処理装置、コンパイル方法およびコンパイラプログラム | |
US7530063B2 (en) | Method and system for code modification based on cache structure | |
JP2014112327A (ja) | 変換プログラム、変換装置及び変換方法 | |
JP6536266B2 (ja) | コンパイル装置、コンパイル方法およびコンパイルプログラム | |
US20160371066A1 (en) | Computer that performs compiling, compiling method and storage medium that stores compiler program | |
JP4293223B2 (ja) | プログラム並列化装置及びその方法並びにプログラム | |
JP5272346B2 (ja) | キャッシュカラーリング方法 | |
Tetzel et al. | Graph traversals for regular path queries | |
JP6442967B2 (ja) | 情報処理プログラム、情報処理装置、情報処理方法 | |
JP2023045347A (ja) | プログラムおよび情報処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180206 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180918 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20181016 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181114 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190423 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190522 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20190522 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20190522 |
|
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: 20190716 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190729 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6572610 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |