JPH03257579A - コンパイラの並列化方式 - Google Patents
コンパイラの並列化方式Info
- Publication number
- JPH03257579A JPH03257579A JP5699690A JP5699690A JPH03257579A JP H03257579 A JPH03257579 A JP H03257579A JP 5699690 A JP5699690 A JP 5699690A JP 5699690 A JP5699690 A JP 5699690A JP H03257579 A JPH03257579 A JP H03257579A
- Authority
- JP
- Japan
- Prior art keywords
- vector
- intermediate text
- text
- program
- reads
- 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
- 230000009466 transformation Effects 0.000 claims abstract description 8
- 239000000284 extract Substances 0.000 claims abstract description 5
- 238000000034 method Methods 0.000 claims description 17
- 238000004458 analytical method Methods 0.000 claims description 4
- 238000000605 extraction Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 claims description 3
- 238000003491 array Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
Landscapes
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はコンパイラの並列化方式に関し、特に並列処理
が可能でベクトル演算機能をもつ複数のプロセッサを有
し、主記憶装置が異なるバンク間で並列アクセスを行う
多重アクセス方式を用いる電子計算機システム上で、コ
ンパイラで生成した目的プログラムが複数のプロセッサ
を駆動して主記憶装置に有するデータを並列にベクトル
演算するためのコンパイラの並列化方式に関する。
が可能でベクトル演算機能をもつ複数のプロセッサを有
し、主記憶装置が異なるバンク間で並列アクセスを行う
多重アクセス方式を用いる電子計算機システム上で、コ
ンパイラで生成した目的プログラムが複数のプロセッサ
を駆動して主記憶装置に有するデータを並列にベクトル
演算するためのコンパイラの並列化方式に関する。
従来のコンパイラの並列化方式は、単一のプロセッサの
ベクトル処理速度を上げるために、すべてのプロセッサ
のベクトル長は最大ベクトルレジスタ長と同一の値が設
定されていた。
ベクトル処理速度を上げるために、すべてのプロセッサ
のベクトル長は最大ベクトルレジスタ長と同一の値が設
定されていた。
しかし、従来のコンパイラの並列化方式は、複数のプロ
セッサを同時に駆動して主記憶装置に有するデータを並
列にベクトル演算する際で、各々のプロセッサが最初に
アクセスするバンクが同一となった場合に、バンク競合
が発生して処理速度が低下するという欠点を有している
。
セッサを同時に駆動して主記憶装置に有するデータを並
列にベクトル演算する際で、各々のプロセッサが最初に
アクセスするバンクが同一となった場合に、バンク競合
が発生して処理速度が低下するという欠点を有している
。
本発明のコンパイラの並列化方式は、並列処理が可能で
ベクトル演算機能をもつ複数のプロセッサを有し、主記
憶装置が異なるバンク間で並列アクセスを行う多重アク
セス方式を用いる電子計算機システム上で、高級言語で
書かれた原始プログラムを入力し、並列処理を行う目的
プログラムを生成するコンパイラの並列化方式において
、高級言語で書かれた前記原始プログラムを読み込んで
構文解析を行って第1の中間テキストを生成する構文解
析部と、前記第1の中間テキストを読み込んでベクトル
化可能ループを抽出するベクトル化可能ループ抽出部と
、前記第1の中間テキストおよび前記ベクトル化可能ル
ープにより第2の中間テキストを生成する中間テキスト
変形部と、前記第2の中間テキストを読み込んで前記目
的プログラムを生成するときに前記目的プログラムが複
数の前記プロセッサを駆動して前記主記憶装置に有する
データを並列にベクトル演算するに際して駆動される各
々の前記プロセッサのベクトル長を各々最大ベクトルレ
ジスタ長より少なくすることによりバンク数に対して異
なる値に設定してバンク競合が発生しない目的プログラ
ムを生成する目的プログラム生成部とを備えて構成され
ている。
ベクトル演算機能をもつ複数のプロセッサを有し、主記
憶装置が異なるバンク間で並列アクセスを行う多重アク
セス方式を用いる電子計算機システム上で、高級言語で
書かれた原始プログラムを入力し、並列処理を行う目的
プログラムを生成するコンパイラの並列化方式において
、高級言語で書かれた前記原始プログラムを読み込んで
構文解析を行って第1の中間テキストを生成する構文解
析部と、前記第1の中間テキストを読み込んでベクトル
化可能ループを抽出するベクトル化可能ループ抽出部と
、前記第1の中間テキストおよび前記ベクトル化可能ル
ープにより第2の中間テキストを生成する中間テキスト
変形部と、前記第2の中間テキストを読み込んで前記目
的プログラムを生成するときに前記目的プログラムが複
数の前記プロセッサを駆動して前記主記憶装置に有する
データを並列にベクトル演算するに際して駆動される各
々の前記プロセッサのベクトル長を各々最大ベクトルレ
ジスタ長より少なくすることによりバンク数に対して異
なる値に設定してバンク競合が発生しない目的プログラ
ムを生成する目的プログラム生成部とを備えて構成され
ている。
次に、本発明の実施例について図面を参照して説明する
。
。
第1図は本発明のコンパイラの並列化方式の一実施例を
示すブロック図である。第1図は、原始プログラム1と
、コンパイラ2と、原始プログラム1をコンパイラ2に
よりコンパイルして得られる目的プログラム6と、コン
パイラ2が原始プログラム1をコンパイルする際に生成
する第1の中間テキスト3およびベクトル化可能ループ
4並びに第2の中間テキスト5とにより構成されている
。
示すブロック図である。第1図は、原始プログラム1と
、コンパイラ2と、原始プログラム1をコンパイラ2に
よりコンパイルして得られる目的プログラム6と、コン
パイラ2が原始プログラム1をコンパイルする際に生成
する第1の中間テキスト3およびベクトル化可能ループ
4並びに第2の中間テキスト5とにより構成されている
。
そして、コンパイラ2は、構文解析部21と、ベクトル
化可能ループ抽出部22と、中間テキスト変形部23と
、目的プログラム生成部24とにより構成されている。
化可能ループ抽出部22と、中間テキスト変形部23と
、目的プログラム生成部24とにより構成されている。
そこで、コンパイラ2は、入力された原始プログラム1
を構文解析部21により構文解析し、第1の中間テキス
ト3を生成する。また、ベクトル化可能ループ抽出部2
2は、第1の中間テキスト3を読み込んでベクトル化可
能ループ4を抽出する。そして、中間テキスト変形部2
3は第1の中間テキスト3を読み込み、ベクトル化可能
ループ4により変形して第2の中間テキスト5を生成す
る。さらに、目的プログラム生成部24は、第2の中間
テキスト5を読み込み、ベクトル化可能ループの処理を
複数のプロセッサを駆動して並列処理を行う目的プログ
ラムを生成する。
を構文解析部21により構文解析し、第1の中間テキス
ト3を生成する。また、ベクトル化可能ループ抽出部2
2は、第1の中間テキスト3を読み込んでベクトル化可
能ループ4を抽出する。そして、中間テキスト変形部2
3は第1の中間テキスト3を読み込み、ベクトル化可能
ループ4により変形して第2の中間テキスト5を生成す
る。さらに、目的プログラム生成部24は、第2の中間
テキスト5を読み込み、ベクトル化可能ループの処理を
複数のプロセッサを駆動して並列処理を行う目的プログ
ラムを生成する。
なお、目的プログラム生成部24は、主記憶装置に有す
るデータをベクトルレジスタへロードする際に、各演算
プロセッサか実行するベクトルロード命令の主記憶装置
へのアクセスにおいて、バンク競合が発生する場合には
、各々のプロセッサのベクトル長を各々最大ベクトル長
よりも1つ少ない値に設定した目的プログラム6を生成
する。
るデータをベクトルレジスタへロードする際に、各演算
プロセッサか実行するベクトルロード命令の主記憶装置
へのアクセスにおいて、バンク競合が発生する場合には
、各々のプロセッサのベクトル長を各々最大ベクトル長
よりも1つ少ない値に設定した目的プログラム6を生成
する。
第2図は本発明を適用した場合に効果のあるFORTR
AN原始プログラムの一例を示す図である。なお、第2
図のFORTRANを実行するために使用している電子
計算機システムの最大ベクトルレジスタ長および独立に
動作するバンク数を256とする。
AN原始プログラムの一例を示す図である。なお、第2
図のFORTRANを実行するために使用している電子
計算機システムの最大ベクトルレジスタ長および独立に
動作するバンク数を256とする。
第2図のFORTRAN原始プログラム100を従来の
コンパイラにより翻訳すると、並列処理可能なり○ルー
プ110において、主記憶装置上に配置されている配列
B、Cの処理を、先ず配列B、Cの配列要素1から配列
要素256まで、次に配列257から配列要素512ま
で、・・・・・・の様に256ワードづつベクトル化し
、ベクトル化したものを複数のプロセッサを駆動して並
列処理を行う目的プログラムを生成していた。しかし、
主記憶装置上に配置されている配列B、Cのデータを最
大ベクトルレジスタ長256ワードでベクトルレジスタ
ヘロードする際に、バンク数も256のために、各プロ
セッサが実行するベクトルロード命令の主記憶装置への
アクセスにおいて、バンク競合が発生していた。
コンパイラにより翻訳すると、並列処理可能なり○ルー
プ110において、主記憶装置上に配置されている配列
B、Cの処理を、先ず配列B、Cの配列要素1から配列
要素256まで、次に配列257から配列要素512ま
で、・・・・・・の様に256ワードづつベクトル化し
、ベクトル化したものを複数のプロセッサを駆動して並
列処理を行う目的プログラムを生成していた。しかし、
主記憶装置上に配置されている配列B、Cのデータを最
大ベクトルレジスタ長256ワードでベクトルレジスタ
ヘロードする際に、バンク数も256のために、各プロ
セッサが実行するベクトルロード命令の主記憶装置への
アクセスにおいて、バンク競合が発生していた。
一方、第2図のFORTRAN原始プログラム100を
本発明を適用したコンパイラ2を用いて翻訳すると、並
列処理可能なり○ループ110において、主記憶装置上
に配置されている配列BCの処理を配列B、Cの配列要
素1から配列要素255まで、次に配列要素256から
配列要素510まで、・・・・・・の様に255ワード
づつベクトル化し、ベクトル化したものを複数のプロセ
ッサを駆動して並列処理を行う目的プログラムを生成す
る。そして、主記憶装置上に配置されている配列B、C
のデータをベクトルレジスタ長255でベクトルレジス
タヘロードする際には、バンク数が256のために、各
プロセッサが実行するベクトルロード命令の主記憶装置
へのアクセスにおいて、バンク競合は発生せず、目的プ
ログラムの実行速度を向上することができる。
本発明を適用したコンパイラ2を用いて翻訳すると、並
列処理可能なり○ループ110において、主記憶装置上
に配置されている配列BCの処理を配列B、Cの配列要
素1から配列要素255まで、次に配列要素256から
配列要素510まで、・・・・・・の様に255ワード
づつベクトル化し、ベクトル化したものを複数のプロセ
ッサを駆動して並列処理を行う目的プログラムを生成す
る。そして、主記憶装置上に配置されている配列B、C
のデータをベクトルレジスタ長255でベクトルレジス
タヘロードする際には、バンク数が256のために、各
プロセッサが実行するベクトルロード命令の主記憶装置
へのアクセスにおいて、バンク競合は発生せず、目的プ
ログラムの実行速度を向上することができる。
以上説明したように、本発明のコンパイラの並列化方式
は、目的プログラムが複数のプロセッサを駆動して主記
憶装置に有するデータを並列にベクトル演算する際には
、駆動される各々のプロセッサのベクトル長を最大ベク
トルレジスタ長よりも少ない値に設定してバンク競合が
生じない目的プログラムを生成することにより、複数の
プロセッサを同時に駆動して主記憶装置に有するデータ
を並列にベクトル演算する際に、各々のプロセッサが主
記憶に有するデータをベクトルレジスタヘロードする時
に、各演算プロセッサが実行するベクトルロード命令の
主記憶装置へのアクセスに、バンク競合が発生して処理
速度が低下することを避けることができるという効果を
有している。
は、目的プログラムが複数のプロセッサを駆動して主記
憶装置に有するデータを並列にベクトル演算する際には
、駆動される各々のプロセッサのベクトル長を最大ベク
トルレジスタ長よりも少ない値に設定してバンク競合が
生じない目的プログラムを生成することにより、複数の
プロセッサを同時に駆動して主記憶装置に有するデータ
を並列にベクトル演算する際に、各々のプロセッサが主
記憶に有するデータをベクトルレジスタヘロードする時
に、各演算プロセッサが実行するベクトルロード命令の
主記憶装置へのアクセスに、バンク競合が発生して処理
速度が低下することを避けることができるという効果を
有している。
そして、本発明のコンパイラの並列化方式は、−度に駆
動するプロセッサの数が多いほど効果が大きく処理速度
を向上させることができるという効果を有している。
動するプロセッサの数が多いほど効果が大きく処理速度
を向上させることができるという効果を有している。
抽出部、23・・・中間テキスト変形部、24・・・目
的プログラム生成部、100・・・FORTRAN原始
プログラム、110・・・並列処理可能なり○ルー乙
的プログラム生成部、100・・・FORTRAN原始
プログラム、110・・・並列処理可能なり○ルー乙
Claims (1)
- 並列処理が可能でベクトル演算機能をもつ複数のプロセ
ッサを有し、主記憶装置が異なるバンク間で並列アクセ
スを行う多重アクセス方式を用いる電子計算機システム
上で、高級言語で書かれた原始プログラムを入力し、並
列処理を行う目的プログラムを生成するコンパイラの並
列化方式において、高級言語で書かれた前記原始プログ
ラムを読み込んで構文解析を行って第1の中間テキスト
を生成する構文解析部と、前記第1の中間テキストを読
み込んでベクトル化可能ループを抽出するベクトル化可
能ループ抽出部と、前記第1の中間テキストおよび前記
ベクトル化可能ループにより第2の中間テキストを生成
する中間テキスト変形部と、前記第2の中間テキストを
読み込んで前記目的プログラムを生成するときに前記目
的プログラムが複数の前記プロセッサを駆動して前記主
記憶装置に有するデータを並列にベクトル演算するに際
して駆動される各々の前記プロセッサのベクトル長を各
々最大ベクトルレジスタ長より少なくすることによりバ
ンク数に対して異なる値に設定してバンク競合が発生し
ない目的プログラムを生成する目的プログラム生成部と
を備えることを特徴とするコンパイラの並列化方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5699690A JPH03257579A (ja) | 1990-03-07 | 1990-03-07 | コンパイラの並列化方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5699690A JPH03257579A (ja) | 1990-03-07 | 1990-03-07 | コンパイラの並列化方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH03257579A true JPH03257579A (ja) | 1991-11-18 |
Family
ID=13043102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5699690A Pending JPH03257579A (ja) | 1990-03-07 | 1990-03-07 | コンパイラの並列化方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH03257579A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6834337B1 (en) | 2000-09-29 | 2004-12-21 | International Business Machines Corporation | System and method for enabling multiple signed independent data elements per register |
US7039906B1 (en) | 2000-09-29 | 2006-05-02 | International Business Machines Corporation | Compiler for enabling multiple signed independent data elements per register |
-
1990
- 1990-03-07 JP JP5699690A patent/JPH03257579A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6834337B1 (en) | 2000-09-29 | 2004-12-21 | International Business Machines Corporation | System and method for enabling multiple signed independent data elements per register |
US7039906B1 (en) | 2000-09-29 | 2006-05-02 | International Business Machines Corporation | Compiler for enabling multiple signed independent data elements per register |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6113650A (en) | Compiler for optimization in generating instruction sequence and compiling method | |
US20040003381A1 (en) | Compiler program and compilation processing method | |
JPH0830561A (ja) | プログラムの並列化実行方法及び並列化実行コンパイラ | |
JPH04307625A (ja) | ループ最適化方法及び装置 | |
JPH04211830A (ja) | 並列化コンパイル方式 | |
US11467827B1 (en) | Index space mapping using static code analysis | |
Anantharaman et al. | A hardware accelerator for speech recognition algorithms | |
JPH03257579A (ja) | コンパイラの並列化方式 | |
Ghike et al. | Directive-based compilers for GPUs | |
RAS | GRAPHITE-OpenCL: Generate OpenCL code from parallel loops | |
Pashchenko et al. | Modeling of Process Control Algorithms for Parallel Computing Systems Using Nondeterministic Automata | |
JPH04307624A (ja) | ループ最適化方法及び装置 | |
JPH0379741B2 (ja) | ||
Reznikova | Smart Tiling for Program Optimization and Parallelization [C] | |
Kaminskyj Long et al. | Mind the Gap! Bridging the dichotomy of design and implementation | |
JPH03135630A (ja) | 命令スケジューリング方式 | |
Saougkos et al. | Fine grained parallelism in recursive function calls | |
Listkiewicz et al. | J-Parallelio: Automatic Parallelization Framework for Java Virtual Machine | |
Biookaghazadeh et al. | Characterizing Loop Acceleration in Heterogeneous Computing | |
Feo et al. | Developing a high-performance FFT algorithm in Sisal for a vector supercomputer | |
Stuglik et al. | J-Parallelio--automatic parallelization framework for Java virtual machine code | |
JP2870218B2 (ja) | 並列実行命令列生成方式 | |
Kao et al. | Run-time parallelization for loops | |
JPH02132525A (ja) | コンパイル方法 | |
JP2638278B2 (ja) | コンパイル処理方式 |