JPH07282016A - 並列化コンパイラ - Google Patents
並列化コンパイラInfo
- Publication number
- JPH07282016A JPH07282016A JP7222594A JP7222594A JPH07282016A JP H07282016 A JPH07282016 A JP H07282016A JP 7222594 A JP7222594 A JP 7222594A JP 7222594 A JP7222594 A JP 7222594A JP H07282016 A JPH07282016 A JP H07282016A
- Authority
- JP
- Japan
- Prior art keywords
- execution time
- parallel
- loop
- intermediate language
- parallelizing
- 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
- Multi Processors (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 並列計算機での実行時間が最も短くなるよう
にソースプログラムをコンパイルするコンパイラを提供
することを目的とする。 【構成】 ソースプログラムの構文解析を行ない中間言
語に変換する構文解析手段3と、前記中間言語につい
て、並列実行可能なループを検出し、並列化のすべての
パターンの並列化中間言語を求める並列性検出手段4、
5と、並列化中間言語の並列実行されるループの回数と
前記並列化中間言語の並列実行される部分と動作するプ
ロセッサ数とに基づいて各々の前記並列化中間言語の実
行時間を予測する実行時間評価手段6と、前記実行時間
評価手段で予測された実行時間がもっとも短い並列化中
間言語を選ぶ並列化中間言語選択手段7と、前記並列化
中間言語選択手段によって選ばれた前記並列化中間言語
を目的プログラムに変換する目的プログラム生成手段1
1とを備える。
にソースプログラムをコンパイルするコンパイラを提供
することを目的とする。 【構成】 ソースプログラムの構文解析を行ない中間言
語に変換する構文解析手段3と、前記中間言語につい
て、並列実行可能なループを検出し、並列化のすべての
パターンの並列化中間言語を求める並列性検出手段4、
5と、並列化中間言語の並列実行されるループの回数と
前記並列化中間言語の並列実行される部分と動作するプ
ロセッサ数とに基づいて各々の前記並列化中間言語の実
行時間を予測する実行時間評価手段6と、前記実行時間
評価手段で予測された実行時間がもっとも短い並列化中
間言語を選ぶ並列化中間言語選択手段7と、前記並列化
中間言語選択手段によって選ばれた前記並列化中間言語
を目的プログラムに変換する目的プログラム生成手段1
1とを備える。
Description
【0001】
【産業上の利用分野】本発明は並列計算機用のコンパイ
ラに関するものである。
ラに関するものである。
【0002】
【従来の技術】近年、電子計算機の構成方式において複
数の処理装置を同時に動作させて高い処理能力を実現す
る並列計算機が実用化されつつある。並列計算機の例と
しては、図25に示すように、プロセッサ、ローカルメ
モリ、データ転送装置からなるプロセッサエレメント複
数からなる並列計算機があげられる。
数の処理装置を同時に動作させて高い処理能力を実現す
る並列計算機が実用化されつつある。並列計算機の例と
しては、図25に示すように、プロセッサ、ローカルメ
モリ、データ転送装置からなるプロセッサエレメント複
数からなる並列計算機があげられる。
【0003】通常の計算機用の高級プログラミング言語
であるCやFORTRANなどで書かれたソースプログ
ラムを並列計算機で実行するには、一般に元のソースプ
ログラムを並列計算機用の目的プログラムに翻訳する並
列化コンパイラが必要になり例として、特開平02−1
32525号公報に記載されている並列化コンパイラが
あげられる。
であるCやFORTRANなどで書かれたソースプログ
ラムを並列計算機で実行するには、一般に元のソースプ
ログラムを並列計算機用の目的プログラムに翻訳する並
列化コンパイラが必要になり例として、特開平02−1
32525号公報に記載されている並列化コンパイラが
あげられる。
【0004】図21は従来の並列化コンパイラ201及
び中間コード格納部202の構成図である。中間コード
格納部202は、中間コード等を格納しておく領域であ
る。並列化コンパイラ201は、構文解析部203と、
並列性検出部204と、並列化変換部205と、目的プ
ログラム生成部206から構成されている。
び中間コード格納部202の構成図である。中間コード
格納部202は、中間コード等を格納しておく領域であ
る。並列化コンパイラ201は、構文解析部203と、
並列性検出部204と、並列化変換部205と、目的プ
ログラム生成部206から構成されている。
【0005】構文解析部203は、図2に示すようなソ
ースプログラムの字句解析や構文解析を行ない中間言語
に変換して中間コード格納部202に格納する。図2
は、並列実行の対象となるDO文を複数含むFORTR
ANプログラムを示す、プログラムの図である。図2に
おいて、21は第1のDO文、22は21のループの内
部に含まれる第2のDO文、23は22のループの外に
あり、21のループ内で実行される実行文のブロック、
24は22のループ内で実行される実行文のブロックを
示す。
ースプログラムの字句解析や構文解析を行ない中間言語
に変換して中間コード格納部202に格納する。図2
は、並列実行の対象となるDO文を複数含むFORTR
ANプログラムを示す、プログラムの図である。図2に
おいて、21は第1のDO文、22は21のループの内
部に含まれる第2のDO文、23は22のループの外に
あり、21のループ内で実行される実行文のブロック、
24は22のループ内で実行される実行文のブロックを
示す。
【0006】並列性検出部204は、並列可能なループ
を検出し、さらに分割可能なループを検出して、それら
に基づいて並列、分割、拡大等を行い並列化の度合を最
大とする中間コードを求め格納部2に格納する。また並
列性検出部204は、図22に示すように並列ループ検
出部2041と、分割拡大実行部2042から構成され
ている。
を検出し、さらに分割可能なループを検出して、それら
に基づいて並列、分割、拡大等を行い並列化の度合を最
大とする中間コードを求め格納部2に格納する。また並
列性検出部204は、図22に示すように並列ループ検
出部2041と、分割拡大実行部2042から構成され
ている。
【0007】並列ループ検出部2041は、構文解析部
203で変換された中間言語を用いて、中間言語におい
て並列可能なループを検出する。分割拡大実行部204
2は、並列ループ検出部2041での並列可能なループ
の検出が終了した中間言語において、並列化可能なルー
プに着目し、図23、図24に示す動作フロー図に従い
並列化の度合を最大にするように並列化し、かつ分割で
きるループがあれば分割を行い、分割ができなければル
ープを拡大するように処理を行い、図11に示すような
中間コードを生成する。そしてその中間コードを格納部
2に格納する。図11において、111は21のDOル
ープを並列性検出部204がループ分割した結果得られ
た、並列実行可能な第1のDOループ、112は21の
DOループを並列性検出部204がループ分割した結果
得られた、並列実行可能な第2のDOループ、113は
41のDOループを並列実行するように指示するHPF
(High Performance Fortra
n)のディレクティブ(指示子)が付された第1のDO
文、114は113によって並列実行する実行文のブロ
ック、115は112のDOループを並列実行するよう
に指示するHPFのディレクティブが付された第2のD
O文、46は42のDOループを並列実行するように指
示するHPFのディレクティブが付された第3のDO文
を示す。ここで分割とは、例えば図2に示すようにルー
プが二重になっている場合に図11に示すように内側の
ループの直前直後で外側のループを切り離して2つ以上
のループにすることをいう。ここで拡大とは、例えば図
2に示すようにループが二重になっている場合に図12
に示すように内側のループを外側のループの最内側にま
で広げることをいう。
203で変換された中間言語を用いて、中間言語におい
て並列可能なループを検出する。分割拡大実行部204
2は、並列ループ検出部2041での並列可能なループ
の検出が終了した中間言語において、並列化可能なルー
プに着目し、図23、図24に示す動作フロー図に従い
並列化の度合を最大にするように並列化し、かつ分割で
きるループがあれば分割を行い、分割ができなければル
ープを拡大するように処理を行い、図11に示すような
中間コードを生成する。そしてその中間コードを格納部
2に格納する。図11において、111は21のDOル
ープを並列性検出部204がループ分割した結果得られ
た、並列実行可能な第1のDOループ、112は21の
DOループを並列性検出部204がループ分割した結果
得られた、並列実行可能な第2のDOループ、113は
41のDOループを並列実行するように指示するHPF
(High Performance Fortra
n)のディレクティブ(指示子)が付された第1のDO
文、114は113によって並列実行する実行文のブロ
ック、115は112のDOループを並列実行するよう
に指示するHPFのディレクティブが付された第2のD
O文、46は42のDOループを並列実行するように指
示するHPFのディレクティブが付された第3のDO文
を示す。ここで分割とは、例えば図2に示すようにルー
プが二重になっている場合に図11に示すように内側の
ループの直前直後で外側のループを切り離して2つ以上
のループにすることをいう。ここで拡大とは、例えば図
2に示すようにループが二重になっている場合に図12
に示すように内側のループを外側のループの最内側にま
で広げることをいう。
【0008】具体的な動作については、図23、図24
に示す。ここで、図24は、図23で呼び出されるサブ
ルーチンである。並列化変換部205は、並列性検出部
204で求められた中間コードに対して、データのアク
セスの状態を調べてデータの分散方法を決定し、実行に
必要なデータ転送のためのデータ転送文を追加した図1
6に示すような並列化中間コードを生成し、再び中間コ
ード格納部202に格納する。追加されたデータ転送の
ためのデータ転送文は、図16における161、162
に示す行の文である。
に示す。ここで、図24は、図23で呼び出されるサブ
ルーチンである。並列化変換部205は、並列性検出部
204で求められた中間コードに対して、データのアク
セスの状態を調べてデータの分散方法を決定し、実行に
必要なデータ転送のためのデータ転送文を追加した図1
6に示すような並列化中間コードを生成し、再び中間コ
ード格納部202に格納する。追加されたデータ転送の
ためのデータ転送文は、図16における161、162
に示す行の文である。
【0009】目的プログラム生成部206は、最適化処
理部207と、メモリ割り付け・レジスタ割り当て部2
08と、コード生成部209から構成されていて、選択
された並列化中間コードから目的コードを生成する機能
を有する。最適化処理部207は、作成された並列化中
間コードに対して最適化処理を行う。
理部207と、メモリ割り付け・レジスタ割り当て部2
08と、コード生成部209から構成されていて、選択
された並列化中間コードから目的コードを生成する機能
を有する。最適化処理部207は、作成された並列化中
間コードに対して最適化処理を行う。
【0010】メモリ割り付け・レジスタ割り当て部20
8は、並列化中間コード内で用いられる全ての変数をメ
モリ及びレジスタに割当てる。コード生成部209は、
並列化中間コード及び割当てられた結果より目的プログ
ラムを生成する。このように、並列になる数を最大にす
るようにコンパイルしている。これは、一般に、並列に
なる数を多くすると、計算機での実行時間が短くなると
考えられるからである。
8は、並列化中間コード内で用いられる全ての変数をメ
モリ及びレジスタに割当てる。コード生成部209は、
並列化中間コード及び割当てられた結果より目的プログ
ラムを生成する。このように、並列になる数を最大にす
るようにコンパイルしている。これは、一般に、並列に
なる数を多くすると、計算機での実行時間が短くなると
考えられるからである。
【0011】
【発明が解決しようとする課題】しかしながら上記の従
来の構成によれば、コンパイルしたプログラムの並列計
算機での実際の実行時間が最も短くなるとは限らないと
いう問題があった。その理由として、通常、ソースプロ
グラムには並列化し得る部分が複数存在し、どの部分を
並列化するかによって実行速度が異なるからである。特
に、分散メモリを有する並列計算機においては、例えば
図25に示すように各ローカルメモリにデータが分散し
ているため各ローカルメモリ間でのデータ転送が発生
し、並列計算機のアーキテクチャーによっては、このデ
ータ転送時間が実行時間の多くを占めるからである。
来の構成によれば、コンパイルしたプログラムの並列計
算機での実際の実行時間が最も短くなるとは限らないと
いう問題があった。その理由として、通常、ソースプロ
グラムには並列化し得る部分が複数存在し、どの部分を
並列化するかによって実行速度が異なるからである。特
に、分散メモリを有する並列計算機においては、例えば
図25に示すように各ローカルメモリにデータが分散し
ているため各ローカルメモリ間でのデータ転送が発生
し、並列計算機のアーキテクチャーによっては、このデ
ータ転送時間が実行時間の多くを占めるからである。
【0012】本発明は上記問題点を解決するため、並列
計算機での実行時間が最も短くなるようにソースプログ
ラムをコンパイルするコンパイラを提供することを目的
とする。
計算機での実行時間が最も短くなるようにソースプログ
ラムをコンパイルするコンパイラを提供することを目的
とする。
【0013】
【課題を解決するための手段】上記目的を達成するた
め、本発明の請求項1では、高級言語で記述されたソー
スプログラムの構文解析を行ない中間言語に変換する構
文解析手段と、前記中間言語について、並列実行可能な
ループを検出し、検出されたループに基づいて並列化の
すべてのパターンの並列化中間言語を求める並列性検出
手段と、前記並列化中間言語に基づいて、実行に必要な
プロセッサエレメント間のデータ転送を指示するデータ
転送文を追加した並列化中間言語に変換する並列化変換
手段と、前記並列化変換手段で変換された並列化中間言
語の並列実行されるループの回数と並列実行される部分
と動作するプロセッサ数とに基づいて各々の前記並列化
中間言語の実行時間を予測する実行時間評価手段と、前
記実行時間評価手段で予測された実行時間がもっとも短
い並列化中間言語を選ぶ並列化中間言語選択手段と、前
記並列化中間言語選択手段によって選ばれた前記並列化
中間言語を目的プログラムに変換する目的プログラム生
成手段とを備えたことを特徴とする。
め、本発明の請求項1では、高級言語で記述されたソー
スプログラムの構文解析を行ない中間言語に変換する構
文解析手段と、前記中間言語について、並列実行可能な
ループを検出し、検出されたループに基づいて並列化の
すべてのパターンの並列化中間言語を求める並列性検出
手段と、前記並列化中間言語に基づいて、実行に必要な
プロセッサエレメント間のデータ転送を指示するデータ
転送文を追加した並列化中間言語に変換する並列化変換
手段と、前記並列化変換手段で変換された並列化中間言
語の並列実行されるループの回数と並列実行される部分
と動作するプロセッサ数とに基づいて各々の前記並列化
中間言語の実行時間を予測する実行時間評価手段と、前
記実行時間評価手段で予測された実行時間がもっとも短
い並列化中間言語を選ぶ並列化中間言語選択手段と、前
記並列化中間言語選択手段によって選ばれた前記並列化
中間言語を目的プログラムに変換する目的プログラム生
成手段とを備えたことを特徴とする。
【0014】請求項2では、前記並列性検出手段は、中
間言語において並列実行可能なループを検出する並列ル
ープ検出部と、並列実行可能なループについて、分割可
能なループを検出する分割ループ検出部と、並列ループ
検出部及び分割ループ検出部の検出結果に基づいて、全
てのループに関して、分割して並列化する場合、拡大し
て並列化を行う場合、分割も拡大しないで並列化する場
合、並列化しない場合の4つの場合を組み合わせたパタ
ーンを求めそれぞれのパターンの中間言語を求める分割
拡大実行部とからなることを特徴とする。
間言語において並列実行可能なループを検出する並列ル
ープ検出部と、並列実行可能なループについて、分割可
能なループを検出する分割ループ検出部と、並列ループ
検出部及び分割ループ検出部の検出結果に基づいて、全
てのループに関して、分割して並列化する場合、拡大し
て並列化を行う場合、分割も拡大しないで並列化する場
合、並列化しない場合の4つの場合を組み合わせたパタ
ーンを求めそれぞれのパターンの中間言語を求める分割
拡大実行部とからなることを特徴とする。
【0015】請求項3では、前記実行時間評価手段は、
さらに並列実行される部分毎に、データ転送文と、並列
実行されるループの回数とに基づいてデータ転送時間を
求め、前記実行時間にデータ転送時間を加えたものを新
たな実行時間とすることを特徴とする。請求項4では、
前記並列計算機は、さらに、各プロセッサエレメントに
共通のデータを記憶する共有メモリを有し、前記並列化
変換手段は、さらに、実行に必要な各プロセッサエレメ
ントと共有メモリとの間のデータ転送、及びそのデータ
転送における共有メモリへのアクセス競合を制御する排
他制御を指示する制御文を追加した並列化中間言語に変
換することを特徴とし、前記実行時間評価手段は、さら
に各プロセッサエレメントと共有メモリとの間のデータ
転送に要する回数に基づいて排他制御時間を求め、前記
実行時間に排他制御時間を加えたものを新たな実行時間
とすることを特徴とする。
さらに並列実行される部分毎に、データ転送文と、並列
実行されるループの回数とに基づいてデータ転送時間を
求め、前記実行時間にデータ転送時間を加えたものを新
たな実行時間とすることを特徴とする。請求項4では、
前記並列計算機は、さらに、各プロセッサエレメントに
共通のデータを記憶する共有メモリを有し、前記並列化
変換手段は、さらに、実行に必要な各プロセッサエレメ
ントと共有メモリとの間のデータ転送、及びそのデータ
転送における共有メモリへのアクセス競合を制御する排
他制御を指示する制御文を追加した並列化中間言語に変
換することを特徴とし、前記実行時間評価手段は、さら
に各プロセッサエレメントと共有メモリとの間のデータ
転送に要する回数に基づいて排他制御時間を求め、前記
実行時間に排他制御時間を加えたものを新たな実行時間
とすることを特徴とする。
【0016】
【作用】上記構成によれば、請求項1では、高級言語で
記述されたソースプログラムの構文解析が構文解析手段
によって行なわれ、さらに構文解析手段によって中間言
語に変換される。前記中間言語について、並列実行可能
なループが並列性検出手段によって検出され、検出され
たループに基づいて並列化のすべてのパターンの並列化
中間言語が並列性検出手段によって求められる。前記中
間言語に基づいて、実行に必要なプロセッサエレメント
間のデータ転送を指示するデータ転送文を追加した並列
化中間言語は、並列化変換手段によって求められる。前
記並列化変換手段で求められた並列化中間言語の並列実
行されるループの回数と並列実行される部分と動作する
プロセッサ数とに基づいて各々の前記並列化中間言語の
実行時間が実行時間評価手段によって予測される。さら
に前記実行時間評価手段で予測された実行時間がもっと
も短い並列化中間言語が並列化中間言語選択手段によっ
て選ばれる。前記並列化中間言語選択手段によって選ば
れた前記並列化中間言語は、目的プログラム生成手段に
よって目的プログラムに変換される。
記述されたソースプログラムの構文解析が構文解析手段
によって行なわれ、さらに構文解析手段によって中間言
語に変換される。前記中間言語について、並列実行可能
なループが並列性検出手段によって検出され、検出され
たループに基づいて並列化のすべてのパターンの並列化
中間言語が並列性検出手段によって求められる。前記中
間言語に基づいて、実行に必要なプロセッサエレメント
間のデータ転送を指示するデータ転送文を追加した並列
化中間言語は、並列化変換手段によって求められる。前
記並列化変換手段で求められた並列化中間言語の並列実
行されるループの回数と並列実行される部分と動作する
プロセッサ数とに基づいて各々の前記並列化中間言語の
実行時間が実行時間評価手段によって予測される。さら
に前記実行時間評価手段で予測された実行時間がもっと
も短い並列化中間言語が並列化中間言語選択手段によっ
て選ばれる。前記並列化中間言語選択手段によって選ば
れた前記並列化中間言語は、目的プログラム生成手段に
よって目的プログラムに変換される。
【0017】請求項2では、前記並列性検出手段におい
て、中間言語において並列実行可能なループは、並列ル
ープ検出部によって検出される。つぎに並列実行可能な
ループについて、分割可能なループは、分割ループ検出
部によって検出される。並列ループ検出部及び分割ルー
プ検出部の検出結果に基づいて、1つの並列実行可能な
ループに対して、分割して並列化する場合、拡大して並
列化を行う場合、分割も拡大しないで並列化する場合、
並列化しない場合の4通りをすべての並列可能なループ
に関して組み合わせた全てのパターンが分割拡大実行部
によって求められ、それぞれのパターンの中間言語が分
割拡大実行部によって求められる。
て、中間言語において並列実行可能なループは、並列ル
ープ検出部によって検出される。つぎに並列実行可能な
ループについて、分割可能なループは、分割ループ検出
部によって検出される。並列ループ検出部及び分割ルー
プ検出部の検出結果に基づいて、1つの並列実行可能な
ループに対して、分割して並列化する場合、拡大して並
列化を行う場合、分割も拡大しないで並列化する場合、
並列化しない場合の4通りをすべての並列可能なループ
に関して組み合わせた全てのパターンが分割拡大実行部
によって求められ、それぞれのパターンの中間言語が分
割拡大実行部によって求められる。
【0018】請求項3では、前記実行時間評価手段によ
って、さらに並列実行される部分毎に、データ転送文
と、並列実行されるループの回数とに基づいてデータ転
送時間が求められ、前記実行時間にデータ転送時間を加
えたものが新たな実行時間とされる。請求項4では、前
記並列化変換手段によって、さらに、実行に必要な各プ
ロセッサエレメントと共有メモリとの間のデータ転送、
及びそのデータ転送における共有メモリへのアクセス競
合を制御する排他制御を指示する制御文を追加した並列
化中間言語が求められることを特徴とし、前記実行時間
評価手段のよって、さらに各プロセッサエレメントと共
有メモリとの間のデータ転送に要する回数に基づいて排
他制御時間が求められ、前記実行時間に排他制御時間を
加えたものを新たな実行時間とすることを特徴とする。
って、さらに並列実行される部分毎に、データ転送文
と、並列実行されるループの回数とに基づいてデータ転
送時間が求められ、前記実行時間にデータ転送時間を加
えたものが新たな実行時間とされる。請求項4では、前
記並列化変換手段によって、さらに、実行に必要な各プ
ロセッサエレメントと共有メモリとの間のデータ転送、
及びそのデータ転送における共有メモリへのアクセス競
合を制御する排他制御を指示する制御文を追加した並列
化中間言語が求められることを特徴とし、前記実行時間
評価手段のよって、さらに各プロセッサエレメントと共
有メモリとの間のデータ転送に要する回数に基づいて排
他制御時間が求められ、前記実行時間に排他制御時間を
加えたものを新たな実行時間とすることを特徴とする。
【0019】
【実施例】図1は本発明の実施例の並列化コンパイラ1
及び格納部2を含む構成図である。格納部2は、処理で
生じた中間コード等を格納しておく領域である。並列化
コンパイラ1は、構文解析部3、並列性検出部4、並列
化変換部5、実行時間評価部6、並列化中間コード選択
部7、目的プログラム生成部8から構成されている。
及び格納部2を含む構成図である。格納部2は、処理で
生じた中間コード等を格納しておく領域である。並列化
コンパイラ1は、構文解析部3、並列性検出部4、並列
化変換部5、実行時間評価部6、並列化中間コード選択
部7、目的プログラム生成部8から構成されている。
【0020】構文解析部3は、入力されたソースプログ
ラムの字句解析や構文解析を行ない中間言語に変換して
格納部2に格納する。入力されたソースプログラムの例
を、図2に示す。同図において21は第1のDO文、2
2は21のループの内部に含まれる第2のDO文、23
は22のループの外にある21のループ内で実行される
実行文のブロック、24は22のループ内で実行される
実行文のブロックを示す。
ラムの字句解析や構文解析を行ない中間言語に変換して
格納部2に格納する。入力されたソースプログラムの例
を、図2に示す。同図において21は第1のDO文、2
2は21のループの内部に含まれる第2のDO文、23
は22のループの外にある21のループ内で実行される
実行文のブロック、24は22のループ内で実行される
実行文のブロックを示す。
【0021】並列性検出部4は、並列可能なループを検
出し、さらに分割可能なループを検出して、それらに基
づいて分割、拡大等を行い並列化のパターンすべての中
間コードを求め格納部2に格納する。また並列性検出部
4は、図3に示すように並列ループ検出部41と、分割
ループ検出部42と、分割拡大実行部43から構成され
ている。
出し、さらに分割可能なループを検出して、それらに基
づいて分割、拡大等を行い並列化のパターンすべての中
間コードを求め格納部2に格納する。また並列性検出部
4は、図3に示すように並列ループ検出部41と、分割
ループ検出部42と、分割拡大実行部43から構成され
ている。
【0022】並列ループ検出部41は、構文解析部3で
変換された中間言語のすべてのループにおいて並列可能
なループを検出する。分割ループ検出部42は、並列ル
ープ検出部41での検出が終了したら、並列化可能なル
ープに着目し、分割可能なループを検出する。具体的な
動作については、図4及び図5に示す。ここで、図5
は、図4で呼び出されるサブルーチンである。図4は、
プログラムの行を読み込み、並列可能なループであれば
図5のサブルーチンを実行する(ステップS41からス
テップS43)。図5は、並列可能なループの先頭であ
れば(ステップS51からステップS53)、さらにそ
のループの前後でループの分割が可能かを判断する(ス
テップS54)。分割可能であればそのループの位置を
記憶する(ステップS55)。そしてさらに図5のサブ
ルーチンを再帰呼び出しする(ステップS56)。ま
た、ステップS53において、並列可能なループの先頭
でなければ次の行に進む(ステップS57からステップ
S52)。
変換された中間言語のすべてのループにおいて並列可能
なループを検出する。分割ループ検出部42は、並列ル
ープ検出部41での検出が終了したら、並列化可能なル
ープに着目し、分割可能なループを検出する。具体的な
動作については、図4及び図5に示す。ここで、図5
は、図4で呼び出されるサブルーチンである。図4は、
プログラムの行を読み込み、並列可能なループであれば
図5のサブルーチンを実行する(ステップS41からス
テップS43)。図5は、並列可能なループの先頭であ
れば(ステップS51からステップS53)、さらにそ
のループの前後でループの分割が可能かを判断する(ス
テップS54)。分割可能であればそのループの位置を
記憶する(ステップS55)。そしてさらに図5のサブ
ルーチンを再帰呼び出しする(ステップS56)。ま
た、ステップS53において、並列可能なループの先頭
でなければ次の行に進む(ステップS57からステップ
S52)。
【0023】分割拡大実行部43は、分割ループ検出部
42での検出が終了したら、並列可能なループと分割可
能なループに着目し、各々のループに関して、並列化の
み行う、分割して並列化を行う、拡大して並列化を行
う、並列化を行わないの4通りの作業が考えられる。そ
こで、各々のループに関してこれらの作業を行いすべて
のパターンの中間コードを求め格納部2に格納する。こ
こで分割とは、例えば図2に示すようにループが二重に
なっている場合に図11に示すように内側のループの直
前直後で外側のループを切り離して2つ以上のループに
することをいう。ここで拡大とは、例えば図2に示すよ
うにループが二重になっている場合に図12に示すよう
に内側のループを外側のループの最内側にまで広げるこ
とをいう。具体的な動作については、図6、図7、図
8、図9に示す。ここで、図7は、図6で呼び出される
サブルーチンであり、図8及び図9は、図7で呼び出さ
れるサブルーチンである。求められたパターンの中間コ
ードの例は、図10、図11、図12、図13、図14
に示される。図6は、プログラムの行を読み込み並列可
能なループであるかを判断する(ステップS61からス
テップS62)。並列可能なループであれば図7のサブ
ルーチンを呼び出す(ステップS63)。ステップS6
2にて、並列可能なループでなければ次の行を読み込む
(ステップS64からステップS65)。呼び出された
図7のサブルーチンは、ここまでのプログラムの行に関
して、並列化した中間コードと並列化しない中間コード
を作る(ステップS71からステップS72)。次に次
の行を読み込み(ステップS73)、それが並列可能な
ループの先頭であれば(ステップS74)、さらに図7
のサブルーチンを再帰呼び出しする(ステップS7
5)。次に、そのループに分割可能である場合は、図8
のサブルーチンを呼び出し、分割可能でない場合は、図
9のサブルーチンを呼び出す(ステップS76からステ
ップS78)。ステップS74にて、並列可能なループ
でなければ次の行を読み込む(ステップS79からステ
ップS73)。
42での検出が終了したら、並列可能なループと分割可
能なループに着目し、各々のループに関して、並列化の
み行う、分割して並列化を行う、拡大して並列化を行
う、並列化を行わないの4通りの作業が考えられる。そ
こで、各々のループに関してこれらの作業を行いすべて
のパターンの中間コードを求め格納部2に格納する。こ
こで分割とは、例えば図2に示すようにループが二重に
なっている場合に図11に示すように内側のループの直
前直後で外側のループを切り離して2つ以上のループに
することをいう。ここで拡大とは、例えば図2に示すよ
うにループが二重になっている場合に図12に示すよう
に内側のループを外側のループの最内側にまで広げるこ
とをいう。具体的な動作については、図6、図7、図
8、図9に示す。ここで、図7は、図6で呼び出される
サブルーチンであり、図8及び図9は、図7で呼び出さ
れるサブルーチンである。求められたパターンの中間コ
ードの例は、図10、図11、図12、図13、図14
に示される。図6は、プログラムの行を読み込み並列可
能なループであるかを判断する(ステップS61からス
テップS62)。並列可能なループであれば図7のサブ
ルーチンを呼び出す(ステップS63)。ステップS6
2にて、並列可能なループでなければ次の行を読み込む
(ステップS64からステップS65)。呼び出された
図7のサブルーチンは、ここまでのプログラムの行に関
して、並列化した中間コードと並列化しない中間コード
を作る(ステップS71からステップS72)。次に次
の行を読み込み(ステップS73)、それが並列可能な
ループの先頭であれば(ステップS74)、さらに図7
のサブルーチンを再帰呼び出しする(ステップS7
5)。次に、そのループに分割可能である場合は、図8
のサブルーチンを呼び出し、分割可能でない場合は、図
9のサブルーチンを呼び出す(ステップS76からステ
ップS78)。ステップS74にて、並列可能なループ
でなければ次の行を読み込む(ステップS79からステ
ップS73)。
【0024】呼び出された図8のサブルーチンは、ま
ず、ここまでのプログラムに関して、並列化可能なルー
プを並列化しない中間コードと、一つ外側のループをこ
のループの前後で分割し並列化した中間コードと、一つ
外側のループを最内側まで拡大して、このループを並列
化した中間コードをつくる(ステップS801からステ
ップS802)。次の行を読み込み、並列化可能なルー
プであるかを判定し以下同様に処理をする(ステップS
803からステップS811)。読み出された図9のサ
ブルーチンは、ここまでのプログラムに関して、並列化
可能なループを並列化しない中間コードと、一つ外側の
ループを最内側まで拡大して、このループを並列化した
中間コードをつくる(ステップS91からステップS9
2)。次の行を読み込み、並列化可能なループであるか
を判定し、以下同様に処理をする(ステップS93から
ステップS99)。
ず、ここまでのプログラムに関して、並列化可能なルー
プを並列化しない中間コードと、一つ外側のループをこ
のループの前後で分割し並列化した中間コードと、一つ
外側のループを最内側まで拡大して、このループを並列
化した中間コードをつくる(ステップS801からステ
ップS802)。次の行を読み込み、並列化可能なルー
プであるかを判定し以下同様に処理をする(ステップS
803からステップS811)。読み出された図9のサ
ブルーチンは、ここまでのプログラムに関して、並列化
可能なループを並列化しない中間コードと、一つ外側の
ループを最内側まで拡大して、このループを並列化した
中間コードをつくる(ステップS91からステップS9
2)。次の行を読み込み、並列化可能なループであるか
を判定し、以下同様に処理をする(ステップS93から
ステップS99)。
【0025】図10から図14の図は、便宜上人に理解
できる形式で表してある。図10について、101は図
2の21のDO文を並列実行指示するためのHPFの指
示子が付されたDO文であり、102は101によって
並列実行する実行文のブロックを示す。他の図である図
11から図14についても同様である。図10は、外側
のループのみを並列化した中間コードである。図11
は、外側のループを内側のループの直前直後で分割し
て、並列化した中間コードである。図12は、内側のル
ープを外側のループの最内側まで拡大して、並列化した
中間コードである。図13は、内側のループのみ並列化
した中間コードである。図14は、並列化を全然行わな
い中間コードである。
できる形式で表してある。図10について、101は図
2の21のDO文を並列実行指示するためのHPFの指
示子が付されたDO文であり、102は101によって
並列実行する実行文のブロックを示す。他の図である図
11から図14についても同様である。図10は、外側
のループのみを並列化した中間コードである。図11
は、外側のループを内側のループの直前直後で分割し
て、並列化した中間コードである。図12は、内側のル
ープを外側のループの最内側まで拡大して、並列化した
中間コードである。図13は、内側のループのみ並列化
した中間コードである。図14は、並列化を全然行わな
い中間コードである。
【0026】並列化変換部5は、並列性検出部4で求め
られた全てのパターンの中間コードに対して、データの
アクセスの状態を調べてデータの分散方法を決定し、実
行に必要なデータ転送のためのデータ転送文を追加した
図15から図19に示すような並列化中間コードを生成
し、再び格納部2に格納する。追加されたデータ転送の
ためのデータ転送文は、図15における151に示す行
の文である。他の図面である図16から図19について
も同様である。
られた全てのパターンの中間コードに対して、データの
アクセスの状態を調べてデータの分散方法を決定し、実
行に必要なデータ転送のためのデータ転送文を追加した
図15から図19に示すような並列化中間コードを生成
し、再び格納部2に格納する。追加されたデータ転送の
ためのデータ転送文は、図15における151に示す行
の文である。他の図面である図16から図19について
も同様である。
【0027】実行時間評価部6は、並列化変換部5でデ
ータ転送文が追加された並列化中間コードに対して、プ
ロセッサでの予測実行時間と、データ転送時間と、それ
らを足したものである予測総実行時間を求める。また実
行時間評価部6は、図20に示すように、実行時間予測
部61と、データ転送時間予測部62と、総実行時間予
測部63から構成される。
ータ転送文が追加された並列化中間コードに対して、プ
ロセッサでの予測実行時間と、データ転送時間と、それ
らを足したものである予測総実行時間を求める。また実
行時間評価部6は、図20に示すように、実行時間予測
部61と、データ転送時間予測部62と、総実行時間予
測部63から構成される。
【0028】実行時間予測部61は、図15から図19
に示すような並列化中間コードから、並列実行される実
行文のブロック毎に、その実行文のブロックにおけるプ
ロセッサ1個によるループ1回あたりの実行時間と、並
列実行されるループの回数と、その部分で並列に動作す
るプロセッサ数から、全ての実行文のブロックの実行時
間を予測する。そして求められたすべての実行文のブロ
ックの実行時間の総和を求め、これを予測実行時間とし
て求める。また求められた予測実行時間を、並列化中間
コードと対応させて格納部2に格納する。
に示すような並列化中間コードから、並列実行される実
行文のブロック毎に、その実行文のブロックにおけるプ
ロセッサ1個によるループ1回あたりの実行時間と、並
列実行されるループの回数と、その部分で並列に動作す
るプロセッサ数から、全ての実行文のブロックの実行時
間を予測する。そして求められたすべての実行文のブロ
ックの実行時間の総和を求め、これを予測実行時間とし
て求める。また求められた予測実行時間を、並列化中間
コードと対応させて格納部2に格納する。
【0029】具体的には、図2における実行文のブロッ
ク23とブロック24の実行時間をT1、T2とすると
(但し、「a」は、a以上の最小の整数を表す。)図1
5の示す並列化中間コードの予測実行時間をT3は、次
のように表される。T3=「nx/N」・(T1+ny
・T2)。これは、並列実行される部分が152で示さ
れる部分であるためそこでの実行時間は、T1+ny・
T2で表される。ny・T2は、T2時間の部分がny
回ループすることを表している。次に、「nx/N」の
部分は、並列実行される部分152がnx個存在するこ
とを示していて、それが、N個のプロセッサで実行する
ことを表している。よって、nx/Nとなるが、それが
整数でないときは、1回多く実行しているプロセッサが
少なくとも1個は存在していることを意味する。そのた
め、プロセッサ全体での実行時間としては、その1回多
く実行しているプロセッサの実行時間になるため、「n
x/N」となる。同様に、図16に示す並列化中間コー
ドの予測実行時間T4は、次のように表される。T4=
「nx/N」・T1+「nx・ny/N」・T2。図1
7に示す並列化中間コードの予測実行時間T5は、次の
ように表される。T5=「nx・ny/N」・(T1+
T2)。図18に示す並列化中間コードの予測実行時間
T6は、次のように表される。T6=nx・(T1+
「ny/N」・T2)。図19に示す並列化中間コード
の予測実行時間T7は、次のように表される。T7=n
x・(T1+ny・T2)。これらによって、T4≦T
3≦T6≦T7、T4≦T5であることが分かる。
ク23とブロック24の実行時間をT1、T2とすると
(但し、「a」は、a以上の最小の整数を表す。)図1
5の示す並列化中間コードの予測実行時間をT3は、次
のように表される。T3=「nx/N」・(T1+ny
・T2)。これは、並列実行される部分が152で示さ
れる部分であるためそこでの実行時間は、T1+ny・
T2で表される。ny・T2は、T2時間の部分がny
回ループすることを表している。次に、「nx/N」の
部分は、並列実行される部分152がnx個存在するこ
とを示していて、それが、N個のプロセッサで実行する
ことを表している。よって、nx/Nとなるが、それが
整数でないときは、1回多く実行しているプロセッサが
少なくとも1個は存在していることを意味する。そのた
め、プロセッサ全体での実行時間としては、その1回多
く実行しているプロセッサの実行時間になるため、「n
x/N」となる。同様に、図16に示す並列化中間コー
ドの予測実行時間T4は、次のように表される。T4=
「nx/N」・T1+「nx・ny/N」・T2。図1
7に示す並列化中間コードの予測実行時間T5は、次の
ように表される。T5=「nx・ny/N」・(T1+
T2)。図18に示す並列化中間コードの予測実行時間
T6は、次のように表される。T6=nx・(T1+
「ny/N」・T2)。図19に示す並列化中間コード
の予測実行時間T7は、次のように表される。T7=n
x・(T1+ny・T2)。これらによって、T4≦T
3≦T6≦T7、T4≦T5であることが分かる。
【0030】データ転送時間予測部62は、データ転送
に要する時間も予測可能であれば、図15から図19に
しめすような並列化中間コードから、データ転送時間を
予測する。具体的には、データ転送時間は、並列実行さ
れるブロック毎に、並列実行に必要となるデータ転送文
から、そのデータ転送文によって転送されるデータ量を
求め、さらに比例定数Cをかけたものを求め、そして求
められた値の全てのデータ転送文に対しての総和をデー
タ転送時間として求め並列化中間コードと対応させて格
納部2に格納する。ここでの比例定数Cは、対象とする
ハードウェアーの特性によってデータ転送時間が、プロ
セッサ数や、送信プロセッサや受信プロセッサの位置等
に関係なく転送されるデータ量に比例するものと仮定し
たときの比例定数であるとする。図15に示す並列化中
間コードのデータ転送の予測実行時間T8は、次によう
に表される。T8=5C・nx・ny。並列実行のため
に必要なデータ転送文は5つある。その各々のデータ転
送量は、nx・nyで等しい。よって各々のデータ転送
時間は、C・nx・nyとなり、それが5つあるので5
C・nx・nyとなる。同様にして、図16に示す並列
化中間コードのデータ転送の予測実行時間T9は、次の
ように表される。T9=4C・nx+3C・nx・n
y。図17に示す並列化中間コードのデータ転送の予測
実行時間T10は、次のように表される。T10=5C
・nx・ny。図18に示す並列化中間コードのデータ
転送の予測実行時間T11は、次のように表される。T
11=3C・nx・ny。図19に示す並列化中間コー
ドのデータ転送の予測実行時間T12は、次のように表
される。T12=0。
に要する時間も予測可能であれば、図15から図19に
しめすような並列化中間コードから、データ転送時間を
予測する。具体的には、データ転送時間は、並列実行さ
れるブロック毎に、並列実行に必要となるデータ転送文
から、そのデータ転送文によって転送されるデータ量を
求め、さらに比例定数Cをかけたものを求め、そして求
められた値の全てのデータ転送文に対しての総和をデー
タ転送時間として求め並列化中間コードと対応させて格
納部2に格納する。ここでの比例定数Cは、対象とする
ハードウェアーの特性によってデータ転送時間が、プロ
セッサ数や、送信プロセッサや受信プロセッサの位置等
に関係なく転送されるデータ量に比例するものと仮定し
たときの比例定数であるとする。図15に示す並列化中
間コードのデータ転送の予測実行時間T8は、次によう
に表される。T8=5C・nx・ny。並列実行のため
に必要なデータ転送文は5つある。その各々のデータ転
送量は、nx・nyで等しい。よって各々のデータ転送
時間は、C・nx・nyとなり、それが5つあるので5
C・nx・nyとなる。同様にして、図16に示す並列
化中間コードのデータ転送の予測実行時間T9は、次の
ように表される。T9=4C・nx+3C・nx・n
y。図17に示す並列化中間コードのデータ転送の予測
実行時間T10は、次のように表される。T10=5C
・nx・ny。図18に示す並列化中間コードのデータ
転送の予測実行時間T11は、次のように表される。T
11=3C・nx・ny。図19に示す並列化中間コー
ドのデータ転送の予測実行時間T12は、次のように表
される。T12=0。
【0031】総実行時間予測部63は、各並列化中間コ
ードに対して、実行時間予測部61で求められた予測実
行時間と、データ転送時間予測部62とで求められたデ
ータ転送時間を足して、予測総実行時間として求める。
求められた例としては、図15の予測実行実行時間T1
3は、次のように表される。T13=T3+T8。図1
6の予測実行実行時間T14は、次のように表される。
T14=T4+T9。図17の予測実行実行時間T15
は、次のように表される。T15=T5+T10。図1
8の予測実行実行時間T16は、次のように表される。
T16=T6+T11。図19の予測実行実行時間T1
7は、次のように表される。T17=T7+T12=T
7。
ードに対して、実行時間予測部61で求められた予測実
行時間と、データ転送時間予測部62とで求められたデ
ータ転送時間を足して、予測総実行時間として求める。
求められた例としては、図15の予測実行実行時間T1
3は、次のように表される。T13=T3+T8。図1
6の予測実行実行時間T14は、次のように表される。
T14=T4+T9。図17の予測実行実行時間T15
は、次のように表される。T15=T5+T10。図1
8の予測実行実行時間T16は、次のように表される。
T16=T6+T11。図19の予測実行実行時間T1
7は、次のように表される。T17=T7+T12=T
7。
【0032】並列化中間コード選択部7は、格納部2の
中から、予測実行時間若しくは、予測総実行時間がもっ
とも短い並列化中間コードを選択する。目的プログラム
生成部8は、最適化処理部9、メモリ割り付け・レジス
タ割り当て部10、コード生成部11から構成されてい
て、並列化中間コード選択部7により選択された並列化
中間コードから目的コードを生成する機能を有する。
中から、予測実行時間若しくは、予測総実行時間がもっ
とも短い並列化中間コードを選択する。目的プログラム
生成部8は、最適化処理部9、メモリ割り付け・レジス
タ割り当て部10、コード生成部11から構成されてい
て、並列化中間コード選択部7により選択された並列化
中間コードから目的コードを生成する機能を有する。
【0033】最適化処理部9は、作成された並列化中間
コードに対して最適化処理を行う。メモリ割り付け・レ
ジスタ割り当て部10は、並列化中間コード内で用いら
れる全ての変数をメモリ及びレジスタに割当てる。コー
ド生成部11は、並列化中間コード及び割当てられた結
果より目的プログラムを生成する。
コードに対して最適化処理を行う。メモリ割り付け・レ
ジスタ割り当て部10は、並列化中間コード内で用いら
れる全ての変数をメモリ及びレジスタに割当てる。コー
ド生成部11は、並列化中間コード及び割当てられた結
果より目的プログラムを生成する。
【0034】以上のように本発明の実施例によれば、さ
らに、データ転送に要する時間が並列化部の実行時間に
比べて無視できない場合にでも、これらの時間の総和を
予測し、その総和に基づいてより最適と予測される並列
化中間コードを選択することができ、その結果、最終的
に得られる目的プログラムの性能をより高いものとする
ことができる。
らに、データ転送に要する時間が並列化部の実行時間に
比べて無視できない場合にでも、これらの時間の総和を
予測し、その総和に基づいてより最適と予測される並列
化中間コードを選択することができ、その結果、最終的
に得られる目的プログラムの性能をより高いものとする
ことができる。
【0035】尚、本実施例の並列化コンパイラが対象と
する並列計算機が図26に示すようにプロセッサ間で共
有するメモリを有する場合にも対応できるとする。図2
6は、プロセッサとローカルメモリとデータ転送装置と
からなる複数のプロセッサエレメントと、データ転送装
置とメモリ排他制御手段と共有メモリからなる共有メモ
リブロック一つとからなる並列計算機である。
する並列計算機が図26に示すようにプロセッサ間で共
有するメモリを有する場合にも対応できるとする。図2
6は、プロセッサとローカルメモリとデータ転送装置と
からなる複数のプロセッサエレメントと、データ転送装
置とメモリ排他制御手段と共有メモリからなる共有メモ
リブロック一つとからなる並列計算機である。
【0036】具体的にどのように共有メモリを有する場
合に対応できるかの方法は、以下に示す。また、図25
に示す並列計算機との違いを明確にするため、図2に示
すソースプログラムの代わりに、図27に示すソースプ
ログラムを用いる。図27に示すソースプログラムは、
図2に示すソースプログラムに新たに、総和を求める計
算式である「sum = sum + q(i,j)」が追加されている。
合に対応できるかの方法は、以下に示す。また、図25
に示す並列計算機との違いを明確にするため、図2に示
すソースプログラムの代わりに、図27に示すソースプ
ログラムを用いる。図27に示すソースプログラムは、
図2に示すソースプログラムに新たに、総和を求める計
算式である「sum = sum + q(i,j)」が追加されている。
【0037】次にこれが本実施例と同様に、構文解析部
3、並列性検出部4と処理が行われ、さらに並列化変換
部5で、並列性検出部4で求められたパターンの中間コ
ードに対して、データのアクセスの状態を調べてデータ
の分散方法を決定し、実行に必要なデータ転送のための
データ転送文と、共有メモリの排他制御の制御文を追加
した図28から図32に示すような並列化中間コードを
生成する。追加された共有メモリの排他制御のための制
御文は、図28における281、282に示す行の文で
ある。他の図面である図29から図32についても同様
である。
3、並列性検出部4と処理が行われ、さらに並列化変換
部5で、並列性検出部4で求められたパターンの中間コ
ードに対して、データのアクセスの状態を調べてデータ
の分散方法を決定し、実行に必要なデータ転送のための
データ転送文と、共有メモリの排他制御の制御文を追加
した図28から図32に示すような並列化中間コードを
生成する。追加された共有メモリの排他制御のための制
御文は、図28における281、282に示す行の文で
ある。他の図面である図29から図32についても同様
である。
【0038】次に、実行時間評価部6は、実行時間予測
部61、データ転送時間予測部62、総実行時間予測部
63、に加えて、さらに排他制御時間追加部64が追加
された構成となっている。この排他制御時間追加部64
は、排他制御に要する時間である予測排他制御時間を図
28から図32に示すような並列化中間コードから予測
し、総実行時間予測部63で予測された予測総実行時間
に加えて、新たな予測総実行時間とする。具体的には、
予測排他制御時間は、メモリの排他制御に要する回数つ
まりループの回数に比例定数であるKをかけたもので求
められる。ここでの比例定数Kは、対象とするハードウ
ェアーの特性によって排他制御に要する時間が、プロセ
ッサ数や、送信プロセッサと共有メモリの位置関係に全
く関係なく、排他制御の回数に比例するものと仮定した
ときの比例定数であるとする。図28に示す並列化中間
コードの予測排他制御時間T18は、次にように表され
る。T18=K・nx・ny。図29に示す並列化中間
コードの予測排他制御時間T19は、次にように表され
る。T19=K・nx・ny。図30に示す並列化中間
コードの予測排他制御時間T20は、次にように表され
る。T20=K・nx・ny。図31に示す並列化中間
コードの予測排他制御時間T21は、次にように表され
る。T21=K・nx・ny。図32に示す並列化中間
コードの予測排他制御時間T22は、次にように表され
る。T22=0。よって、新たな予測総実行時間は、総
実行時間予測部63で予測された予測実行時間に、排他
制御時間追加部64で求められた予測排他制御時間を追
加した時間であるから、それぞれ次に示すようになる。
図28に示す並列化中間コードの予測総実行時間T23
は、次のように表される。T23=T13+T18=T
3+T8+T18。図29に示す並列化中間コードの予
測総実行時間T24は、次のように表される。T24=
T14+T19=T4+T9+T19。図30に示す並
列化中間コードの予測総実行時間T25は、次のように
表される。T25=T15+T20=T5+T10+T
20。図31に示す並列化中間コードの予測総実行時間
T26は、次のように表される。T26=T16+T2
1=T6+T11+T21。図32に示す並列化中間コ
ードの予測総実行時間T27は、次のように表される。
T27=T17+T22=T7+0=T7。
部61、データ転送時間予測部62、総実行時間予測部
63、に加えて、さらに排他制御時間追加部64が追加
された構成となっている。この排他制御時間追加部64
は、排他制御に要する時間である予測排他制御時間を図
28から図32に示すような並列化中間コードから予測
し、総実行時間予測部63で予測された予測総実行時間
に加えて、新たな予測総実行時間とする。具体的には、
予測排他制御時間は、メモリの排他制御に要する回数つ
まりループの回数に比例定数であるKをかけたもので求
められる。ここでの比例定数Kは、対象とするハードウ
ェアーの特性によって排他制御に要する時間が、プロセ
ッサ数や、送信プロセッサと共有メモリの位置関係に全
く関係なく、排他制御の回数に比例するものと仮定した
ときの比例定数であるとする。図28に示す並列化中間
コードの予測排他制御時間T18は、次にように表され
る。T18=K・nx・ny。図29に示す並列化中間
コードの予測排他制御時間T19は、次にように表され
る。T19=K・nx・ny。図30に示す並列化中間
コードの予測排他制御時間T20は、次にように表され
る。T20=K・nx・ny。図31に示す並列化中間
コードの予測排他制御時間T21は、次にように表され
る。T21=K・nx・ny。図32に示す並列化中間
コードの予測排他制御時間T22は、次にように表され
る。T22=0。よって、新たな予測総実行時間は、総
実行時間予測部63で予測された予測実行時間に、排他
制御時間追加部64で求められた予測排他制御時間を追
加した時間であるから、それぞれ次に示すようになる。
図28に示す並列化中間コードの予測総実行時間T23
は、次のように表される。T23=T13+T18=T
3+T8+T18。図29に示す並列化中間コードの予
測総実行時間T24は、次のように表される。T24=
T14+T19=T4+T9+T19。図30に示す並
列化中間コードの予測総実行時間T25は、次のように
表される。T25=T15+T20=T5+T10+T
20。図31に示す並列化中間コードの予測総実行時間
T26は、次のように表される。T26=T16+T2
1=T6+T11+T21。図32に示す並列化中間コ
ードの予測総実行時間T27は、次のように表される。
T27=T17+T22=T7+0=T7。
【0039】以下の処理は、本実施例と同様である。
【0040】
【発明の効果】以上のように、本発明の請求項1では、
並列計算機での実行時間が最も短くなるようにソースプ
ログラムをコンパイルすることができる。請求項2で
は、並列化の全てのパターンの中間言語を求めることに
より、並列計算機での実行時間が最も短くなるようにソ
ースプログラムをコンパイルすることができる。
並列計算機での実行時間が最も短くなるようにソースプ
ログラムをコンパイルすることができる。請求項2で
は、並列化の全てのパターンの中間言語を求めることに
より、並列計算機での実行時間が最も短くなるようにソ
ースプログラムをコンパイルすることができる。
【0041】請求項3では、さらにデータ転送時間を考
慮することによりより確実に並列計算機での実行時間が
最も短くなるようにソースプログラムをコンパイルする
ことができる。請求項4では、対象とする並列計算機が
共有メモリを有する場合にも、データ転送時間に加え
て、排他制御時間をも考慮する事により、実行時間が最
も短くなるようにソースプログラムをコンパイルするこ
とができる
慮することによりより確実に並列計算機での実行時間が
最も短くなるようにソースプログラムをコンパイルする
ことができる。請求項4では、対象とする並列計算機が
共有メモリを有する場合にも、データ転送時間に加え
て、排他制御時間をも考慮する事により、実行時間が最
も短くなるようにソースプログラムをコンパイルするこ
とができる
【図1】本発明の実施例における並列化コンパイラを含
む構成図である。
む構成図である。
【図2】FORTRANのソースプログラム例の図であ
る。
る。
【図3】並列性検出部4の構成図である。
【図4】並列ループ検出部41の動作フロー図である。
【図5】図4の動作フロー図のサブルーチンの図であ
る。
る。
【図6】分割拡大実行部43の動作フロー図である。
【図7】図6の動作フロー図のサブルーチンの図であ
る。
る。
【図8】図7のサブルーチンのサブルーチンの図であ
る。
る。
【図9】図7のサブルーチンのサブルーチンの図であ
る。
る。
【図10】求められた第1の中間コードの例の図であ
る。
る。
【図11】求められた第2の中間コードの例の図であ
る。
る。
【図12】求められた第3の中間コードの例の図であ
る。
る。
【図13】求められた第4の中間コードの例の図であ
る。
る。
【図14】求められた第5の中間コードの例の図であ
る。
る。
【図15】求められた第1の並列化中間コードの例の図
である。
である。
【図16】求められた第2の並列化中間コードの例の図
である。
である。
【図17】求められた第3の並列化中間コードの例の図
である。
である。
【図18】求められた第4の並列化中間コードの例の図
である。
である。
【図19】求められた第5の並列化中間コードの例の図
である。
である。
【図20】実行時間評価部6の構成図である。
【図21】従来例の並列化コンパイラを含む構成図であ
る。
る。
【図22】並列性検出部204の構成図である。
【図23】分割拡大実行部2042の動作フロー図であ
る。
る。
【図24】図23の動作フロー図のサブルーチンの図で
ある。
ある。
【図25】並列計算機の構成図である。
【図26】共有メモリを有する並列計算機の構成図であ
る。
る。
【図27】FORTRANのソースプログラム例の図で
ある。
ある。
【図28】求められた第1の並列化中間コードの例の図
である。
である。
【図29】求められた第2の並列化中間コードの例の図
である。
である。
【図30】求められた第3の並列化中間コードの例の図
である。
である。
【図31】求められた第4の並列化中間コードの例の図
である。
である。
【図32】求められた第5の並列化中間コードの例の図
である。
である。
1 並列化コンパイラ 2 格納部 3 構文解析部 4 並列性検出部 5 並列化変換部 6 実行時間評価部 7 並列化中間コード選択部 8 目的プログラム生成部 9 最適化処理部 10 メモリ割り付け・レジスタ割り付け部部 11 コード生成部 41 並列ループ検出部 42 分割ループ検出部 43 分割拡大実行部 61 実行時間予測部 62 データ転送時間予測部 63 総実行時間予測部 64 排他制御時間追加部 201 並列化コンパイラ 202 中間コード格納部 203 構文解析部 204 並列性検出部 205 並列化変換部 206 目的プログラム生成部 207 最適化処理部 208 メモリ割り付け・レジスタ割当部 209 コード生成部 2041 並列ループ検出部 2042 分割拡大実行部
Claims (4)
- 【請求項1】 複数のプロセッサエレメントからなる並
列計算機用に、ソースプログラムから目的プログラムを
生成する並列化コンパイラであって、 高級言語で記述されたソースプログラムの構文解析を行
ない中間言語に変換する構文解析手段と、 前記中間言語について、並列実行可能なループを検出
し、検出されたループに基づいて並列化のすべてのパタ
ーンの並列化中間言語を求める並列性検出手段と、 前記並列化中間言語に基づいて、実行に必要なプロセッ
サエレメント間のデータ転送を指示するデータ転送文を
追加した並列化中間言語に変換する並列化変換手段と、 前記並列化変換手段で変換された並列化中間言語の並列
実行されるループの回数と並列実行される部分と動作す
るプロセッサ数とに基づいて各々の前記並列化中間言語
の実行時間を予測する実行時間評価手段と、 前記実行時間評価手段で予測された実行時間がもっとも
短い並列化中間言語を選ぶ並列化中間言語選択手段と、 前記並列化中間言語選択手段によって選ばれた前記並列
化中間言語を目的プログラムに変換する目的プログラム
生成手段とを備えたことを特徴とする並列化コンパイ
ラ。 - 【請求項2】 前記並列性検出手段は、 中間言語において並列実行可能なループを検出する並列
ループ検出部と、 並列実行可能なループについて、分割可能なループを検
出する分割ループ検出部と、 並列ループ検出部及び分割ループ検出部の検出結果に基
づいて、全てのループに関して、分割して並列化する場
合、拡大して並列化を行う場合、分割も拡大しないで並
列化する場合、並列化しない場合の4つの場合を組み合
わせたパターンを求めそれぞれのパターンの中間言語を
求める分割拡大実行部とからなることを特徴とする請求
項1記載の並列化コンパイラ。 - 【請求項3】 前記実行時間評価手段は、 さらに並列実行される部分毎に、データ転送文と、並列
実行されるループの回数とに基づいてデータ転送時間を
求め、前記実行時間にデータ転送時間を加えたものを新
たな実行時間とすることを特徴とする請求項1又は請求
項2記載の並列化コンパイラ。 - 【請求項4】 前記並列計算機は、さらに、各プロセッ
サエレメントに共通のデータを記憶する共有メモリを有
し、 前記並列化変換手段は、さらに、実行に必要な各プロセ
ッサエレメントと共有メモリとの間のデータ転送、及び
そのデータ転送における共有メモリへのアクセス競合を
制御する排他制御を指示する制御文を追加した並列化中
間言語に変換することを特徴とし、 前記実行時間評価手段は、 さらに各プロセッサエレメントと共有メモリとの間のデ
ータ転送に要する回数に基づいて排他制御時間を求め、
前記実行時間に排他制御時間を加えたものを新たな実行
時間とすることを特徴とする請求項3記載の並列化コン
パイラ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7222594A JPH07282016A (ja) | 1994-04-11 | 1994-04-11 | 並列化コンパイラ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7222594A JPH07282016A (ja) | 1994-04-11 | 1994-04-11 | 並列化コンパイラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH07282016A true JPH07282016A (ja) | 1995-10-27 |
Family
ID=13483112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7222594A Pending JPH07282016A (ja) | 1994-04-11 | 1994-04-11 | 並列化コンパイラ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH07282016A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4867009B2 (ja) * | 2004-12-09 | 2012-02-01 | 国立大学法人 奈良先端科学技術大学院大学 | 量子コンピュータを含むコンピュータシステムのためのプログラム開発支援装置、プログラム開発支援用プログラム、及びシミュレーション装置 |
-
1994
- 1994-04-11 JP JP7222594A patent/JPH07282016A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4867009B2 (ja) * | 2004-12-09 | 2012-02-01 | 国立大学法人 奈良先端科学技術大学院大学 | 量子コンピュータを含むコンピュータシステムのためのプログラム開発支援装置、プログラム開発支援用プログラム、及びシミュレーション装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5598561A (en) | Optimizing compiler which generates multiple instruction streams to be executed in parallel | |
US8296746B2 (en) | Optimum code generation method and compiler device for multiprocessor | |
JP2004038225A (ja) | コンパイラプログラムおよびコンパイル処理方法 | |
US9430203B2 (en) | Information processing apparatus and compilation method | |
JPH01108638A (ja) | 並列化コンパイル方式 | |
US20060200796A1 (en) | Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus | |
JP2001167060A (ja) | タスク並列化方法 | |
JPH06324881A (ja) | メモリデータの重なり判定機能を備えたコンパイラ装置 | |
US6993756B2 (en) | Optimization apparatus that decreases delays in pipeline processing of loop and computer-readable storage medium storing optimization program | |
US20060107258A1 (en) | Program, program code optimization method, program code compile method, program code, and information processing system | |
US20010039653A1 (en) | Program conversion method, program conversion apparatus, storage medium for storing program conversion program and program conversion program | |
JP2904099B2 (ja) | コンパイル装置およびコンパイル方法 | |
US20170206068A1 (en) | Program optimization based on directives for intermediate code | |
JP4719415B2 (ja) | 情報処理システム及びコード生成方法 | |
JPH07282016A (ja) | 並列化コンパイラ | |
US6973645B2 (en) | Compiler, operation processing system and operation processing method | |
WO1998018084A1 (fr) | Dispositif et procede servant a accelerer la vitesse d'acces a une memoire | |
JP5399601B2 (ja) | 実装コード開発システム、及び実装コード開発プログラム | |
JP2014099108A (ja) | 実行時間算出装置、実行時間算出方法、およびプログラム | |
JPS62204374A (ja) | 2倍演算最適化処理方式 | |
JPH09160784A (ja) | 並列化コンパイル方式 | |
JP2003256214A (ja) | 配列拡張によるループ変換方法 | |
WO2020116025A1 (ja) | コンパイル装置、コンパイル方法、及び非一時的なコンピュータ可読媒体 | |
JP4579425B2 (ja) | 情報処理装置 | |
JP2674489B2 (ja) | ベクトル化処理装置 |