JPH08314897A - 添字三つ組による部分配列のベクトル化処理方式 - Google Patents

添字三つ組による部分配列のベクトル化処理方式

Info

Publication number
JPH08314897A
JPH08314897A JP12352295A JP12352295A JPH08314897A JP H08314897 A JPH08314897 A JP H08314897A JP 12352295 A JP12352295 A JP 12352295A JP 12352295 A JP12352295 A JP 12352295A JP H08314897 A JPH08314897 A JP H08314897A
Authority
JP
Japan
Prior art keywords
intermediate text
array
instruction
vector
text
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
JP12352295A
Other languages
English (en)
Inventor
Shigeru Terauchi
茂 寺内
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.)
NEC Solution Innovators Ltd
Original Assignee
NEC Solution Innovators 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 NEC Solution Innovators Ltd filed Critical NEC Solution Innovators Ltd
Priority to JP12352295A priority Critical patent/JPH08314897A/ja
Publication of JPH08314897A publication Critical patent/JPH08314897A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【目的】 添字三つ組の配列式のベクトル化率を向上さ
せ、ベクトルプロセッサにおけるプログラムの実行時間
を短縮させる。 【構成】 配列式のベクトル化処理部105において、
形式判定処理部109は、添字三つ組による部分配列か
ら構成される多次元の配列式が連続アクセスになる可能
性があるか判定する。条件判定命令生成部110は、前
記部分配列が連続アクセスできるか判定する命令の第二
の中間テキストを生成する。1次元化ベクトル命令生成
部111は、前記部分配列を連続アクセスするベクトル
命令の第二の中間テキストを生成する。ループ展開ベク
トル命令生成部112は、最内側の次元に対してベクト
ル命令の第二の中間テキストを生成し、外側の次元に対
してループに展開した命令の第二の中間テキストを生成
する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ベクトル化処理方式に
関し、特に、Fortranプログラムの添字三つ組を
含む多次元のベクトル化処理方式に関する。
【0002】
【従来の技術】従来のベクトル化処理方式では、変数や
関数引用により構成される添字三つ組の部分配列は、コ
ンパイル時に連続アクセス可能か判定するため、コンパ
イル時に連続アクセス可能か判定できない場合、コンパ
イル時オプションなどにより多次元の部分配列を強制的
に1次元の配列としてベクトル化する場合を除き、最内
側の次元のみベクトル化し、他の次元のベクトル化はで
きない。
【0003】
【発明が解決しようとする課題】ベクトル演算機能を有
するベクトルプロセッサにおいては、一般的に、オブジ
ェクトプログラムのうちのベクトル命令によって実行さ
れる部分の割合を大きくすればするほど、実行時間を短
縮することができる。ところが、上述の従来技術では、
複数の添字三つ組を含む多次元の部分配列は、ベクトル
化する部分が少なく、スカラ命令で実行される部分が多
いため、実行時間を短縮することができないという欠点
がある。
【0004】
【課題を解決するための手段】本発明は、ベクトル演算
機能を有するベクトルプロセッサに対して、Fortr
an言語で書かれたソースプログラムを読み込み、構文
解析を行い第一の中間テキストを生成する構文解析部
と、前記第一の中間テキストから配列式のベクトル化可
能部分の認識を行い第二の中間テキストを生成する配列
式のベクトル化処理部と、前記第二の中間テキストから
オブジェクトプログラムを生成するオブジェクトプログ
ラム生成部とから構成されるコンパイラのベクトル化処
理方式において、前記配列式のベクトル化処理部のベク
トル化処理部は、添字三つ組による部分配列から構成さ
れる多次元の配列式が連続アクセスになる可能性がある
か判定する形式判定処理部と、前記部分配列が連続アク
セスできるか判定する命令の第二の中間テキストを生成
する条件判定命令生成部と、前記部分配列を連続アクセ
スするベクトル命令の第二の中間テキストを生成する1
次元化ベクトル命令生成部と、最内側の次元に対してベ
クトル命令の第二の中間テキストを生成し、外側の次元
に対してループに展開した命令の第二の中間テキストを
生成するループ展開ベクトル命令生成部とを備えること
を特徴とするものである。
【0005】
【実施例】次に、本発明について図面を参照して説明す
る。
【0006】図1は本発明に関わるコンパイラのブロッ
ク図である。以下、そのコンパイラ102のそれぞれの
処理部について説明する。
【0007】構文解析部104は、ソースプログラム1
01を読み込み、構文解析を行い、第一の中間テキスト
106を生成する。
【0008】配列式のベクトル化処理部105は、添字
一つ組を含む部分配列により構成される多次元の配列式
が連続アクセスになる可能性があるか判定する形式判定
処理部109と、前記部分配列の配列要素を連続アクセ
スできるか判定する命令の第二の中間テキスト107を
生成する条件判定命令生成部110と、前記部分配列の
配列要素を連続アクセスできる場合の命令として前記部
分配列を連続アクセスするベクトル命令の第二の中間テ
キスト107を生成する1次元化ベクトル命令生成部1
11と、前記部分配列の配列要素を連続アクセスできな
い場合の命令として前記部分配列の最内側以外の次元を
ループに展開した命令の第二の中間テキスト107を生
成するループ展開ベクトル命令生成部112とを備え、
第一の中間テキスト106から第二の中間テキスト10
7を生成する。
【0009】オブジェクトプログラム生成部108は、
第二の中間テキスト107からオブジェクトプログラム
103を生成する。
【0010】形式判定処理部109は、第一の中間テキ
スト106が下記(1),(2),(3),(4)の条
件をすべて満足すれば、連続アクセスになる可能性があ
ると判定し、連続アクセスになる可能性がある場合は、
第一の中間テキスト106を条件判定命令生成部110
に与え、連続アクセスになる可能性がない場合は、第一
の中間テキスト106をループ展開ベクトル命令生成部
112に与える。 (1)部分配列の最内側の次元から連続して添字三つ組
が指定されている。 (2)部分配列の添字三つ組が変数または関数引用によ
り構成される。 (3)1文中の部分配列間で添字三つ組が同じである。 (4)1文中の部分配列間で添字三つ組が指定されてい
る次元の上下限の宣言が同じである。
【0011】条件判定命令生成部110は、与えられた
第一の中間テキストの部分配列の演算が配列を1方向に
アクセスする下記条件、および、前記部分配列の演算が
配列を一定間隔でアクセスする下記条件を備えているか
判定する命令と、前記二つの条件を備えていれば1次元
化ベクトル命令生成部111が生成する命令へ分岐し、
備えていなければループ展開ベクトル命令生成部112
が生成する命令へ分岐する命令との第二の中間テキスト
107を生成し、第一の中間テキスト106を1次元化
ベクトル命令生成部111に与える。 (1)配列1方向にアクセスする条件 ・各次元の刻み幅がすべて正である。または、すべて負
である。 (2)配列を一定間隔でアクセスする条件 (1) 最内側の次元 ・繰り返し回数×刻み幅=宣言の大きさ (2) 最内側以外の次元 ・刻み幅の絶対値が1である。
【0012】(3) 最内側および最外側以外の次元 ・繰り返し回数=宣言の大きさ。
【0013】1次元化ベクトル命令生成部111は、与
えられた第一の中間テキストの部分配列の要素数を求め
1度に配列要素を連続アクセスする数としてベクトル長
vlに設定する命令と、連続アクセスする配列要素の間
隔を要素間隔strideに設定する命令と、前記ベク
トル長vlと要素間隔strideにより配列要素に連
続アクセスする命令との第二の中間テキストを生成し、
与えられた第一の中間テキストをループ展開ベクトル命
令生成部112に与える。部分配列の要素数、および要
素間隔は、以下のようにして求める。部分配列の各次元
ごとの添字三つ組の1番目の値はI、2番目はJ、刻み
幅はKで表している。 (1)部分配列の要素数 ・部分配列の各次元の大きさ=(J−I+K)÷K ・部分配列の要素数=部分配列の各次元の大きさの総積 (2)部分配列の要素間隔 (配列の添字三つ組が指定されている次元より内側の次
元の大きさ、もし、最内側に添字三つ組か指定されてい
るなら1)×最内側の添字三つ組の刻み幅。
【0014】ループ展開ベクトル命令生成部112は、
与えられた第一の中間テキストの部分配列の最内側の次
元のみ配列要素を連続アクセスするベクトル命令の第二
の中間テキストを生成し、最内側以外の次元をループに
展開した命令の第二の中間テキストを生成する。
【0015】以下、このコンパイラを基に図2のような
Fortranプログラムを入力し、図4のような第二
の中間テキストを生成する場合を想定して説明する。
【0016】コンパイラ102が起動され、構文解析部
104は、図2のソースプログラム101を読み込み、
構文解析を行い、図3の第一の中間テキスト106を生
成する。
【0017】配列式のベクトル化処理部105は、第一
の中間テキスト106を取り込み、形式判定処理部10
9に与える。
【0018】形式判定処理部109は、配列代入文30
3の部分配列の最内側の次元が添字三つ組であり、前記
添字三つ組の添字から添字三つ組が連続して指定されて
おり、それら添字三つ組が変数により構成され、演算を
行う部分配列間で前記連続で指定されている添字三つ組
が同じであり、かつ、前記部分配列の配列の宣言間で前
記連続で指定されている添字三つ組の次元の宣言が同じ
であるため、連続アクセスになる可能性があると判定
し、第一の中間テキスト302,303を条件判定命令
生成部110に与える。
【0019】条件判定命令生成部110は、与えられた
第一の中間テキストにより、前述の部分配列を連続アク
セス可能か判定する命令の第二の中間テキスト107を
図5のように生成し、第一の中間テキスト303を1次
元化ベクトル命令生成部111に与える。このとき、前
記判定する命令の第二の中間テキストは、以下のように
して生成する。
【0020】配列要素を1方向にアクセスする条件を備
えているか判定する命令として、各次元の刻み幅がすべ
て正、かたは、すべて負なら条件を備えていると判定
し、そうでないなら条件を備えていないと判定する第二
の中間テキスト502,503を生成する。
【0021】次に、配列を一定間隔でアクセスする条件
を備えているか判定する命令として下記三つの第二の中
間テキストを生成する。 (1)「最内側の次元の大きさ×刻み幅」がその次元の
宣言の大きさと同じであるか検査し、同じなら条件を備
えていると判定し、そうでないなら条件を備えていない
と判定する第二の中間テキスト504 (2)最外側の次元の刻み幅の絶対値が1と同じか検査
し、同じなら条件を備えていると判定し、そうでないな
ら条件を備えていないと判定する第二の中間テキスト5
05 (3)最内側でも最外側でもない2次元目の大きさがそ
の次元の宣言の大きさと同じであるか検査し、同じなら
条件を備えていると判定し、そうでないなら条件を備え
ていないと判定する第二の中間テキスト506。
【0022】1次元化ベクトル命令生成部111は、図
6に示すように、与えられた第一の中間テキスト303
の部分配列の配列要する命令602と、部分配列の最内
側の刻み幅を要素間隔strideに設定する命令60
3と、添字三つ組の1番目の式を添字とする配列要素の
位置から要素間隔strideの間隔でベクトル長vl
個の配列要素の値を取り出す命令604と、添字三つ組
の1番目の式を添字とする配列要素の位置から要素間隔
strideの間隔で配列要素vl個の配列要素の値を
入れる命令605との第二の中間テキスト403を生成
し、第一の中間テキスト303をループ展開ベクトル命
令生成部112に与える。
【0023】ループ展開ベクトル命令生成部112は、
与えられた第一の中間テキスト303を最内側のみ連続
アクセス可能と判断し、外側の次元をスカラループに展
開し、最内側の次元に対してのみベクトル命令の第二の
中間テキスト404(図7のようになる)を生成する。
【0024】
【発明の効果】以上説明したように、本発明は、従来最
内側しかベクトル化されなかった添字三つ組により構成
される多次元のベクトル化率を向上させるため、ベクト
ルプロセッサにおいてプログラムの実行時間を短縮する
という効果を奏する。
【図面の簡単な説明】
【図1】本発明の一実施例のブロック図である。
【図2】図1のコンパイラの入力となるソースプログラ
ムを例示する図である。
【図3】図1のコンパイラが図2のソースプログラムに
対して生成する第一の中間テキストを示す図である。
【図4】図1のコンパイラが図2のソースプログラムに
対して生成する第二の中間テキストを示す図である。
【図5】図1のコンパイラの図2のソースプログラムに
対して、部分配列の配列要素を連続アクセス可能か判定
する命令の第二の中間テキストを示す図である。
【図6】図1のコンパイラが図2のソースプログラムに
対して、連続アクセスできる場合の命令として生成する
第二の中間テキストを示す図である。
【図7】図1のコンパイラが図2のソースプログラムに
対して、連続アクセスできない場合の命令として生成す
る第二の中間テキストを示す図である。
【符号の説明】
101 ソースプログラム 102 コンパイラ 103 オブジェクトプログラム 104 構文解析部 105 配列式のベクトル化処理部 106 第一の中間テキスト 107 第二の中間テキスト 108 オブジェクトプログラム生成部 109 形式判定処理部 110 条件判定命令生成部 111 1次元化ベクトル命令生成部 112 ループ展開ベクトル命令生成部 301 始まりを示す第一の中間テキスト 302 AとBの宣言の第一の中間テキスト 303 配列代入文の第一の中間テキスト 304 終わりの示す第一の中間テキスト 401 始まりを示す第二の中間テキスト 402 連続アクセス可能か判定する第二の中間テキ
スト 403 連続アクセス可能な場合の1次元化ベクトル
命令の第二の中間テキスト 404 連続アクセス不可の場合のループ展開ベクト
ル命令の第二の中間テキスト 405 終わりを示す第二の中間テキスト 501 始まりを示す第二の中間テキスト 502 1次元目の刻み幅と2次元目の刻み幅が同じ
符号であるか判定する第二の中間テキスト 503 2次元目の刻み幅と3次元目の刻み幅が同じ
符号であるか判定する第二の中間テキスト 504 1次元目が配列を一定間隔でアクセスする条
件を備えているか判定する第二の中間テキスト 505 3次元目が配列を一定間隔でアクセスする条
件を備えているか判定する第二の中間テキスト 506 2次元目が配列を一定間隔でアクセスする条
件を備えているか判定する第二の中間テキスト 507 連続アクセス不可と判定する第二の中間テキ
スト 508 連続アクセス可能と判定する第二の中間テキ
スト 509 終わりを示す第二の中間テキスト 601 始まりを示す第二の中間テキスト 602 連続アクセスする要素数をベクトル長vlに
設定する第二の中間テキスト 603 要素間隔をstrideに設定する第二の中
間テキスト 604 Bからベクトル長vl個の要素を要素間隔s
trideな間隔で一度にvrに取り出す第二の中間テ
キスト 605 vrからベクトル長vl個の要素を要素間隔
strideの間隔でAに入れる第二の中間テキスト 606 終わりを示す第二の中間テキスト

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 ベクトル演算機能を有するベクトルプロ
    セッサに対して、Fortran言語で書かれたソース
    プログラムを読み込み、構文解析を行い第一の中間テキ
    ストを生成する構文解析部と、前記第一の中間テキスト
    から配列式のベクトル化可能部分の認識を行い第二の中
    間テキストを生成する配列式のベクトル化処理部と、前
    記第二の中間テキストからオブジェクトプログラムを生
    成するオブジェクトプログラム生成部とから構成される
    コンパイラのベクトル化処理方式において、 前記配列式のベクトル化処理部のベクトル化処理部は、
    添字三つ組による部分配列から構成される多次元の配列
    式が連続アクセスになる可能性があるか判定する形式判
    定処理部と、前記部分配列が連続アクセスできるか判定
    する命令の第二の中間テキストを生成する条件判定命令
    生成部と、前記部分配列を連続アクセスするベクトル命
    令の第二の中間テキストを生成する1次元化ベクトル命
    令生成部と、最内側の次元に対してベクトル命令の第二
    の中間テキストを生成し、外側の次元に対してループに
    展開した命令の第二の中間テキストを生成するループ展
    開ベクトル命令生成部とを備えることを特徴とするベク
    トル化処理方式。
JP12352295A 1995-05-23 1995-05-23 添字三つ組による部分配列のベクトル化処理方式 Pending JPH08314897A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP12352295A JPH08314897A (ja) 1995-05-23 1995-05-23 添字三つ組による部分配列のベクトル化処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP12352295A JPH08314897A (ja) 1995-05-23 1995-05-23 添字三つ組による部分配列のベクトル化処理方式

Publications (1)

Publication Number Publication Date
JPH08314897A true JPH08314897A (ja) 1996-11-29

Family

ID=14862703

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12352295A Pending JPH08314897A (ja) 1995-05-23 1995-05-23 添字三つ組による部分配列のベクトル化処理方式

Country Status (1)

Country Link
JP (1) JPH08314897A (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6418876A (en) * 1987-07-14 1989-01-23 Nec Corp Production system for vector instruction column
JPH0394371A (ja) * 1989-09-07 1991-04-19 Nec Corp ループ最適命令列選択方式
JPH03220669A (ja) * 1990-01-26 1991-09-27 Nec Software Ltd 多重ループベクトル化コンパイル方式

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6418876A (en) * 1987-07-14 1989-01-23 Nec Corp Production system for vector instruction column
JPH0394371A (ja) * 1989-09-07 1991-04-19 Nec Corp ループ最適命令列選択方式
JPH03220669A (ja) * 1990-01-26 1991-09-27 Nec Software Ltd 多重ループベクトル化コンパイル方式

Similar Documents

Publication Publication Date Title
US7191395B2 (en) Method and system for stylesheet-centric editing
JP4077252B2 (ja) コンパイラプログラムおよびコンパイル処理方法
US5274812A (en) Method of compiling source code into vectorized object code by performing a one-dimensional analysis on each dimension of a multi-dimensional array within a loop
US6263494B1 (en) Data updating method using overlap area and program converting device for converting update program in distributed-memory parallel processor
US7076777B2 (en) Run-time parallelization of loops in computer programs with static irregular memory access patterns
US20010020294A1 (en) Optimization apparatus that decreases delays in pipeline processing of loop and computer-readable storage medium storing optimization program
JPH08314897A (ja) 添字三つ組による部分配列のベクトル化処理方式
Brüggemann-Klein Unambiguity of extended regular expressions in SGML document grammars
JP3887097B2 (ja) コンパイル方法,コンパイル装置および、コンパイル用プログラムを記憶したコンピュータ読み取り可能な記憶媒体
US20040003379A1 (en) Compiler, operation processing system and operation processing method
JP2748582B2 (ja) コンパイル処理装置
JP2801193B2 (ja) インダクション変数のベクトル化処理装置
JP2000020318A (ja) メモリアクセス命令削減装置および記録媒体
JP3233467B2 (ja) プログラム変換方法および装置
JP2001184342A (ja) コンパイラおよび記録媒体
JP2621555B2 (ja) ベクトル化処理方式
JPH03220669A (ja) 多重ループベクトル化コンパイル方式
JP3047418B2 (ja) ベクトル化処理方式
JP3034582B2 (ja) コンパイル処理方式
JPH0748205B2 (ja) ベクトル化処理方式
JP3424597B2 (ja) 異機種間における引数、戻り値の転送方法ならびに装置
Stark First occurrence in pairs of long words: a penney-ante conjecture of pevzner
JP2004246924A (ja) アプリケーションジェネレータ開発支援装置及びアプリケーションジェネレータ開発支援方法
JPH08305580A (ja) 並列プログラムの言語処理装置
JP3412323B2 (ja) ベクトル化処理装置

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 19980506