JPH02253472A - ベクトル化方式 - Google Patents
ベクトル化方式Info
- Publication number
- JPH02253472A JPH02253472A JP7583589A JP7583589A JPH02253472A JP H02253472 A JPH02253472 A JP H02253472A JP 7583589 A JP7583589 A JP 7583589A JP 7583589 A JP7583589 A JP 7583589A JP H02253472 A JPH02253472 A JP H02253472A
- Authority
- JP
- Japan
- Prior art keywords
- loop
- loops
- intermediate text
- program
- execution time
- 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
Links
Landscapes
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は電子計算機システムのコンパイラにおけるベク
トル化方式に関するものである。
トル化方式に関するものである。
(従来の技術〕
ベクトル演算が可能な電子計算機においては、その機能
を充分発揮するため、可能な限り目的プログラムにおい
てベクトル命令を使用することが好ましい、なお、ベク
トル命令で実行できる部分は、FORTRAN等の高級
プログラミング言語で記述された原始プログラムにおい
てはDoループを構成する部分である。
を充分発揮するため、可能な限り目的プログラムにおい
てベクトル命令を使用することが好ましい、なお、ベク
トル命令で実行できる部分は、FORTRAN等の高級
プログラミング言語で記述された原始プログラムにおい
てはDoループを構成する部分である。
従って、ベクトル演算機能を有した電子計算機で実行さ
せる目的プログラムを生成するコンパイラにおいては、
原始プログラム中のDOループを検出してベクトル命令
に置き換える操作(ベクトル化)を行うようにしている
。
せる目的プログラムを生成するコンパイラにおいては、
原始プログラム中のDOループを検出してベクトル命令
に置き換える操作(ベクトル化)を行うようにしている
。
ところで、多重ループは原則として最深のループのみを
ベクトル化の対象とするが、ループの入れ換えを行って
ベクトル化を行うことにより実行時間の短縮が図れる場
合があるため、そのような場合はループの入れ換えを行
ってベクトル化するようにしている。なお、多重ループ
内の定数が実行時にならないとわからないためにループ
の入れ換えによる実行時間の短縮が図れるか否かが不明
である場合には、従来のコンパイラは、ループの入れ換
えを行わないでベクトル化を行うようにしていた。
ベクトル化の対象とするが、ループの入れ換えを行って
ベクトル化を行うことにより実行時間の短縮が図れる場
合があるため、そのような場合はループの入れ換えを行
ってベクトル化するようにしている。なお、多重ループ
内の定数が実行時にならないとわからないためにループ
の入れ換えによる実行時間の短縮が図れるか否かが不明
である場合には、従来のコンパイラは、ループの入れ換
えを行わないでベクトル化を行うようにしていた。
(発明が解決しようとする課題〕
上述したように、従来のコンパイラでは多重ループ内の
定数が実行時にならないとわからないためにループの入
れ換えによる実行時間の短縮が図れるか否かが不明であ
る場合にはループの入れ換えを行わないでベクトル化を
行うようにしていたため、実際にはループの入れ換えに
より実行時間が短縮されるような場合であっても対処す
ることはできず、その結果、実行時間短縮の効果が充分
でないという欠点があった。
定数が実行時にならないとわからないためにループの入
れ換えによる実行時間の短縮が図れるか否かが不明であ
る場合にはループの入れ換えを行わないでベクトル化を
行うようにしていたため、実際にはループの入れ換えに
より実行時間が短縮されるような場合であっても対処す
ることはできず、その結果、実行時間短縮の効果が充分
でないという欠点があった。
本発明は上記の点に鑑み捷案されたものであり、その目
的2するところは、多重ループ内の定数が実行時になら
ないとわからないためにループの入れ換えによる実行時
間の短縮が図れるか否かが不明である場合であっても、
ループの入れ換えをしたものとしないものとを適宜に選
択して実行時間の短縮が図れるベクトル化方式を従供す
ることにある。
的2するところは、多重ループ内の定数が実行時になら
ないとわからないためにループの入れ換えによる実行時
間の短縮が図れるか否かが不明である場合であっても、
ループの入れ換えをしたものとしないものとを適宜に選
択して実行時間の短縮が図れるベクトル化方式を従供す
ることにある。
(課題を解決するための手段〕
本発明は上記の目的を達成するため、高級プログラミン
グ言語で記述された原始プログラムを入力し、目的プロ
グラムを生成するコンパイラにおいて、 原始プログラムを入力し、構文解析を行って中間テキス
トを生成する構文解析部と、 生成された中間テキストを入力し、原始プログラム中の
多重ループ部分を検出し、該多重ループに対してループ
の入れ換えによるベクトル化が可能か否かを判定し、ベ
クトル化可能であれば該多重ループのループの入れ換え
の判定に必要な情報を多重ループ情報テーブルとして格
納する多重ループ情報抽出部と、 前記中間テキストを読み込み、前記多重ループ情報テー
ブルをもとに、実行時にならないとループの入れ換えに
よる実行時間の短縮が可能であるか否かを判定できない
多重ループに対して、ループの入れ換えを行いベクトル
化を行った中間テキストとループの入れ換えを行わない
でベクトル化を行った中間テキストとループの入れ換え
を行うことにより実行時間が短縮されるか否かを実行時
に判定して実行時間が短縮される方の目的プログラムを
実行させる中間テキストとに変形する中間テキスト変形
部と、 変形された中間テキストを入力し、目的プログラムを生
成する目的プログラム生成部とを備えるようにしている
。
グ言語で記述された原始プログラムを入力し、目的プロ
グラムを生成するコンパイラにおいて、 原始プログラムを入力し、構文解析を行って中間テキス
トを生成する構文解析部と、 生成された中間テキストを入力し、原始プログラム中の
多重ループ部分を検出し、該多重ループに対してループ
の入れ換えによるベクトル化が可能か否かを判定し、ベ
クトル化可能であれば該多重ループのループの入れ換え
の判定に必要な情報を多重ループ情報テーブルとして格
納する多重ループ情報抽出部と、 前記中間テキストを読み込み、前記多重ループ情報テー
ブルをもとに、実行時にならないとループの入れ換えに
よる実行時間の短縮が可能であるか否かを判定できない
多重ループに対して、ループの入れ換えを行いベクトル
化を行った中間テキストとループの入れ換えを行わない
でベクトル化を行った中間テキストとループの入れ換え
を行うことにより実行時間が短縮されるか否かを実行時
に判定して実行時間が短縮される方の目的プログラムを
実行させる中間テキストとに変形する中間テキスト変形
部と、 変形された中間テキストを入力し、目的プログラムを生
成する目的プログラム生成部とを備えるようにしている
。
本発明のベクトル化方式にあっては、構文解析部が原始
プログラムを入力し構文解析を行って中間テキストを生
成し、多重ループ情報抽出部が生成された中間テキスト
を入力し、原始プログラム中の多重ループ部分を検出し
、該多重ループに対してループの入れ換えによるベクト
ル化が可能か否かを判定し、ベクトル化可能であれば該
多重ループのループの入れ換えの判定に必要な情報を多
重ループ情報テーブルとして格納し、中間テキスト変形
部が前記中間テキストを読み込み、前記多重ループ情報
テーブルをもとに、実行時にならないとループの入れ換
えによる実行時間の短縮が可能であるか否かを判定でき
ない多重ループに対して、ループの入れ換えを行いベク
トル化を行った中間テキストとループの入れ換えを行わ
ないでべクトル化を行った中間テキストとループの入れ
換えを行うことにより実行時間が短縮されるか否かを判
定して実行時間が短縮される方の目的プログラムを実行
する中間テキストとに変形し、目的プログラム生成部が
変形された中間テキストを入力し、目的プログラムを生
成する。
プログラムを入力し構文解析を行って中間テキストを生
成し、多重ループ情報抽出部が生成された中間テキスト
を入力し、原始プログラム中の多重ループ部分を検出し
、該多重ループに対してループの入れ換えによるベクト
ル化が可能か否かを判定し、ベクトル化可能であれば該
多重ループのループの入れ換えの判定に必要な情報を多
重ループ情報テーブルとして格納し、中間テキスト変形
部が前記中間テキストを読み込み、前記多重ループ情報
テーブルをもとに、実行時にならないとループの入れ換
えによる実行時間の短縮が可能であるか否かを判定でき
ない多重ループに対して、ループの入れ換えを行いベク
トル化を行った中間テキストとループの入れ換えを行わ
ないでべクトル化を行った中間テキストとループの入れ
換えを行うことにより実行時間が短縮されるか否かを判
定して実行時間が短縮される方の目的プログラムを実行
する中間テキストとに変形し、目的プログラム生成部が
変形された中間テキストを入力し、目的プログラムを生
成する。
以下、本発明の実施例につき図面を参照して説明する。
第1図は本発明のベクトル化方式を適用したコンパイラ
の一実施例を示す構成図である。第1図において、コン
パイラ2は構文解析部21と多重ループ情報抽出部22
と中間テキスト変形部23と目的プログラム生成部24
とから構成され、原始プログラムlを読み込み一目的プ
ログラム6を生成するようになっている。また、処理の
過程において第1中間テキスト3と多重ループ情報テー
ブル4と第2中間テキスト5とを生成する。なお、各部
の機能については以下の動作を通して説明する。
の一実施例を示す構成図である。第1図において、コン
パイラ2は構文解析部21と多重ループ情報抽出部22
と中間テキスト変形部23と目的プログラム生成部24
とから構成され、原始プログラムlを読み込み一目的プ
ログラム6を生成するようになっている。また、処理の
過程において第1中間テキスト3と多重ループ情報テー
ブル4と第2中間テキスト5とを生成する。なお、各部
の機能については以下の動作を通して説明する。
原始プログラムlが用意され、コンパイラ2が起動され
ると、コンパイラ2の構文解析部21はその原始プログ
ラムlを入力して構文解析を行い、第1中間テキスト3
を生成する。
ると、コンパイラ2の構文解析部21はその原始プログ
ラムlを入力して構文解析を行い、第1中間テキスト3
を生成する。
次いで、多重ループ情報抽出部22は構文解析部21に
より生成された第1中間テキスト3を入力し、原始プロ
グラムl中の多重ループ部分を検出し、その多重ループ
に対してループの入れ換えによるベクトル化が可能か否
かを判定し、ベクトル化可能であればその多重ループの
ループの入れ換えの判定に必要な情報を多重ループ情報
テーブル4として格納する。
より生成された第1中間テキスト3を入力し、原始プロ
グラムl中の多重ループ部分を検出し、その多重ループ
に対してループの入れ換えによるベクトル化が可能か否
かを判定し、ベクトル化可能であればその多重ループの
ループの入れ換えの判定に必要な情報を多重ループ情報
テーブル4として格納する。
次いで、中間テキスト変形部23は第1中間テキスト3
を読み込むと共に、多重ループ情報テーブル4をもとに
、実行時にならないとループの入れ換えによる実行時間
の短縮が可能であるか否かを判定できない多重ループに
対して、次の部分から構成される第2中間テキスト5に
変形して出力する。
を読み込むと共に、多重ループ情報テーブル4をもとに
、実行時にならないとループの入れ換えによる実行時間
の短縮が可能であるか否かを判定できない多重ループに
対して、次の部分から構成される第2中間テキスト5に
変形して出力する。
■ループの入れ換えを行いベクトル化を行った中間テキ
スト ■ループの入れ換えを行わないでベクトル化を行った中
間テキスト ■ループの入れ換えを行うことにより実行時間が短縮さ
れるか否かを実行時に判定して実行時間が短縮される方
の目的プログラムを実行させる中間テキスト 次いで、目的プログラム生成部24は第2中間テキスト
5を入力し、対応するコードに置き換えて目的プログラ
ム6を生成する。
スト ■ループの入れ換えを行わないでベクトル化を行った中
間テキスト ■ループの入れ換えを行うことにより実行時間が短縮さ
れるか否かを実行時に判定して実行時間が短縮される方
の目的プログラムを実行させる中間テキスト 次いで、目的プログラム生成部24は第2中間テキスト
5を入力し、対応するコードに置き換えて目的プログラ
ム6を生成する。
第2図は高級プログラミング言語としてFORTRAN
言語を用いて記述された原始プログラムlの桝を示した
ものであり、利用者手続き引用文11.12により外部
サブルーチンSUBを呼び出すプログラムとなっている
。なお、外部サブルーチンSUB中に多重ループ13が
含まれている。
言語を用いて記述された原始プログラムlの桝を示した
ものであり、利用者手続き引用文11.12により外部
サブルーチンSUBを呼び出すプログラムとなっている
。なお、外部サブルーチンSUB中に多重ループ13が
含まれている。
しかして、上記の多重ループ13は各Doループの終値
パラメータが外部サブルーチンSUBの仮引数M、Nと
して与えられるため、コンパイルの段階ではループの入
れ換えにより実行時間の短縮が図れるか否かを判定する
ことはできず、よって、中間テキスト変形部23(第1
図参照)において、ループの入れ換えを行いベクトル化
を行った中間テキストと、ループの入れ換えを行わない
でベクトル化を行った中間テキストと、ループの入れ換
えを行うことにより実行時間が短縮されるか否かを実行
時に判定して実行時間が短縮される方の目的プログラム
を実行させる中間テキストとを有した第2中間テキスト
5が生成され、目的プログラム生成部24によりそれら
に対応した目的プログラム6が生成される。
パラメータが外部サブルーチンSUBの仮引数M、Nと
して与えられるため、コンパイルの段階ではループの入
れ換えにより実行時間の短縮が図れるか否かを判定する
ことはできず、よって、中間テキスト変形部23(第1
図参照)において、ループの入れ換えを行いベクトル化
を行った中間テキストと、ループの入れ換えを行わない
でベクトル化を行った中間テキストと、ループの入れ換
えを行うことにより実行時間が短縮されるか否かを実行
時に判定して実行時間が短縮される方の目的プログラム
を実行させる中間テキストとを有した第2中間テキスト
5が生成され、目的プログラム生成部24によりそれら
に対応した目的プログラム6が生成される。
第3図は第2図の多重ループ13の部分の実行を行う目
的プログラム6を概念的に示したものであり、終値パラ
メータM、Nの大小を判定して分岐を行うプログラム部
分6aと、ループの入れ換えを行わないでベクトル化し
た目的プログラムのプログラム部分6bと、ループの入
れ換えを行いベクトル化した目的プログラムのプログラ
ム部分6Cとから構成されている。
的プログラム6を概念的に示したものであり、終値パラ
メータM、Nの大小を判定して分岐を行うプログラム部
分6aと、ループの入れ換えを行わないでベクトル化し
た目的プログラムのプログラム部分6bと、ループの入
れ換えを行いベクトル化した目的プログラムのプログラ
ム部分6Cとから構成されている。
上記の目的プログラム6の実行にあっては、利用者手続
き引用文11により呼び出されて実行される時にはM−
10000,N−10であるため、判断を実行するプロ
グラム部分6aにおいてM〉Nとなり、続くループの入
れ換えを行わなかったプログラム部分6bが実行される
と共に、プログラム部分6Cはスキップされることとな
る。また、利用者手続き引用文12により呼び出されて
実行される時にはM−10,N−10000であるため
、M<Nとなり、ステップL1にジャンプしてループの
入れ換えを行ったプログラム部分6Cが実行される。こ
の点、従来であれば多重ループ13は常にループの入れ
換えを行わず内部のループのみをベクトル化して実行し
ており、よって、利用者手続き引用文12によって多重
ループ13の部分が実行される場合は繰り返し数の少な
い内部ループがベクトル化されるため充分な実行時間の
短縮が図れなかったものであるが、本発明によればいず
れの場合でも繰り返し数の多い側のループが入れ換えに
よりベクトル化されるため、充分な実行時間の短縮を図
ることができる。
き引用文11により呼び出されて実行される時にはM−
10000,N−10であるため、判断を実行するプロ
グラム部分6aにおいてM〉Nとなり、続くループの入
れ換えを行わなかったプログラム部分6bが実行される
と共に、プログラム部分6Cはスキップされることとな
る。また、利用者手続き引用文12により呼び出されて
実行される時にはM−10,N−10000であるため
、M<Nとなり、ステップL1にジャンプしてループの
入れ換えを行ったプログラム部分6Cが実行される。こ
の点、従来であれば多重ループ13は常にループの入れ
換えを行わず内部のループのみをベクトル化して実行し
ており、よって、利用者手続き引用文12によって多重
ループ13の部分が実行される場合は繰り返し数の少な
い内部ループがベクトル化されるため充分な実行時間の
短縮が図れなかったものであるが、本発明によればいず
れの場合でも繰り返し数の多い側のループが入れ換えに
よりベクトル化されるため、充分な実行時間の短縮を図
ることができる。
以上説明したように、本発明のベクトル化方式にあって
は、多重ループ内の定数が実行時にならないとわからな
いためにループの入れ換えによる実行時間の短縮が図れ
るか否かが不明である場合に、ループの入れ換えを行い
ベクトル化を行ったプログラム部分とループの入れ換え
を行わないでベクトル化を行ったプログラム部分とルー
プの入れ換えを行うことにより実行時間が短縮されるか
否かを実行時に判定して実行時間が短縮される方の目的
プログラムを実行させるプログラム部分とを作成し、実
行時にいずれが適切であるかを判断して実行するプログ
ラム部分を選択するようにしているため、大幅な実行時
間の短縮が行える効果がある。
は、多重ループ内の定数が実行時にならないとわからな
いためにループの入れ換えによる実行時間の短縮が図れ
るか否かが不明である場合に、ループの入れ換えを行い
ベクトル化を行ったプログラム部分とループの入れ換え
を行わないでベクトル化を行ったプログラム部分とルー
プの入れ換えを行うことにより実行時間が短縮されるか
否かを実行時に判定して実行時間が短縮される方の目的
プログラムを実行させるプログラム部分とを作成し、実
行時にいずれが適切であるかを判断して実行するプログ
ラム部分を選択するようにしているため、大幅な実行時
間の短縮が行える効果がある。
第1図は本発明のベクトル化方式を適用したコンパイラ
の一実施例を示す構成図、 第2図は原始プログラムの例を示す図および、第3図は
目的プログラムの例を概念的に示す図である。 図において、 1−・・・・・原始プログラム 11.12・・・利用者手続き引用文 13・・・多重ループ 2・・・・・・コンパイラ 21・・・構文解析部 22・・・多重ループ情報抽出部 23・・・中間テキスト変形部 24・・・目的プログラム生成部 3・・・・・・第1中間テキスト 4・・・・・・多重ループ情報テーブル5・・・・・・
第2中間テキスト 6・・・・・・目的プログラム
の一実施例を示す構成図、 第2図は原始プログラムの例を示す図および、第3図は
目的プログラムの例を概念的に示す図である。 図において、 1−・・・・・原始プログラム 11.12・・・利用者手続き引用文 13・・・多重ループ 2・・・・・・コンパイラ 21・・・構文解析部 22・・・多重ループ情報抽出部 23・・・中間テキスト変形部 24・・・目的プログラム生成部 3・・・・・・第1中間テキスト 4・・・・・・多重ループ情報テーブル5・・・・・・
第2中間テキスト 6・・・・・・目的プログラム
Claims (1)
- 【特許請求の範囲】 高級プログラミング言語で記述された原始プログラムを
入力し、目的プログラムを生成するコンパイラにおいて
、 原始プログラムを入力し、構文解析を行って中間テキス
トを生成する構文解析部と、 生成された中間テキストを入力し、原始プログラム中の
多重ループ部分を検出し、該多重ループに対してループ
の入れ換えによるベクトル化が可能か否かを判定し、ベ
クトル化可能であれば該多重ループのループの入れ換え
の判定に必要な情報を多重ループ情報テーブルとして格
納する多重ループ情報抽出部と、 前記中間テキストを読み込み、前記多重ループ情報テー
ブルをもとに、実行時にならないとループの入れ換えに
よる実行時間の短縮が可能であるか否かを判定できない
多重ループに対して、ループの入れ換えを行いベクトル
化を行った中間テキストとループの入れ換えを行わない
でベクトル化を行った中間テキストとループの入れ換え
を行うことにより実行時間が短縮されるか否かを実行時
に判定して実行時間が短縮される方の目的プログラムを
実行させる中間テキストとに変形する中間テキスト変形
部と、 変形された中間テキストを入力し、目的プログラムを生
成する目的プログラム生成部とを備えたことを特徴とす
るベクトル化方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP7583589A JPH02253472A (ja) | 1989-03-28 | 1989-03-28 | ベクトル化方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP7583589A JPH02253472A (ja) | 1989-03-28 | 1989-03-28 | ベクトル化方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH02253472A true JPH02253472A (ja) | 1990-10-12 |
Family
ID=13587645
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP7583589A Pending JPH02253472A (ja) | 1989-03-28 | 1989-03-28 | ベクトル化方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH02253472A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2001265606A (ja) * | 2000-01-13 | 2001-09-28 | Fujitsu Ltd | 情報処理装置 |
-
1989
- 1989-03-28 JP JP7583589A patent/JPH02253472A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2001265606A (ja) * | 2000-01-13 | 2001-09-28 | Fujitsu Ltd | 情報処理装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2004038225A (ja) | コンパイラプログラムおよびコンパイル処理方法 | |
| US20160246622A1 (en) | Method and system for implementing invocation stubs for the application programming interfaces embedding with function overload resolution for dynamic computer programming languages | |
| US6041181A (en) | Method of, system for, and computer program product for providing quick fusion in WHERE constructs | |
| JP2003233499A (ja) | 複数の意味レベルによるアスペクト指向プログラミングのための方法 | |
| Fauth et al. | Automated generation of DSP program development tools using a machine description formalism | |
| Horn | The TTC 2013 flowgraphs case | |
| JPH05189472A (ja) | コンパイラのベクトル化処理方式 | |
| JPH02253472A (ja) | ベクトル化方式 | |
| JP3840149B2 (ja) | コンパイラ、演算処理システム及び演算処理方法 | |
| Bajrovic et al. | Automatic performance tuning of pipeline patterns for heterogeneous parallel architectures | |
| CN118092931A (zh) | 基于指导语句的函数向量化方法及系统 | |
| Wu et al. | Parallelism encapsulation in C++ | |
| US20060107258A1 (en) | Program, program code optimization method, program code compile method, program code, and information processing system | |
| Schösser et al. | Graph rewriting for hardware dependent program optimizations | |
| Racordon | Coroutines with higher order functions | |
| JPH03116241A (ja) | コンパイラ | |
| JPH0540780A (ja) | ベクトル化処理方式 | |
| JPH03251957A (ja) | ベクトル化処理方式 | |
| JPH10116197A (ja) | プログラム解析方法 | |
| JP2842057B2 (ja) | 目的プログラム生成装置 | |
| JPH0497484A (ja) | コンパイラのベクトル化処理方式 | |
| JPH10326193A (ja) | インライン展開関数の最適化のためのコンパイル方法 | |
| JPS63198130A (ja) | ル−プ最適命令列選択方式 | |
| JPH04135244A (ja) | コンパイル処理方式 | |
| JP2870218B2 (ja) | 並列実行命令列生成方式 |