JPH064300A - 多重ループの一重化装置 - Google Patents

多重ループの一重化装置

Info

Publication number
JPH064300A
JPH064300A JP15904092A JP15904092A JPH064300A JP H064300 A JPH064300 A JP H064300A JP 15904092 A JP15904092 A JP 15904092A JP 15904092 A JP15904092 A JP 15904092A JP H064300 A JPH064300 A JP H064300A
Authority
JP
Japan
Prior art keywords
loop
deviation
loops
relation
multiplex
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
JP15904092A
Other languages
English (en)
Inventor
Hizuru Nakamura
ひづる 中村
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 JP15904092A priority Critical patent/JPH064300A/ja
Publication of JPH064300A publication Critical patent/JPH064300A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 本発明は、ソースプログラムの多重ループを
一重化する一重化装置に関し、コンパイラで最適化時に
多重ループのうち一重化できる部分を認識して分離し、
一重化を行い、ループ数を削減して実行性能を向上させ
ることを目的とする。 【構成】 ソースプログラムから多重ループを取り出す
ループ解析部5と、このループ解析部5によって取り出
した多重ループについて、当該多重ループ内の配列の引
用関係にずれがない部分を判定する使用関係認識部6
と、この使用関係認識部6によって判定された引用関係
にずれがない部分を分離し、一重化構造に変更するルー
プ構造変更部7とを備え、多重ループを一重化するよう
に構成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ソースプログラムの多
重ループを一重化する一重化装置に関するものである。
【0002】
【従来の技術】従来のコンパイラで、タイトリな多重ル
ープ(最内ループ以外の各ループ間に実行文が存在しな
いループ群)に対するベクトル化向け最適化に、ループ
の一重化(多重ループにおいて、配列の使用関係が連続
であった場合、ループを一次元化する最適化手法)があ
る。このとき、多重ループ内で配列の引用関係にずれが
あった場合、その実行部分を分離(分割)しないため、
一重化処理を行っていなかった。例えば DO 20 J=1、10 DO 10 I=1、10 A(I、J)=A(I、J)+B(I、J) B(I、J−1)=A(I、J−1)*2.0 C(I、J)=A(I、J)+1.0 10 CONTINUE 20 CONTINUE という2重ループがあった場合、当該2重ループ内で配
列の引用関係にずれ、例えば下線の部分の配列の引用関
係がJとJ−1でずれがあるので、このままでは一重化
を行うことができず、従来は、一重化を行っていなかっ
た。
【0003】
【発明が解決しようとする課題】上述したように、従来
は、タイトリな多重ループに対するベクトル化向けの最
適化時に、多重ループ内の配列の引用関係にずれがあっ
た場合、一重化を行っていなかったため、後の段階でベ
クトル化ができず、ループ数が増えて高速化が図れない
という問題があった。
【0004】本発明は、これを解決するために、コンパ
イラで最適化時に多重ループのうち一重化できる部分を
認識して分離し、一重化を行い、ループ数を削減して実
行性能を向上させることを目的としている。
【0005】
【課題を解決するための手段】図1を参照して課題を解
決するための手段を説明する。図1において、ループ解
析部5は、ソースプログラムから多重ループを取り出す
ものである。
【0006】使用関係認識部6は、多重ループ内の配列
の引用関係にずれがない部分とずれがある部分とを判定
するものである。ループ構造変更部7は、引用関係にず
れがない部分とずれがある部分に分離し、ずれがない部
分を一重化構造に変更するものである。
【0007】
【作用】本発明は、図1に示すように、ループ解析部5
がソースプログラムから多重ループを取り出し、使用関
係認識部6がこの取り出した多重ループ内の配列の引用
関係にずれがない部分とずれがある部分とを判定し、ル
ープ構造変更部7が引用関係にずれがない部分とずれが
ある部分に分離し、ずれがない部分を一重化構造に変更
するようにしている。
【0008】従って、コンパイラで最適化時に多重ルー
プのうち一重化できる部分を認識して分離し、一重化を
行うことにより、ループ数を削減して実行性能を向上さ
せることが可能となる。
【0009】
【実施例】次に、図1から図3を用いて本発明の実施例
の構成および動作を詳細に説明する。
【0010】図1は、本発明の1実施例構成図を示す。
図1において、ソースプログラム1は、コンパイル対象
のソースプログラムであって、ここでは、図3の(a)
にイメージ的に示すような多重ループを含むソースプロ
グラムである。
【0011】コンパイラ2は、ソースプログラム1をコ
ンパイル(翻訳)し、実行可能形式のオブジェクトプロ
グラム9を生成するものであって、ここでは、ソースプ
ログラム解析部3、最適化部4、コード生成部8などか
ら構成されるものである。
【0012】ソースプログラム解析部3は、ソースプロ
グラム1について形態素解析、構文解析などを行い、中
間コードを生成し、最適化部4に渡すものである。最適
化部4は、ソースプログラム解析部3によってソースプ
ログラム1を解析した結果の中間コードを受け取り、こ
こでは、多重ループを検出して配列にずれがない部分を
分離して一重化するものであって、ループ解析部5、使
用関係認識部6およびループ構造変更部7から構成され
るものである。
【0013】ループ解析部5は、ソースプログラム解析
部3がソースプログラム1を解析して生成した中間コー
ドから、多重ループの部分を検出するものである。例え
ば図3の(a)に示すような多重ループを検出するもの
である。
【0014】使用関係認識部6は、ループ解析部5によ
って検出した多重ループ内の配列の引用関係を解析して
ずれがある部分を一重化不可能、ずれがない部分を一重
化可能と判定するものである。例えば後述する図3の
(a)に示すように、多重ループ内の、の引用関係A
(I、J)と、の引用関係A(I、J)とがここでは
ずれがなく一重化可能と判定する。一方、多重ループ内
のの引用関係A(I、J)と、の引用関係A(I、
J−1)とがここではずれがあり一重化不可能と判定す
る。
【0015】ループ構造変更部7は、使用関係認識部6
によって配列の引用関係にずれがないと判定された部分
について、実行文の順序を入れ換えて分離し、一重化構
造に変更するものである(図3の(a)の右側に記載し
た判定のうち、一重化可能な部分のみを分離し、図3の
(b)のようにした後、図3の(c)に示すように一重
化構造に変更する)。
【0016】コード生成部8は、最適化部4によって最
適化された、ここでは多重ループのうちの配列の引用関
係にずれのない部分を分離して一重化した後の中間コー
ドをもとに、実行可能形式のコードを生成し、オブジェ
クトプログラム9を作成するものである。
【0017】オブジェクトプログラム9は、実行可能形
式のプログラムである。次に、図2のフローチャートに
示す順序に従い、図3の具体例を参照しつつ図1の構成
の動作を詳細に説明する。
【0018】図2において、S1は、多重ループの取り
出しを行う。これは、ループ解析部5がソースプログラ
ム解析部3によって解析された結果(中間コード)から
多重ループ、例えば図3の(a)多重ループを取り出
す。
【0019】S2は、配列の引用関係のチェックを行
う。これは、S1で取り出した多重ループの配列の引用
関係をチェックし、ずれがある部分と、ずれがない部分
とを判定する。例えば図3の(a)の右側に記載したよ
うに、例えば <、>=<0、0> 一重可能 と判定する。即ち、図3の(a)ののA(I、J)
と、のA(I、J)と比較し、ここでは配列の引用関
係がともにI、Jであってずれがないので、<0、0>
となり、一重可能と判定する。同様にして多重ループ内
の全ての配列の引用関係をチェックする。
【0020】S3は、ずれが有りか判別する。YESの
場合には、配列の引用関係にずれがあったので、S4で
配列の引用関係のずれがある部分と、ずれがない部分と
を分離する。一方、NOの場合には、配列の引用関係に
ずれがなく、多重ループの全体の一重化可能と判明した
ので、S5で一重化を行う。
【0021】S5は、S4で配列の引用関係のずれがあ
る部分と、ずれがない部分とを分離したうちの、ずれが
ない部分のループを一重にする。即ち、図3の(a)で
配列の引用関係にずれがない部分と、ずれがある部分と
を図3の(b)に示すように分離し、更に、図3の
(c)に示すように、ずれがない部分について実行文の
順序を入れ換えて分離した後、一重化構造に変更する。
【0022】S6は、S4で配列の引用関係のずれがあ
る部分と、ずれがない部分とを分離したうちの、ずれが
ある部分のループをそのままとする。これは、配列の引
用関係にずれがあり一重化できないので、そのまま多重
ループとし、図3の(c)のそのままと記載したよう
に、残りのずれがある部分のループを多重ループのまま
とする。
【0023】以上によって、多重ループについて、配列
の引用関係にずれがない一重化可能な部分と、ずれがあ
って一重化不可能な部分とを分離し、一重化可能なずれ
がない部分について一重化構造に変更する。これによ
り、多重ループのうちから一重化可能な部分のみを分離
して一重化し、多重ループのうちの一重化する適用範囲
を広げ、これに続くベクトル化の段階でループ回数を削
減し、実行性能を向上させることが可能となる。
【0024】図3は、本発明の具体例を示す。図3の
(a)は、多重ループ例を示す。これは、ソースプログ
ラム解析部3がソースプログラムを形態素解析、構文解
析などした後の中間コードから、ループ解析部5が多重
ループの部分を検出して取り出した例である。ここで、
下線の部分に記載したからの配列の引用関係につい
て、右側にデータの使用関係として記載し、その結果と
して一重化可能/一重化不可能を記載する。
【0025】<、>=<0、0> 一重化可能 について説明する。のA(I、J)と、のA(I、
J)とは、前者の引用関係Iと後者の引用関係Iとがず
れがなく、かつ前者の引用関係Jと後者の引用関係Jと
がずれがないので、<0、0>と表し、一重化可能と判
定する。
【0026】<、>=<0、+1> 一重化不可能 について説明する。のA(I、J)と、のA(I、
J−1)とは、前者の引用関係Iと後者の引用関係Iと
がずれがないが、前者の引用関係Jと後者の引用関係J
−1とがずれがあるので、<0、+1>と表し、一重化
不可能と判定する。
【0027】<、>=<0、0> 一重化可能 について説明する。のA(I、J)と、のA(I、
J)とは、前者の引用関係Iと後者の引用関係Iとがず
れがなく、かつ前者の引用関係Jと後者の引用関係Jと
がずれがないので、<0、0>と表し、一重化可能と判
定する。
【0028】<、>=<0、+1> 一重化不可能 について説明する。のB(I、J)と、のB(I、
J−1)とは、前者の引用関係Iと後者の引用関係Iと
がずれがないが、前者の引用関係Jと後者の引用関係J
−1とがずれがあるので、<0、+1>と表し、一重化
不可能と判定する。
【0029】以上によって、図3の(a)の多重ループ
のうち、A、Cが配列の引用関係にずれがなく一重化可
能と判定し、Bが配列の引用関係にずれがあり一重化不
可能と判定する。
【0030】図3の(b)は、分離例を示す。これは、
図3の(a)の配列の引用関係にずれがなく、一重化可
能と判定されたA、Cの実行文の順序を入れ換えてまと
めたものである。一重化不可能と判定されたBについて
は、そのまま図示のようにコピーし、I’、J’という
ように新たに作成する。
【0031】以上によって、多重ループのうち一重化可
能な配列の引用関係にずれがない部分と、ずれがある部
分とを分離したこととなる。図3の(c)は、一重化例
を示す。これは、図3の(b)の一重化可能な部分につ
いて、一重化構造に変更したものである。具体的に言え
ば、図3の(b)の一重化可能な部分のI、Jをまとめ
てIJとし、 というように一重化する。一重化不可能の部分は、図示
のようにもとのままの多重ループとする。
【0032】以上によって、多重ループのうちの一重化
可能な部分について、ここではIJとまとめて一重化構
造に変更する。
【0033】
【発明の効果】以上説明したように、本発明によれば、
多重ループ内の配列の引用関係にずれがない部分と、ず
れがある部分とを分離し、ずれがない部分について一重
化構造に変更する構成を採用しているため、多重ループ
のうちの一重化する適用範囲を拡大し、一重化を促進す
ることができる。これにより、 (1) この一重化に続くベクトル化の段階の最適化で
ループ数を削減でき、実行性能を向上させることが可能
となる (2) 従来の多重ループの一部にでも一重化不可能な
部分が含まれていたときに一重化していなかった場合に
比し、多重ループのうちの一重化可能な部分のみを分離
し、この分離した部分を一重化構造に変更し、ダイナミ
ックスステップ数を削減し、実行性能を向上できる。
【図面の簡単な説明】
【図1】本発明の1実施例構成図である。
【図2】本発明の動作説明フローチャートである。
【図3】本発明の具体例である。
【符号の説明】
1:ソースプログラム 2:コンパイラ 3:ソースプログラム解析部 4:最適化部 5:ループ解析部 6:使用関係認識部 7:ループ構造変更部 8:コード生成部 9:オブジェクトプログラム

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】ソースプログラムの多重ループを一重化す
    る一重化装置において、 ソースプログラムから多重ループを取り出すループ解析
    部(5)と、 このループ解析部(5)によって取り出した多重ループ
    について、当該多重ループ内の配列の引用関係にずれが
    ない部分を判定する使用関係認識部(6)と、 この使用関係認識部(6)によって判定された引用関係
    にずれがない部分を分離し、一重化構造に変更するルー
    プ構造変更部(7)とを備え、 多重ループを一重化するように構成したことを特徴とす
    る多重ループの一重化装置。
JP15904092A 1992-06-18 1992-06-18 多重ループの一重化装置 Pending JPH064300A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP15904092A JPH064300A (ja) 1992-06-18 1992-06-18 多重ループの一重化装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP15904092A JPH064300A (ja) 1992-06-18 1992-06-18 多重ループの一重化装置

Publications (1)

Publication Number Publication Date
JPH064300A true JPH064300A (ja) 1994-01-14

Family

ID=15684928

Family Applications (1)

Application Number Title Priority Date Filing Date
JP15904092A Pending JPH064300A (ja) 1992-06-18 1992-06-18 多重ループの一重化装置

Country Status (1)

Country Link
JP (1) JPH064300A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62157119A (ja) * 1985-12-28 1987-07-13 Sumitomo Heavy Ind Ltd 搬送コンベヤラインにおけるタイヤ自動供給装置
US5681296A (en) * 1994-07-11 1997-10-28 Terumo Kabushiki Kaisha Catheter tube and a method of processing the inner surface of a tube
KR100854720B1 (ko) * 2007-03-23 2008-08-27 삼성전자주식회사 루프 통합 방법 및 루프 통합 장치

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62157119A (ja) * 1985-12-28 1987-07-13 Sumitomo Heavy Ind Ltd 搬送コンベヤラインにおけるタイヤ自動供給装置
US5681296A (en) * 1994-07-11 1997-10-28 Terumo Kabushiki Kaisha Catheter tube and a method of processing the inner surface of a tube
US5885508A (en) * 1994-07-11 1999-03-23 Terumo Kabushiki Kaisha Catheter tube and a method of processing the inner surface of a tube
KR100854720B1 (ko) * 2007-03-23 2008-08-27 삼성전자주식회사 루프 통합 방법 및 루프 통합 장치
US8549507B2 (en) 2007-03-23 2013-10-01 Samsung Electronics Co., Ltd. Loop coalescing method and loop coalescing device

Similar Documents

Publication Publication Date Title
US20040049768A1 (en) Method and program for compiling processing, and computer-readable medium recoding the program thereof
US5586020A (en) Program transformation processing system and method
EP0425078A2 (en) Vectorization method
US20110246962A1 (en) State machine expressions in database operators
US5596732A (en) Method of optimizing instruction sequence of compiler
JP3053092B2 (ja) 並列化コンパイル方法
US5522074A (en) Vectorization system for vectorizing loop containing condition induction variables
US11429359B2 (en) Method of deadlock detection and synchronization-aware optimizations on asynchronous architectures
JPH064300A (ja) 多重ループの一重化装置
JP3651579B2 (ja) コンピュータシステム、プログラム変換方法および記憶媒体
JPH06202875A (ja) インライン展開による最適化を行うコンパイラ
JP2956591B2 (ja) ループ外への条件付き飛び出しがあるループの並列化方法及び装置
JPH06124211A (ja) プログラム解析装置
JPS6278634A (ja) プログラムの誤り検出処理方式
Martínez López et al. Principal type specialisation
JPH11161498A (ja) 知識情報の分析方法及び知識情報処理システム及び記憶媒体
JPS62259147A (ja) 構文解析方式
JPH08328868A (ja) 目的コード最適化装置及び方法
JP2011203960A (ja) テンプレートコンパイル方法及びテンプレートコンパイル装置
JP2007133536A (ja) 故障検出プログラム作成装置、プリプロセッサ、故障検出プログラム作成方法、及びプログラム
JPH01295336A (ja) クリティカルセクション最適化方式
JPH05241837A (ja) 規則集合生成装置
JPH11203273A (ja) 多重ループのベクトル化装置および記録媒体
JPH0231236A (ja) コンパイラ
JPH05143357A (ja) プログラム自動並列化方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20020423