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
Application number
JP62263788A
Other languages
English (en)
Inventor
Kyoko Iwazawa
岩澤 京子
Giichi Tanaka
義一 田中
Shizuo Goto
志津雄 後藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP62263788A priority Critical patent/JPH01108638A/ja
Priority to US07/259,243 priority patent/US5151991A/en
Publication of JPH01108638A publication Critical patent/JPH01108638A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • G06F8/452Loops

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台のベクトルプロセッサ
を並列に動作させるマルチタスキングの動作と、そのた
めのユーザの指示方法について述べられている。
これによれば、タスクの起動や同期の制御のためのライ
ブラリがシステムに用意されており、ユーザは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の各値で、■。
■の文を並列に実行させる可能性を検出する。
Do  10  I=1.N 10  C0NTINUE というように、プログラムを分け、各々異るプロセッサ
で並列に実行させた時の逐次処理した場合に対する性能
向上度、即ち加速率に影響を与える項目を算出し、ルー
プごとのテーブルに結果を格納する。まず、同一アドレ
スのメモリ上のデータの値を決める定義とその値を用い
る使用が、異る繰り返しの回数の間で起るか否かにより
多重度を算出する。次に、ソースプログラムの字面上の
演算子の種類と個数および推定したループの繰り返し回
数などより数えあげ、それに基づき並列処理単位当りの
演算量(粒度という)の大きさとばらつきを算出する。
さらに、ループの各繰り返しを並列に実行する時に必要
な同期制御のための演算量の全演算量に対する割合を算
出する。
また、各文ごとに並列に実行する可能性を検出する。前
記と同じソースプログラムを例にとると、■の文と■の
文を内側のループで分割して並列に実行させる可能性を
検出する。
Do   10   I=1.N 10   C0NTINUE となり、この例ではループ内に2つの文があるので、プ
ログラムを2つに分け、これらを各々異るプロセッサで
、並列に実行する時の逐次実行した場合に対する性能向
上率、即ち加速率に影響を与える項目を算出し、ループ
ごとのテーブルに結果を格納する。まず、ループ分割不
可能な再帰演を検出し、文の数より多重度を算出する。
次に、並列処理の単位である文、内側ループ、再帰演算
部ごとに、演算量(粒度)を、ソースプログラムの字面
上の演算子の個数と、推定したループの繰り返し回数な
どにより数えあげ、各粒の大きさと粒度のばらつきを算
出する。さらに、各文の間のデータ依存関係より、同期
制御を行うための演算量の全演算量に対する割合を算出
する。
さらに、1つのループ単独ではなく、多重ループの組み
合わせによって生じる新たな並列実行の可能性を検出す
る。まず、多重なループを組み合わせることが可能か否
かの判定のために、密多重ループに変換できるか否かを
判定する。密多重ループに変換できる場合のみ、次の3
種のループ構造変換を施した場合の並列処理の可能性を
調べる。
ループ変換は、対象とするループに並列処理の可能性が
ある場合、その外側ループと交換して粒度を上げるため
に行う。従って、この条件を満足している時のみループ
交換可否を判定し、可能であれば交換した場合の、多重
度、演算量のばらつき、同期制御の割合などを算出し、
テーブルに格納する。前述と同じソースプログラムの例
では、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ループを並列に実行さ
せる可能性を検出する。
というようにプログラムを分け、各々異るプロセッサで
実行させる可能性を検出する。
ななめ変換は、1つのループレベル単独では、データの
依存関係などに制限されて十分な多重度を引き出せない
場合に、wave front 1ive(plane
)に沿って並列に実行させ、十分な多重度を引き出すた
めに行う。従って、この条件を満足した時に、ななめ変
換可否判定し、ななめに変換した場合の多重度、演算量
のばらつき、同期制御の割合などを算出し、テーブルに
格納する。前述のソースプログラムの例では、並列処理
を妨げるデータ依存関係はないため、この変換は行わな
い。
最後に、これらの処理により算出された、多重度、演算
量のばらつき、同期制御の割合などから、並列に実行し
た場合、結果が得られるまでの経過時間が最も短くなる
と判断した、並列化の手段を選ぶ。後に続くコンパイラ
の処理は、これに従って、逐次実行型のプログラムを並
列実行型のプログラムに変換する。
〔実施例〕
以下、複数のプロセッサが並列に動作するマルチプロセ
ッサシステムのためのFORTRANコンバイうにおけ
る1本発明の一実施例を図表を参照しつつ説明する。
第2図は適用するマルチプロセッサの例を示す。
ここでは、主記憶装置を共有する形態のマルチプロセッ
サ・システムを例にとり実施例を説明するが、本発明は
、各プロセッサがそれぞれ記憶装置を持つ形態のマルチ
プロセッサ・システムにも適用可能である。複数の並列
に動作するCPU82〜84があり、これらは主記憶装
置80を共有する。従って、各CPUが同一アドレスを
アクセスする場合には、同期制御により順序を保証する
必要がある。このようなハードウェアの資源を有効に用
いて、計算結果を得るまでの経過時間が短くなるような
オブジェクトコードを生成する本発明の詳細な実施例を
述べる。
第3図に、本発明を適用するコンパイラ全体の構成を示
す。第3図内の構文解析処理13がFORTRANのソ
ースプログラム11を入力とし、これを中間語6に変換
する。中間処理14はこの中間語6を入力として、最適
化や並列化を行い、中間詰6を変形する。コード生成処
理15は、中間処理14が変形した中間語から並列に実
行されるオブジェクトコード12を生成する。本発明は
、中間処理6に係り、オブジェクトコード12を並列に
実行させた時の経過時間を短くするものである。
第3図の中間処理14のうち、自動並列化に係わる処理
の構成を第1図に示す。第3図の入力するソースプログ
ラム11の例として、第4図にFORTRANプログラ
ムをあげ、説明する。第4図のFORTRANプログラ
ムから、中間処理14はり。
10、Do  20の2つのループテーブル第1図の7
を作り、これらが多重ループを構成することを示す。こ
のループごとのテーブルの構造を第5図に示す。
この第5図のループテーブルに従って、最外側ループか
ら内側へ向かって各フィールドを埋めながら、並列処理
の手段を決定する。自動並列化処理1の主制御を第6図
にPAD図で示す。中間処理14はループテーブルを確
保した後、最外側で先頭のループのテーブルを指して、
自動並列化処理1を呼び出し、これは、与えられた当該
ループに対して、第6図のように処理する。
まず、第4図で最外側で先頭のループD010116〜
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。
J)へフロー依存がある。第7図の処理70により、こ
の中で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に格納する。
次に、第6図の処理62は、多重度1であるため十分な
多重度はないと判断して処理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へ処理はもどる。
第4図のDo  IOHのプールには外側ループは無い
ため、処理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図
に示す。
第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がななめ変換の可能性とその時の
多重度、演算粒度、同期制御を算出しテーブルに格納し
、データ依存関係は独立でもループ長が短く多重度や、
演算粒度が小さい場合は。
処理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′
に格納する。
このようにして、第4図のFORTRANプログラムに
対して、並列性の検出・評価・選択を終了した時点では
、第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)
シ側れ

Claims (1)

    【特許請求の範囲】
  1. 1、高級言語で記述されたソースプログラムを複数のプ
    ロセッサが並列に動作するマルチプロセッサの上で並列
    に実行される命令列からなるオブジェクトコードを生成
    するコンパイラにおいて、逐次実行型のプログラム内の
    繰り返し計算を行う各々のループについて、まず(1)
    ループの各繰り返しを単位とした並列実行の可能性を検
    出し、次に(2)ループ内の各文の並列実行の可能性を
    検出し、また(3)多重ループの外側ループと内側ルー
    プの交換、一重化、傾め変換の可否を判定し、可能なも
    のがあれば変換した後の並列実行の可能性を検出し、(
    1)、(2)、(3)で検出した実行可能な並列処理を
    施した場合について、適用するハードウェア装置の特性
    により、オブジェクトコードを並列に実行させた時の、
    計算結果が得られるまでの経過時間を推定し、コンパイ
    ル時に最適と判断した並列処理を選択することにより並
    列実行型のプログラムに変換することを特徴とする並列
    化コンパイル方式。
JP62263788A 1987-10-21 1987-10-21 並列化コンパイル方式 Pending JPH01108638A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
CA2109799A1 (en) * 1991-05-24 1992-12-10 Daniel Mark Nosenchuck Optimizing compiler for computers
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
WO1998043193A2 (en) 1997-03-21 1998-10-01 University Of Maryland 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
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
US7346902B2 (en) * 2002-10-22 2008-03-18 Sun Microsystems, Inc. System and method for block-based concurrentization of software code
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 単一プロセッサ用ソフトウェアプログラムをマルチプロセッサ用ソフトウェアプログラムに変換する方法
US8059125B2 (en) * 2003-06-25 2011-11-15 Ab Initio Technology Llc 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 パナソニック株式会社 プログラム変換装置及び方法
WO2007028227A1 (en) * 2005-09-09 2007-03-15 Ibm Canada Limited - Ibm Canada Limitee Integrating different programming language debug tools for observing thread execution
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
US8583904B2 (en) 2008-08-15 2013-11-12 Apple Inc. Processing vectors using wrapping negation 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
US9335997B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using a wrapping rotate previous instruction 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
US8555037B2 (en) 2008-08-15 2013-10-08 Apple Inc. Processing vectors using wrapping minima and maxima 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
US9335980B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using wrapping propagate instructions 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
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
US8458685B2 (en) * 2009-06-12 2013-06-04 Cray Inc. Vector atomic memory operation vector update system and method
US8826252B2 (en) * 2009-06-12 2014-09-02 Cray Inc. Using vector atomic memory operation to handle data of different lengths
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
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
CA3092699C (en) 2013-12-06 2023-07-25 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

Cited By (6)

* Cited by examiner, † Cited by third party
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
JPH01108638A (ja) 並列化コンパイル方式
US6718541B2 (en) Register economy heuristic for a cycle driven multiple issue instruction scheduler
Rau Iterative modulo scheduling: An algorithm for software pipelining loops
JP3480973B2 (ja) 並列処理システムの動作解析装置
JPH06208462A (ja) パイプラインプロセッサ用のコストを基にしてヒューリスティックに命令をスケージューリングする方法および装置
US8578389B1 (en) Method and system for merging directed acyclic graphs representing data flow codes
US7089403B2 (en) System and method for using hardware performance monitors to evaluate and modify the behavior of an application during execution of the application
Lorenz et al. Energy aware compilation for DSPs with SIMD instructions
Tsai et al. Compiler Techniques for the Superthreaded Architectures1, 2
Zhou et al. An automated tool for analysis and tuning of gpu-accelerated code in hpc applications
US20020133813A1 (en) Hardware supported software pipelined loop prologue optimization
Beck et al. Static scheduling for dynamic dataflow machines
Chen et al. MetaFork: a compilation framework for concurrency models targeting hardware accelerators and its application to the generation of parametric CUDA kernels.
EP0481615A2 (en) Global instruction scheduler for a computer
Kazi et al. Coarse-grained thread pipelining: A speculative parallel execution model for shared-memory multiprocessors
US20040025153A1 (en) System and method for software pipelining loops with multiple control flow paths
Boyd et al. Hierarchical performance modeling with MACS: A case study of the Convex C-240
Beheshti Roui et al. Efficient scheduling of streams on GPGPUs
Bajrovic et al. Automatic performance tuning of pipeline patterns for heterogeneous parallel architectures
Newburn et al. Balancing Fine-and Medium-Grained Parallelism in Scheduling Loops for the XIMD Architecture.
Unger et al. Static speculation, dynamic resolution
Taghiyev et al. Parallel matrix multiplication for various implementations
Smith Parallel Computing in C/C++
Azeem Modeling and Approaching the Deliverable Performance Capability of the KSR1 Processor
Prokesh et al. A Strategy for Generating Time-Predictable Code