JPH01108638A - 並列化コンパイル方式 - Google Patents
並列化コンパイル方式Info
- Publication number
- JPH01108638A JPH01108638A JP62263788A JP26378887A JPH01108638A JP H01108638 A JPH01108638 A JP H01108638A JP 62263788 A JP62263788 A JP 62263788A JP 26378887 A JP26378887 A JP 26378887A JP H01108638 A JPH01108638 A JP H01108638A
- Authority
- JP
- Japan
- Prior art keywords
- loop
- parallel
- processing
- field
- program
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
- G06F8/452—Loops
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は、並列計算機システムに係り、特に逐次実行型
の高級言語で記述されたソース・プログラムから、並列
に実行するのに好適なオブジェクトプログラムを生成す
る方式に関する。
の高級言語で記述されたソース・プログラムから、並列
に実行するのに好適なオブジェクトプログラムを生成す
る方式に関する。
従来、マルチプロセッサのような並列処理システムにお
いては、ユーザインタフェースとして、逐次型のソース
プログラムに、並列化の手段、タスクの起動、同期など
の指示を明示的にユーザが記述する必要があった。AC
M−0−89791−174−1−12185−010
7,A DataFlow Approach to
Multitasking on CRAY X −M
Pcomputersでは、4台のベクトルプロセッサ
を並列に動作させるマルチタスキングの動作と、そのた
めのユーザの指示方法について述べられている。
いては、ユーザインタフェースとして、逐次型のソース
プログラムに、並列化の手段、タスクの起動、同期など
の指示を明示的にユーザが記述する必要があった。AC
M−0−89791−174−1−12185−010
7,A DataFlow Approach to
Multitasking on CRAY X −M
Pcomputersでは、4台のベクトルプロセッサ
を並列に動作させるマルチタスキングの動作と、そのた
めのユーザの指示方法について述べられている。
これによれば、タスクの起動や同期の制御のためのライ
ブラリがシステムに用意されており、ユーザはFORT
RANプログラムの中で、これらを呼び出すように記述
する。さらに細いレベルでは、ループごとに並列化の手
段をコメント形式の制御文の形でコンパイラに指示する
必要がある。
ブラリがシステムに用意されており、ユーザはFORT
RANプログラムの中で、これらを呼び出すように記述
する。さらに細いレベルでは、ループごとに並列化の手
段をコメント形式の制御文の形でコンパイラに指示する
必要がある。
このようなマルチプロセッサシステムに対して、逐次型
のコンパイル言語から自動的に並列化する手法について
言及したものはない。
のコンパイル言語から自動的に並列化する手法について
言及したものはない。
上記従来技術は、並列処理が可能なハードウェアに対し
て、自動的に並列化する点については配慮されておらず
、ユーザ自身が、並列処理の手段を考え、それを明示的
にプログラムに埋め込むというプログラム変換が必要が
あった。従って、財産としてユーザが持っていた逐次型
のプログラムをそのままの形で並列実行させることはで
きず、並列処理向きに再コーデイングさらにそのデバッ
グが必要となる。また、ハードウェアの特性が変わるた
びに、その資源を有効に使うために、並列化の指示を変
更する必要があり、他のシステムでは動かないなど、ユ
ーザプログラムの汎用性が損われるなどの問題点があっ
た。
て、自動的に並列化する点については配慮されておらず
、ユーザ自身が、並列処理の手段を考え、それを明示的
にプログラムに埋め込むというプログラム変換が必要が
あった。従って、財産としてユーザが持っていた逐次型
のプログラムをそのままの形で並列実行させることはで
きず、並列処理向きに再コーデイングさらにそのデバッ
グが必要となる。また、ハードウェアの特性が変わるた
びに、その資源を有効に使うために、並列化の指示を変
更する必要があり、他のシステムでは動かないなど、ユ
ーザプログラムの汎用性が損われるなどの問題点があっ
た。
本発明の目的は、上記のようなユーザの負担を軽減し、
既に存在する逐次型のプログラムはそのまま手を入れる
ことなく自動的に並列化でき、かつ新しくコーディング
する場合においても、ハードウェアの細い特性を意識し
なくても効率のよいオブジェクトコードを生成できるよ
うにすることにある。
既に存在する逐次型のプログラムはそのまま手を入れる
ことなく自動的に並列化でき、かつ新しくコーディング
する場合においても、ハードウェアの細い特性を意識し
なくても効率のよいオブジェクトコードを生成できるよ
うにすることにある。
上記目的は、コンパイラの自動並列化処理において、外
側ループから内側ループに向がって順に、以下の処理を
施すことにより達成される。
側ループから内側ループに向がって順に、以下の処理を
施すことにより達成される。
まず、ループの各繰り返しを並列に実行する可能性を検
出する。
出する。
Do 10 I=1.N
Do 20 J=1.M
A(I、J)=A(I、J)+X(I、J) ・・・
■B(I、J)=B(I、J)串C(J)/D(I)・
・・■ 20 C0NTINUE 10 C0NTINUE のようなプログラムに対して、 ■ I=1.I=2.・・・、I=Nの各値で、内側の
Do 20 ループを並列に実行させる可能性を検出と
、 次に内側のDo 20ループについて■ I=1.J
=2.・・・、J=Mの各値で、■。
■B(I、J)=B(I、J)串C(J)/D(I)・
・・■ 20 C0NTINUE 10 C0NTINUE のようなプログラムに対して、 ■ I=1.I=2.・・・、I=Nの各値で、内側の
Do 20 ループを並列に実行させる可能性を検出と
、 次に内側のDo 20ループについて■ I=1.J
=2.・・・、J=Mの各値で、■。
■の文を並列に実行させる可能性を検出する。
Do 10 I=1.N
10 C0NTINUE
というように、プログラムを分け、各々異るプロセッサ
で並列に実行させた時の逐次処理した場合に対する性能
向上度、即ち加速率に影響を与える項目を算出し、ルー
プごとのテーブルに結果を格納する。まず、同一アドレ
スのメモリ上のデータの値を決める定義とその値を用い
る使用が、異る繰り返しの回数の間で起るか否かにより
多重度を算出する。次に、ソースプログラムの字面上の
演算子の種類と個数および推定したループの繰り返し回
数などより数えあげ、それに基づき並列処理単位当りの
演算量(粒度という)の大きさとばらつきを算出する。
で並列に実行させた時の逐次処理した場合に対する性能
向上度、即ち加速率に影響を与える項目を算出し、ルー
プごとのテーブルに結果を格納する。まず、同一アドレ
スのメモリ上のデータの値を決める定義とその値を用い
る使用が、異る繰り返しの回数の間で起るか否かにより
多重度を算出する。次に、ソースプログラムの字面上の
演算子の種類と個数および推定したループの繰り返し回
数などより数えあげ、それに基づき並列処理単位当りの
演算量(粒度という)の大きさとばらつきを算出する。
さらに、ループの各繰り返しを並列に実行する時に必要
な同期制御のための演算量の全演算量に対する割合を算
出する。
な同期制御のための演算量の全演算量に対する割合を算
出する。
また、各文ごとに並列に実行する可能性を検出する。前
記と同じソースプログラムを例にとると、■の文と■の
文を内側のループで分割して並列に実行させる可能性を
検出する。
記と同じソースプログラムを例にとると、■の文と■の
文を内側のループで分割して並列に実行させる可能性を
検出する。
Do 10 I=1.N
10 C0NTINUE
となり、この例ではループ内に2つの文があるので、プ
ログラムを2つに分け、これらを各々異るプロセッサで
、並列に実行する時の逐次実行した場合に対する性能向
上率、即ち加速率に影響を与える項目を算出し、ループ
ごとのテーブルに結果を格納する。まず、ループ分割不
可能な再帰演を検出し、文の数より多重度を算出する。
ログラムを2つに分け、これらを各々異るプロセッサで
、並列に実行する時の逐次実行した場合に対する性能向
上率、即ち加速率に影響を与える項目を算出し、ループ
ごとのテーブルに結果を格納する。まず、ループ分割不
可能な再帰演を検出し、文の数より多重度を算出する。
次に、並列処理の単位である文、内側ループ、再帰演算
部ごとに、演算量(粒度)を、ソースプログラムの字面
上の演算子の個数と、推定したループの繰り返し回数な
どにより数えあげ、各粒の大きさと粒度のばらつきを算
出する。さらに、各文の間のデータ依存関係より、同期
制御を行うための演算量の全演算量に対する割合を算出
する。
部ごとに、演算量(粒度)を、ソースプログラムの字面
上の演算子の個数と、推定したループの繰り返し回数な
どにより数えあげ、各粒の大きさと粒度のばらつきを算
出する。さらに、各文の間のデータ依存関係より、同期
制御を行うための演算量の全演算量に対する割合を算出
する。
さらに、1つのループ単独ではなく、多重ループの組み
合わせによって生じる新たな並列実行の可能性を検出す
る。まず、多重なループを組み合わせることが可能か否
かの判定のために、密多重ループに変換できるか否かを
判定する。密多重ループに変換できる場合のみ、次の3
種のループ構造変換を施した場合の並列処理の可能性を
調べる。
合わせによって生じる新たな並列実行の可能性を検出す
る。まず、多重なループを組み合わせることが可能か否
かの判定のために、密多重ループに変換できるか否かを
判定する。密多重ループに変換できる場合のみ、次の3
種のループ構造変換を施した場合の並列処理の可能性を
調べる。
ループ変換は、対象とするループに並列処理の可能性が
ある場合、その外側ループと交換して粒度を上げるため
に行う。従って、この条件を満足している時のみループ
交換可否を判定し、可能であれば交換した場合の、多重
度、演算量のばらつき、同期制御の割合などを算出し、
テーブルに格納する。前述と同じソースプログラムの例
では、Do 10ループとDo 20ループを交換
し、新たに外側ループとなったDo 20ループのJ=
1.J=2.・・・・・・、J=Mの各値で、内側のD
o 10ループを並列に実行させる可能性を検出する。
ある場合、その外側ループと交換して粒度を上げるため
に行う。従って、この条件を満足している時のみループ
交換可否を判定し、可能であれば交換した場合の、多重
度、演算量のばらつき、同期制御の割合などを算出し、
テーブルに格納する。前述と同じソースプログラムの例
では、Do 10ループとDo 20ループを交換
し、新たに外側ループとなったDo 20ループのJ=
1.J=2.・・・・・・、J=Mの各値で、内側のD
o 10ループを並列に実行させる可能性を検出する。
というように、プログラムを分け、各々異るプロセッサ
で実行させた時の、多重度、演算量のばらつき、同期制
御の割合などを算出する。
で実行させた時の、多重度、演算量のばらつき、同期制
御の割合などを算出する。
ループ一重化は、対象とするループについて並列処理が
可能であるが、ループ長が短いために多重度が十分では
ない場合、そのループの外側ループとをまとめて一重化
し、多重度を上げるために行う。従って、この条件を満
足している時のみ、ループ一重化の可否を判定し、可能
であれば一重化した場合の多重度、演算量のばらつき、
同期制御の割合などを算出し、テーブルに格納する。前
述と同じソースプログラムの例では、Do 10ルー
プとDo 20ループを一重化すると、Do 10
K=1.M傘N A(K)=A(K)+X(K) ・・・■
B(K)=B(K)傘C(mod(K 、 N +
1 ))/D(K/M+1) ・・・■ 10 C0NTINUII! となる。これを、K=1.に=2.・・・・・・、 K
=M欅Nの各値で、Do 10ループを並列に実行さ
せる可能性を検出する。
可能であるが、ループ長が短いために多重度が十分では
ない場合、そのループの外側ループとをまとめて一重化
し、多重度を上げるために行う。従って、この条件を満
足している時のみ、ループ一重化の可否を判定し、可能
であれば一重化した場合の多重度、演算量のばらつき、
同期制御の割合などを算出し、テーブルに格納する。前
述と同じソースプログラムの例では、Do 10ルー
プとDo 20ループを一重化すると、Do 10
K=1.M傘N A(K)=A(K)+X(K) ・・・■
B(K)=B(K)傘C(mod(K 、 N +
1 ))/D(K/M+1) ・・・■ 10 C0NTINUII! となる。これを、K=1.に=2.・・・・・・、 K
=M欅Nの各値で、Do 10ループを並列に実行さ
せる可能性を検出する。
というようにプログラムを分け、各々異るプロセッサで
実行させる可能性を検出する。
実行させる可能性を検出する。
ななめ変換は、1つのループレベル単独では、データの
依存関係などに制限されて十分な多重度を引き出せない
場合に、wave front 1ive(plane
)に沿って並列に実行させ、十分な多重度を引き出すた
めに行う。従って、この条件を満足した時に、ななめ変
換可否判定し、ななめに変換した場合の多重度、演算量
のばらつき、同期制御の割合などを算出し、テーブルに
格納する。前述のソースプログラムの例では、並列処理
を妨げるデータ依存関係はないため、この変換は行わな
い。
依存関係などに制限されて十分な多重度を引き出せない
場合に、wave front 1ive(plane
)に沿って並列に実行させ、十分な多重度を引き出すた
めに行う。従って、この条件を満足した時に、ななめ変
換可否判定し、ななめに変換した場合の多重度、演算量
のばらつき、同期制御の割合などを算出し、テーブルに
格納する。前述のソースプログラムの例では、並列処理
を妨げるデータ依存関係はないため、この変換は行わな
い。
最後に、これらの処理により算出された、多重度、演算
量のばらつき、同期制御の割合などから、並列に実行し
た場合、結果が得られるまでの経過時間が最も短くなる
と判断した、並列化の手段を選ぶ。後に続くコンパイラ
の処理は、これに従って、逐次実行型のプログラムを並
列実行型のプログラムに変換する。
量のばらつき、同期制御の割合などから、並列に実行し
た場合、結果が得られるまでの経過時間が最も短くなる
と判断した、並列化の手段を選ぶ。後に続くコンパイラ
の処理は、これに従って、逐次実行型のプログラムを並
列実行型のプログラムに変換する。
以下、複数のプロセッサが並列に動作するマルチプロセ
ッサシステムのためのFORTRANコンバイうにおけ
る1本発明の一実施例を図表を参照しつつ説明する。
ッサシステムのためのFORTRANコンバイうにおけ
る1本発明の一実施例を図表を参照しつつ説明する。
第2図は適用するマルチプロセッサの例を示す。
ここでは、主記憶装置を共有する形態のマルチプロセッ
サ・システムを例にとり実施例を説明するが、本発明は
、各プロセッサがそれぞれ記憶装置を持つ形態のマルチ
プロセッサ・システムにも適用可能である。複数の並列
に動作するCPU82〜84があり、これらは主記憶装
置80を共有する。従って、各CPUが同一アドレスを
アクセスする場合には、同期制御により順序を保証する
必要がある。このようなハードウェアの資源を有効に用
いて、計算結果を得るまでの経過時間が短くなるような
オブジェクトコードを生成する本発明の詳細な実施例を
述べる。
サ・システムを例にとり実施例を説明するが、本発明は
、各プロセッサがそれぞれ記憶装置を持つ形態のマルチ
プロセッサ・システムにも適用可能である。複数の並列
に動作するCPU82〜84があり、これらは主記憶装
置80を共有する。従って、各CPUが同一アドレスを
アクセスする場合には、同期制御により順序を保証する
必要がある。このようなハードウェアの資源を有効に用
いて、計算結果を得るまでの経過時間が短くなるような
オブジェクトコードを生成する本発明の詳細な実施例を
述べる。
第3図に、本発明を適用するコンパイラ全体の構成を示
す。第3図内の構文解析処理13がFORTRANのソ
ースプログラム11を入力とし、これを中間語6に変換
する。中間処理14はこの中間語6を入力として、最適
化や並列化を行い、中間詰6を変形する。コード生成処
理15は、中間処理14が変形した中間語から並列に実
行されるオブジェクトコード12を生成する。本発明は
、中間処理6に係り、オブジェクトコード12を並列に
実行させた時の経過時間を短くするものである。
す。第3図内の構文解析処理13がFORTRANのソ
ースプログラム11を入力とし、これを中間語6に変換
する。中間処理14はこの中間語6を入力として、最適
化や並列化を行い、中間詰6を変形する。コード生成処
理15は、中間処理14が変形した中間語から並列に実
行されるオブジェクトコード12を生成する。本発明は
、中間処理6に係り、オブジェクトコード12を並列に
実行させた時の経過時間を短くするものである。
第3図の中間処理14のうち、自動並列化に係わる処理
の構成を第1図に示す。第3図の入力するソースプログ
ラム11の例として、第4図にFORTRANプログラ
ムをあげ、説明する。第4図のFORTRANプログラ
ムから、中間処理14はり。
の構成を第1図に示す。第3図の入力するソースプログ
ラム11の例として、第4図にFORTRANプログラ
ムをあげ、説明する。第4図のFORTRANプログラ
ムから、中間処理14はり。
10、Do 20の2つのループテーブル第1図の7
を作り、これらが多重ループを構成することを示す。こ
のループごとのテーブルの構造を第5図に示す。
を作り、これらが多重ループを構成することを示す。こ
のループごとのテーブルの構造を第5図に示す。
この第5図のループテーブルに従って、最外側ループか
ら内側へ向かって各フィールドを埋めながら、並列処理
の手段を決定する。自動並列化処理1の主制御を第6図
にPAD図で示す。中間処理14はループテーブルを確
保した後、最外側で先頭のループのテーブルを指して、
自動並列化処理1を呼び出し、これは、与えられた当該
ループに対して、第6図のように処理する。
ら内側へ向かって各フィールドを埋めながら、並列処理
の手段を決定する。自動並列化処理1の主制御を第6図
にPAD図で示す。中間処理14はループテーブルを確
保した後、最外側で先頭のループのテーブルを指して、
自動並列化処理1を呼び出し、これは、与えられた当該
ループに対して、第6図のように処理する。
まず、第4図で最外側で先頭のループD010116〜
21に対応するループテーブル第5図22へのポインタ
が与えられ、第6図の処理が行われる。この第5図22
のループに対して、各繰り返しについての並列性を検出
するために第1図のループの各繰り返しについて並列性
検出処理2が呼ばれる(第6図の61)。
21に対応するループテーブル第5図22へのポインタ
が与えられ、第6図の処理が行われる。この第5図22
のループに対して、各繰り返しについての並列性を検出
するために第1図のループの各繰り返しについて並列性
検出処理2が呼ばれる(第6図の61)。
第1図のループの各繰り返しについて並列性検出処理2
の概要を第7図にPAD図で示す。第4図のプログラム
のDo IOIループ16〜21については、17の
左辺のC(I)から20の右辺のC(I)へフロー依存
が、17の左辺のC(I)から20の左辺のC(I)へ
出力依存があり、19の左辺のA(I+1.J)から2
0の右辺のA(I。
の概要を第7図にPAD図で示す。第4図のプログラム
のDo IOIループ16〜21については、17の
左辺のC(I)から20の右辺のC(I)へフロー依存
が、17の左辺のC(I)から20の左辺のC(I)へ
出力依存があり、19の左辺のA(I+1.J)から2
0の右辺のA(I。
J)へフロー依存がある。第7図の処理70により、こ
の中でCに関する依存はいずれもループ独立であるため
、Aに関するフロー依存を検出する。
の中でCに関する依存はいずれもループ独立であるため
、Aに関するフロー依存を検出する。
処理71がこの2回のループ運搬依存より多重度は1と
算出し、この値を第5図のループテーブルのフィールド
24に格納する。多重度1とは、逐次実行と同等である
ことを意味する。第7図72は、Do IOIループ
1回当りの演算量を見積る。文17は19文19は字面
上の演算量lとループ長100をかけて1002文20
は1とループ長100をかけて100となる。これらを
加えた201をフィールド25と26に格納し、さらに
二九に外側ループのループ長10をかけた値2010を
フィールド23に格納する。処理74は、データ依存関
係より、工を1インクリメントするたびに、同期が必要
であるため、■のループ1回当りの演算量201をフィ
ールド27に格納する。
算出し、この値を第5図のループテーブルのフィールド
24に格納する。多重度1とは、逐次実行と同等である
ことを意味する。第7図72は、Do IOIループ
1回当りの演算量を見積る。文17は19文19は字面
上の演算量lとループ長100をかけて1002文20
は1とループ長100をかけて100となる。これらを
加えた201をフィールド25と26に格納し、さらに
二九に外側ループのループ長10をかけた値2010を
フィールド23に格納する。処理74は、データ依存関
係より、工を1インクリメントするたびに、同期が必要
であるため、■のループ1回当りの演算量201をフィ
ールド27に格納する。
次に、第6図の処理62は、多重度1であるため十分な
多重度はないと判断して処理65が第1図のループ中の
各文について並列性検出部3を呼び出す。この処理概要
を第8図にPAD図で示す。
多重度はないと判断して処理65が第1図のループ中の
各文について並列性検出部3を呼び出す。この処理概要
を第8図にPAD図で示す。
第8図の処理75が第4図の文17と18間のル−プ分
割点を検出し、ここしかループ分割可能な点が無いため
、多重度2を第5図のフィールド28に格納する6処理
76が、ループ分割した場合の演算量として、文17の
1と外側ループ長10をかけた値10を最小値のフィー
ルド29に格納する。文18〜20の演算量として、文
19と文20の2と、外側ループ長10.内側ループ長
20をかけた値2000を最大値のフィールド30に格
納する。処理77が、文17から文20に対するフロー
依存より、文18〜21の演算2000に対して10回
同期制御があると判定し、これをフィールド31に格納
する。以上で、第6図63へ処理はもどる。
割点を検出し、ここしかループ分割可能な点が無いため
、多重度2を第5図のフィールド28に格納する6処理
76が、ループ分割した場合の演算量として、文17の
1と外側ループ長10をかけた値10を最小値のフィー
ルド29に格納する。文18〜20の演算量として、文
19と文20の2と、外側ループ長10.内側ループ長
20をかけた値2000を最大値のフィールド30に格
納する。処理77が、文17から文20に対するフロー
依存より、文18〜21の演算2000に対して10回
同期制御があると判定し、これをフィールド31に格納
する。以上で、第6図63へ処理はもどる。
第4図のDo IOHのプールには外側ループは無い
ため、処理65を行わず、処理66へ進み、第1図5の
並列手段選択処理を呼び出す。この処理概要を第9図に
PAD図で示す。Do IOIループの場合、いずれ
の方式よりも逐次実行の方が速いため、処理92がこれ
を選択し、フィールど33,34をうめ、第11図23
′〜34′のようになる。第6図の処理67の判定を経
て、処理69が、今度は、Do IOJループのテー
ブル38を示して、再び第6図の処理を行う。
ため、処理65を行わず、処理66へ進み、第1図5の
並列手段選択処理を呼び出す。この処理概要を第9図に
PAD図で示す。Do IOIループの場合、いずれ
の方式よりも逐次実行の方が速いため、処理92がこれ
を選択し、フィールど33,34をうめ、第11図23
′〜34′のようになる。第6図の処理67の判定を経
て、処理69が、今度は、Do IOJループのテー
ブル38を示して、再び第6図の処理を行う。
第4図の文18から文21のDo IOJループには、
このループに関する運搬依存は無いため、第7図の処理
71が、ループ長の100を第5図のフィールド40に
格納する。さらに処理73゜74で、ループ1回当りの
演算量2を、フィールド41.42へ格納し、これに内
側ループのループ長100と、外側ループのループ長1
0をかけた、2000をフィールド39へ格納する。さ
らに、外側ループについての依存より、外側ループ1回
ごとに同期制御が必要であるため、その同期制御の回数
が200演算に1回であることをフィールド43に格納
する。第6図の処理62で、既に繰り返し回数の並列化
により十分な並列性があると判定し、処理63は行わず
、処理64を経て、処理65が第1図のループ構造変換
可否判定処理4を呼び出す。この処理の概要を第10図
に示す。
このループに関する運搬依存は無いため、第7図の処理
71が、ループ長の100を第5図のフィールド40に
格納する。さらに処理73゜74で、ループ1回当りの
演算量2を、フィールド41.42へ格納し、これに内
側ループのループ長100と、外側ループのループ長1
0をかけた、2000をフィールド39へ格納する。さ
らに、外側ループについての依存より、外側ループ1回
ごとに同期制御が必要であるため、その同期制御の回数
が200演算に1回であることをフィールド43に格納
する。第6図の処理62で、既に繰り返し回数の並列化
により十分な並列性があると判定し、処理63は行わず
、処理64を経て、処理65が第1図のループ構造変換
可否判定処理4を呼び出す。この処理の概要を第10図
に示す。
第4図の文18から文21のDo IOJループでは、
この外側ループと密多重化することが可能であるため、
処理100を経て、処理101へ進む。ここで、ループ
の繰り返しごとに並列に実行すれば、十分な並列度が得
られることがわかっているため、処理102が、粒度を
上げるためのループ交換の可能性を調べる。その結果可
能であることがわかると、処理104が交換した場合の
多重度、演算量、同期制御を示すように第11図の12
0〜127のテーブルを作り、上記の推定した値を格納
する。多重度は変わらずループ長の100(第11図の
フィールド123)であるが、演算粒度はループ交換に
より20と(フィールド124.125)なり、同期制
御は計算途中で不要となるため、全演算が終了した後に
1回という意味で、2000演算に1回としてフィール
ド126に格納する。他に、ループ運搬依存がある時は
、処理109と111がななめ変換の可能性とその時の
多重度、演算粒度、同期制御を算出しテーブルに格納し
、データ依存関係は独立でもループ長が短く多重度や、
演算粒度が小さい場合は。
この外側ループと密多重化することが可能であるため、
処理100を経て、処理101へ進む。ここで、ループ
の繰り返しごとに並列に実行すれば、十分な並列度が得
られることがわかっているため、処理102が、粒度を
上げるためのループ交換の可能性を調べる。その結果可
能であることがわかると、処理104が交換した場合の
多重度、演算量、同期制御を示すように第11図の12
0〜127のテーブルを作り、上記の推定した値を格納
する。多重度は変わらずループ長の100(第11図の
フィールド123)であるが、演算粒度はループ交換に
より20と(フィールド124.125)なり、同期制
御は計算途中で不要となるため、全演算が終了した後に
1回という意味で、2000演算に1回としてフィール
ド126に格納する。他に、ループ運搬依存がある時は
、処理109と111がななめ変換の可能性とその時の
多重度、演算粒度、同期制御を算出しテーブルに格納し
、データ依存関係は独立でもループ長が短く多重度や、
演算粒度が小さい場合は。
処理106と108が一重化変換の可能性とその時の多
重度、演算粒度、同期制御を算出しテーブルに格納する
。この後、第6図の処理66へ進み、第1図の並列化手
段選択処理5が呼ばれ、第9図に示す通りに判定が行わ
れる。処理92では、各繰り返しを並列に実行すること
を第11図のフィールド49′に格納しであるが、処理
94と95がフィールド48′が指すテーブルの結果よ
り、ループ交換したうえで、Do IOJループの繰
り返し回数を並列に実行する手段を選ぶ。そして、処理
97は第11図のフィールド49′に、フィールド12
0〜127のテーブルのポインタを格納し、処理59は
プロセッサの台数をNPEとして、同期制御が無いので
推定経過時間20X100/NPEをフィールド50′
に格納する。
重度、演算粒度、同期制御を算出しテーブルに格納する
。この後、第6図の処理66へ進み、第1図の並列化手
段選択処理5が呼ばれ、第9図に示す通りに判定が行わ
れる。処理92では、各繰り返しを並列に実行すること
を第11図のフィールド49′に格納しであるが、処理
94と95がフィールド48′が指すテーブルの結果よ
り、ループ交換したうえで、Do IOJループの繰
り返し回数を並列に実行する手段を選ぶ。そして、処理
97は第11図のフィールド49′に、フィールド12
0〜127のテーブルのポインタを格納し、処理59は
プロセッサの台数をNPEとして、同期制御が無いので
推定経過時間20X100/NPEをフィールド50′
に格納する。
このようにして、第4図のFORTRANプログラムに
対して、並列性の検出・評価・選択を終了した時点では
、第1図のループテーブル7は第11図のようになって
いる。このテーブルから、第3図中間処理14の後に続
く処理が、第4図のプログラムを第12図に示すように
、中間語6を変換する。131のループについて、各繰
り返しを並列に実行させる。これから、第3図のコード
生成処理15がオブジェクトコード12を生成するが、
このオブジェクトコードの実行時の様子を第13図に示
す。第12図のループ131の各繰り返しが、NPE台
のプロセッサに割付けられ、並列に実行される。
対して、並列性の検出・評価・選択を終了した時点では
、第1図のループテーブル7は第11図のようになって
いる。このテーブルから、第3図中間処理14の後に続
く処理が、第4図のプログラムを第12図に示すように
、中間語6を変換する。131のループについて、各繰
り返しを並列に実行させる。これから、第3図のコード
生成処理15がオブジェクトコード12を生成するが、
このオブジェクトコードの実行時の様子を第13図に示
す。第12図のループ131の各繰り返しが、NPE台
のプロセッサに割付けられ、並列に実行される。
本発明によれば、従来の逐次型のユーザプログラムを、
再コーデイングすることなく、並列処理システムで実行
させることができる。またこの時、ハードウェア資源を
有効に用いることにより、経過時間が短く、実行効率の
高いオブジェクトコードを生成させることができる。
再コーデイングすることなく、並列処理システムで実行
させることができる。またこの時、ハードウェア資源を
有効に用いることにより、経過時間が短く、実行効率の
高いオブジェクトコードを生成させることができる。
第1図は自動並列化処理の1部、第2図は適用するシス
テムの概要図、第3図はコンパイラの全体図、第4図は
実施例説明のためのソースプログラム例を示す図、第5
図はループテーブルを示す図、第6図は自動並列化処理
の概要を示す図、第7図はループの各繰り返しについて
の並列性検出処理の概要を示す図、第8図はループの各
文についての並列性検出処理の概要を示す図、第9図は
並列化手段選択処理の概要を示す図、第10図はループ
構造変換可否判定処理の概要を示す図、第11図はルー
プテーブルを示す図、第12図は並列化変換後のプログ
ラムを示す図、第13図は実行時の概要を示す図である
。 1・・・自動並列化処理、2・・・ループの各繰り返し
についての並列性検出処理、3・・・ループの各文につ
いての並列性検出処理、4・・・ループ構造変換可否判
定処理、5・・・並列化手段選択処理、6・・・中間語
、7・・・ループテーブル、10・・・FORTRAN
コンパイラ、11・・・FORTRANソースプログラ
ム、12・・・オブジェクトコード、13・・・構文解
析処理、14・・・中間処理、15・・・コード生成処
理、16〜21・・・FORTRANプログラム、22
〜53・・・ループテーブルの各フィールド、61〜7
7・・・処理部、80・・・主記憶装置、81・・・イ
ンタフェースユニット、82〜84・・・プロセッサ、
85.86・・・入出力装置、90〜97,100〜1
11・・・処理、120〜127・・・ループテーブル
の各フィールド、130゜狛 1 図 =)制御り波れ □ データのシ龍己 Z3図 [二二二二二二二4>#、り御の 充n1T″−9f)
シ側れ
テムの概要図、第3図はコンパイラの全体図、第4図は
実施例説明のためのソースプログラム例を示す図、第5
図はループテーブルを示す図、第6図は自動並列化処理
の概要を示す図、第7図はループの各繰り返しについて
の並列性検出処理の概要を示す図、第8図はループの各
文についての並列性検出処理の概要を示す図、第9図は
並列化手段選択処理の概要を示す図、第10図はループ
構造変換可否判定処理の概要を示す図、第11図はルー
プテーブルを示す図、第12図は並列化変換後のプログ
ラムを示す図、第13図は実行時の概要を示す図である
。 1・・・自動並列化処理、2・・・ループの各繰り返し
についての並列性検出処理、3・・・ループの各文につ
いての並列性検出処理、4・・・ループ構造変換可否判
定処理、5・・・並列化手段選択処理、6・・・中間語
、7・・・ループテーブル、10・・・FORTRAN
コンパイラ、11・・・FORTRANソースプログラ
ム、12・・・オブジェクトコード、13・・・構文解
析処理、14・・・中間処理、15・・・コード生成処
理、16〜21・・・FORTRANプログラム、22
〜53・・・ループテーブルの各フィールド、61〜7
7・・・処理部、80・・・主記憶装置、81・・・イ
ンタフェースユニット、82〜84・・・プロセッサ、
85.86・・・入出力装置、90〜97,100〜1
11・・・処理、120〜127・・・ループテーブル
の各フィールド、130゜狛 1 図 =)制御り波れ □ データのシ龍己 Z3図 [二二二二二二二4>#、り御の 充n1T″−9f)
シ側れ
Claims (1)
- 1、高級言語で記述されたソースプログラムを複数のプ
ロセッサが並列に動作するマルチプロセッサの上で並列
に実行される命令列からなるオブジェクトコードを生成
するコンパイラにおいて、逐次実行型のプログラム内の
繰り返し計算を行う各々のループについて、まず(1)
ループの各繰り返しを単位とした並列実行の可能性を検
出し、次に(2)ループ内の各文の並列実行の可能性を
検出し、また(3)多重ループの外側ループと内側ルー
プの交換、一重化、傾め変換の可否を判定し、可能なも
のがあれば変換した後の並列実行の可能性を検出し、(
1)、(2)、(3)で検出した実行可能な並列処理を
施した場合について、適用するハードウェア装置の特性
により、オブジェクトコードを並列に実行させた時の、
計算結果が得られるまでの経過時間を推定し、コンパイ
ル時に最適と判断した並列処理を選択することにより並
列実行型のプログラムに変換することを特徴とする並列
化コンパイル方式。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP62263788A JPH01108638A (ja) | 1987-10-21 | 1987-10-21 | 並列化コンパイル方式 |
| US07/259,243 US5151991A (en) | 1987-10-21 | 1988-10-18 | Parallelization compile method and system |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP62263788A JPH01108638A (ja) | 1987-10-21 | 1987-10-21 | 並列化コンパイル方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH01108638A true JPH01108638A (ja) | 1989-04-25 |
Family
ID=17394266
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP62263788A Pending JPH01108638A (ja) | 1987-10-21 | 1987-10-21 | 並列化コンパイル方式 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5151991A (ja) |
| JP (1) | JPH01108638A (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH03139758A (ja) * | 1989-10-26 | 1991-06-13 | Agency Of Ind Science & Technol | マルチプロセッサ割り付け方法 |
| JPH03148729A (ja) * | 1989-11-06 | 1991-06-25 | Agency Of Ind Science & Technol | 並列実行プログラム翻訳処理方式 |
| JPH04155530A (ja) * | 1990-10-19 | 1992-05-28 | Fujitsu Ltd | コンパイル処理方式 |
| JP4867009B2 (ja) * | 2004-12-09 | 2012-02-01 | 国立大学法人 奈良先端科学技術大学院大学 | 量子コンピュータを含むコンピュータシステムのためのプログラム開発支援装置、プログラム開発支援用プログラム、及びシミュレーション装置 |
| CN105308565A (zh) * | 2013-05-31 | 2016-02-03 | 微软技术许可有限责任公司 | 深度并行的源代码编译 |
Families Citing this family (81)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0353819B1 (en) * | 1988-08-02 | 1997-04-09 | Koninklijke Philips Electronics N.V. | Method and apparatus for synchronizing parallel processors using a fuzzy barrier |
| JP3039953B2 (ja) * | 1989-04-28 | 2000-05-08 | 株式会社日立製作所 | 並列化装置 |
| JPH03111971A (ja) * | 1989-09-27 | 1991-05-13 | Toshiba Corp | ベクトル化診断方式 |
| JPH03150636A (ja) * | 1989-11-08 | 1991-06-27 | Matsushita Electric Ind Co Ltd | コンパイル方法 |
| US5276880A (en) * | 1989-12-15 | 1994-01-04 | Siemens Corporate Research, Inc. | Method for parsing and representing multi-versioned computer programs, for simultaneous and synchronous processing of the plural parses |
| US5255385A (en) * | 1990-02-26 | 1993-10-19 | Hitachi, Ltd. | Method of testing program, and compiler and program testing tool for the method |
| JP2818016B2 (ja) * | 1990-08-09 | 1998-10-30 | 株式会社日立製作所 | プロセス並列実行方法および装置 |
| US5247696A (en) * | 1991-01-17 | 1993-09-21 | Cray Research, Inc. | Method for compiling loops having recursive equations by detecting and correcting recurring data points before storing the result to memory |
| JPH06507990A (ja) * | 1991-05-24 | 1994-09-08 | ブリティッシュ・テクノロジー・グループ・ユーエスエイ・インコーポレーテッド | コンピュータのための最適化コンパイラ |
| US5412784A (en) * | 1991-07-15 | 1995-05-02 | International Business Machines Corporation | Apparatus for parallelizing serial instruction sequences and creating entry points into parallelized instruction sequences at places other than beginning of particular parallelized instruction sequence |
| JP2921190B2 (ja) * | 1991-07-25 | 1999-07-19 | 日本電気株式会社 | 並列実行方式 |
| US5293631A (en) * | 1991-08-06 | 1994-03-08 | Hewlett-Packard Company | Analysis and optimization of array variables in compiler for instruction level parallel processor |
| JPH05250341A (ja) * | 1991-11-11 | 1993-09-28 | Matsushita Electric Ind Co Ltd | 並列可能性判定装置、及び並列可能性判定方法、並びにそれを用いたプログラム変換装置 |
| US5561801A (en) * | 1991-12-13 | 1996-10-01 | Thinking Machines Corporation | System and method for multilevel promotion |
| JPH05257709A (ja) * | 1992-03-16 | 1993-10-08 | Hitachi Ltd | 並列化判別方法およびそれを用いた並列化支援方法 |
| US6055627A (en) * | 1992-06-22 | 2000-04-25 | Hitachi, Ltd. | Compiling method of accessing a multi-dimensional array and system therefor |
| US5442792A (en) * | 1992-08-07 | 1995-08-15 | Hughes Aircraft Company | Expert system compilation method |
| JPH07110800A (ja) * | 1993-10-13 | 1995-04-25 | Matsushita Electric Ind Co Ltd | 最適化並列コンパイル装置及び最適化並列コンパイル方法 |
| GB2299422B (en) * | 1995-03-30 | 2000-01-12 | Sony Uk Ltd | Object code allocation in multiple processor systems |
| JP3505266B2 (ja) * | 1995-06-15 | 2004-03-08 | 三洋電機株式会社 | プログラム実行装置 |
| JP3650649B2 (ja) * | 1995-06-16 | 2005-05-25 | 松下電器産業株式会社 | 最適化装置 |
| US6074433A (en) * | 1995-08-25 | 2000-06-13 | Fujitsu Limited | Optimization control apparatus and optimization control method for array descriptions |
| GB2315888A (en) * | 1996-07-31 | 1998-02-11 | Ibm | Controlling the degree of parallelism when performing parallel processing on an inherently serial computer program |
| US6463527B1 (en) | 1997-03-21 | 2002-10-08 | Uzi Y. Vishkin | Spawn-join instruction set architecture for providing explicit multithreading |
| US5966537A (en) * | 1997-05-28 | 1999-10-12 | Sun Microsystems, Inc. | Method and apparatus for dynamically optimizing an executable computer program using input data |
| US6038398A (en) * | 1997-05-29 | 2000-03-14 | Hewlett-Packard Co. | Method and apparatus for improving performance of a program using a loop interchange, loop distribution, loop interchange sequence |
| US6075935A (en) * | 1997-12-01 | 2000-06-13 | Improv Systems, Inc. | Method of generating application specific integrated circuits using a programmable hardware architecture |
| US7047232B1 (en) * | 1999-01-13 | 2006-05-16 | Ab Initio Software Corporation | Parallelizing applications of script-driven tools |
| US6567975B1 (en) | 1999-11-08 | 2003-05-20 | Sun Microsystems, Inc. | Method and apparatus for inserting data prefetch operations using data flow analysis |
| US7337437B2 (en) * | 1999-12-01 | 2008-02-26 | International Business Machines Corporation | Compiler optimisation of source code by determination and utilization of the equivalence of algebraic expressions in the source code |
| US6829680B1 (en) | 2000-01-05 | 2004-12-07 | Sun Microsystems, Inc. | Method for employing a page prefetch cache for database applications |
| US6738967B1 (en) * | 2000-03-14 | 2004-05-18 | Microsoft Corporation | Compiling for multiple virtual machines targeting different processor architectures |
| US8176108B2 (en) * | 2000-06-20 | 2012-05-08 | International Business Machines Corporation | Method, apparatus and computer program product for network design and analysis |
| JP3933380B2 (ja) * | 2000-10-05 | 2007-06-20 | 富士通株式会社 | コンパイラ |
| JP2002116915A (ja) * | 2000-10-10 | 2002-04-19 | Fujitsu Ltd | コンパイラ並列化スケジュール方法 |
| JP3810631B2 (ja) * | 2000-11-28 | 2006-08-16 | 富士通株式会社 | 情報処理プログラムを記録した記録媒体 |
| JP2003005980A (ja) * | 2001-06-22 | 2003-01-10 | Matsushita Electric Ind Co Ltd | コンパイル装置およびコンパイルプログラム |
| JP2003050721A (ja) * | 2001-08-08 | 2003-02-21 | Fujitsu Ltd | 並列効率計算方法及び装置 |
| KR20030042319A (ko) * | 2001-11-22 | 2003-05-28 | 한국전자통신연구원 | 병렬 프로그램 수행중 경합 탐지를 위한 병렬 루프 변형방법 |
| US7076777B2 (en) * | 2002-08-07 | 2006-07-11 | International Business Machines Corporation | Run-time parallelization of loops in computer programs with static irregular memory access patterns |
| US7765532B2 (en) * | 2002-10-22 | 2010-07-27 | Oracle America, Inc. | Inducing concurrency in software code |
| US7346902B2 (en) * | 2002-10-22 | 2008-03-18 | Sun Microsystems, Inc. | System and method for block-based concurrentization of software code |
| US7222218B2 (en) * | 2002-10-22 | 2007-05-22 | Sun Microsystems, Inc. | System and method for goal-based scheduling of blocks of code for concurrent execution |
| US7603664B2 (en) * | 2002-10-22 | 2009-10-13 | Sun Microsystems, Inc. | System and method for marking software code |
| US20040117787A1 (en) * | 2002-12-12 | 2004-06-17 | Sowa Kurt E. | Reorganized storing of applications to improve execution |
| JP2004252508A (ja) * | 2003-02-18 | 2004-09-09 | Nec Corp | 単一プロセッサ用ソフトウェアプログラムをマルチプロセッサ用ソフトウェアプログラムに変換する方法 |
| EP1636699A2 (en) | 2003-06-25 | 2006-03-22 | AB Initio Software Corporation | Computer-aided parallelizing of computation graphs |
| US7171544B2 (en) * | 2003-12-15 | 2007-01-30 | International Business Machines Corporation | Run-time parallelization of loops in computer programs by access patterns |
| JP4405365B2 (ja) * | 2004-10-27 | 2010-01-27 | パナソニック株式会社 | プログラム変換装置及び方法 |
| US8196109B2 (en) * | 2005-09-09 | 2012-06-05 | International Business Machines Corporation | Common debug adaptor in a multiple computer programming language environment |
| KR100806274B1 (ko) * | 2005-12-06 | 2008-02-22 | 한국전자통신연구원 | 멀티 쓰레디드 프로세서 기반의 병렬 시스템을 위한 적응형실행 방법 |
| US7661090B2 (en) * | 2006-01-11 | 2010-02-09 | Dell Products L.P. | Task generation runtime engine |
| JP4784827B2 (ja) * | 2006-06-06 | 2011-10-05 | 学校法人早稲田大学 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
| US8024714B2 (en) * | 2006-11-17 | 2011-09-20 | Microsoft Corporation | Parallelizing sequential frameworks using transactions |
| US8954484B2 (en) | 2009-06-12 | 2015-02-10 | Cray Inc. | Inclusive or bit matrix to compare multiple corresponding subfields |
| US8555037B2 (en) | 2008-08-15 | 2013-10-08 | Apple Inc. | Processing vectors using wrapping minima and maxima instructions in the macroscalar architecture |
| US8583904B2 (en) | 2008-08-15 | 2013-11-12 | Apple Inc. | Processing vectors using wrapping negation instructions in the macroscalar architecture |
| US9335980B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using wrapping propagate instructions in the macroscalar architecture |
| US9335997B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture |
| US9342304B2 (en) | 2008-08-15 | 2016-05-17 | Apple Inc. | Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture |
| US8539205B2 (en) | 2008-08-15 | 2013-09-17 | Apple Inc. | Processing vectors using wrapping multiply and divide instructions in the macroscalar architecture |
| US8560815B2 (en) | 2008-08-15 | 2013-10-15 | Apple Inc. | Processing vectors using wrapping boolean instructions in the macroscalar architecture |
| US8549265B2 (en) | 2008-08-15 | 2013-10-01 | Apple Inc. | Processing vectors using wrapping shift instructions in the macroscalar architecture |
| US8527742B2 (en) | 2008-08-15 | 2013-09-03 | Apple Inc. | Processing vectors using wrapping add and subtract instructions in the macroscalar architecture |
| US8799629B2 (en) * | 2008-12-04 | 2014-08-05 | Microsoft Corporation | Parallel execution of a loop |
| US8433883B2 (en) | 2009-06-11 | 2013-04-30 | Cray Inc. | Inclusive “OR” bit matrix compare resolution of vector update conflict masks |
| US8583898B2 (en) * | 2009-06-12 | 2013-11-12 | Cray Inc. | System and method for managing processor-in-memory (PIM) operations |
| US8826252B2 (en) * | 2009-06-12 | 2014-09-02 | Cray Inc. | Using vector atomic memory operation to handle data of different lengths |
| US8458685B2 (en) * | 2009-06-12 | 2013-06-04 | Cray Inc. | Vector atomic memory operation vector update system and method |
| US9665620B2 (en) * | 2010-01-15 | 2017-05-30 | Ab Initio Technology Llc | Managing data queries |
| US8726238B2 (en) * | 2010-02-22 | 2014-05-13 | International Business Machines Corporation | Interactive iterative program parallelization based on dynamic feedback |
| US9116955B2 (en) | 2011-05-02 | 2015-08-25 | Ab Initio Technology Llc | Managing data queries |
| US9389860B2 (en) | 2012-04-02 | 2016-07-12 | Apple Inc. | Prediction optimizations for Macroscalar vector partitioning loops |
| US9817663B2 (en) | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
| US9348589B2 (en) | 2013-03-19 | 2016-05-24 | Apple Inc. | Enhanced predicate registers having predicates corresponding to element widths |
| US9891901B2 (en) | 2013-12-06 | 2018-02-13 | Ab Initio Technology Llc | Source code translation |
| US10437819B2 (en) | 2014-11-14 | 2019-10-08 | Ab Initio Technology Llc | Processing queries containing a union-type operation |
| US10417281B2 (en) | 2015-02-18 | 2019-09-17 | Ab Initio Technology Llc | Querying a data source on a network |
| CN110874212B (zh) * | 2015-06-30 | 2021-08-20 | 华为技术有限公司 | 一种硬件加速方法、编译器以及设备 |
| US10466988B2 (en) | 2017-06-14 | 2019-11-05 | ManyCore Corporation | Systems and methods for automatic computer code parallelization |
| US11093223B2 (en) | 2019-07-18 | 2021-08-17 | Ab Initio Technology Llc | Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods |
-
1987
- 1987-10-21 JP JP62263788A patent/JPH01108638A/ja active Pending
-
1988
- 1988-10-18 US US07/259,243 patent/US5151991A/en not_active Expired - Lifetime
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH03139758A (ja) * | 1989-10-26 | 1991-06-13 | Agency Of Ind Science & Technol | マルチプロセッサ割り付け方法 |
| JPH03148729A (ja) * | 1989-11-06 | 1991-06-25 | Agency Of Ind Science & Technol | 並列実行プログラム翻訳処理方式 |
| JPH04155530A (ja) * | 1990-10-19 | 1992-05-28 | Fujitsu Ltd | コンパイル処理方式 |
| JP4867009B2 (ja) * | 2004-12-09 | 2012-02-01 | 国立大学法人 奈良先端科学技術大学院大学 | 量子コンピュータを含むコンピュータシステムのためのプログラム開発支援装置、プログラム開発支援用プログラム、及びシミュレーション装置 |
| CN105308565A (zh) * | 2013-05-31 | 2016-02-03 | 微软技术许可有限责任公司 | 深度并行的源代码编译 |
| CN105308565B (zh) * | 2013-05-31 | 2019-04-02 | 微软技术许可有限责任公司 | 深度并行的源代码编译 |
Also Published As
| Publication number | Publication date |
|---|---|
| US5151991A (en) | 1992-09-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6718541B2 (en) | Register economy heuristic for a cycle driven multiple issue instruction scheduler | |
| Rau | Iterative modulo scheduling: An algorithm for software pipelining loops | |
| US5151991A (en) | Parallelization compile method and system | |
| US6044221A (en) | Optimizing code based on resource sensitive hoisting and sinking | |
| JP3480973B2 (ja) | 並列処理システムの動作解析装置 | |
| JP2921190B2 (ja) | 並列実行方式 | |
| US8578389B1 (en) | Method and system for merging directed acyclic graphs representing data flow codes | |
| JPH06208462A (ja) | パイプラインプロセッサ用のコストを基にしてヒューリスティックに命令をスケージューリングする方法および装置 | |
| US7089403B2 (en) | System and method for using hardware performance monitors to evaluate and modify the behavior of an application during execution of the application | |
| Zhou et al. | An automated tool for analysis and tuning of gpu-accelerated code in hpc applications | |
| Lorenz et al. | Energy aware compilation for DSPs with SIMD instructions | |
| Tsai et al. | Compiler Techniques for the Superthreaded Architectures1, 2 | |
| Beckmann et al. | Microarchitecture support for dynamic scheduling of acyclic task graphs | |
| Krzikalla et al. | Scout: a source-to-source transformator for SIMD-optimizations | |
| Chen et al. | MetaFork: a compilation framework for concurrency models targeting hardware accelerators and its application to the generation of parametric CUDA kernels. | |
| US20020133813A1 (en) | Hardware supported software pipelined loop prologue optimization | |
| Beck et al. | Static scheduling for dynamic dataflow machines | |
| Beheshti Roui et al. | Efficient scheduling of streams on GPGPUs: M. Beheshti Roui et al. | |
| EP0481615A2 (en) | Global instruction scheduler for a computer | |
| Bajrovic et al. | Automatic performance tuning of pipeline patterns for heterogeneous parallel architectures | |
| Boyd et al. | Hierarchical performance modeling with MACS: A case study of the Convex C-240 | |
| Matsunaga et al. | Shelving a code block for thread-level speculation | |
| Abeysinghe et al. | Automated loop fusion for image processing | |
| Smith | Parallel Computing in C/C++ | |
| Taghiyev et al. | Parallel matrix multiplication for various implementations |