JPH03157731A - チユーニング支援システム - Google Patents

チユーニング支援システム

Info

Publication number
JPH03157731A
JPH03157731A JP29783489A JP29783489A JPH03157731A JP H03157731 A JPH03157731 A JP H03157731A JP 29783489 A JP29783489 A JP 29783489A JP 29783489 A JP29783489 A JP 29783489A JP H03157731 A JPH03157731 A JP H03157731A
Authority
JP
Japan
Prior art keywords
program
tuning
case
support system
efficiency
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
JP29783489A
Other languages
English (en)
Inventor
Hiroshi Tsuji
洋 辻
Shiyunsuke Akifuji
俊介 秋藤
Ikuo Yoshihara
郁夫 吉原
Hiroshi Matsuo
洋 松尾
Toshio Sekiya
磧谷 利夫
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 JP29783489A priority Critical patent/JPH03157731A/ja
Publication of JPH03157731A publication Critical patent/JPH03157731A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 【産業上の利用分野〕 本発明は、プログラムのチューニング支援システム、す
なわち、稼動するパードウ呈ア等の環境の特徴や、コン
パイラの特徴を十分考慮していない効率の悪いプログラ
ムを、効率良く動くように変換するシステムに関する。
[従来の技術] 従来、この種のチューニング支援システムとしては、例
えば、 (1)長堀等によるrFORTRANベクトルコンパイ
ラとチューニングソフトウェア」(日立評論、vol、
69,11h2.pp、27−34参照)(2)Ko−
YangWang et alによるApplying
 A ITechniques to Program
 Optimization forParallel
  Computers(Kai  Hwang等編。
Parallel  Processing  for
  5upercorxputers。
McGraw−Hill Publishing Co
+apany、+989゜pp、441〜486参照) 等に記載されている如く、チューニングの方法は一般的
な規則として予め得られるものを利用するということを
前提としている。
[発明が解決しようとする課Ig1] 上記各従来技術は、プログラムのある一部が与えられた
条件を満たすか満たさないかの判定を行い、条件を満た
す場合のみある変換を行うことによってチューニングを
行うというものであった。
そのため、誰もが比較的簡単に知り得る、ごく限られた
規則を利用してチューニングを支援することは可能にな
っているが、多くのプログラムが個別に経験して得たノ
ウハウを以後のチューニングに反映させることについて
配慮がなされていなかった。しかも、一般的な規則の適
用可能範囲も明確に規定できるわけではなく、場合によ
っては有効でない結果を得てしまうことがあった。その
ため、従来のチューニング支援システムの能力は。
必ずしも、十分ではないという問題があった6チユーニ
ングの具体的な事例については、例えば、J 、M、L
evesque et al著、A Guigebao
k t。
Fortran on Supercomputers
、Academic PressInc、、1988等
に示されている。
本発明は上記事情に鑑みてなされたもので、その目的と
するところは、従来の技術における上述の如き問題を解
消し、チューニングの事例を得られた都度蓄積し、それ
を活用することにより、必ずしも十分効率が上がるよう
に配慮されていないプログラムを、効率が上がるように
変換するチューニング支援システムを提供することにあ
る。
〔課題を解決するための手段〕
本発明の上記目的は、ハードウェアの特性およびコンパ
イラの特性を活かして、プログラムを効率良く動かすよ
うにするチューニング支援システムにおいて、チューニ
ング前のプログラムとそのときに行ったプログラム変換
方法の対を複数組記憶する事例ベースと、新規プログラ
ムが与えられたとき、該新規プログラムに対し、前記事
例ベース中の事例との類似度を計算して最も類似したチ
ューニング前のプログラムを含む事例を検索する手段と
を設け、前記類似度が予め定められた範囲内と認められ
るときに、前記検索手段により検索された事例に含まれ
るプログラム変換方法を前記新規プログラムに適用する
ことを特徴とするチューニング支援システム、または、
チューニング前のプログラム、とチューニング後のプロ
グラムとの対を複数組記憶する事例ベースと、新規プロ
グラムが与えられたとき、該新規プログラムに対し、前
記事例ベース中の事例との類似度を計算して最も類似し
たプログラムを含む事例を検索する手段とを設け、前記
類似度が予め定められた範囲内と認められるときに、前
記検索手段により検索された事例に含まれるチューニン
グ前後のプログラムの対を、チューニングの参考例とし
てプログラマに教示することを特徴とするチューニング
支援システムによって達成される。
〔作用J 本発明に係るチューニング支援システムにおいては゛、
チューニング事例を蓄積する事例ベースを有するので、
チューニングに関する一般的な規則を特に作成する必要
がなく、経験的に得られた事例をそのまま蓄積すること
が可能になる。
新規プログラムが与えられたとき、本発明に係るチュー
ニング支援システムにおいては、事例ベースの中から最
も似た事例を検索する。事例ベースにはインデックスを
設定することができ、更には、ソースコードだけではな
く、プログラムの解析情報をも含められるので、効率良
く検索を行うことが可能となる。
また、類似事例に基づき、プログラム変換した場合、必
ずしも効率を向上するとは限らないが、本発明に係るチ
ューニング支援システムにおいては、効率が劣化した場
合、反例として事例ベースに蓄積する機能を有し、以後
、同じ誤ちを繰り返すことがない、すなわち、劣化した
事例に近いと評価されるプログラムが与えられた場合に
は、チューニングしない方が良いと判定する。更に、劣
化したチューニング事例を得た場合、これを反面教師と
して、チューニング前後のプログラムを逆にして事例ベ
ースに蓄積することにより、チューニング能力を充実さ
せることもできる。
〔実施例〕
以下1本発明の実施例を図面に基づいて詳細に説明する
。以下に説明する実施例は、FORTRANプログラム
を、ベクトル演算機能を有するスーパーコンピュータ用
に、より短時間で実行するように修正することを支援す
るシステムである。
従って、ここでいうチューニングは、ループ実行部分を
ベクトル演算できるように変換するものである。
第1図は、本実施例のシステム構成を示すブロック図で
あり、図中、lは事例ベース、2はソースプログラムフ
ァイル、3は修正プログラムファイル、4はブロック抽
出部、5は類似例検索部、6はプログラム変換部、7は
効率測定部、8は事例学習部、9はコンパイル部、10
は静的解析情報ファイル、+1は動的解析情報ファイル
、12は実行プログラムファイルを示している。
本実施例においては、ソースプログラムファイル2にあ
るソースプログラムをコンパイルすることにより解析情
報が得られ、静的解析情報ファイルIOに記憶される。
一方、コンパイル結果の実行可能プログラムは、実行プ
ログラムファイル12に記憶され、それについて効率測
定が行われ、その結果は動的解析情報ファイルI+に記
憶される。ソースプログラムファイル2は、必ずしも外
部記憶装置にある必要はなく、プログラムエディタのバ
ッファであっても良い。
上記事例ベースlには、第3図に示す如く、複数のチュ
ーニング事例20を記憶する。各事例20には、修正前
のブロック21.プログラム変換方法22゜チューニン
グ効果23.チューニングが成功した理由28が含まれ
る。本実施例におけるチューニングでは、ベクトル化さ
れるかどうかがプログラムの性能に大きな影響を与える
ので、ブロックとはプログラム中のループ単位とする。
上記各事例は、そのチューニングの評価尺度毎に分類し
ておく。
なお、インデックス27を設けることにより、類似性の
判定を、事例ベースの一部の事例に対してのみ行うこと
が可能になる。
上述の修正前ブロック21には、ソース情報24゜静的
解析情報25.動的解析情報26が含まれる。ここで、
静的解析情報25は、ソース情報をコンパイルして得ら
れたものであり、動的解析情報26は、プログラムを実
行して得られたものである。そして、これらの静的解析
情報25と動的解析情報26が事例20を特徴付けてい
る。
ところで、ループ実行可能な部分をベクトル演算すれば
、常に性能が改善されかというとそうではない。ループ
回数が少ないときは、ベクトル演算実行起動の負荷のた
め、逆に性能が劣化することもある。従って、事例ベー
スlには、チューニング効果23の情報を記憶すること
により、負の事例をも含めるようにしておく。
第2図は、本実施例のチューニング支援システムの動作
の概要を示すものである。以下、本図を中心として、動
作を説明する。
まず、ステップ3Iにおいて、ソースプログラムファイ
ル2から、チューニング対象のプログラムを一つ取り出
し、それを、コンパイルすることにより静的解析情報を
取得する。この静的解析情報には、第4図に示すループ
種別、CALL文の有無、110文の有無、ループ外飛
び出し文の有無。
多重ループの有無およびその多重度および再帰的演算の
有無、変数の上方向依存性の有無等を含む。
例えば。
I=1 00 20   C0NTINUE X(1)=X(I)−A(I) T=I−2 I  F (1、G E 、 N ) G OT O2
0というブロックは、rGOToループJ、rCALI
−文なしJ、「ループ回数10J等の静的解析情報で特
徴付けられる。
また、 Do   10   K=1.M3 Do   10   J=1.M2 Do   10  1=l、MI CALL   5UB(I、J、K) 10  A(I、J、K)=O。
というブロックは、[多重ループJ、rcALL文あり
」、「ループ回数可変」等の静的解析情報で特徴付けら
れる。
次に、ステップ32において、コンパイルされたプログ
ラムが実行され、動的解析情報が取得される。これによ
り、どのブロックが実行比率が高いか(チューニング効
率が上がるか)が分かる。
次に、ステップ33において、チューニングするに値す
るブロックを選択する。一般には、実行比率の高いもの
を選ぶ。これはlブロックであっても、複数ブロックで
あっても良い6 次に、ステップ34において、抽出されたブロック毎に
事例ベースに対して類似例検索を行う。ここでは、対象
とするブロックの特徴を含み、それ以外の特徴を含まな
い事例を優先的に検索する。
事例ベースにインデックスが設けられている場合には、
その一部に対して検索を行う。例えば、「実行速度」、
「ループ比率」、「ベクトル化率」または[オブジェク
トサイズ」等、効率改良の評価尺度別にインデックスを
設け、[ループ比率Jを改良する場合には、それに対応
する事例に対して検索を行うことになる。
この検索には、特徴間の評価にウェイトを設けたスコア
リング手法が使われても良い。例えば、スコアリング手
法として、ループ種別が一致すれば+2.一致しなけれ
ば−lという得点を与え、得点の高い例をより類似した
ものと判定する。
次に、ステップ35では1元のブロックと検索された類
似事例との間の類似度が、予め定めておいた閾値内にな
い場合は、もはやチューニング支援できないと判断し、
動作を終了するように分岐する。一方、類似と判定され
た事例に記憶されているチューニング効果23が負であ
る場合、すなわちプログラム変換により性能が劣化した
場合には、その事例を参考にすることは得策ではないと
判断し、ステップ34に戻り、次に類似している事例を
検索する。検索した事例が正の効果である場合には、そ
の事例を参考にすべきと判断し、ステップ36に進む。
正の場合にも、事例ベースにチューニングの成功した理
由が記憶されている場合には。
その理由が成立するか否かを調べて、成立しない場合、
その事例を採用せず、ステップ34に戻る。
ステップ36では、検索された事例に含まれるプログラ
ム変換方法に従ってチューニングを行う。
プログラム変換には1次のように種々のレベルがある。
最も単純なものは、利用者にチューニングの参考例とし
て事例に含まれる変換後のブロックを示すものであり、
最も強力なものは、プログラム変換方法に示された手法
に従って、元のプログラムを自動的に修正するものであ
る。それらの中間として、利用者に質問を繰り返しなが
ら、修正方法に関してアドバイスを行うものがある。
いま、先のrGOTo文」で特徴付けられるブロックに
対して、第5図に示されるような事例が類似と判定され
たと仮定する。
この場合、単純な方法では、チューニング事例として、
ソース情報24とプログラム変換方法22に含まれるブ
ロックの対比を利用者に示すことになる。利用者がこの
対比の意味しているところを理解して、自らエディタを
操作することによりプログラムの変更を行う。
一方、強力な方法では、自動的にカウンタ変数とその繰
り返し範囲を認識して、 Do  20  !=lOO,O,−220  X(i
)−X(i)−A(i)というDoループに変換するこ
とになる。
プログラム変換後は、その効率をステップ37で測定す
る。効率には、プログラムの実行速度、ループ比率、ベ
クトル化率、オブジェクトサイズ等を含む。
測定の結果、性能が改善されている場合は、ステップ3
8で正側として登録し、改悪されている場合は、ステッ
プ39で負側として登録する。ここで登録された新たな
事例は、以後のチューニングのとき、類似事例検索の対
象となる。
以上の説明から明らかな如く、本実施例によれば、チュ
ーニングの事例さえ事例ベースに登録しておけば、プロ
グラムの変換方法に関する一般的な規則を登録しなくと
も、チューニングを支援することが可能となる。もちろ
ん、完全に一致する事例が無い場合、プログラムの変換
の効果は、必ずしも正であるとは保証されないが、それ
が効果がなかった場合に、圧側として登録されるので、
以後、同じ誤ちを縁り返すことがない。この意味では、
本実施例に示すチューニング支援システムは、チュ〒二
ングのアドバイスの経験とともに学習して行くシステム
と位置付けることができる。
上述の実施例においては、ベクトル演算機能を有するス
ーパーコンピュータを対象とした例を示したが、本発明
はこれに限られるものではなく、任意のコンピュータに
対して適用可能である。また、適用対象とするプログラ
ムとしては、FORTRANばかりではなく、他の言語
によるものであっても構わない。
〔発明の効果〕
以上、詳細に説明した如く1本発明によれば、ハードウ
ェアの特性およびコンパイラの特性を活かして、プログ
ラムを効率良く動かすようにするチューニング支援シス
テムにおいて、チューニング前のプログラムとそのとき
に行ったプログラム変換方法の対を複数組記憶する事例
ベースと、新規プログラムが与えられたとき、該新規プ
ログラムに対し、前記事例ベース中の事例との類似度を
計算して最も類似したチューニング的のプログラムを含
む事例を検索する手段とを設け、前記類似度が予め定め
られた範囲内と認められるときに、前記検索手段により
検索された事例に含まれるプログラム変換方法を前記新
規プログラムに適用すること、または、チューニング前
のプログラムとチューニング後のプログラムとの対を複
数組記憶する事例ベースと、新規プログラムが与えられ
たとき、該新規プログラムに対し、iij+記事例ベー
ス中の事例との類似度を計算して最も類似したプログラ
ムを含む事例を検索する手段とを設け、前記類似度が予
め定められた範囲内と認められるときに、前記検索手段
により検索された事例に含まれるチューニング前後のプ
ログラムの対を、チューニングの参考例としてプログラ
マに教示することにより、必ずしも十分効率が上がるよ
うに配慮されていないプログラムを、効率が上がるよう
に変換するチューニング支援システムを実現できるとい
う顕著な効果を奏するものである。
【図面の簡単な説明】
第1図は本発明の一実施例のシステム構成を示すブロッ
ク図、第2図は実施例のチューニング支援システムの動
作の概要を示すフローチャート。 第3図は事例ベースの構成例を示す図、第4図は静的解
析情報の例を示す図、第5図は事例ベース中の事例の一
例を示す図である。 1、事例ベース、2:ソースプログラムファイル、3:
修正プログラムファイル、4ニブロック抽出部、5:類
似例検索部、6:プログラム変換部57:効率測定部、
8:事例学習部、9:コンパイル部、lO:静的解析情
報ファイル、11:動的解析情報ファイル、12:実行
プログラムファイル、27:事例インデックス、28:
成功理由。 第 2 図 第 図 静的解析清報15,22 第 図 (その1)

Claims (1)

  1. 【特許請求の範囲】 1、ハードウェアの特性およびコンパイラの特性を活か
    して、プログラムを効率良く動かすようにするチューニ
    ング支援システムにおいて、チューニング前のプログラ
    ムとそのときに行ったプログラム変換方法の対を複数組
    記憶する事例ベースと、新規プログラムが与えられたと
    き、該新規プログラムに対し、前記事例ベース中の事例
    との類似度を計算して最も類似したチューニング前のプ
    ログラムを含む事例を検索する手段とを設け、前記類似
    度が予め定められた範囲内と認められるときに、前記検
    索手段により検索された事例に含まれるプログラム変換
    方法を前記新規プログラムに適用することを特徴とする
    チューニング支援システム。 2、ハードウェアの特性およびコンパイラの特性を活か
    して、プログラムを効率良く動かすようにするチューチ
    ング支援システムにおいて、チューニング前のプログラ
    ムとチューニング後のプログラムとの対を複数組記憶す
    る事例ベースと、新規プログラムが与えられたとき、該
    新規プログラムに対し、前記事例ベース中のチューニン
    グ前のプログラムとの類似度を計算して最も類似したプ
    ログラムを含む事例を検索する手段とを設け、前記類似
    度が予め定められた範囲内と認められるときに、前記検
    索手段により検索された事例に含まれるチューニング前
    後のプログラムの対を、チューニングの参考例としてプ
    ログラマに教示することを特徴とするチューニング支援
    システム。 3、前記検索手段により検索された事例を、その類似度
    の高いチューニング事例から順次用いることを特徴とす
    る請求項1または2記載のチューニング支援システム。 4、前記事例ベース中に、チューニングを施した結果、
    プログラムの効率が向上した事例とともに、劣化した事
    例を記憶しておき、類似例を検索した結果、最も類似し
    た事例が効率向上に関して成功した(劣化しない)事例
    である場合にのみ、該事例に含まれるチューニング法を
    施すことを特徴とする請求項1〜3のいずれかに記載の
    チューニング支援システム。 5、プログラムの変換前後の効率を測定して、効率が向
    上した場合、正例として前記事例ベースに加え、効率が
    劣化した場合、反例として前記事例ベースに加えること
    を特徴とする請求項4記載のチューニング支援システム
    。 6、類似例を検索した結果、最も類似した事例が効率を
    劣化する反例である場合にも、該事例に含まれる変換を
    施し、その結果、効率が向上した場合のみ、正例として
    前記事例ベースに加えることを特徴とする請求項1〜3
    のいずれかに記載のチューニング支援システム。 7、プログラムの変換前後の効率を測定して、効率が劣
    化した場合に、変換前のプログラムと変換後のプログラ
    ムの前後を逆にして前記事例ベースに加えることを特徴
    とする請求項1〜3のいずれかに記載のチューニング支
    援システム。 8、同一機能を実現する一つのプログラムの効率を測定
    し、効率の悪いプログラムをチューニング前のプログラ
    ムとし、他をチューニング後のプログラムとして前記事
    例ベースに加えることを特徴とする請求項1〜3のいず
    れかに記載のチューニング支援システム。 9、前記プログラムの効率の評価尺度がオブジェクトコ
    ードのサイズであることを特徴とする請求項1〜8のい
    ずれかに記載のチューニング支援システム。 10、前記チューニングの対象がスーパーコンピュータ
    用プログラムであることを特徴とする請求項1〜3のい
    ずれかに記載のチューニング支援システム。 11、前記プログラムの効率の評価尺度が実行速度(加
    速率)、ループ比率またはベクトル化率のいずれかであ
    ることを特徴とする請求項10記載のチューニング支援
    システム。 12、前記事例ベースに、蓄積した事例に関するインデ
    ックスを別途記憶しておき、前記インデックスを参照す
    ることにより、類似性の判定の際に、前記事例ベース中
    の一部の事例のみを対象とすることを特徴とする請求項
    1〜11のいずれかに記載のチューニング支援システム
    。 13、前記事例ベースに、チューニングが成功した理由
    を記憶しておき、新規プログラムに対して類似と判定さ
    れた事例のチューニング法を施す際、前記理由が成立す
    るか否かを検証し、成立する場合のみ、前記事例に含ま
    れるチューニング法を施すことを特徴とする請求項1〜
    11のいずれかに記載のチューニング支援システム。
JP29783489A 1989-11-16 1989-11-16 チユーニング支援システム Pending JPH03157731A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP29783489A JPH03157731A (ja) 1989-11-16 1989-11-16 チユーニング支援システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP29783489A JPH03157731A (ja) 1989-11-16 1989-11-16 チユーニング支援システム

Publications (1)

Publication Number Publication Date
JPH03157731A true JPH03157731A (ja) 1991-07-05

Family

ID=17851758

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29783489A Pending JPH03157731A (ja) 1989-11-16 1989-11-16 チユーニング支援システム

Country Status (1)

Country Link
JP (1) JPH03157731A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4823075B2 (ja) * 2004-01-14 2011-11-24 コミサリア ア レネルジー アトミック エ オ ゼネルジー アルテルナティブ 最適化コードの自動発生システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4823075B2 (ja) * 2004-01-14 2011-11-24 コミサリア ア レネルジー アトミック エ オ ゼネルジー アルテルナティブ 最適化コードの自動発生システム

Similar Documents

Publication Publication Date Title
CN108717470B (zh) 一种具有高准确度的代码片段推荐方法
Alur et al. Syntax-guided synthesis
Wahler et al. Clone detection in source code by frequent itemset techniques
Zelle et al. Combining top-down and bottom-up techniques in inductive logic programming
US7178132B2 (en) Forward walking through binary code to determine offsets for stack walking
JPH02250188A (ja) マルチテンプレートを用いるdpマツチング方法及び装置
US11327722B1 (en) Programming language corpus generation
Watson et al. An efficient incremental DFA minimization algorithm
CN116431837B (zh) 基于大型语言模型和图网络模型的文档检索方法和装置
Bansal et al. Holist: An environment for machine learning of higher-order theorem proving (extended version)
CN108710662B (zh) 语言转换方法和装置、存储介质、数据查询系统和方法
Keil Efficient bounded Jaro-Winkler similarity based search
US8769515B2 (en) Semantic intensity based decomposition of software systems
Kontogiannis et al. Detecting code similarity using patterns
Ashok et al. Statistical model checking: black or white?
JPH03157731A (ja) チユーニング支援システム
CN110069347A (zh) 一种基于过程重要度的线程划分方法
US10108405B2 (en) Compiling apparatus and compiling method
US7305373B1 (en) Incremental reduced error pruning
US9274929B2 (en) Constraint derivation in context following for use with object code insertion
Campbell et al. Search control methods in Deep Blue
CN115794120B (zh) 一种基于高阶函数的动态程序依赖簇检测方法
Vukmirović et al. Extending a brainiac prover to lambda-free higher-order logic (technical report)
Paul et al. Autonomous theory building systems
JPH09288580A (ja) ソースプログラムの最適化装置および最適化方法