JP2003173262A - プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体 - Google Patents

プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体

Info

Publication number
JP2003173262A
JP2003173262A JP2001372620A JP2001372620A JP2003173262A JP 2003173262 A JP2003173262 A JP 2003173262A JP 2001372620 A JP2001372620 A JP 2001372620A JP 2001372620 A JP2001372620 A JP 2001372620A JP 2003173262 A JP2003173262 A JP 2003173262A
Authority
JP
Japan
Prior art keywords
program
optimization
execution time
option
loop
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.)
Pending
Application number
JP2001372620A
Other languages
English (en)
Inventor
Kiyomi Wada
清美 和田
Makoto Sato
真琴 佐藤
Takayoshi Iizuka
孝好 飯塚
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2001372620A priority Critical patent/JP2003173262A/ja
Priority to US10/196,167 priority patent/US20030110481A1/en
Publication of JP2003173262A publication Critical patent/JP2003173262A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 プログラム部分毎に効果的な最適化方法が異
なる場合にも、プログラム実行を高速化する。 【解決手段】 ループ処理を含む計算機用プログラム部
分に適用する最適化指示文を、複数の最適化指示文の中
から一つずつ選択して、各ループ(プログラム部分)の
直前に挿入する(104,105)と共に、各ループの
実行時間を計測するためのコードを生成し(106)、
評価プログラム124を作成する評価プログラム生成部
103と、この評価プログラム124をコンパイル、実
行し、各ループの実行時間を計測するコンパイル・実行
部140と、計測結果に基づきループ毎に最高速となる
最適化指示文を検出する最適オプション決定部108
と、最適化指示文を各ループの直前に挿入したプログラ
ム(129)を生成する最適化指示文挿入部109とを
設け、プログラムのチューニングを行う構成とする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、計算機(コンピュ
ータ)用プログラムのコンパイル技術に係わり、特に、
最適化指示文による変換の対象となるプログラム部分を
含む計算機用プログラムのチューニングを効率的に行う
のに好適な技術に関するものである。
【0002】
【従来の技術】従来、与えられたプログラムに対して、
より良い最適化方法を決定する技術として、例えば、特
開平6−274350号公報に記述されているような、
プログラム全体で同一の最適化方法を適用し、プログラ
ム全体の実行時間が最高速となるコンパイルオプション
の選択を遺伝的アルゴリズムを用いて行うものがある
(第1のの従来技術)。
【0003】また、従来、時間のかかるプログラム部分
の性能をチューニングする技術として、佐藤三久他、
「自動適応並列プログラム性能最適化ツールTEA Exper
t」(情報処理学会HPC研究会報告72−3、頁13−1
8、August,1998)に記述されているような、特定
の位置に予めパラメータ付き最適化指示文を挿入し、こ
のパラメータを自動的に変化させて実行することによ
り、最適なパラメータセットを決定するものがある(第
2の従来技術)。
【0004】しかし、第1の従来技術では、プログラム
の部分毎に最適化方法が異なる場合、最も有利なコンパ
イルオプションを選択できないという問題がある。
【0005】また、第2の従来技術では、人手で性能パ
ラメータ付き最適化指示文を挿入し、計時区間を指定し
なければならないため、ユーザの負担が大きいという問
題がある。以下に、性能パラメータ付き最適化指示文の
例を示す。
【0006】「#pragma unroll(N_U
NROLL)」
【0007】ここで、「unroll」がループ展開を
指定し、「N_UNROLL」が展開数を表す性能パラ
メータである。
【0008】
【発明が解決しようとする課題】解決しようとする問題
点は、従来の技術では、プログラムの部分毎に最適化方
法が異なる場合には、最も有利なコンパイルオプション
を選択できない点、もしくは、人手で性能パラメータ付
き最適化指示文を挿入し、計時区間を指定しなければな
らない点である。
【0009】本発明の目的は、これら従来技術の課題を
解決し、プログラム実行の高速化を可能とし、また、プ
ログラム最適化に要するユーザの負担を軽減することを
可能とし、さらに、最適化方法を決定するのに要する試
行回数を削減することを可能とすることである。
【0010】
【課題を解決するための手段】上記目的を達成するた
め、本発明では、最適化指示文による変換の対象となる
プログラム部分を含む計算機用プログラムのチューニン
グを行う際、各プログラム部分に対して、複数の最適化
指示文を一つずつ適用して実行し、各最適化指示文毎の
各プログラム部分の実行時間を計測し、計測結果に基づ
き、プログラム部分毎に最高速となる最適化指示文を検
出し、検出した各最適化指示文を当該プログラム部分の
直前に挿入してプログラムを生成する。また、各プログ
ラム部分に対して、複数の最適化指示文の組を一組ずつ
適用して実行し、その実行時間の計測と、プログラム部
分毎の最高速となる最適化指示文の組合せの検出を行
い、最適化指示文の組合せを各プログラム部分の直前に
挿入してプログラムを生成する。尚、各プログラム部分
に対する、最適化指示文の適用と実行、および、その実
行時間の計測と最高速となる最適化指示文の検出を、最
適化指示文の種類と性能パラメータの数、または、最適
化指示文の種類と性能パラメータの組合せの数だけ行
う。
【0011】
【発明の実施の形態】以下、本発明の実施の形態を、図
面により詳細に説明する。
【0012】図1は、本発明に係わるプログラムチュー
ニングシステムの構成例を示すブロック図である。
【0013】ここでは、ループ処理を含む計算機用プロ
グラムに対するプログラムチューニング技術について説
明する。
【0014】図1に示すシステムは、例えば、CRTや
LCD等からなる出力装置や、キーボードやマウス等か
らなる入力装置、HDD等からなる外部記憶装置、CP
Uや主メモリおよび入出力インタフェース等を具備して
コンピュータ処理を行なう情報処理装置、CD−ROM
等からなる光ディスクに記録されたプログラムやデータ
を読み出すための光ディスク駆動装置、LANカード等
の通信装置等からなり、光ディスク等に格納されたプロ
グラムおよびデータを情報処理装置により光ディスク駆
動装置を介して外部記憶装置内にインストールした後、
この外部記憶装置から主メモリに読み込みCPUで処理
することにより、各構成部が実装され、本発明に係わる
プログラムチューニングを実行する。
【0015】すなわち、本例のプログラムチューニング
システムは、オプション指定部110と制御プログラム
100と並列化コンパイラ101と最適プログラム生成
ツール107、および、コンパイル・実行部140から
構成されている。
【0016】そして、並列化コンパイラ101は、構文
解析部102と評価プログラム生成部103から構成さ
れており、さらに、この評価プログラム生成部103
は、オプション情報取得部104と最適化指示文生成部
105および実行時間取得コード生成部106から構成
されている。
【0017】また、最適プログラム生成ツール107
は、最適オプション決定部108と最適化指示文生成部
109から構成されている。
【0018】このような構成において、本例のプログラ
ムチューニングシステムでは、オプション(最適化指示
文)による変換の対象となるプログラム部分を含む計算
機用プログラムのチューニングを行う際、評価プログラ
ム生成部103により、複数の最適化指示文から一つを
取り出して各プログラム部分の直前に挿入し、最適化指
示文を挿入した各プログラム部分の実行時間を計測する
ためのコードを各プログラム部分に挿入した評価プログ
ラム124を生成し、コンパイル・実行部140によ
り、この評価プログラム124をコンパイルして実行し
て、評価プログラムにおける各プログラム部分の実行時
間を計測して記憶装置(実行時間情報群125)に記憶
し、そして、このような評価プログラムの生成と実行を
複数の最適化指示文の数だけ繰り返した後、最適プログ
ラム生成ツール107において、各プログラム部分の実
行時間の計測結果に基づき、各プログラム部分毎に、当
該プログラム部分の実行時間が最高速となる最適化指示
文を検出し、検出した各最適化指示文を当該プログラム
部分の直前に挿入して最適化指示文付きプログラム12
9を生成する。そして、各プログラム部分に対する、最
適化指示文の適用と実行、および、その実行時間の計測
と最高速となる最適化指示文の検出を、最適化指示文の
種類と性能パラメータの数だけ行う。
【0019】あるいは、各プログラム部分に対して最適
化指示文を適用する際、最適化指示文の組を一組ずつ適
用して実行し、その実行時間の計測と、プログラム部分
毎の最高速となる最適化指示文の組合せの検出を行い、
最適化指示文の組合せを各プログラム部分の直前に挿入
してプログラムを生成する。この場合、各プログラム部
分に対する、最適化指示文の適用と実行、および、その
実行時間の計測と最高速となる最適化指示文の検出を、
最適化指示文の種類と性能パラメータの組合せの数だけ
行う。
【0020】以下、各部の詳細を説明する。オプション
指定部110は、ユーザが例えばキーボード等の入力装
置を操作してオプション(最適化指示文)を指定するこ
とに基づき、オプション情報群121を生成する。この
オプション情報群121は、図2に詳細を示す1つのオ
プション情報統括ファイル122と、図3に詳細を示す
複数のオプション情報ファイル123からなる。
【0021】並列化コンパイラ101における構文解析
部102は、ソースプログラム120を入力して、中間
語130を出力する。
【0022】評価プログラム生成部103のオプション
情報取得部104は、オプション情報群121のオプシ
ョン情報ファイル123と中間語130を入力して、図
8に詳細を示すオプション情報テーブル131と、図6
に詳細を示す実行時間情報群125内の評価オプション
情報ファイル128を出力する。
【0023】評価プログラム生成部103の最適化指示
文生成部105と実行時間取得コード生成部106は、
中間語130とオプション情報テーブル131を入力し
て、最適化指示文と実行時間取得コード付きの評価プロ
グラム124を出力する。
【0024】評価プログラム124をコンパイル・実行
部140でコンパイル、実行して、最適化指示文毎の各
プログラム部分の実行時間を計測し、その計測結果を、
実行時間情報群125のうちの図4に詳細を示す実行時
間情報統括ファイル126と図5に詳細を示す実行時間
情報ファイル127として記憶する。
【0025】最適プログラム生成ツール107の最適オ
プション決定部108は、実行時間情報群125を入力
して、最適オプション情報配列132を出力する。
【0026】そして、最適プログラム生成ツール107
の最適化指示文挿入部109は、ソースプログラム12
0と最適オプション情報配列132を入力して、最適化
指示文付きプログラム129を出力する。
【0027】次に、上述の各処理部で生成される、オプ
ション情報統括ファイル122、オプション情報ファイ
ル123、実行時間情報統括ファイル126、実行時間
情報ファイル127、評価オプション情報ファイル12
8の仕様について、図2〜図6を用いて説明し、その
後、図7〜図16によりシステムの動作を説明する。
【0028】図2は、図1のオプション情報統括ファイ
ルにおけるデータ構造例を示す説明図であり、図3は、
図1のオプション情報ファイルにおけるデータ構造例を
示す説明図であり、図4は、図1の実行時間情報統括フ
ァイルにおけるデータ構造例を示す説明図であり、図5
は、図1の実行時間情報ファイルにおけるデータ構造例
を示す説明図であり、図6は、図1の評価オプション情
報ファイルにおけるデータ構造例を示す説明図である。
【0029】図2〜図6に示すオプション情報統括ファ
イル122、オプション情報ファイル123、実行時間
情報統括ファイル126、実行時間情報ファイル12
7、評価オプション情報ファイル128の各ファイル中
のデータはタグを使って構造的に記述する。
【0030】図2において、図2(a)では、オプショ
ン情報統括ファイルのタグ構成を示し、図2(b)で
は、そのタグ一覧を、また、図2(c)では、各タグの
形式をそれぞれ示している。
【0031】図2(a)に示すように、下位のタグ
(「FILE〜/FILE」)上位のタグ(「COUN
T〜/COUNT」)の次に並ぶ。各タグは「#」で始
まり、改行で終わる。ここで、「1」は1回、「*1」
は1回以上の反復を意味する。図2(b)に示すよう
に、「COUNT」は「試行回数」を示し、「FIL
E」はオプション情報ファイルを示す。
【0032】オプション情報ファイルを示すFILE2
02は、試行回数を示すCOUNT201の数だけ存在
する。このように、図1のオプション情報統括ファイル
122は、試行回数を示すCOUNT201とオプショ
ン情報ファイルを示すFILE202からなる。
【0033】図3は、オプション情報ファイル123の
仕様を示し、図3(a)はタグ構成を示す。下位のタグ
は上位の次に並ぶ。各タグは#で始まり、改行で終わ
る。ここで、「*0」は0回以上の反復、「*1」は1
回以上の反復を意味する。
【0034】オプション情報ファイル123は、オプシ
ョン情報を示すOPTION301と、プログラム中の
オプション挿入位置を示す手続き情報PROC302と
ループ情報LOOP303と行情報LINE304から
なる。
【0035】ループ情報LOOP303と行情報LIN
E304のう内のいずれかで指定する。ループ情報LO
OP303は、ループレベルでの指定が可能であり、行
情報LINE304は行単位での指定が可能である。
【0036】図4は、実行時間情報統括ファイル126
の仕様を示し、図4(a)はタグ構成を示す。下位のタ
グは上位の次に並ぶ。各タグは#で始まり、改行で終わ
る。ここで、「1」は1回、「*1」は1回以上の反復
を意味する。
【0037】実行時間情報ファイル127および評価オ
プション情報ファイル128を示すFILE402は、
試行回数COUNT401の数だけ存在する。
【0038】実行時間情報統括ファイル126は、試行
回数を示すCOUNT401と、実行時間情報ファイル
127および評価オプション情報ファイル128を示す
FILE402からなる。試行回数COUNT401の
数の実行時間情報ファイルおよび評価オプション情報フ
ァイル(FILE402)が存在する。
【0039】図5は、実行時間情報ファイル127の仕
様を示し、図5(a)はタグ構成を示す。下位のタグは
上位の次に並ぶ。各タグは#で始まり、改行で終わる。
ここで、「1」は1回、「*1」は1回以上の反復を意
味する。実行時間を示すLINE502は、最大一連番
号MAXNUM501の数だけ存在する。
【0040】実行時間情報ファイル127は、行情報の
一連番号の最大値を示すMAXNUM501と、行情報
を示すLINE502からなる。行情報LINE502
は、オプション情報OPTION301を挿入したルー
プ開始行番号と、ループ実行時間を示す。
【0041】図6は、評価オプション情報ファイル12
8の仕様を示し、図6(a)はタグ構成を示す。下位の
タグは上位の次に並ぶ。各タグは#で始まり、改行で終
わる。ここで、「1」は1回、「*1」は1回以上の反
復を意味する。
【0042】評価オプション情報ファイル128を示す
LINE603は、最大一連番号MAXNUM602の
数だけ存在する。評価オプション情報ファイル128
は、行情報の一連番号の最大値を示すMAXNUM60
2と、オプションを挿入した行情報を示すLINE60
2と、オプション情報OPTION603からなる。
【0043】図7は、図1における制御プログラムの動
作例を示すフローチャートである。
【0044】図1の制御プログラム100は、システム
全体の処理動作を制御するものであり、並列化コンパイ
ラ101を起動して、オプション情報ファイル123に
対する評価プログラム124を生成し(ステップ70
1)、生成された評価プログラム124をコンパイル、
実行する試行を(ステップ702)、全てのオプション
情報ファイル123の数だけ繰り返し(ステップ70
3)、その後、最適化プログラム生成ツール107を起
動し(ステップ704)、最適化指示文付きプログラム
128を生成する。
【0045】図8は、図1におけるオプション情報テー
ブルの構成例を示す説明図である。
【0046】図8(a)はテーブル構成、図8(b)は
テーブル関連図であり、図8(a)のテーブル構成に示
すように、オプションテーブルは、並列コンパイラ10
1に設けられた評価プログラム生成部103のオプショ
ン情報取得部104が、オプション情報ファイル123
を読み込んで、コンパイラ内部表現に変換したものであ
る。
【0047】また、図8(b)のテーブル関連図に示す
ように、オプションテーブルは、コンパイラ内部のルー
プテーブルから指すものとし、オプション指定ループ毎
に、オプションテーブルを指す。
【0048】図9は、図1におけるオプション情報取得
部の処理動作例を示すフローチャートである。
【0049】オプション情報取得部104は、各オプシ
ョン情報テーブルに対し、一致する関数辞書を検出し
(ステップ901〜903)、さらに、ループレベルが
一致するか、または行番号が一致するループテーブルを
検出し(ステップ904,905)、このループテーブ
ルにオプションテーブルを繋ぎ(ステップ906)、オ
プションテーブルの内容を評価オプション情報ファイル
に書き込む(ステップ907)。
【0050】図10は、図1における最適化指示文生成
部の処理動作例を示すフローチャートである。
【0051】本例は、最適化指示文生成部105の評価
プログラム124の生成処理内容を示し、最適化指示文
生成部105は、ループテーブルにオプションテーブル
が繋がっていれば(ステップ1001,1002)、ル
ープ文の直前にオプションテーブルに対する最適化指示
文を生成する(ステップ1003)。
【0052】図11は、図1における実行時間取得コー
ド生成部の処理動作例を示すフローチャートである。
【0053】実行時間取得コード生成部106は、初期
化コード(timer_init)の生成(ステップ1101)
と、オプションテーブルがつながっているループテーブ
ルに対する(ステップ1102,1103)、開始時刻
取得コード(timer_start)の生成(ステップ110
4)とループ終了時刻取得コード(timer_end)の生成
(ステップ1105)、および、ループの実行時間情報
ファイルの出力コード(timer_write)の生成(ステッ
プ1106)を行う。
【0054】図12は、図1における実行時間取得コー
ド生成部で生成される各実行時間取得コードの構成例を
示す説明図である。
【0055】図12(a)は、初期化コード(timer_in
it)の構成例を示し、プログラム実行時、指定されたル
ープが何回も実行されるとき、各回のループの開始時刻
と終了時刻を対応させするためのカウンタを初期化する
ためのコードである。
【0056】図12(b)は、開始時刻取得コード(ti
mer_start)の構成例を示し、ループ入口に、カウンタ
をインクリメントし、配列Tに行番号と開始時刻を格納
するためのコードである。
【0057】図12(c)は、終了時刻取得コード(ti
mer_end)の構成例を示し、ループ出口に、配列Tのル
ープ終了時刻と、ループ終了時刻からループ開始時刻を
差し引いてループ実行時間を求め、配列Tにループ実行
時間を格納するためのコードである。
【0058】図12(d)は、ループ実行時間情報ファ
イル出力コード(timer_write)の構成例を示し、プロ
グラムの最後に、配列Tをループ行番号に対して昇順に
ソートし、配列T'に格納し、配列T'の要素数をcount'
に格納し、配列T'を実行時間情報ファイル127に書
き込むためのコードである。
【0059】図13は、図1における最適オプション決
定部のデータ処理時の情報配列構成例を示す説明図であ
る。
【0060】図13(a)は、実行時間情報統括ファイ
ル126を内部表現に変換した、実行時間情報ファイル
配列(TimeFile)の構成を示し、この実行時間情報ファ
イル配列(TimeFile)は、配列添字が試行回、配列要素
が実行時間情報ファイル名である。
【0061】図13(b)は、実行時間情報統括ファイ
ル126を内部表現に変換した、評価オプション情報フ
ァイル配列(OptFile)の構成を示し、この評価オプシ
ョン情報ファイル配列(OptFile)は、配列添字が試行
回、配列要素が評価オプション情報ファイル名である。
【0062】図13(c)は、実行時間情報ファイル1
27および評価オプション情報ファイル128を内部表
現に変換した、行番号配列(Lnum)の構成を示し、この
行番号配列(Lnum)は、配列添字が実行時間情報ファイ
ル127および評価オプション情報ファイル128内の
行情報の一連番号であり、配列要素が行情報の行番号で
ある。
【0063】図13(d)は、実行時間情報統括ファイ
ル126と実行時間情報ファイル127を内部表現に変
換した、実行時間配列(Time)の構成を示し、この実行
時間配列(Time)は、2次元配列であり、1次元目(行
方向)の配列添字は、実行時間情報ファイル127の行
情報の一連番号であり、2次元目(列方向)の配列添字
は、ループ実行時間情報統括ファイル126の試行回で
あり、配列要素は実行時間情報ファイル127の行情報
の実行時間である。
【0064】図13(e)は、実行時間情報統括ファイ
ル126と評価オプション情報ファイル128を内部表
現に変換した、オプション情報配列(Opt)の構成を示
し、このオプション情報配列(Opt)は、2次元配列で
あり、1次元目(行方向)の配列添字は、評価オプショ
ン情報ファイル128の行情報の一連番号であり、2次
元目(列方向)の配列添字は、実行時間情報統括ファイ
ル126の試行回であり、配列要素は評価オプション情
報ファイル128のオプション情報である。
【0065】図13(f)は、最適オプション情報配列
(Result)の構成を示し、この最適オプション情報配列
(Result)は、1次元配列であり、配列添字は、行番号
配列と同様、行情報の一連番号であり、配列要素は、行
番号とオプション情報からなる。
【0066】図14は、図1における最適オプション決
定部の処理動作例を示すフローチャートである。
【0067】図1の最適オプション決定部108は、ま
ず、実行時間情報ファイル名と評価オプション情報ファ
イル名を、実行時間配列とオプション情報配列に格納す
る(ステップ1401)。そして、実行時間情報ファイ
ルと評価オプション情報ファイルのデータを、行番号配
列、実行時間配列、オプション情報配列に格納する(ス
テップ1402)。
【0068】さらに、実行時間配列の行番号毎に、異な
るファイルからなる実行時間配列要素のなかから、最小
実行時間のファイル番号を取得し(ステップ140
3)、行番号毎に、最小実行時間のファイル番号の評価
オプション情報配列要素を、最適オプション情報配列に
格納する(ステップ1404)。
【0069】図15は、図1における最適プログラム生
成ツールの最適化指示文挿入部の処理動作例を示すフロ
ーチャートである。
【0070】図1の最適化指示文挿入部109は、ま
ず、最適オプション情報配列添字を降順に配列要素を取
り出し(ステップ1501)、次に、最適オプション情
報配列要素の行番号を取得する(ステップ1502)。
そして、ソースプログラムの対応する行番号の直前に、
最適オプション情報配列のオプション情報を、最適化指
示文として挿入する(ステップ1503)。
【0071】図16は、図1のオプション指定部におけ
るユーザインターフェースの構成例を示す説明図であ
る。
【0072】図16(a)は、ユーザが指定可能なオプ
ションの一覧例である。オプションは、機能別にループ
変換と並列化に分けられ、ループ変換に対しては「*S
OPTION」を、また、並列化に対しては「*POP
TION」をセンチネルとして使用する。
【0073】ループ変換オプションには、ループ分配
「LOOPDISTRIBUTE」、ループ融合「LO
OPFUSE」、ループ交換「LOOPINTERCH
ANGE」、ループ展開「LOOPUNROLL」など
がある。
【0074】並列化オプションには、ループ並列化「P
ARALLEL」、ループ一重化「COALESCIN
G」、ループサイクリック分割「CYCLIC」などが
ある。尚、ループ交換とループ展開とループサイクリッ
ク分割については、パラメータ指定が可能である。
【0075】図16(b)は、ユーザに提供される、オ
プション指定画面例であり、ユーザは3通りのオプショ
ンを指定し、それぞれ、ループ展開の展開数を「1」、
「2」、「4」を、手続きMAINの最外側ループに適
用することを示している。
【0076】以下、図17から図25の具体的な例を用
いて、図1における構成のシステムによるプログラムチ
ューニング動作を説明する。
【0077】図17は、図1におけるソースプログラム
の具体例を示す説明図である。
【0078】本例におけるソースプログラム120は、
2重ループと1重ループからなり、「L1」が2重ルー
プの外側ループの行番号であり、「L2」が1重ループ
のループ行番号である。
【0079】図18は、図1におけるオプション情報統
括ファイルの具体例を示す説明図である。
【0080】本例のオプション情報統括ファイル122
において、試行回数COUNTは「3」であり、オプシ
ョン情報ファイルは、「F1.uopt」、「F2.uopt」、
「F3.uopt」である。図1のユーザ指定部110で指
定されたオプションを、オプション情報統括ファイル1
22(図2におけるCOUNT201)に読み込む操作
は、手動また自動で行う。
【0081】図19は、図1におけるオプション情報フ
ァイルの具体例を示す説明図である。
【0082】本例のオプション情報ファイル123にお
いては、オプション情報「F1.uopt」では、ループ展
開「LOOPUNROLL」に対して展開数「1」(ル
ープ展開しない)を、最外側ループに適用し、オプショ
ン情報「F2.uopt」では、ループ展開「LOOPUN
ROLL」に対して展開数「2」を、最外側ループに適
用し、オプション情報「F3.uopt」では、ループ展開
「LOOPUNROLL」に対して展開数「4」を、最
外側ループに適用する。
【0083】尚、図1のユーザ指定部110で指定され
たオプションを、オプション情報ファイル301に読み
込む操作は、手動また自動で行う。
【0084】図20は、図1における評価プログラムの
具体例を示す説明図である。
【0085】本例では、評価プログラム124として、
「P1.estm」、「P2.estm」、「P3.estm」を例示して
いる。図1の制御プログラム100での制御に基づき、
オプション情報ファイル123における、オプション情
報「F1.uopt」、「F2.uopt」、「F3.uopt」を入
力して、評価プログラム「P1.estm」、「P2.estm」、
「P3.estm」を生成する。
【0086】すなわち、評価プログラム生成部103の
オプション情報取得部104は、オプション情報ファイ
ル123におけるオプション情報「F1.uopt」、「F
2.uopt」、「F3.uopt」をコンパイラ内部表現である
オプション情報テーブル131に変換し、手続き「MA
IN」の、最外側ループに対するループテーブルにオプ
ションテーブルを繋ぐ。
【0087】そして、図1の最適化指示文生成部105
は、ループテーブルにオプションテーブルが繋がってい
る行番号「L1」と行番号「L2」のループの直前で、
最適化指示文「*SOPTION LOOPUNROL
L(1)」、または「*SOPTION LOOPUN
ROLL(2)」、または「*SOPTION LOO
PUNROLL(4)を生成する。
【0088】さらに、図1の実行時間取得コード生成部
106は、プログラムの先頭に初期化コード「timer_in
it」と、ループテーブルにオプションテーブルが繋がっ
ている行番号「L1」と行番号「L2」のループの入口
に、開始時刻取得コード「timer_start」と、ループテ
ーブルにオプションテーブルが繋がっている行番号「L
1」と行番号「L2」のループの出口に、終了時刻取得
コード「timer_end」と、プログラムの最後に実行時間
情報ファイル出力コード「timer_write」を挿入する。
【0089】図21は、図1における実行時間情報統括
ファイルの具体例を示す説明図である。
【0090】本例の実行時間情報統括ファイル126に
おいて、試行回数COUNTは「3」であり、実行時間
情報ファイル127は「F1.time」、「F2.time」、
「F3.time」であり、評価オプション情報ファイル1
28は「F1.copt」、「F2.copt」、「F3.copt」
である。
【0091】図22は、図1における実行時間情報ファ
イルの具体例を示す説明図である。
【0092】本例の実行時間情報ファイル127におい
て、実行時間情報「F1.time」は、行情報一連番号の
最大値「MAXNUM」が「2」で、行情報「1」は行
番号が「L1」、実行時間「1000秒」で、行情報
「2」は行番号が「L2」、実行時間が「100秒」で
ある。
【0093】同様に、実行時間情報「F2.time」は、
行番号「L1」の実行時間が「500秒」、行番号「L
2」の実行時間が「400秒」である。そして、実行時
間情報「F3.time」は、行番号「L1」の実行時間が
「100秒」、行番号「L2」の実行時間が「800
秒」である
【0094】図23は、図1における評価オプション情
報ファイルの具体例を示す説明図である。
【0095】図1の評価プログラム生成部103におけ
るオプション情報取得部104は、オプション情報ファ
イル123におけるオプション情報「F1.uopt」、
「F2.uopt」、「F3.uopt」をコンパイラ内部表現で
あるオプション情報テーブル131に変換し、手続き
「MAIN」の、最外側ループに対するループテーブル
を見つけることにより、評価オプション情報ファイル
「F1.copt」または「F2.copt」または「F3.cop
t」にループ毎のオプション情報を書き込む。
【0096】評価オプション情報ファイル「F1.cop
t」は、行情報一連番号の最大値「MAXNUM」が
「2」で、行情報「1」は行番号が「L1」で、オプシ
ョン情報「1」はループ展開「1」であり、行情報
「2」は行番号が「L2」で、オプション情報「2」
は、ループ展開「1」である。
【0097】同様に、評価オプション情報ファイル「F
2.copt」は、行番号「L1」に対してループ展開
「2」、行番号「L2」に対してループ展開「2」であ
る。また、評価オプション情報ファイル「F3.copt」
は、行番号「L1」に対してループ展開「4」、行番号
「L2」に対してループ展開「4」である。
【0098】図24は、図1における最適オプション決
定部のデータ処理時の内部情報配列の具体例を示す説明
図である。
【0099】図24(a)は、実行時間情報ファイル配
列「TimeFile」の例であり、配列添字「1」〜「3」は
試行回であり、配列要素は、各試行回で得られる実行時
間情報ファイル名である。この配列は、図1における最
適オプション決定部108が、実行時間情報統括ファイ
ル126を読み込んで作成する。
【0100】図24(b)は、評価オプション情報ファ
イル配列「OptFile」の例であり、配列添字「1」〜
「3」は試行回であり、配列要素は、各試行回で用いる
評価オプション情報ファイル名である。この配列は、図
1における最適オプション決定部108が、実行時間情
報統括ファイル126を読み込んで作成する。
【0101】図24(c)は、行番号配列「Lnum」の例
であり、配列添字「1」〜「2」は行情報に対する一連
番号であり、配列要素はコンパイルオプションを指定し
たループに対する行番号「L1」、「L2」である。こ
の配列は、図1における最適オプション決定部108
が、実行時間情報ファイル「F1.time」、「F2.tim
e」、「F3.time」の行情報を読み込んで作成する。
【0102】図24(d)は、実行時間配列「Time」の
例であり、1次元目の配列添字「1」〜「2」は行情報
に対する一連番号であり、2次元目の配列添字「1」〜
「3」は試行回であり、配列要素は各試行により得られ
たループ毎の実行時間である。この配列は、最適オプシ
ョン決定部108が、実行時間情報ファイル「F1.tim
e」、「F2.time」、「F3.time」の行情報を読み込
んで作成する。
【0103】図24(e)は、オプション配列「Opt」
の例であり、1次元目の配列添字「1」〜「2」は行情
報に対する一連番号であり、2次元目の配列添字「1」
〜「3」は試行回であり、配列要素は各試行回で用いた
ループ毎のオプションである。
【0104】従って、1回目の試行では、1番目のルー
プと2番目のループに対して、ループ展開「1」を適用
したことになる。同様に、2回目の試行では、1番目の
ループと2番目のループに対して、ループ展開「2」を
適用し、3回目の試行では、1番目のループと2番目の
ループに対してループ展開「4」を適用したことにな
る。
【0105】この配列は、図1における最適オプション
決定部108が、実行時間情報ファイル「F1.cop
t」、「F2.copt」、「F3.copt」の行情報を読み込
んで作成する。
【0106】図24(f)は、最適オプション情報配列
「Result」の例であり、配列添字「1」〜「2」は行情
報に対する一連番号であり、配列要素は、オプション指
定ループに対する行番号と、最適なオプションである。
【0107】この配列は、図1における最適オプション
決定部108が、実行時間配列「Time」の行番号毎に、
異なるファイルからなる実行時間のうち最小実行時間の
ファイル番号を取得し、行番号「L1」は「F1.cop
t」が最適なオプションであり、行番号「L2」は「F
3.copt」が最適なオプションであるため、行番号「L
1」の最適オプションはループ展開「1」であり、行番
号「L2」の最適オプションはループ展開「4」であ
る。
【0108】図25は、図1における最適化指示文付き
プログラムの具体例を示す説明図である。
【0109】本例の最適化指示文付きプログラムは、図
17におけるソースプログラムに基づき生成されるもの
であり、図24(f)に示す最適オプション配列「Resu
lt」において、行番号「L1」の最適オプションはルー
プ展開「1」であり、行番号「L2」の最適オプション
はループ展開「4」であるので、図1の最適化指示文挿
入部109において、行番号「L1」のループに対して
ループ展開「1」(ループ展開しない)に対する最適化
指示文「*SOPTION LOOPUNROLL
(1)」が挿入され、行番号「L2」のループに対して
ループ展開「4」に対する最適化指示文「*SOPTI
ON LOOPUNROLL(4)」が挿入される。
【0110】以上、図1〜図25を用いて説明したよう
に、本例では、ループ処理を含む計算機用プログラム
(ソースプログラム120)に対して複数のコンパイル
オプション(最適化指定文)の中から一つずつコンパイ
ルオプションを適用し(コンパイルオプション情報取得
部104)、コンパイルオプション(最適化指示文)を
各ループの直前に挿入すると共に(最適化指示文生成部
105)、各ループの実行時間を計測するためのコード
を生成して(ループ実行時間取得コード生成部106)
評価プログラム124を作成する評価プログラム生成部
103と、評価プログラム124をコンパイル、実行し
て、各ループの実行時間を計測し、実行時間情報群12
5として記憶するコンパイル・実行部140と、計測結
果に基づき、ループ毎に最高速となるコンパイルオプシ
ョン(最適化指示文)を検出する最適コンパイルオプシ
ョン決定部108と、このコンパイルオプション(最適
化指示文)を各ループの直前に挿入したプログラム(最
適化指示文付きプログラム129)を生成する最適化指
示文挿入部109とを設けた構成としている。
【0111】尚、本発明は、図1〜図25を用いて説明
した例に限定されるものではなく、その要旨を逸脱しな
い範囲において種々変更可能である。例えば、複数のコ
ンパイルオプションの組合せを適用することや、評価プ
ログラム中の一部のループに最適化指示文を適用するこ
と、さらに、評価プログラムの個々のループに異なる最
適化指示文を適用すること等が可能である。
【0112】また、本例のプログラムを記録する記録媒
体としては、FD(Flexible Disk)等を用いることで
も良い。また、プログラムのインストールに関しても、
通信装置を介してネットワーク経由でプログラムをダウ
ンロードしてインストールすることでも良い。
【0113】また、本例では、ループ処理および並列化
を最適化対象のプログラム部分として説明したが、これ
に限るものではない。
【0114】以上の構成および処理動作により、本例で
は、プログラム部分毎に最適化指示文を見つけることが
でき、プログラム全体の実行速度を向上させることがで
きる。また、ユーザがパラメータ付き最適化指示文を挿
入する手間をなくすことができ、プログラム最適化に要
するユーザの負担を軽減させることができる。さらに、
プログラム部分毎に最適化指示文を見つけるための試行
回数を削減することができる。
【0115】
【発明の効果】本発明によれば、プログラム部分毎に最
適化方法が選択できるので、プログラム部分毎に効果的
な最適化方法が異なる場合にも、プログラム実行が高速
化できる。また、ユーザがパラメータ付き最適化指示文
を挿入する必要がないため、プログラム最適化に要する
ユーザの負担を軽減することができる。さらに、プログ
ラム部分毎に最適化方法を見つけるための試行回数を削
減できる。
【図面の簡単な説明】
【図1】本発明に係わるプログラムチューニングシステ
ムの構成例を示すブロック図である。
【図2】図1のオプション情報統括ファイルにおけるデ
ータ構造例を示す説明図である。
【図3】図1のオプション情報ファイルにおけるデータ
構造例を示す説明図である。
【図4】図1の実行時間情報統括ファイルにおけるデー
タ構造例を示す説明図である。
【図5】図1の実行時間情報ファイルにおけるデータ構
造例を示す説明図である.
【図6】図1の評価オプション情報ファイルにおけるデ
ータ構造例を示す説明図である。
【図7】図1における制御プログラムの動作例を示すフ
ローチャートである。
【図8】図1におけるオプション情報テーブルの構成例
を示す説明図である。
【図9】図1におけるオプション情報取得部の処理動作
例を示すフローチャートである。
【図10】図1における最適化指示文生成部の処理動作
例を示すフローチャートである。
【図11】図1における実行時間取得コード生成部の処
理動作例を示すフローチャートである。
【図12】図1における実行時間取得コード生成部で生
成される各実行時間取得コードの構成例を示す説明図で
ある。
【図13】図1における最適オプション決定部のデータ
処理時の情報配列構成例を示す説明図である。
【図14】図1における最適オプション決定部の処理動
作例を示すフローチャートである。
【図15】図1における最適プログラム生成ツールの最
適化指示文挿入部の処理動作例を示すフローチャートで
ある。
【図16】図1のオプション指定部におけるユーザイン
ターフェースの構成例を示す説明図である。
【図17】図1におけるソースプログラムの具体例を示
す説明図である。
【図18】図1におけるオプション情報統括ファイルの
具体例を示す説明図である。
【図19】図1におけるオプション情報ファイルの具体
例を示す説明図である。
【図20】図1における評価プログラムの具体例を示す
説明図である。
【図21】図1における実行時間情報統括ファイルの具
体例を示す説明図である。
【図22】図1における実行時間情報ファイルの具体例
を示す説明図である。
【図23】図1における評価オプション情報ファイルの
具体例を示す説明図である。
【図24】図1における最適オプション決定部のデータ
処理時の内部情報配列の具体例を示す説明図である。
【図25】図1における最適化指示文付きプログラムの
具体例を示す説明図である。
【符号の説明】
100:制御プログラム、101:並列化コンパイラ、
102:構文解析部、103:評価プログラム生成部、
104:オプション情報取得部、105:最適化指示文
生成部、106:実行時間取得コード生成部、107:
最適プログラム生成ツール、108:最適オプション決
定部、109:最適化指示文挿入部、110:オプショ
ン指定部、120:ソースプログラム、121:オプシ
ョン情報群、122:オプション情報統括ファイル、1
23:オプション情報ファイル、124:評価プログラ
ム、125:実行時間情報群、126:実行時間情報統
括ファイル、127:実行時間情報ファイル、128:
評価オプション情報ファイル、129:最適化指示文付
きプログラム、130:中間語、131:オプション情
報テーブル、132:最適オプション情報配列、14
0:コンパイル・実行部。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 飯塚 孝好 神奈川県川崎市麻生区王禅寺1099番地 株 式会社日立製作所システム開発研究所内 Fターム(参考) 5B081 CC21 CC32

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 最適化指示文による変換の対象となるプ
    ログラム部分を含む計算機用プログラムのチューニング
    を行うシステムであって、複数の最適化指示文から一つ
    を取り出して各プログラム部分の直前に挿入し、最適化
    指示文を挿入した各プログラム部分の実行時間を計測す
    るためのコードを各プログラム部分に挿入して評価プロ
    グラムを生成する手段と、上記評価プログラムをコンパ
    イルして実行するコンパイル実行手段と、上記評価プロ
    グラムにおける各プログラム部分の実行時間を計測して
    記憶装置に記憶する手段と、上記評価プログラムの生成
    と実行を複数の最適化指示文の数だけ繰り返した後、各
    プログラム部分の各実行時間の計測結果に基づき、各プ
    ログラム部分毎に、当該プログラム部分の実行時間が最
    高速となる最適化指示文を検出する手段と、検出した各
    最適化指示文を当該プログラム部分の直前に挿入して最
    適化指示文付きプログラムを生成する手段とを有するこ
    とを特徴とするプログラムチューニングシステム。
  2. 【請求項2】 最適化指示文による変換の対象となるプ
    ログラム部分を含む計算機用プログラムのチューニング
    方法であって、各プログラム部分に対して、複数の最適
    化指示文を一つずつ適用して実行し、各最適化指示文毎
    の各プログラム部分の実行時間を計測し、計測結果に基
    づき、プログラム部分毎に最高速となる最適化指示文を
    検出し、検出した各最適化指示文を当該プログラム部分
    の直前に挿入してプログラムを生成することを特徴とす
    るプログラムチューニング方法。
  3. 【請求項3】 最適化指示文による変換の対象となるプ
    ログラム部分を含む計算機用プログラムのチューニング
    方法であって、各プログラム部分に対して、複数の最適
    化指示文を一組ずつ適用して実行し、各最適化指示文の
    組毎の各プログラム部分の実行時間を計測し、計測結果
    に基づき、プログラム部分毎に最高速となる最適化指示
    文の組を検出し、検出した各最適化指示文の組を当該プ
    ログラム部分の直前に挿入してプログラムを生成するこ
    とを特徴とするプログラムチューニング方法。
  4. 【請求項4】 請求項2に記載のプログラムチューニン
    グ方法であって、上記最適化指示文は性能パラメータ付
    き最適化指示文からなり、各プログラム部分に対する各
    最適化指示文の適用と実行を、最適化指示文の種類と性
    能パラメータの数だけ行うことを特徴とするプログラム
    チューニング方法
  5. 【請求項5】 請求項3に記載のプログラムチューニン
    グ方法であって、上記最適化指示文は性能パラメータ付
    き最適化指示文からなり、各プログラム部分に対する各
    最適化指示文の適用と実行を、最適化指示文の種類と性
    能パラメータの組合せの数だけ行うことを特徴とするプ
    ログラムチューニング方法
  6. 【請求項6】 コンピュータに、請求項2から請求項5
    のいずれかに記載のプログラムチューニング方法におけ
    る各手順を実行させるためのプログラム。
  7. 【請求項7】 コンピュータに、請求項2から請求項5
    のいずれかに記載のプログラムチューニング方法におけ
    る各手順を実行させるためのプログラムを記録したこと
    を特徴とするコンピュータ読み取り可能な記録媒体。
JP2001372620A 2001-12-06 2001-12-06 プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体 Pending JP2003173262A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001372620A JP2003173262A (ja) 2001-12-06 2001-12-06 プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体
US10/196,167 US20030110481A1 (en) 2001-12-06 2002-07-17 Program tuning method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001372620A JP2003173262A (ja) 2001-12-06 2001-12-06 プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体

Publications (1)

Publication Number Publication Date
JP2003173262A true JP2003173262A (ja) 2003-06-20

Family

ID=19181477

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001372620A Pending JP2003173262A (ja) 2001-12-06 2001-12-06 プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体

Country Status (2)

Country Link
US (1) US20030110481A1 (ja)
JP (1) JP2003173262A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007108940A (ja) * 2005-10-12 2007-04-26 Fujitsu Ltd 拡張言語仕様指定方法、プログラム開発方法、プログラム及びコンピュータ読み取り可能な記憶媒体
JP2007279861A (ja) * 2006-04-04 2007-10-25 Mitsubishi Electric Corp ビジネスプロセス管理装置及びビジネスプロセス管理方法及びビジネスプロセス管理プログラム
JP2015141543A (ja) * 2014-01-29 2015-08-03 富士通株式会社 ループ分割検出プログラム及びループ分割検出方法
JP2015191346A (ja) * 2014-03-27 2015-11-02 富士通株式会社 コンパイルプログラム、コンパイル方法およびコンパイル装置
EP2963547A1 (en) 2014-03-31 2016-01-06 Fujitsu Limited Compiling device, compiling method, and storage medium storing compiler program

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3847672B2 (ja) * 2002-07-03 2006-11-22 松下電器産業株式会社 コンパイラ装置及びコンパイル方法
US7310594B1 (en) * 2002-11-15 2007-12-18 Xilinx, Inc. Method and system for designing a multiprocessor
FR2865047B1 (fr) * 2004-01-14 2006-04-07 Commissariat Energie Atomique Systeme de generation automatique de codes optimises
US7318223B2 (en) * 2004-08-26 2008-01-08 International Business Machines Corporation Method and apparatus for a generic language interface to apply loop optimization transformations
US20060048118A1 (en) * 2004-08-30 2006-03-02 International Business Machines Corporation Method and apparatus for optimizing code with artificial statements
US9031047B2 (en) * 2005-06-21 2015-05-12 Google Technology Holdings LLC Method and apparatus for facilitate communications using surrogate and care-of-internet protocol addresses
US7900202B2 (en) * 2005-10-31 2011-03-01 Microsoft Corporation Identification of software execution data
US8006242B2 (en) * 2005-10-31 2011-08-23 Microsoft Corporation Identification of software configuration data
JP4784827B2 (ja) * 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
US20090193402A1 (en) * 2008-01-28 2009-07-30 Guy Bashkansky Iterative Compilation Supporting Entity Instance-Specific Compiler Option Variations
US8645933B2 (en) * 2008-08-01 2014-02-04 Leon Schwartz Method and apparatus for detection and optimization of presumably parallel program regions
CN102165428B (zh) * 2008-08-13 2015-05-20 高通股份有限公司 软件应用性能增强
KR101645035B1 (ko) * 2009-09-22 2016-08-16 삼성전자주식회사 병렬 프로그래밍 조절 장치 및 방법
KR20120037801A (ko) * 2010-10-12 2012-04-20 삼성전자주식회사 병렬 프로그램의 루프 스케줄을 조절하는 장치 및 방법
US9250877B2 (en) 2013-09-20 2016-02-02 Cray Inc. Assisting parallelization of a computer program
JP5715217B2 (ja) * 2013-10-18 2015-05-07 ファナック株式会社 プログラムの先読み機能を備えた数値制御装置
US10210005B2 (en) 2014-03-11 2019-02-19 Iex Group, Inc. Systems and methods for data synchronization and failover management
US11080139B2 (en) 2014-03-11 2021-08-03 Iex Group, Inc. Systems and methods for data synchronization and failover management
US9785422B1 (en) * 2016-10-31 2017-10-10 International Business Machines Corporation Applying multiple rewriting without collision for semi-automatic program rewriting system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0586557A4 (en) * 1991-05-24 1995-04-12 British Tech Group Usa COMPILER OPTIMIZATION FOR COMPUTERS.
JP3417984B2 (ja) * 1993-09-10 2003-06-16 株式会社日立製作所 キャッシュ競合削減コンパイル方法
US5999737A (en) * 1994-03-01 1999-12-07 Digital Equipment Corporation Link time optimization via dead code elimination, code motion, code partitioning, code grouping, loop analysis with code motion, loop invariant analysis and active variable to register analysis
US5732272A (en) * 1995-07-31 1998-03-24 Apple Computer, Inc. Subroutine execution time tracer
US5857106A (en) * 1996-05-31 1999-01-05 Hewlett-Packard Company Runtime processor detection and installation of highly tuned processor specific routines
US5960454A (en) * 1996-12-19 1999-09-28 International Business Machines Corporation Avoiding cache collisions between frequently accessed, pinned routines or data structures
US6226790B1 (en) * 1997-02-28 2001-05-01 Silicon Graphics, Inc. Method for selecting optimal parameters for compiling source code
US6077311A (en) * 1997-07-09 2000-06-20 Silicon Graphics, Inc. Method and apparatus for extraction of program region
US5911073A (en) * 1997-12-23 1999-06-08 Hewlett-Packard Company Method and apparatus for dynamic process monitoring through an ancillary control code system
US6438655B1 (en) * 1999-04-20 2002-08-20 Lucent Technologies Inc. Method and memory cache for cache locking on bank-by-bank basis
US6446167B1 (en) * 1999-11-08 2002-09-03 International Business Machines Corporation Cache prefetching of L2 and L3
US6460115B1 (en) * 1999-11-08 2002-10-01 International Business Machines Corporation System and method for prefetching data to multiple levels of cache including selectively using a software hint to override a hardware prefetch mechanism
US6550058B1 (en) * 2000-02-03 2003-04-15 International Business Machines Corporation Stack clearing device and method
US7168059B2 (en) * 2001-04-20 2007-01-23 Bryan Darrell Bowyer Graphical loop profile analysis
US6947052B2 (en) * 2001-07-13 2005-09-20 Texas Instruments Incorporated Visual program memory hierarchy optimization

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007108940A (ja) * 2005-10-12 2007-04-26 Fujitsu Ltd 拡張言語仕様指定方法、プログラム開発方法、プログラム及びコンピュータ読み取り可能な記憶媒体
US8572592B2 (en) 2005-10-12 2013-10-29 Spansion Llc Extended language specification assigning method, program developing method and computer-readable storage medium
JP2007279861A (ja) * 2006-04-04 2007-10-25 Mitsubishi Electric Corp ビジネスプロセス管理装置及びビジネスプロセス管理方法及びビジネスプロセス管理プログラム
JP2015141543A (ja) * 2014-01-29 2015-08-03 富士通株式会社 ループ分割検出プログラム及びループ分割検出方法
JP2015191346A (ja) * 2014-03-27 2015-11-02 富士通株式会社 コンパイルプログラム、コンパイル方法およびコンパイル装置
EP2963547A1 (en) 2014-03-31 2016-01-06 Fujitsu Limited Compiling device, compiling method, and storage medium storing compiler program

Also Published As

Publication number Publication date
US20030110481A1 (en) 2003-06-12

Similar Documents

Publication Publication Date Title
JP2003173262A (ja) プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体
US6993753B2 (en) Compiler for parallel computer
JP3290567B2 (ja) プロファイル計装方法
US6820256B2 (en) System and method for whole-system program analysis
US6817013B2 (en) Program optimization method, and compiler using the same
US7353503B2 (en) Efficient dead code elimination
US6412105B1 (en) Computer method and apparatus for compilation of multi-way decisions
CN100405294C (zh) 在运行时期间优化计算机程序的系统与方法
JP5139486B2 (ja) トレース生成装置、システム、およびそのプログラム
US7673295B1 (en) System and method for compile-time non-concurrency analysis
US5809308A (en) Method and apparatus for efficient determination of an RMII vector for modulo scheduled loops in an optimizing compiler
US5790859A (en) Method of, system for, and computer program product for efficient identification of private variables in program loops by an optimizing compiler
KR100215502B1 (ko) 최적화장치
EP1672488A2 (en) Compile time linking via hashing technique
CN112363706A (zh) 一种嵌套组合的预处理方法及设备
US7222337B2 (en) System and method for range check elimination via iteration splitting in a dynamic compiler
JP2004259007A (ja) コンパイラ装置、コンパイラプログラム、及び記録媒体
US6163882A (en) Language processing apparatus for converting source program into object program
JP2001125792A (ja) 最適化促進装置
CN114791808A (zh) 一种数据流图生成方法及装置
KR20080045545A (ko) 조건부 영역을 전처리하는 방법
US6637026B1 (en) Instruction reducing predicate copy
JP3028821B2 (ja) 並列化コンパイル方法
JP2004038279A (ja) コンパイラ、演算処理システム及び演算処理方法
JPH09160784A (ja) 並列化コンパイル方式

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040909

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041019

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050301