JPH10187665A - ベクトル化装置 - Google Patents

ベクトル化装置

Info

Publication number
JPH10187665A
JPH10187665A JP34928896A JP34928896A JPH10187665A JP H10187665 A JPH10187665 A JP H10187665A JP 34928896 A JP34928896 A JP 34928896A JP 34928896 A JP34928896 A JP 34928896A JP H10187665 A JPH10187665 A JP H10187665A
Authority
JP
Japan
Prior art keywords
loop
loop structure
conversion
converting
end condition
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.)
Withdrawn
Application number
JP34928896A
Other languages
English (en)
Inventor
Yasunobu Tominaga
泰伸 冨永
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 JP34928896A priority Critical patent/JPH10187665A/ja
Publication of JPH10187665A publication Critical patent/JPH10187665A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 ソースプログラムからベクトル処理機能を備
えた計算機向けのオブジェクトプログラムを生成するコ
ンパイラのベクトル化処理に関し、ベクトル化の対象と
なループを増やし、オブジェクトプログラムの実行速度
を向上させる。 【解決手段】 ループ制御変数を含まないループをルー
プ制御変数を含むループに変換するループ構造変化処理
手段と、前記ループ構造変換処理手段によって変換され
て得られたループをベクトル化するベクトル化解析手段
とを備えたベクトル化装置により、上記課題を解決す
る。

Description

【発明の詳細な説明】
【0001】
【発明の利用分野】 本発明は、所定のコンピュータプ
ログラミング言語で記述されたソースプログラムを計算
機で実行可能なオブジェクトプログラムに変換するコン
パイラに関し、特にベクトル計算機向けのオブジェクト
プログラムを生成するコンパイラの最適化処理に関す
る。
【0002】
【従来の技術】 従来は、繰り返しの回数があらかじめ
わかっていて、一つの変数を用いてループの繰り返しの
回数を制御しているループだけがベクトル化の対象とな
っており、そうでないループに関しては部分的、または
全体的にベクトル実行可能であっても、ベクトル実行さ
れずループ全体がスカラ実行されていた。
【0003】
【課題を解決するための手段】そこで、本発明では、制
御変数を有しないループを制御変数を有するループに変
換することで、ループをベクトル化の対象とする。
【0004】
【発明の実施の形態】図2に本発明の実施形態の構成を
示す。10は計算機、11は外部記憶装置、12は端末
装置である。外部記憶装置11はOS17とコンパイラ
18とソースプログラム19とオブジェクトプログラム
20が格納される。
【0005】計算機10は、CPU13とメモリ14で
構成される。計算機10が起動されると、外部記憶装置
11からOS17がメモリ14上にロードされOS15
となる。また、端末装置12より、コンパイラが起動さ
れるとコンパイラプログラム18がメモリ14上にロー
ドされ、コンパイラ16となる。コンパイラ16は指定
されたソースプログラム19をコンパイルしてオブジェ
クトプログラム20を生成する。
【0006】オブジェクトプログラム20は計算機10
または別の計算機で実行される。コンパイラ16は、図
1に示すフローに従って処理を行なう。即ち、ステップ
S1でソースプログラム19を読み込み解析し、ステッ
プS2において、プログラムの最適化の処理を行ない、
ステップS3においてオブジェクトプログラム20を生
成する。ステップS2の最適化処理はループ構造変換処
理(ステップS4)とベクトル化解析処理(ステップS
5)からなる。
【0007】図3はループの構造の一例を示す図であ
る。図中、21はループ全体の実行の回避を行なう回避
分岐条件判定部で、所定の条件(e)を満足しない場合
はループ全体を回避する。22は実行文であって、繰り
返し処理される一つまたは複数の命令である。23はル
ープを終了するか否かの判定を行なうループ出口条件判
定部で、条件(e)を満足しない場合はループを終了
し、満足する場合には、ループの実行文を繰り返す。
【0008】本発明では、例えばこのようなループを別
の構造のループに変換する。図4を用いてループ構造の
変換処理のフローを説明する。まずステップS31にお
いて、ループの終了条件を抽出する。この条件は、図3
に示した構造のループの場合にはループ出口条件判定部
23から抽出される。次にステップS32において、ル
ープ制御変数を生成する。ループ制御変数は変換前の実
行文中に登場しない新しい変数である。
【0009】次にステップS33において、ループに対
して指定されている繰り返しの回数を分析する。ループ
に対してはソースプログラム中に最適化指示行を用いる
ことで最小の繰り返しの回数または最大の繰り返しの回
数を指定することが可能である。最小の繰り返しの回数
とは、少なくともその数だけはループの実行文を繰り返
し実行する数のことであり、最大の繰り返しの回数と
は、どんなに多くてもその数だけしかループの実行文を
繰り返すことはない数のことである。
【0010】最小の繰り返しの回数が指定されている場
合には、ループ構成変化処理部3によりループ構造の変
換処理を行なう。最大の繰り返しの回数が指定されてい
る場合には、ループ構成変換処理部2によりループ構造
の変換処理を行なう。最小の繰り返しの回数も最大の繰
り返しの回数も指定されていない場合はループ構成変換
処理部1によりループ構造の変換処理を行なう。
【0011】ここで、ループ構成変換処理部1の処理に
ついて説明する。ループ構成変換処理部1は変換対象の
ループに対して最大の繰り返しの回数も最小の繰り返し
の回数も指定されていない場合にループの構造を図7に
示す構造に変換する。図7において、61は回避分岐条
件判定部で、条件(e)を満足するか否かを判定し、満
足しない場合はループ全体を回避する。回避分岐条件判
定部61は、ループ構造の変換前の回避分岐条件判定部
21に対応し、条件(e)は分岐条件判定部で判定する
条件(e)と同一である。
【0012】62は回転数設定処理部で、図4のステッ
プS32で生成したループ制御変数に対して、所定の数
値を代入する。ここで、代入される数値は、コンパイル
されて得られたオブジェクトプログラムが実行される計
算機のベクトル演算部のベクトル長と同じ数値を代入す
ることで、その計算機での演算効率のよいオブジェクト
プログラムが生成される。
【0013】63は条件判定部で、条件(e)を満足す
るか否かを判定し、条件を満足しない場合はループを終
了する。条件(e)はループ構造変換前のループの回避
分岐条件判定部21において判定する条件(e)と同一
である。64は実行文で、ループ構造変換前のループの
実行文22と同一である。65は回転数更新処理部で、
回転数設定処理部62で所定の値を代入した変数の値を
1だけ減算する。
【0014】66はループ終了条件判定部で、回転数設
定処理部62で所定の値を代入した変数の値をチェック
し、0であればループを終了し0でなければ条件判定部
63と実行文64と回転数更新処理部65の処理を繰り
返す。67はループ反復条件判定部で、条件(e)を判
定し、回転数設定処理部62以降の処理を繰り返すか否
かを判定する。条件(e)はループ構造変換前の回避分
岐条件判定部21で判定する条件(e)と同一である。
【0015】この変換により変換前は一重のループであ
ったものが二重のループに変換される。内側のループは
ループの回数があらかじめ判明しているループであるか
ら、ベクトル化の対象となり生成されるオブジェクトプ
ログラムの実行効率が向上する。図5を用いてループ構
造変換部1の処理を説明する。ステップS41におい
て、回避分岐条件判定部61に相当する回避条件判定文
を出力する。即ち、変換前のループの回避分岐条件判定
部21から抽出した条件(e)を判定し、ループの外
(最後)へ分岐する文を出力する。
【0016】ステップS42において、回転数設定処理
部62に相当する初期値設定文を出力する。ここでは、
ステップS32で生成された変数に対して、所定の値を
代入する代入文を出力する。ステップS43において、
条件判定部63に相当する条件判定文を出力する。この
条件判定文で判定される条件は変換前のループの回避条
件判定部21から抽出する。
【0017】ステップS44において、実行文64に相
当する実行文を変換前のループから抽出して出力する。
ステップS45において、ステップS32で生成された
変数の値を1だけ減じる演算及び代入を行なう文を出力
する。ステップS46において、ステップS32で生成
された変数の値が0であるか否かを判定し、値が0でな
い場合に条件判定部63へ分岐する文を出力する。
【0018】最後にステップS47において、ループ反
復条件判定部67に相当するループ反復条件判定文を出
力する。即ち、ループ構造変換前の回避分岐条件判定部
21の条件(e)を判定し、回転数設定処理部62へ分
岐する文を出力し処理を終了する。次に、ループ構成変
換処理部2の処理について説明する。ループ構成変化処
理部2は変換対象のループに対して最大の繰り返しの回
数が指定されている場合にループの構造を図8に示す構
造に変換する。
【0019】図8において、71は回避分岐条件判定部
で、条件(e)を満足するか否かを判定し、満足しない
場合はループ全体を回避する。回避分岐条件判定部71
は、ループ構造の変換前の回避分岐条件判定部21に対
応し、条件(e)は分岐条件判定部で判定する条件
(e)と同一である。72は回転数設定処理部で、図4
のステップS32で生成したループ制御変数に対して、
指定された最大の繰り返しの回数を代入する。
【0020】73は条件判定部で、条件(e)を満足す
るか否かを判定し、条件を満足しない場合はループを終
了する。条件(e)はループ構造変換前のループの回避
分岐条件判定部21において判定する条件(e)と同一
である。74は実行文で、ループ構造変換前のループの
実行文22と同一である。75は回転数更新処理部で、
回転数設定処理部72で所定の値を代入した変数の値を
1だけ減算する。
【0021】76はループ終了条件判定部で、回転数設
定処理部72で所定の値を代入した変数の値をチェック
し、0であればループを終了し0でなければ条件判定部
73と実行文74と回転数更新処理部75の処理を繰り
返す。変換後のループはループの実行回数があらかじめ
わかっている(指定された最大の繰り返しの回数)の
で、ベクトル化の対象となる。
【0022】図6を用いてループ構造変換部2の処理を
説明する。ステップS51において、回避分岐条件判定
部71に相当する回避条件判定文を出力する。即ち、変
換前のループの回避分岐条件判定部21から抽出した条
件(e)を判定し、ループの外(最後)へ分岐する文を
出力する。ステップS52において、回転数設定処理部
72に相当する初期値設定文を出力する。ここでは、ス
テップS32で生成された変数に対して、所定の値を代
入する代入文を出力する。
【0023】ステップS53において、条件判定部73
に相当する条件判定文を出力する。この条件判定文で判
定される条件は変換前のループの回避条件判定部21か
ら抽出する。ステップS54において、実行文74に相
当する実行文を変換前のループから抽出して出力する。
【0024】ステップS55において、ステップS32
で生成された変数の値を1だけ減じる演算及び代入を行
なう文を出力する。ステップS56において、ステップ
S32で生成された変数の値が0であるか否かを判定
し、値が0でない場合に条件判定部73へ分岐する文を
出力し、処理を終了する。
【0025】次に、ループ構成変換処理部3の処理につ
いて説明する。ループ構成変化処理部3は変換対象のル
ープに対して最小の繰り返しの回数が指定されている場
合にループの構造を図9に示す構造に変換する。図9に
おいて、81は回避分岐条件判定部で、条件(e)を満
足するか否かを判定し、満足しない場合はループ全体を
回避する。回避分岐条件判定部81は、ループ構造の変
換前の回避分岐条件判定部21に対応し、条件(e)は
分岐条件判定部で判定する条件(e)と同一である。
【0026】82は回転数設定処理部で、図4のステッ
プS32で生成したループ制御変数に対して、指定され
た最小の繰り返しの回数を代入する。83は実行文で、
ループ構造変換前のループの実行文22と同一である。
84は回転数更新処理部で、回転数設定処理部82で所
定の値を代入した変数の値を1だけ減算する。
【0027】85はループ終了条件判定部で、回転数設
定処理部82で所定の値を代入した変数の値をチェック
し、0であればループを終了し0でなければ実行文83
と回転数更新処理部84の処理を繰り返す。86は第二
の回避分岐条件判定部で、条件(e)を満足するか否か
を判定し、満足しない場合はループ全体を回避する。回
避分岐条件判定部86は、ループ構造の変換前の回避分
岐条件判定部21に対応し、条件(e)は分岐条件判定
部で判定する条件(e)と同一である。
【0028】87は実行文で、ループ構造変換前のルー
プの実行文22と同一である。89はループ出口条件判
定部で、変換前のループのループ出口条件判定部と同じ
である。変換後のループはループの実行回数があらかじ
めわかっている(指定された最小の繰り返しの回数)ル
ープと、実行回数がわかっていないループの二つのルー
プに変換される。実行回数があらかじめわかっているル
ープに関してはベクトル化の対象となる。
【0029】ここで、ループ構造変換部3の処理を説明
する。まず、回避分岐条件判定部81に相当する回避条
件判定文を出力する。即ち、変換前のループの回避分岐
条件判定部21から抽出した条件(e)を判定し、ルー
プの外(最後)へ分岐する文を出力する。次に、回転数
設定処理部82に相当する初期値設定文を出力する。こ
こでは、図4のステップS32で生成された変数に対し
て、所定の値を代入する代入文を出力する。
【0030】次に、実行文84に相当する実行文を変換
前のループから抽出して出力し、ステップS32で生成
された変数の値を1だけ減じる演算及び代入を行なう文
を出力する。次に、ステップS32で生成された変数の
値が0であるか否かを判定し、値が0でない場合に実行
文83へ分岐する文を出力する。
【0031】ここまでの処理で、ループ構成変換処理部
3が出力する二つのループの内の一つの生成が完了す
る。次に、回避分岐条件判定部86に相当する回避条件
判定文を出力する。即ち、変換前のループの回避分岐条
件判定部21から抽出した条件(e)を判定し、ループ
の外(最後)へ分岐する文を出力する。
【0032】次に、実行文87に相当する実行文及びル
ープ出口条件判定文を変換前のループから抽出して出力
して処理を終了する。以上説明したとおり、ループに対
して指定された最大の繰り返しの回数または最小の繰り
返しの回数に応じて、ループの構造をあらかじめ繰り返
しの回数がわかっているループを含む構造に変換する。
【0033】ループの構造を変換した後、ステップS5
において、ベクトル化解析を行ない、ベクトル化可能な
ループをベクトル化の対象とする最適化処理を行なう。
最適化処理が終了すると、ステップS3において、オブ
ジェクトプログラムを生成し、コンパイラの処理は終了
する。
【0034】
【効果】以上示した通り、制御変数を用いていないルー
プを制御変数を用いたループまたは、制御変数をもちい
たループを含む構造に変換することで、ベクトル化の対
象とされていなかったループをベクトル化の対象とする
ことで、得られるオブジェクトプログラムをベクトル処
理機能を備えた計算機で実行する際の処理速度が向上す
る。
【図面の簡単な説明】
【図1】本発明の処理のフローを示す図
【図2】計算機システムの構成を示す図
【図3】変換前のループの構造を示す図
【図4】ループ構造の変換処理のフローを示す図
【図5】ループ構造変換部1の処理のフローを示す図
【図6】ループ構造変換部2の処理のフローを示す図
【図7】第一の変換後のループ構造を示す図
【図8】第二の変換後のループ構造を示す図
【図9】第三の変換後のループ構造を示す図
【符合の説明】
S1:ソースプログラム解析処理 S2:最適化処理 S3:コード生成処理 S4:ループ構造変換処理 S5:ベクトル化解析処理 10:計算機 11:外部記憶装置 12:端末装置 13:CPU 14:メモリ 15:OS 16:コンパイラ 17:OS 18:コンパイラ 19:ソースプログラム 20:オブジェクトプログラム

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータプログラムのループをベク
    トル化するベクトル化装置であって、 ループ制御変数を含まないループをループ制御変数を含
    むループに変換するループ構造変換処理手段と、 前記ループ構造変換処理手段によって変換されて得られ
    たループをベクトル化するベクトル化解析手段とを備え
    たベクトル化装置。
  2. 【請求項2】 コンピュータプログラムのループをベク
    トル化するベクトル化装置であって、 ループ構造に対してループの繰り返しの最小回数が指定
    されている際に、変換前のループ構造を、変換前のルー
    プ中の実行文を前記最小回数繰り返すループ構造と、変
    換前のループ構造の二つのループ構造で構成される構造
    に変換するループ構造変換処理手段と、 前記ループ構造変換処理手段によって変換されて得られ
    たループをベクトル化するベクトル化解析手段とを備え
    たベクトル化装置。
  3. 【請求項3】 コンピュータプログラムのループ構造を
    変換するベクトル化装置であって、 ループ構造の中からループの終了条件を抽出する終了条
    件抽出手段と、 ループ構造に対してループの繰り返しの最大回数が指定
    されている際に、変換前のループ構造を、変換前のルー
    プ中の実行文と前記終了条件に基づくループ終了判定と
    を前記最大回数繰り返すループ構造に変換するループ構
    造変換処理手段とを備えたベクトル化装置。
  4. 【請求項4】 コンピュータプログラムのループ構造を
    変換するベクトル化装置であって、 ループ構造の中からループの終了条件を抽出する終了条
    件抽出手段と、 変換前のループ構造を、変換前のループ中の実行文と前
    記終了条件に基づくループ終了判定とを所定回数繰り返
    すループ構造と、そのループとそのループをさらに繰り
    返す第二のループ構造とからなる構造に変換するループ
    構造変換処理手段とを備えたベクトル化装置。
  5. 【請求項5】 コンピュータプログラムのループ構造を
    変換するベクトル化装置であって、 ループ構造の中からループの終了条件を抽出する終了条
    件抽出手段と、 ループ構造に対してループの繰り返しの最小回数が指定
    されている際に、変換前のループ構造を、変換前のルー
    プ中の実行文を前記最小回数繰り返すループ構造と、変
    換前のループ構造の二つのループ構造で構成される構造
    に変換する第一のループ構造変換処理手段と、 ループ構造に対してループの繰り返しの最大回数が指定
    されている際に、変換前のループ構造を、変換前のルー
    プ中の実行文と前記終了条件に基づくループ終了判定と
    を前記最大回数繰り返すループ構造に変換する第二のル
    ープ構造変換処理手段と、 変換前のループ構造を、変換前のループ中の実行文と前
    記終了条件に基づくループ終了判定とを所定回数繰り返
    すループ構造と、そのループとそのループをさらに繰り
    返す第二のループ構造とからなる構造に変換するループ
    構造変換処理手段とを備えたベクトル化変換装置。
  6. 【請求項6】 コンピュータプログラムのループ構造を
    変換するベクトル化方法であって、 ループ構造の中からループの終了条件を抽出する終了条
    件抽出ステップと、 ループ構造に対してループの繰り返しの最小回数が指定
    されている際に、変換前のループ構造を、変換前のルー
    プ中の実行文を前記最小回数繰り返すループ構造と、変
    換前のループ構造の二つのループ構造で構成される構造
    に変換する第一のループ構造変換処理ステップと、 ループ構造に対してループの繰り返しの最大回数が指定
    されている際に、変換前のループ構造を、変換前のルー
    プ中の実行文と前記終了条件に基づくループ終了判定と
    を前記最大回数繰り返すループ構造に変換する第二のル
    ープ構造変換処理ステップと、 変換前のループ構造を、変換前のループ中の実行文と前
    記終了条件に基づくループ終了判定とを所定回数繰り返
    すループ構造と、そのループとそのループをさらに繰り
    返す第二のループ構造とからなる構造に変換するループ
    構造変換処理ステップとを備えたベクトル化方法。
  7. 【請求項7】 コンピュータプログラムのループ構造を
    変換するベクトル化プログラムを格納したコンピュータ
    可読媒体であって、 ループ構造の中からループの終了条件を抽出する終了条
    件抽出機能と、 ループ構造に対してループの繰り返しの最小回数が指定
    されている際に、変換前のループ構造を、変換前のルー
    プ中の実行文を前記最小回数繰り返すループ構造と、変
    換前のループ構造の二つのループ構造で構成される構造
    に変換する第一のループ構造変換処理機能と、 ループ構造に対してループの繰り返しの最大回数が指定
    されている際に、変換前のループ構造を、変換前のルー
    プ中の実行文と前記終了条件に基づくループ終了判定と
    を前記最大回数繰り返すループ構造に変換する第二のル
    ープ構造変換処理機能と、 変換前のループ構造を、変換前のループ中の実行文と前
    記終了条件に基づくループ終了判定とを所定回数繰り返
    すループ構造と、そのループとそのループをさらに繰り
    返す第二のループ構造とからなる構造に変換するループ
    構造変換処理機能とを有するベクトル化プログラムを格
    納したコンピュータ可読媒体。
JP34928896A 1996-12-27 1996-12-27 ベクトル化装置 Withdrawn JPH10187665A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP34928896A JPH10187665A (ja) 1996-12-27 1996-12-27 ベクトル化装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP34928896A JPH10187665A (ja) 1996-12-27 1996-12-27 ベクトル化装置

Publications (1)

Publication Number Publication Date
JPH10187665A true JPH10187665A (ja) 1998-07-21

Family

ID=18402750

Family Applications (1)

Application Number Title Priority Date Filing Date
JP34928896A Withdrawn JPH10187665A (ja) 1996-12-27 1996-12-27 ベクトル化装置

Country Status (1)

Country Link
JP (1) JPH10187665A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8418157B2 (en) 2002-07-03 2013-04-09 Panasonic Corporation Compiler apparatus with flexible optimization

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8418157B2 (en) 2002-07-03 2013-04-09 Panasonic Corporation Compiler apparatus with flexible optimization

Similar Documents

Publication Publication Date Title
JP6141365B2 (ja) 逐次コンピュータプログラムコードを並列処理する方法及びシステム
JPH0814817B2 (ja) 自動ベクトル化方法
WO1990001738A1 (en) Machine process for translating programs in binary machine language into another binary machine language
US5522074A (en) Vectorization system for vectorizing loop containing condition induction variables
US5349665A (en) Compiler vectorizing system
JPH11167492A (ja) ループ飛び出し文を含むループに対する配列サマリ解析方法
JPH10187665A (ja) ベクトル化装置
JP2956591B2 (ja) ループ外への条件付き飛び出しがあるループの並列化方法及び装置
JPH0540780A (ja) ベクトル化処理方式
JP3757825B2 (ja) プロセッサ間通信削減方法と並列化コンパイラ装置並びにプログラム
JPH0512033A (ja) 並列化コンパイル方式
JP3034582B2 (ja) コンパイル処理方式
JPH06222928A (ja) ループ最適化方法
JPH11195011A (ja) 言語翻訳処理装置、言語翻訳処理方法、言語翻訳処理プログラムを記録した記録媒体
JP2801193B2 (ja) インダクション変数のベクトル化処理装置
JPS6015772A (ja) ル−プ内配列処理ベクトル化処理方式
JPS61285544A (ja) コンパイル方法
JPH0795275B2 (ja) コンパイル処理装置
JP2001075831A (ja) プログラム処理装置、ic試験システム、プログラム処理方法及び記憶媒体
JPH0535494A (ja) 高級プログラム言語の対話型最適化コンパイル方式
JP2853604B2 (ja) 無限ループのベクトル化処理方式
JP3141945B2 (ja) コンパイル装置
JPH05120322A (ja) Doループ演算の自動高速化方式
JP2001175617A (ja) コンパイラ並列化方法
JP2004021428A (ja) プログラム変換方法、これを用いたデータ処理装置及びプログラム

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20040302