JPH06214801A - 自動並列化翻訳装置及び方法 - Google Patents
自動並列化翻訳装置及び方法Info
- Publication number
- JPH06214801A JPH06214801A JP626293A JP626293A JPH06214801A JP H06214801 A JPH06214801 A JP H06214801A JP 626293 A JP626293 A JP 626293A JP 626293 A JP626293 A JP 626293A JP H06214801 A JPH06214801 A JP H06214801A
- Authority
- JP
- Japan
- Prior art keywords
- loop
- parallel
- code
- loops
- parallelization
- 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.)
- Withdrawn
Links
Landscapes
- Multi Processors (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 逐次型言語で記述された原コードを入力し、
並列計算機により並列実行の可能な並列DOループ及
び、並列実行の不可能な逐次DOループを原コードから
抽出し、抽出された並列DOループについて、DOルー
プ内の各項を並列実行させるDOループ内並列化コード
を作成することにより原コードを並列計算機用の目的コ
ードに変換する自動並列化翻訳装置及び方法に関し、処
理の手数を削減することにより、処理を高速化し、処理
時間を削減し、並列計算機の処理効率を高めることがで
きるので、並列計算機の有効利用を図ることを目的とす
る。 【構成】 抽出された前記DOループの間の依存関係の
検出を行い、前記DOループ内並列化コード及び検出さ
れた前記DOループ間の依存関係に基づいて、DOルー
プ間での並列実行を可能とするDOループ間並列化コー
ドを作成するように構成する。
並列計算機により並列実行の可能な並列DOループ及
び、並列実行の不可能な逐次DOループを原コードから
抽出し、抽出された並列DOループについて、DOルー
プ内の各項を並列実行させるDOループ内並列化コード
を作成することにより原コードを並列計算機用の目的コ
ードに変換する自動並列化翻訳装置及び方法に関し、処
理の手数を削減することにより、処理を高速化し、処理
時間を削減し、並列計算機の処理効率を高めることがで
きるので、並列計算機の有効利用を図ることを目的とす
る。 【構成】 抽出された前記DOループの間の依存関係の
検出を行い、前記DOループ内並列化コード及び検出さ
れた前記DOループ間の依存関係に基づいて、DOルー
プ間での並列実行を可能とするDOループ間並列化コー
ドを作成するように構成する。
Description
【0001】
【産業上の利用分野】本発明は、自動並列化翻訳装置
(コンパイラ)及び方法に係り、特に、逐次型言語で記
述された原コードを入力し、並列計算機により並列実行
の可能な並列DOループ及び、並列実行の不可能な逐次
DOループを原コード(プログラム)から抽出し、抽出
された並列DOループについて、DOループ内で各項
(ステップ、イテレーション)を並列実行するようにD
Oループ内並列化コードを作成することにより原コード
を並列計算機用の目的コード(プログラム)に変換する
自動並列化翻訳装置及び方法に関する。現在、高速な計
算機(スーパーコンピュータ)を実現する方式として、
並列計算機が注目を浴びている。並列計算機をプログラ
ミングする手法の1つとして、Fortran等の従来
から広く使われている逐次型言語で処理を記述し、それ
を自動並列化コンパイラを用いて、並列計算機用のコー
ドに変換する方法が重要である。理由としては、並列処
理を直接記述する事の困難さ、並列処理を記述する標準
的なプログラミング言語が未だ存在しない事、過去にF
ortran等で書かれた資産を活かす事が挙げられ
る。本発明は、この自動並列化翻訳装置及び方法(自動
並列化コンパイラ)において、DOループを並列に実行
する為の技術に関する。
(コンパイラ)及び方法に係り、特に、逐次型言語で記
述された原コードを入力し、並列計算機により並列実行
の可能な並列DOループ及び、並列実行の不可能な逐次
DOループを原コード(プログラム)から抽出し、抽出
された並列DOループについて、DOループ内で各項
(ステップ、イテレーション)を並列実行するようにD
Oループ内並列化コードを作成することにより原コード
を並列計算機用の目的コード(プログラム)に変換する
自動並列化翻訳装置及び方法に関する。現在、高速な計
算機(スーパーコンピュータ)を実現する方式として、
並列計算機が注目を浴びている。並列計算機をプログラ
ミングする手法の1つとして、Fortran等の従来
から広く使われている逐次型言語で処理を記述し、それ
を自動並列化コンパイラを用いて、並列計算機用のコー
ドに変換する方法が重要である。理由としては、並列処
理を直接記述する事の困難さ、並列処理を記述する標準
的なプログラミング言語が未だ存在しない事、過去にF
ortran等で書かれた資産を活かす事が挙げられ
る。本発明は、この自動並列化翻訳装置及び方法(自動
並列化コンパイラ)において、DOループを並列に実行
する為の技術に関する。
【0002】
【従来の技術】従来、図12に示すように、逐次型言語
で記述された原コードから、並列計算機により並列実行
の可能な並列DOループ及び、並列実行の不可能な逐次
DOループを抽出するDOループ抽出部1と、抽出され
た並列DOループについて、DOループ内の各項を並列
実行するようにDOループ内並列化コードを作成するD
Oループ内並列化コード作成部8とを有し、前記原コー
ドを並列計算機用の目的コードに変換する自動並列化翻
訳装置があった。科学技術計算系のプログラムは通常、
プログラム内のDOループに大半の処理時間が費やされ
ている事が知られている。従来の並列化では、前記DO
ループ抽出部1により、DOループの中から各イテレー
ション(項、ステップ)を並列実行できるもの(並列D
Oループ)を抽出し、DOループ並列化コード作成部8
により各項(イテレーション、ステップ)をプロセッサ
に割り付けて並列実行する目的コードを作成している。
で記述された原コードから、並列計算機により並列実行
の可能な並列DOループ及び、並列実行の不可能な逐次
DOループを抽出するDOループ抽出部1と、抽出され
た並列DOループについて、DOループ内の各項を並列
実行するようにDOループ内並列化コードを作成するD
Oループ内並列化コード作成部8とを有し、前記原コー
ドを並列計算機用の目的コードに変換する自動並列化翻
訳装置があった。科学技術計算系のプログラムは通常、
プログラム内のDOループに大半の処理時間が費やされ
ている事が知られている。従来の並列化では、前記DO
ループ抽出部1により、DOループの中から各イテレー
ション(項、ステップ)を並列実行できるもの(並列D
Oループ)を抽出し、DOループ並列化コード作成部8
により各項(イテレーション、ステップ)をプロセッサ
に割り付けて並列実行する目的コードを作成している。
【0003】
【発明が解決しようとする課題】さて、以上説明したよ
うな従来例にあっては、並列DOループの各ステップを
プロセッサにマッピングし、並列実行させる方式では、
逐次DOループの部分の処理は常に逐次処理せざるをえ
ず、並列計算機の良さが活かされず時間がかかるという
問題点を有していた。また、最近では、1つのDOルー
プを1つのタスクと考え、タスクレベルでの並列化を行
う方法も提案されている。しかし、このタスクレベルの
処理では、せっかくそのDOループが並列DOループで
あったとしても、その事が活かされず、より高い並列性
を引き出せないという問題点を有していた。そこで、本
発明は、両方の良さを引き出せる並列実行方式を実現す
るために、複数のDOループが全て逐次DOループであ
り、かつタスクレベルでも、依存関係があり並列実行で
きない場合にも、何らかの並列化を行って、高速に処理
を行うことができるコードを得る自動並列化翻訳装置及
び方法を提供することを目的としてなされたものであ
る。
うな従来例にあっては、並列DOループの各ステップを
プロセッサにマッピングし、並列実行させる方式では、
逐次DOループの部分の処理は常に逐次処理せざるをえ
ず、並列計算機の良さが活かされず時間がかかるという
問題点を有していた。また、最近では、1つのDOルー
プを1つのタスクと考え、タスクレベルでの並列化を行
う方法も提案されている。しかし、このタスクレベルの
処理では、せっかくそのDOループが並列DOループで
あったとしても、その事が活かされず、より高い並列性
を引き出せないという問題点を有していた。そこで、本
発明は、両方の良さを引き出せる並列実行方式を実現す
るために、複数のDOループが全て逐次DOループであ
り、かつタスクレベルでも、依存関係があり並列実行で
きない場合にも、何らかの並列化を行って、高速に処理
を行うことができるコードを得る自動並列化翻訳装置及
び方法を提供することを目的としてなされたものであ
る。
【0004】
【課題を解決するための手段】以上の技術的課題を解決
するため、第一の発明は、図1及び請求項1に示すよう
に、逐次型言語で記述された原コードから、並列計算機
により並列実行の可能な並列DOループ及び、並列実行
の不可能な逐次DOループを抽出するDOループ抽出部
10と、抽出された並列DOループについて、DOルー
プ内の各項を並列実行させるDOループ内並列化コード
を作成するDOループ内並列化コード作成部80とを有
し、前記原コードを並列計算機用の目的コードに変換す
る自動並列化翻訳装置において、抽出されたDOループ
の間の依存関係の検出を行うDOループ間依存関係検出
部20と、前記DOループ内並列化コード及び検出され
たDOループ間の依存関係に基づいて、動的にDOルー
プ間での並列実行を可能とするDOループ間動的並列化
コードを作成するDOループ間動的並列化コード作成部
30とを有するものである。
するため、第一の発明は、図1及び請求項1に示すよう
に、逐次型言語で記述された原コードから、並列計算機
により並列実行の可能な並列DOループ及び、並列実行
の不可能な逐次DOループを抽出するDOループ抽出部
10と、抽出された並列DOループについて、DOルー
プ内の各項を並列実行させるDOループ内並列化コード
を作成するDOループ内並列化コード作成部80とを有
し、前記原コードを並列計算機用の目的コードに変換す
る自動並列化翻訳装置において、抽出されたDOループ
の間の依存関係の検出を行うDOループ間依存関係検出
部20と、前記DOループ内並列化コード及び検出され
たDOループ間の依存関係に基づいて、動的にDOルー
プ間での並列実行を可能とするDOループ間動的並列化
コードを作成するDOループ間動的並列化コード作成部
30とを有するものである。
【0005】第二の発明は、図2及び請求項2に示すよ
うに、逐次型言語で記述された原コードを入力し(S
1)、並列計算機により並列実行の可能な並列DOルー
プ及び、並列実行の不可能な逐次DOループを原コード
から抽出し、抽出された並列DOループについて、DO
ループ内の各項を並列実行させるDOループ内並列化コ
ードを作成する(S2)ことにより原コードを並列計算
機用の目的コードに変換する自動並列化翻訳方法におい
て、抽出された前記DOループの間の依存関係の検出を
行い(S3)、前記DOループ内並列化コード及び検出
された前記DOループ間の依存関係に基づいて、動的に
DOループ間での並列実行を可能とするDOループ間動
的並列化コードを作成する(S4)ことである。
うに、逐次型言語で記述された原コードを入力し(S
1)、並列計算機により並列実行の可能な並列DOルー
プ及び、並列実行の不可能な逐次DOループを原コード
から抽出し、抽出された並列DOループについて、DO
ループ内の各項を並列実行させるDOループ内並列化コ
ードを作成する(S2)ことにより原コードを並列計算
機用の目的コードに変換する自動並列化翻訳方法におい
て、抽出された前記DOループの間の依存関係の検出を
行い(S3)、前記DOループ内並列化コード及び検出
された前記DOループ間の依存関係に基づいて、動的に
DOループ間での並列実行を可能とするDOループ間動
的並列化コードを作成する(S4)ことである。
【0006】第三の発明は、図3及び請求項3に示すよ
うに、逐次型言語で記述された原コードから、並列計算
機により並列実行の可能な並列DOループ及び、並列実
行の不可能な逐次DOループを抽出するDOループ抽出
部10と,抽出された並列DOループについて、DOル
ープ内の各項を並列実行させるDOループ内並列化コー
ドを作成するDOループ内並列化コード作成部80とを
有し、前記原コードを並列計算機用の目的コードに変換
する自動並列化翻訳装置において、抽出されたDOルー
プの間の依存関係の検出を行うDOループ間依存関係検
出部20と、処理が割り付けられるプロセッサを予め指
定する指定情報を出力する指定情報出力部40と、前記
DOループ内並列化コード、検出されたDOループ間の
依存関係、及び前記指定情報に基づいて、静的にDOル
ープ間での並列実行を可能とするDOループ間静的並列
化コードを作成するDOループ間静的並列化コード作成
部31とを有するものである。
うに、逐次型言語で記述された原コードから、並列計算
機により並列実行の可能な並列DOループ及び、並列実
行の不可能な逐次DOループを抽出するDOループ抽出
部10と,抽出された並列DOループについて、DOル
ープ内の各項を並列実行させるDOループ内並列化コー
ドを作成するDOループ内並列化コード作成部80とを
有し、前記原コードを並列計算機用の目的コードに変換
する自動並列化翻訳装置において、抽出されたDOルー
プの間の依存関係の検出を行うDOループ間依存関係検
出部20と、処理が割り付けられるプロセッサを予め指
定する指定情報を出力する指定情報出力部40と、前記
DOループ内並列化コード、検出されたDOループ間の
依存関係、及び前記指定情報に基づいて、静的にDOル
ープ間での並列実行を可能とするDOループ間静的並列
化コードを作成するDOループ間静的並列化コード作成
部31とを有するものである。
【0007】第四の発明は、図4及び請求項4に示すよ
うに、逐次型言語で記述された原コードを入力し(S
1)、並列計算機により並列実行の可能な並列DOルー
プ及び、並列処理の不可能な逐次DOループを原コード
から抽出し、抽出された並列DOループについて、DO
ループ内で並列実行させるDOループ内並列化コードを
作成する(S2)ことにより原コードを並列計算機用の
目的コードに変換する自動並列化翻訳方法において、抽
出された前記DOループの間の依存関係の検出を行い
(S3)、前記DOループ内並列化コード、検出された
DOループ間の依存関係、及び処理が割り付けられるべ
きプロセッサを予め指定する指定情報に基づいて、静的
にDOループ間での並列実行を行わせるDOループ間静
的並列化コードを作成する(S14)ことである。
うに、逐次型言語で記述された原コードを入力し(S
1)、並列計算機により並列実行の可能な並列DOルー
プ及び、並列処理の不可能な逐次DOループを原コード
から抽出し、抽出された並列DOループについて、DO
ループ内で並列実行させるDOループ内並列化コードを
作成する(S2)ことにより原コードを並列計算機用の
目的コードに変換する自動並列化翻訳方法において、抽
出された前記DOループの間の依存関係の検出を行い
(S3)、前記DOループ内並列化コード、検出された
DOループ間の依存関係、及び処理が割り付けられるべ
きプロセッサを予め指定する指定情報に基づいて、静的
にDOループ間での並列実行を行わせるDOループ間静
的並列化コードを作成する(S14)ことである。
【0008】
【作用】続いて、本発明の処理動作について説明する。
ステップS1で、自動並列化翻訳を行う対象となる逐次
型言語で記述された原コードを前記DOループ抽出部1
0に入力する。ここで、「自動並列化翻訳」とは、逐次
型言語で記述された原コード(原プログラム)を並列計
算機用の目的コード(目的プログラム)に変換すること
をいう。また、「逐次型言語」とは例えば、FORTR
AN等の従来から広く使われている言語であって、予め
指定された命令の系列に従って、計算機を逐次自動的に
制御する言語をいう。ステップS2で、前記DOループ
抽出部10は並列DOループと逐次DOループを前記原
コードから抽出する。ここで、「並列DOループ」と
は、並列計算機により各項(ステップ、イテレーショ
ン)が並列実行可能なDOループであり、「逐次DOル
ープ」とは、並列計算機により各項が不規則的な依存関
係をもつこと等により、並列実行不可能なDOループを
いう。並列DOループの抽出はDOループ内の各項間の
データ依存関係を調べることにより、各項が独立な場合
には、並列実行が可能であり、並列DOループであるこ
とになる。例えば、各項(i=1,2,…,n)が各々 A(i)とA(i−1) のように表される場合である。また、並列実行可能でな
い場合とは、例えば、各項(i=1,2,…,n)が各
々 A(i)とA(n+1−i) のように表される場合である。並列DOループが抽出さ
れた場合には、前記DOループ内並列化コード作成部8
0は、並列DOループ内の各項を並列実行するようにD
Oループ内並列化コードを作成する。
ステップS1で、自動並列化翻訳を行う対象となる逐次
型言語で記述された原コードを前記DOループ抽出部1
0に入力する。ここで、「自動並列化翻訳」とは、逐次
型言語で記述された原コード(原プログラム)を並列計
算機用の目的コード(目的プログラム)に変換すること
をいう。また、「逐次型言語」とは例えば、FORTR
AN等の従来から広く使われている言語であって、予め
指定された命令の系列に従って、計算機を逐次自動的に
制御する言語をいう。ステップS2で、前記DOループ
抽出部10は並列DOループと逐次DOループを前記原
コードから抽出する。ここで、「並列DOループ」と
は、並列計算機により各項(ステップ、イテレーショ
ン)が並列実行可能なDOループであり、「逐次DOル
ープ」とは、並列計算機により各項が不規則的な依存関
係をもつこと等により、並列実行不可能なDOループを
いう。並列DOループの抽出はDOループ内の各項間の
データ依存関係を調べることにより、各項が独立な場合
には、並列実行が可能であり、並列DOループであるこ
とになる。例えば、各項(i=1,2,…,n)が各々 A(i)とA(i−1) のように表される場合である。また、並列実行可能でな
い場合とは、例えば、各項(i=1,2,…,n)が各
々 A(i)とA(n+1−i) のように表される場合である。並列DOループが抽出さ
れた場合には、前記DOループ内並列化コード作成部8
0は、並列DOループ内の各項を並列実行するようにD
Oループ内並列化コードを作成する。
【0009】ステップS3で、前記DOループ間依存関
係検出部20は抽出されたDOループの間の依存関係の
検出を行う。一般的に、DOループ間で依存関係がない
場合には、当該DOループ間では処理を独立に行うこと
ができて、並列実行が可能ということになる。ステップ
S4で、前記DOループ間動的並列化コード作成部30
は前記DOループ間依存関係検出部20により検出され
た依存関係、及びDOループ内並列化コード作成部80
により作成されたDOループ内並列化コードに基づい
て、動的にDOループ間での並列実行を可能とするDO
ループ間動的並列化コードを作成する。ここで、「動
的」とは「動的スケジューリング」を意味し、コンパイ
ル時には、並列計算機のプロセッサ台数に依存しないプ
ログラム(コード)を生成する。実行時に処理を空いて
いるプロセッサに割り付ける(スケジューリング)ため
のコードを挿入する。長所は負荷分散が容易である。短
所は実行時にプロセッサ割り付けのオーバーヘッドが生
じる。一方、「静的」とは「静的スケジューリング」を
意味し、コンパイル時に、並列実行すべきプログラムを
プロセッサに割り付けてしまうやり方。長所は実行時に
プロセッサ割り付け(スケジューリング)のオーバーヘ
ッドがない。短所は負荷分散が難しい。例えば、請求項
5及び請求項6に示すように、各逐次DOループと並列
DOループとの間に依存関係がないことが検出された場
合には、実行時には逐次DOループを優先的に並列計算
機のプロセッサに割り付け、残りのプロセッサで並列D
Oループを実行させるようにDOループ間並列化コード
又はDOループ間静的並列化コードを作成する。
係検出部20は抽出されたDOループの間の依存関係の
検出を行う。一般的に、DOループ間で依存関係がない
場合には、当該DOループ間では処理を独立に行うこと
ができて、並列実行が可能ということになる。ステップ
S4で、前記DOループ間動的並列化コード作成部30
は前記DOループ間依存関係検出部20により検出され
た依存関係、及びDOループ内並列化コード作成部80
により作成されたDOループ内並列化コードに基づい
て、動的にDOループ間での並列実行を可能とするDO
ループ間動的並列化コードを作成する。ここで、「動
的」とは「動的スケジューリング」を意味し、コンパイ
ル時には、並列計算機のプロセッサ台数に依存しないプ
ログラム(コード)を生成する。実行時に処理を空いて
いるプロセッサに割り付ける(スケジューリング)ため
のコードを挿入する。長所は負荷分散が容易である。短
所は実行時にプロセッサ割り付けのオーバーヘッドが生
じる。一方、「静的」とは「静的スケジューリング」を
意味し、コンパイル時に、並列実行すべきプログラムを
プロセッサに割り付けてしまうやり方。長所は実行時に
プロセッサ割り付け(スケジューリング)のオーバーヘ
ッドがない。短所は負荷分散が難しい。例えば、請求項
5及び請求項6に示すように、各逐次DOループと並列
DOループとの間に依存関係がないことが検出された場
合には、実行時には逐次DOループを優先的に並列計算
機のプロセッサに割り付け、残りのプロセッサで並列D
Oループを実行させるようにDOループ間並列化コード
又はDOループ間静的並列化コードを作成する。
【0010】さらに、請求項7及び請求項8には、前記
DOループ間依存関係検出部20により、データ依存関
係にある2つのDOループ間で、そのデータ依存が2つ
のループの各項の項番号(添字)について常に等距離で
あることが検出された場合には、前記DOループ動的並
列化コード作成部30又はDOループ静的並列化コード
作成部31は各項の実行についてはパイプラインを実行
させるようなDOループ間動的並列化コード又はDOル
ープ間静的並列化コードを作成する。ここで、「等距
離」とは“Distansce vector”で表現可能であることを
示す。例えば、2つのDOループの各項が各々A(i)
と、A(i−1)とで表される場合がこれにあたる。そ
れに対し、2つのDOループの各項が各々A(i)と、
A(100−i)と表される場合は、等距離でない場合
の例である。請求項9には、階層型メモリを持った並列
計算機上で複数のDOループをパイプライン実行させる
際には、DOループ間の通信が階層を越えないように同
じクラスターに割り付けるようにDOループ間動的並列
化コード又はDOループ間動的並列化コードを作成す
る。ここで、「階層型メモリ」とは、システム上である
プロセッサに注目した場合に、そのプロセッサから種々
の距離に接続されている複数のメモリ装置をいい、その
距離に応じて階層が設定されている。例えば、プロセッ
サから最も近い距離にあるのがキャッシュメモリであ
り、その次が当該クラスターの主記憶装置、さらに、ネ
ットワークを介して接続された他のクラスターの主記憶
装置……というような階層に各メモリが配置されてい
る。階層型のメモリを持った並列計算機で、DOループ
間のパイプライン実行をさせる場合、それらのDOルー
プ間の通信が階層をまたがないように、同じクラスター
に割り付ける。これにより、高速なパイプライン実行が
可能になる。また、そのクラスター内のキャッシュ・コ
ヒーレンシーを保つプロトコルが、キャッシュからキャ
ッシュへ直接コピーするものである場合には、メモリを
介在せず直接キャッシュ間でデータがパイプライン転送
されるため、その効果は一層大きい。本発明により、従
来の並列化コンパイラにより、より高い並列性を得るこ
とができる。また、DOループ間のパイプライン実行を
行う際に、そのデータを高速に転送させることができ
る。以上により、高速な演算の実行が並列計算機上で可
能になる。
DOループ間依存関係検出部20により、データ依存関
係にある2つのDOループ間で、そのデータ依存が2つ
のループの各項の項番号(添字)について常に等距離で
あることが検出された場合には、前記DOループ動的並
列化コード作成部30又はDOループ静的並列化コード
作成部31は各項の実行についてはパイプラインを実行
させるようなDOループ間動的並列化コード又はDOル
ープ間静的並列化コードを作成する。ここで、「等距
離」とは“Distansce vector”で表現可能であることを
示す。例えば、2つのDOループの各項が各々A(i)
と、A(i−1)とで表される場合がこれにあたる。そ
れに対し、2つのDOループの各項が各々A(i)と、
A(100−i)と表される場合は、等距離でない場合
の例である。請求項9には、階層型メモリを持った並列
計算機上で複数のDOループをパイプライン実行させる
際には、DOループ間の通信が階層を越えないように同
じクラスターに割り付けるようにDOループ間動的並列
化コード又はDOループ間動的並列化コードを作成す
る。ここで、「階層型メモリ」とは、システム上である
プロセッサに注目した場合に、そのプロセッサから種々
の距離に接続されている複数のメモリ装置をいい、その
距離に応じて階層が設定されている。例えば、プロセッ
サから最も近い距離にあるのがキャッシュメモリであ
り、その次が当該クラスターの主記憶装置、さらに、ネ
ットワークを介して接続された他のクラスターの主記憶
装置……というような階層に各メモリが配置されてい
る。階層型のメモリを持った並列計算機で、DOループ
間のパイプライン実行をさせる場合、それらのDOルー
プ間の通信が階層をまたがないように、同じクラスター
に割り付ける。これにより、高速なパイプライン実行が
可能になる。また、そのクラスター内のキャッシュ・コ
ヒーレンシーを保つプロトコルが、キャッシュからキャ
ッシュへ直接コピーするものである場合には、メモリを
介在せず直接キャッシュ間でデータがパイプライン転送
されるため、その効果は一層大きい。本発明により、従
来の並列化コンパイラにより、より高い並列性を得るこ
とができる。また、DOループ間のパイプライン実行を
行う際に、そのデータを高速に転送させることができ
る。以上により、高速な演算の実行が並列計算機上で可
能になる。
【0011】
【実施例】本発明の実施例を図5に基づいて説明する。
同図に示すように、本実施例は、逐次型言語で記述され
た原コードが格納された原コードファイル5と、当該原
コードを並列計算機用の目的コードに変換する自動並列
化翻訳装置(コンパイラ)7と、自動並列化翻訳装置7
により原コードから変換された目的コードを格納する目
的コードファイル6と、処理が割り付けられるべきプロ
セッサを予め指定する指定情報を格納する指定情報格納
部4とを有する。さらに、前記自動並列化翻訳装置7
は、同図に示すように、並列計算機により並列実行の可
能な並列DOループ及び、並列実行の不可能な逐次DO
ループを抽出するDOループ抽出部1と、抽出された並
列DOループについて、DOループ内の各項を並列実行
させるDOループ内並列化コードを作成するDOループ
内並列化コード作成部8と、抽出されたDOループの間
の依存関係の検出を行うDOループ間依存関係検出部2
と、前記DOループ内並列化コード及び検出されたDO
ループ間の依存関係または前記指定情報に基づいて、D
Oループ間での並列実行を可能とするDOループ間並列
化コードを作成するDOループ間並列化コード作成部3
とを有するものである。当該DOループ間並列化コード
作成部3は、同図に示すように、前記DOループ間依存
関係検出部2により、各逐次DOループと並列DOルー
プとの間の依存関係がないことが検出された場合には、
実行時には逐次DOループを優先的に割り付け、残りの
プロセッサで並列DOループを実行させるようなDOル
ープ間動的並列化コード又はDOループ間静的並列化コ
ード作成の指示を行う独立並列DOループ作成指示部3
aと、前記DOループ間依存関係検出部2により、デー
タ依存関係にある2つのDOループ間で、そのデータ依
存が2つのループの各イテレーション(項)の添字(項
番号)について常に等距離であることが検出された場合
には、各項の実行についてはパイプラインを実行させる
DOループ間動的並列化コード又はDOループ間静的並
列化コードの作成の指示を行う等距離逐次DOループ割
付指示部3bと、データ依存関係にある2つのDOルー
プ間で、そのデータ依存が2つのループの各項の項番号
について常に等距離であることが検出された場合には、
各項の処理についてはパイプライン処理を実行させるよ
うなDOループ間動的並列化コード又はDOループ間静
的並列化コードを作成する指示を行う等距離DOループ
割付指示部3cと、階層型のメモリを持った並列計算機
上で複数のDOループをパイプライン実行させる際に
は、DOループ間の通信が階層を越えないように同じク
ラスターに割り付けるようにDOループ間動的並列化コ
ード又はDOループ間静的並列化コードの作成を指示す
る階層型メモリ割付指示部3dと、前記独立並列DOル
ープ割付指示部3a、等距離逐次DOループ割付指示部
3b、等距離DOループ割付指示部3c及び階層型メモ
リ割付指示部3dからの割り付けの指示があった場合に
は、前記DOループ内並列化コード及び検出されたDO
ループ間の依存関係または前記指定情報格納部4から読
みだされた指定情報に基づいて、目的コードの作成を行
う目的コード作成部3eとを有するものである。
同図に示すように、本実施例は、逐次型言語で記述され
た原コードが格納された原コードファイル5と、当該原
コードを並列計算機用の目的コードに変換する自動並列
化翻訳装置(コンパイラ)7と、自動並列化翻訳装置7
により原コードから変換された目的コードを格納する目
的コードファイル6と、処理が割り付けられるべきプロ
セッサを予め指定する指定情報を格納する指定情報格納
部4とを有する。さらに、前記自動並列化翻訳装置7
は、同図に示すように、並列計算機により並列実行の可
能な並列DOループ及び、並列実行の不可能な逐次DO
ループを抽出するDOループ抽出部1と、抽出された並
列DOループについて、DOループ内の各項を並列実行
させるDOループ内並列化コードを作成するDOループ
内並列化コード作成部8と、抽出されたDOループの間
の依存関係の検出を行うDOループ間依存関係検出部2
と、前記DOループ内並列化コード及び検出されたDO
ループ間の依存関係または前記指定情報に基づいて、D
Oループ間での並列実行を可能とするDOループ間並列
化コードを作成するDOループ間並列化コード作成部3
とを有するものである。当該DOループ間並列化コード
作成部3は、同図に示すように、前記DOループ間依存
関係検出部2により、各逐次DOループと並列DOルー
プとの間の依存関係がないことが検出された場合には、
実行時には逐次DOループを優先的に割り付け、残りの
プロセッサで並列DOループを実行させるようなDOル
ープ間動的並列化コード又はDOループ間静的並列化コ
ード作成の指示を行う独立並列DOループ作成指示部3
aと、前記DOループ間依存関係検出部2により、デー
タ依存関係にある2つのDOループ間で、そのデータ依
存が2つのループの各イテレーション(項)の添字(項
番号)について常に等距離であることが検出された場合
には、各項の実行についてはパイプラインを実行させる
DOループ間動的並列化コード又はDOループ間静的並
列化コードの作成の指示を行う等距離逐次DOループ割
付指示部3bと、データ依存関係にある2つのDOルー
プ間で、そのデータ依存が2つのループの各項の項番号
について常に等距離であることが検出された場合には、
各項の処理についてはパイプライン処理を実行させるよ
うなDOループ間動的並列化コード又はDOループ間静
的並列化コードを作成する指示を行う等距離DOループ
割付指示部3cと、階層型のメモリを持った並列計算機
上で複数のDOループをパイプライン実行させる際に
は、DOループ間の通信が階層を越えないように同じク
ラスターに割り付けるようにDOループ間動的並列化コ
ード又はDOループ間静的並列化コードの作成を指示す
る階層型メモリ割付指示部3dと、前記独立並列DOル
ープ割付指示部3a、等距離逐次DOループ割付指示部
3b、等距離DOループ割付指示部3c及び階層型メモ
リ割付指示部3dからの割り付けの指示があった場合に
は、前記DOループ内並列化コード及び検出されたDO
ループ間の依存関係または前記指定情報格納部4から読
みだされた指定情報に基づいて、目的コードの作成を行
う目的コード作成部3eとを有するものである。
【0012】また、図8には、前記自動並列化コンパイ
ラ(翻訳装置)により変換された目的コードにより並列
実行の行われる本実施例に係る並列計算機のシステム構
成図を示す。同図に示すように、本システムでは、階層
型のメモリであるキャッシュ・メモリ1511b〜1524
b及び主記憶装置131 、132 をもつ並列計算機であ
り、大きくは2つのクラスター111 、112 がネット
ワーク12により接続されたシステムである。各クラス
ター111 、112 には、プロセッサ1511a〜1524
a及びキャッシュ・メモリ1511b〜1524bの複数の
組1511〜1524と、すべてのプロセッサ1511a〜1
524aからのアクセス可能な共通の主記憶装置131 、
132とを有する。また、各主記憶装置131 、132
には、実行時の各プロセッサの使用状況を示すスケジュ
ーラ141 、142 と、前記目的コードを格納する格納
部161 、162 とを有する。
ラ(翻訳装置)により変換された目的コードにより並列
実行の行われる本実施例に係る並列計算機のシステム構
成図を示す。同図に示すように、本システムでは、階層
型のメモリであるキャッシュ・メモリ1511b〜1524
b及び主記憶装置131 、132 をもつ並列計算機であ
り、大きくは2つのクラスター111 、112 がネット
ワーク12により接続されたシステムである。各クラス
ター111 、112 には、プロセッサ1511a〜1524
a及びキャッシュ・メモリ1511b〜1524bの複数の
組1511〜1524と、すべてのプロセッサ1511a〜1
524aからのアクセス可能な共通の主記憶装置131 、
132とを有する。また、各主記憶装置131 、132
には、実行時の各プロセッサの使用状況を示すスケジュ
ーラ141 、142 と、前記目的コードを格納する格納
部161 、162 とを有する。
【0013】続いて、本実施例に係る動作について説明
する。図6に示すように、ステップSJ1で、自動並列
化翻訳の対象となる逐次型言語で記述された原コードを
前記原コードファイル5から読み出し、自動並列化翻訳
装置(コンパイラ)7に入力する。すると、ステップS
J2で、前記DOループ抽出部1はDOループを抽出す
る。ステップSJ3でDOループがない場合には終了
し、DOループの抽出があった場合にはステップSJ4
に進み、並列DOループか否かの判断を行う。並列DO
ループか否かの判断はDOループ内の各項のデータ依存
関係を調べることにより、各項が独立な場合には、並列
DOループであると判断される。ステップSJ4で、並
列DOループであると判断された場合には、ステップS
J5に進み、前記DOループ内並列化コード作成部8は
DOループ内の各イテレーション(項)を複数のプロセ
ッサで並列実行可能なように、DOループ内での並列化
コードを作成する。ステップSJ6で、前記DOループ
間並列化コード作成部3の等距離逐次DOループ割付指
示部3bはデータ依存関係のあるうちで添字(項番号)
が等距離の逐次DOループの検索を行う。ステップSJ
7で、添字が等距離の逐次DOループがあった場合に
は、ステップS15で、前記目的コード作成部3eは指
示に従って、パイプライン処理が行われるような目的コ
ードを作成する。
する。図6に示すように、ステップSJ1で、自動並列
化翻訳の対象となる逐次型言語で記述された原コードを
前記原コードファイル5から読み出し、自動並列化翻訳
装置(コンパイラ)7に入力する。すると、ステップS
J2で、前記DOループ抽出部1はDOループを抽出す
る。ステップSJ3でDOループがない場合には終了
し、DOループの抽出があった場合にはステップSJ4
に進み、並列DOループか否かの判断を行う。並列DO
ループか否かの判断はDOループ内の各項のデータ依存
関係を調べることにより、各項が独立な場合には、並列
DOループであると判断される。ステップSJ4で、並
列DOループであると判断された場合には、ステップS
J5に進み、前記DOループ内並列化コード作成部8は
DOループ内の各イテレーション(項)を複数のプロセ
ッサで並列実行可能なように、DOループ内での並列化
コードを作成する。ステップSJ6で、前記DOループ
間並列化コード作成部3の等距離逐次DOループ割付指
示部3bはデータ依存関係のあるうちで添字(項番号)
が等距離の逐次DOループの検索を行う。ステップSJ
7で、添字が等距離の逐次DOループがあった場合に
は、ステップS15で、前記目的コード作成部3eは指
示に従って、パイプライン処理が行われるような目的コ
ードを作成する。
【0014】一方、ステップSJ4で、抽出されたDO
ループが逐次DOループであると判断された場合には、
ステップSJ8に進み、前記DOループ間依存関係検出
部2は当該逐次DOループとデータ依存関係のない並列
DOループを検索する。ステップSJ9で、データ依存
関係のない並列DOループがあった場合には、ステップ
SJ10に進み、前記独立並列DOループ割付指示部3
aは、逐次DOループを優先的に並列計算機のプロセッ
サに割り付け、残りのプロセッサに対して、並列DOル
ープを割り付けることになる。ステップSJ9で、依存
関係のない並列DOループが存在しない場合には、ステ
ップSJ11に進み、前記等距離逐次DOループ割付指
示部3bは添字(項)が等距離の逐次DOループの検索
を行い、ステップSJ12でそのような逐次DOループ
があったと判断された場合には、ステップSJ15に進
み、前記目的コード作成部3eに対し、パイプライン処
理の実行が行われるように割付け等の指示を行う。
ループが逐次DOループであると判断された場合には、
ステップSJ8に進み、前記DOループ間依存関係検出
部2は当該逐次DOループとデータ依存関係のない並列
DOループを検索する。ステップSJ9で、データ依存
関係のない並列DOループがあった場合には、ステップ
SJ10に進み、前記独立並列DOループ割付指示部3
aは、逐次DOループを優先的に並列計算機のプロセッ
サに割り付け、残りのプロセッサに対して、並列DOル
ープを割り付けることになる。ステップSJ9で、依存
関係のない並列DOループが存在しない場合には、ステ
ップSJ11に進み、前記等距離逐次DOループ割付指
示部3bは添字(項)が等距離の逐次DOループの検索
を行い、ステップSJ12でそのような逐次DOループ
があったと判断された場合には、ステップSJ15に進
み、前記目的コード作成部3eに対し、パイプライン処
理の実行が行われるように割付け等の指示を行う。
【0015】一方、ステップSJ12で、添字が等距離
の逐次DOループが存在しない場合には、ステップSJ
13に進み、前記等距離DOループ割付指示部3cは添
字が等距離の並列DOループを検索し、当該並列DOル
ープがあった場合には、ステップSJ15で、前記目的
コード作成部3eに対し、パイプライン処理の実行がな
されるように指示を行う。但し、ステップSJ15で、
並列計算機が階層型のメモリをもつ場合には、DOルー
プ間でパイプライン実行を実現させる場合には、パイプ
ラインで実行させる双方のDOループの間の通信が階層
をまたがないように、同じクラスター(図8の符号11
1 、112 )に割り付けるようにする。これにより、高
速なパイプライン実行が可能になる。また、そのクラス
ター内のキャッシュ・コヒーレンシを保つ(当該クラス
ター内の任意のプロセッサが数値データ等を設定した場
合には、他のプロセッサの各キャッシュ・メモリ内にも
同様の数値データ等が設定されること)プロトコルが、
キャッシュ・メモリからキャッシュ・メモリへ直接コピ
ーするものである場合には、パイプラインで通信される
データ量がキャッシュ・メモリに入りきる大きさであれ
ば、共有メモリを介在せず直接キャッシュ・メモリ間で
データがパイプライン転送されるため、その効果は一層
大きい。尚、以上の説明で、動的スケジューリングの場
合には、実行状況に応じて使用可能なプロセッサの台数
により割り付けが行われるような目的コードが作成され
るが、静的スケジューリングの場合には、前記指定情報
格納部4からの情報に基づいてプロセッサの割り付けの
ための目的コードが作成される。
の逐次DOループが存在しない場合には、ステップSJ
13に進み、前記等距離DOループ割付指示部3cは添
字が等距離の並列DOループを検索し、当該並列DOル
ープがあった場合には、ステップSJ15で、前記目的
コード作成部3eに対し、パイプライン処理の実行がな
されるように指示を行う。但し、ステップSJ15で、
並列計算機が階層型のメモリをもつ場合には、DOルー
プ間でパイプライン実行を実現させる場合には、パイプ
ラインで実行させる双方のDOループの間の通信が階層
をまたがないように、同じクラスター(図8の符号11
1 、112 )に割り付けるようにする。これにより、高
速なパイプライン実行が可能になる。また、そのクラス
ター内のキャッシュ・コヒーレンシを保つ(当該クラス
ター内の任意のプロセッサが数値データ等を設定した場
合には、他のプロセッサの各キャッシュ・メモリ内にも
同様の数値データ等が設定されること)プロトコルが、
キャッシュ・メモリからキャッシュ・メモリへ直接コピ
ーするものである場合には、パイプラインで通信される
データ量がキャッシュ・メモリに入りきる大きさであれ
ば、共有メモリを介在せず直接キャッシュ・メモリ間で
データがパイプライン転送されるため、その効果は一層
大きい。尚、以上の説明で、動的スケジューリングの場
合には、実行状況に応じて使用可能なプロセッサの台数
により割り付けが行われるような目的コードが作成され
るが、静的スケジューリングの場合には、前記指定情報
格納部4からの情報に基づいてプロセッサの割り付けの
ための目的コードが作成される。
【0016】図7には、当該自動並列化翻訳装置(コン
パイラ)7により原コードを目的コードに変換した場合
の具体例を示す。同図(a)には、原コードのDOルー
プを示す。この例では、前記指定情報として、例えば、
プロセッサが4台の場合、各プロセッサの番号(0,
1,2,3)は変数Pに設定されているとする。ここで
プロセスとはプロセッサに割り付けられる処理の単位を
いう。同図(b)には、当該原コードを予め指定した指
定情報に基づいて、前記DOループ間並列化コード作成
部3により、目的コードであるDOループ間静的並列化
コードを作成した例を示す。この例では、4つのプロセ
ッサが同時に以下の処理を行うことになる。しかし、各
プロセッサ内でのPの値は違うので、プロセッサφでは
DO I=1,256 を意味し、プロセッサ1では、
DO I=257,512……というふうに実行される
ことになる。一方、同図(c)には、、動的スケジュー
リングの場合の目的コードであるDOループ間動的並列
化コードを示す。同図で、Iは全てのプロセッサから共
通にアクセスできるグローバルな変数iは各プロセッサ
内だけのプライベートな変数であり、各プロセッサは、
1から256までの数の中から順に1つずつ値を取り出
して、自分のローカルな変数iに入れて、その処理を行
う2つ以上のプロセッサが同じ値を取り出さないよう
に、例えば、前記スケジューラに設けられたキューをア
クセスする場合には、当該プロセッサのみのアクセスが
可能であって、他のプロセッサからのアクセスを禁止し
て重複した実行を防止するために、“LOCK”を行
い、キューからの読出しが終了した段階で、“LOC
K”を解除することになる。
パイラ)7により原コードを目的コードに変換した場合
の具体例を示す。同図(a)には、原コードのDOルー
プを示す。この例では、前記指定情報として、例えば、
プロセッサが4台の場合、各プロセッサの番号(0,
1,2,3)は変数Pに設定されているとする。ここで
プロセスとはプロセッサに割り付けられる処理の単位を
いう。同図(b)には、当該原コードを予め指定した指
定情報に基づいて、前記DOループ間並列化コード作成
部3により、目的コードであるDOループ間静的並列化
コードを作成した例を示す。この例では、4つのプロセ
ッサが同時に以下の処理を行うことになる。しかし、各
プロセッサ内でのPの値は違うので、プロセッサφでは
DO I=1,256 を意味し、プロセッサ1では、
DO I=257,512……というふうに実行される
ことになる。一方、同図(c)には、、動的スケジュー
リングの場合の目的コードであるDOループ間動的並列
化コードを示す。同図で、Iは全てのプロセッサから共
通にアクセスできるグローバルな変数iは各プロセッサ
内だけのプライベートな変数であり、各プロセッサは、
1から256までの数の中から順に1つずつ値を取り出
して、自分のローカルな変数iに入れて、その処理を行
う2つ以上のプロセッサが同じ値を取り出さないよう
に、例えば、前記スケジューラに設けられたキューをア
クセスする場合には、当該プロセッサのみのアクセスが
可能であって、他のプロセッサからのアクセスを禁止し
て重複した実行を防止するために、“LOCK”を行
い、キューからの読出しが終了した段階で、“LOC
K”を解除することになる。
【0017】以下、図9〜図11に基づいて実行時のプ
ロセッサの割り付け例を示す。この各例では、原コード
は、DOループ1の各項はA(i)からなるDOループ
(Loop)であり、 DO i=1,16 A(i) DOループ2の各項はB(i)からなるDOループであ
り、 DO i=1,16 B(i) で表され、A(i)とB(i)は互いにデータの依存関
係はないものとする。また、説明の簡単のため、DOル
ープ1とDOループ2とでの各ステップの処理時間は等
しいものとし、各項(ステップ、イテレーション)の項
(ステップ)数は16とする。また、p0〜p3は割り
付けられるべき並列計算機を形成する各プロセッサを示
す。
ロセッサの割り付け例を示す。この各例では、原コード
は、DOループ1の各項はA(i)からなるDOループ
(Loop)であり、 DO i=1,16 A(i) DOループ2の各項はB(i)からなるDOループであ
り、 DO i=1,16 B(i) で表され、A(i)とB(i)は互いにデータの依存関
係はないものとする。また、説明の簡単のため、DOル
ープ1とDOループ2とでの各ステップの処理時間は等
しいものとし、各項(ステップ、イテレーション)の項
(ステップ)数は16とする。また、p0〜p3は割り
付けられるべき並列計算機を形成する各プロセッサを示
す。
【0018】図9の(a)は従来例に係る場合であっ
て、並列DOループであるDOループ1を各プロセッサ
に分割して並列実行させた後、逐次DOループであるD
Oループ2を1台のプロセッサによって実行させた様子
を示す。この場合には必要とするステップ数は20とな
る。同図(b)には、並列DOループであるDOループ
1と逐次DOループであるDOループ2を並列に実行さ
せた様子を示している。逐次DOループ2を1台のプロ
セッサに割り付け、並列DOループ1を残りの3台のプ
ロセッサに分散させて並列実行させている。全体の処理
の為に必要なステップ数(項数)は16となり高速化さ
れている。
て、並列DOループであるDOループ1を各プロセッサ
に分割して並列実行させた後、逐次DOループであるD
Oループ2を1台のプロセッサによって実行させた様子
を示す。この場合には必要とするステップ数は20とな
る。同図(b)には、並列DOループであるDOループ
1と逐次DOループであるDOループ2を並列に実行さ
せた様子を示している。逐次DOループ2を1台のプロ
セッサに割り付け、並列DOループ1を残りの3台のプ
ロセッサに分散させて並列実行させている。全体の処理
の為に必要なステップ数(項数)は16となり高速化さ
れている。
【0019】図10の場合にはDOループ1及びDOル
ープ2をどちらも逐次DOループとし、DOループ1か
らDOループ2へは、それぞれの添字を比較した場合、
距離0のデータ依存関係がある場合を示す。この場合、
2つのループのパイプライン実行が可能になる。図10
(a)では、従来例に相当する場合であって、DOルー
プ1を実行した後に、DOループ2を実行させた様子を
示している。この場合処理に必要なステップ数は32と
なる。図10(b)はDOループ1とDOループ2とを
パイプライン実行させたようすを示す。この場合、処理
に必要なステップ数は17となり高速化されている。
ープ2をどちらも逐次DOループとし、DOループ1か
らDOループ2へは、それぞれの添字を比較した場合、
距離0のデータ依存関係がある場合を示す。この場合、
2つのループのパイプライン実行が可能になる。図10
(a)では、従来例に相当する場合であって、DOルー
プ1を実行した後に、DOループ2を実行させた様子を
示している。この場合処理に必要なステップ数は32と
なる。図10(b)はDOループ1とDOループ2とを
パイプライン実行させたようすを示す。この場合、処理
に必要なステップ数は17となり高速化されている。
【0020】図11(b)の場合は、DOループ1が逐
次DOループであり、DOループ2を並列DOループと
し、DOループ1からDOループ2へのデータ依存関係
が存在する場合には、従来例では、図11(b)のよう
になり、ステップ数は20となる。DOループ2の並列
実行は行わずに、図10の場合と同じようにパイプライ
ン実行させる(図10(b))ことによりステップ数は
17と高速化される。以上説明したように、本実施例に
あっては、DOループを出来るかぎり並列処理を行うよ
うにしている。したがって、その処理のステップ数を削
減することができるので、処理を高速化することができ
る。また、図8に示すように、階層型のメモリをもった
並列型計算機の場合には、前述したように、DOループ
間のパイプライン実行を実現する際に、パイプラインで
実行させる双方のDOループを同じクラスター内に割り
付けることで、データの通信がネットワークを介在する
ことなく実現でき、高速な実行が可能となる。パイプラ
インで通信されるデータ量がキャッシュ・メモリに入り
きる大きさであれば、共有メモリを介在することもな
く、キャッシュ・メモリから相手側のキャッシュ・メモ
リに直接転送され、さらに高速な実行が可能となる。さ
らに、本実施例では、静的スケジューリングの場合だけ
でなく、動的スケジューリングの場合について、原コー
ドを目的コードに変換するようにしている。したがっ
て、各々の場合の長所を場合に応じて選択することがで
きるので、便利である。即ち、静的スケジューリングは
実行時にプロセッサの割付けを行う必要がないので、そ
の処理(オーバヘッド)分の時間が省略できて、処理が
高速になる。また、動的スケジューリングは、コンパイ
ルされたプログラム(目的コード)はどんなプロセッサ
台数構成の並列計算機上でも動作することができ便利で
ある。
次DOループであり、DOループ2を並列DOループと
し、DOループ1からDOループ2へのデータ依存関係
が存在する場合には、従来例では、図11(b)のよう
になり、ステップ数は20となる。DOループ2の並列
実行は行わずに、図10の場合と同じようにパイプライ
ン実行させる(図10(b))ことによりステップ数は
17と高速化される。以上説明したように、本実施例に
あっては、DOループを出来るかぎり並列処理を行うよ
うにしている。したがって、その処理のステップ数を削
減することができるので、処理を高速化することができ
る。また、図8に示すように、階層型のメモリをもった
並列型計算機の場合には、前述したように、DOループ
間のパイプライン実行を実現する際に、パイプラインで
実行させる双方のDOループを同じクラスター内に割り
付けることで、データの通信がネットワークを介在する
ことなく実現でき、高速な実行が可能となる。パイプラ
インで通信されるデータ量がキャッシュ・メモリに入り
きる大きさであれば、共有メモリを介在することもな
く、キャッシュ・メモリから相手側のキャッシュ・メモ
リに直接転送され、さらに高速な実行が可能となる。さ
らに、本実施例では、静的スケジューリングの場合だけ
でなく、動的スケジューリングの場合について、原コー
ドを目的コードに変換するようにしている。したがっ
て、各々の場合の長所を場合に応じて選択することがで
きるので、便利である。即ち、静的スケジューリングは
実行時にプロセッサの割付けを行う必要がないので、そ
の処理(オーバヘッド)分の時間が省略できて、処理が
高速になる。また、動的スケジューリングは、コンパイ
ルされたプログラム(目的コード)はどんなプロセッサ
台数構成の並列計算機上でも動作することができ便利で
ある。
【0021】
【発明の効果】以上説明したように、本発明にあって
は、並列計算機でDOループの実行を行う際には、単に
各並列DOループ内の各項の間だけでなく、各DOルー
プ間でも、可能な限り各プロセッサにより並列実行させ
るように原コードを目的コードに変換している。したが
って、処理の手数を削減することにより、処理を高速化
し、処理時間を削減し、並列計算機の処理効率を高める
ことができるので、並列計算機の有効利用を図ることが
できる。また、第一及び第二の発明の場合には動的スケ
ジューリングの場合についての並列化を行っているの
で、翻訳されたプログラムはどんなプロセッサ台数の構
成の並列計算機上でも動作する。さらに、第三及び第四
の発明の場合には、静的スケジューリングの場合につい
ての並列化を行っているので、実行時にプロセッサ割付
けを行う必要がなく、その分処理が高速化されることに
なる。
は、並列計算機でDOループの実行を行う際には、単に
各並列DOループ内の各項の間だけでなく、各DOルー
プ間でも、可能な限り各プロセッサにより並列実行させ
るように原コードを目的コードに変換している。したが
って、処理の手数を削減することにより、処理を高速化
し、処理時間を削減し、並列計算機の処理効率を高める
ことができるので、並列計算機の有効利用を図ることが
できる。また、第一及び第二の発明の場合には動的スケ
ジューリングの場合についての並列化を行っているの
で、翻訳されたプログラムはどんなプロセッサ台数の構
成の並列計算機上でも動作する。さらに、第三及び第四
の発明の場合には、静的スケジューリングの場合につい
ての並列化を行っているので、実行時にプロセッサ割付
けを行う必要がなく、その分処理が高速化されることに
なる。
【図1】第一の発明の原理ブロック図
【図2】第二の発明の原理流れ図
【図3】第三の発明の原理ブロック図
【図4】第四の発明の原理ブロック図
【図5】実施例に係るブロック図
【図6】実施例に係る流れ図
【図7】実施例に係るDOループのコードの変換例を示
す図
す図
【図8】実施例に係る並列計算機のシステム構成を示す
図
図
【図9】従来例及び実施例に係る実行時の割付け例を示
す図(1)
す図(1)
【図10】従来例及び実施例に係る実行時の割付け例を
示す図(2)
示す図(2)
【図11】従来例及び実施例に係る実行時の割付け例を
示す図(3)
示す図(3)
【図12】従来例に係るブロック図
10,1 DOループ抽出部 20,2 DOループ間依存関係検出部 30 DOループ間動的並列化コード作成部 31 DOループ間静的並列化コード作成部 40(4) 指定情報出力部(指定情報格納部) 80,8 DOループ内並列化コード作成部
Claims (10)
- 【請求項1】 逐次型言語で記述された原コードから、
並列計算機により並列実行の可能な並列DOループ及
び、並列実行の不可能な逐次DOループを抽出するDO
ループ抽出部(10)と、抽出された並列DOループに
ついて、DOループ内の各項を並列実行させるDOルー
プ内並列化コードを作成するDOループ内並列化コード
作成部(80)とを有し、前記原コードを並列計算機用
の目的コードに変換する自動並列化翻訳装置において、 抽出されたDOループの間の依存関係の検出を行うDO
ループ間依存関係検出部(20)と、 前記DOループ内並列化コード及び検出されたDOルー
プ間の依存関係に基づいて、動的にDOループ間での並
列実行を可能とするDOループ間動的並列化コードを作
成するDOループ間動的並列化コード作成部(30)と
を有することを特徴とする自動並列化翻訳装置。 - 【請求項2】 逐次型言語で記述された原コードを入力
し(S1)、並列計算機により並列実行の可能な並列D
Oループ及び、並列実行の不可能な逐次DOループを原
コードから抽出し、抽出された並列DOループについ
て、DOループ内の各項を並列実行させるDOループ内
並列化コードを作成する(S2)ことにより原コードを
並列計算機用の目的コードに変換する自動並列化翻訳方
法において、 抽出された前記DOループの間の依存関係の検出を行い
(S3)、 前記DOループ内並列化コード及び検出された前記DO
ループ間の依存関係に基づいて、動的にDOループ間で
の並列実行を可能とするDOループ間動的並列化コード
を作成する(S4)ことを特徴とする自動並列化翻訳方
法。 - 【請求項3】 逐次型言語で記述された原コードから、
並列計算機により並列実行の可能な並列DOループ及
び、並列実行の不可能な逐次DOループを抽出するDO
ループ抽出部(10)と,抽出された並列DOループに
ついて、DOループ内の各項を並列実行させるDOルー
プ内並列化コードを作成するDOループ内並列化コード
作成部(80)とを有し、前記原コードを並列計算機用
の目的コードに変換する自動並列化翻訳装置において、 抽出されたDOループの間の依存関係の検出を行うDO
ループ間依存関係検出部(20)と、 処理が割り付けられるプロセッサを予め指定する指定情
報を出力する指定情報出力部(40)と、 前記DOループ内並列化コード、検出されたDOループ
間の依存関係、及び前記指定情報に基づいて、静的にD
Oループ間での並列実行を可能とするDOループ間静的
並列化コードを作成するDOループ間静的並列化コード
作成部(31)とを有することを特徴とする自動並列化
翻訳装置。 - 【請求項4】 逐次型言語で記述された原コードを入力
し(S1)、並列計算機により並列実行の可能な並列D
Oループ及び、並列処理の不可能な逐次DOループを原
コードから抽出し、抽出された並列DOループについ
て、DOループ内で並列実行させるDOループ内並列化
コードを作成する(S2)ことにより原コードを並列計
算機用の目的コードに変換する自動並列化翻訳方法にお
いて、 抽出された前記DOループの間の依存関係の検出を行い
(S3)、 前記DOループ内並列化コード、検出されたDOループ
間の依存関係、及び処理が割り付けられるべきプロセッ
サを予め指定する指定情報に基づいて、静的にDOルー
プ間での並列実行を行わせるDOループ間静的並列化コ
ードを作成する(S14)ことを特徴とする自動並列化
翻訳方法。 - 【請求項5】 前記DOループ間依存関係検出部(2
0)により、各逐次DOループと並列DOループとの間
に依存関係がないことが検出された場合には、実行時に
は逐次DOループを優先的にプロセッサに割り付け、残
りのプロセッサで並列DOループを実行させるDOルー
プ間動的並列化コード又はDOループ間静的並列化コー
ドを作成するDOループ動的並列化コード作成部(3
0)又はDOループ静的並列化コード作成部(31)を
有することを特徴とする請求項1又は請求項3記載の自
動並列化翻訳装置。 - 【請求項6】 各逐次DOループと並列DOループとの
間に依存関係がないことが検出された場合には、実行時
には逐次DOループを優先的にプロセッサに割り付け、
残りのプロセッサで並列DOループを実行させるDOル
ープ間動的並列化コード又はDOループ間静的並列化コ
ードを作成することを特徴とする請求項2又は4記載の
自動並列化翻訳方法。 - 【請求項7】 前記DOループ間依存関係検出部(2
0)により、データ依存関係にある2つのDOループ間
で、そのデータ依存が2つのループの各項の項番号につ
いて常に等距離であることが検出された場合には、前記
DOループ動的並列化コード作成部(30)又はDOル
ープ静的並列化コード作成部(31)は各項の実行につ
いてはパイプラインを実行させるDOループ間動的並列
化コード又はDOループ間静的並列化コードを作成する
ことを特徴とする請求項1又は請求項3記載の自動並列
化翻訳装置。 - 【請求項8】 データ依存関係にある2つのDOループ
間で、そのデータ依存が2つのループの各項の項番号に
ついて常に等距離であることが検出された場合には、各
項の処理についてはパイプライン処理を実行させるDO
ループ間動的並列化コード又はDOループ間静的並列化
コードを作成することを特徴とする請求項2又は請求項
4記載の自動並列化翻訳方法。 - 【請求項9】 階層型のメモリを持った並列計算機上で
複数のDOループをパイプライン実行させる際には、D
Oループ間の通信が階層を越えないように同じクラスタ
ーに割り付けるようにDOループ間動的並列化コード又
はDOループ間静的並列化コードを作成すること特徴と
する請求項7の自動並列化翻訳装置。 - 【請求項10】 階層型のメモリを持った並列計算機上
で複数のDOループをパイプライン実行させる際には、
DOループ間の通信が階層を越えないように同じクラス
ターに割り付けるようにDOループ間動的並列化コード
又はDOループ間動的並列化コードを作成すること特徴
とする請求項8記載の自動並列化翻訳方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP626293A JPH06214801A (ja) | 1993-01-18 | 1993-01-18 | 自動並列化翻訳装置及び方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP626293A JPH06214801A (ja) | 1993-01-18 | 1993-01-18 | 自動並列化翻訳装置及び方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH06214801A true JPH06214801A (ja) | 1994-08-05 |
Family
ID=11633549
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP626293A Withdrawn JPH06214801A (ja) | 1993-01-18 | 1993-01-18 | 自動並列化翻訳装置及び方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH06214801A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011118752A (ja) * | 2009-12-04 | 2011-06-16 | Toshiba Corp | コンパイル装置 |
| CN118860369A (zh) * | 2024-08-29 | 2024-10-29 | 北京清程极智科技有限公司 | 代码并行化方法、装置、计算机设备、可读存储介质和程序产品 |
-
1993
- 1993-01-18 JP JP626293A patent/JPH06214801A/ja not_active Withdrawn
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011118752A (ja) * | 2009-12-04 | 2011-06-16 | Toshiba Corp | コンパイル装置 |
| CN118860369A (zh) * | 2024-08-29 | 2024-10-29 | 北京清程极智科技有限公司 | 代码并行化方法、装置、计算机设备、可读存储介质和程序产品 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI525540B (zh) | 具有橫跨多個處理器之平行資料執行緒的映射處理邏輯 | |
| CN111090464B (zh) | 一种数据流处理方法及相关设备 | |
| Bauer et al. | Singe: Leveraging warp specialization for high performance on gpus | |
| US8296743B2 (en) | Compiler and runtime for heterogeneous multiprocessor systems | |
| KR101559090B1 (ko) | 이종 코어를 위한 자동 커널 마이그레이션 | |
| US8417919B2 (en) | Assigning different serialization identifier to operations on different data set for execution in respective processor in multi-processor system | |
| US8528001B2 (en) | Controlling and dynamically varying automatic parallelization | |
| Huynh et al. | Scalable framework for mapping streaming applications onto multi-GPU systems | |
| US20120331278A1 (en) | Branch removal by data shuffling | |
| JP2019049843A (ja) | 実行ノード選定プログラム、実行ノード選定方法及び情報処理装置 | |
| Zhang et al. | Optimizing the Barnes-Hut algorithm in UPC | |
| Noaje et al. | Source-to-source code translator: OpenMP C to CUDA | |
| US20030126589A1 (en) | Providing parallel computing reduction operations | |
| Meenderinck et al. | A case for hardware task management support for the StarSs programming model | |
| JPH06214801A (ja) | 自動並列化翻訳装置及び方法 | |
| He et al. | ARACHNE: Optimizing distributed parallel applications with reduced inter-process communication | |
| Kaouane et al. | SysCellC: Systemc on cell | |
| US20250370768A1 (en) | A computer-implemented method and a computer-readable medium | |
| US20260119144A1 (en) | Techniques for compiler lowering of task-based programs to asynchronous accelerators | |
| Cole et al. | Efficient resource oblivious algorithms for multicores | |
| Wang et al. | micMR: An efficient MapReduce framework for CPU–MIC heterogeneous architecture | |
| Hu et al. | Adjust ELF format for multi-core architecture | |
| Liang et al. | Automatically migrating sequential applications to heterogeneous system architecture | |
| Patil | Auto Conversion of Serial C Code into Cuda-C-Code for Faster Execution Utilizing GPU | |
| Xiaowen | Research on Multi-Core PC Parallel Computation Based on OpenMP |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20000404 |