JPH07311746A - コンパイル処理装置 - Google Patents

コンパイル処理装置

Info

Publication number
JPH07311746A
JPH07311746A JP6102610A JP10261094A JPH07311746A JP H07311746 A JPH07311746 A JP H07311746A JP 6102610 A JP6102610 A JP 6102610A JP 10261094 A JP10261094 A JP 10261094A JP H07311746 A JPH07311746 A JP H07311746A
Authority
JP
Japan
Prior art keywords
array data
dimension
processing device
data
loop
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.)
Granted
Application number
JP6102610A
Other languages
English (en)
Other versions
JP3540837B2 (ja
Inventor
Tatsuya Shindo
達也 進藤
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP10261094A priority Critical patent/JP3540837B2/ja
Publication of JPH07311746A publication Critical patent/JPH07311746A/ja
Application granted granted Critical
Publication of JP3540837B2 publication Critical patent/JP3540837B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】本発明は、ソースプログラムに記述される配列
データを複数の物理プロセッサに分散配置するコンパイ
ル処理装置に関し、通信のオーバーヘッドを招くことな
く高い並列性を実現する配列データの分散配置を提供す
るコンパイル処理装置の実現を目的とする。 【構成】分散配置対象の配列データを、指定される次元
を分散対象の次元としつつ、規定のアルゴリズムに従っ
て複数の仮想プロセッサに割り付ける割付手段11と、
割付手段11の割り付けた分割配列データを、ツイスト
する形態でもって各物理プロセッサに割り付ける配置手
段12とを備えるように構成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ソースプログラムに記
述される配列データを複数の物理プロセッサに分散配置
するコンパイル処理装置に関し、特に、通信のオーバー
ヘッドを招くことなく高い並列性を実現する配列データ
の分散配置を提供するコンパイル処理装置に関する。
【0002】高速計算機を実現する方式として、複数の
プロセッシングエレメント(PE)を集めてネットワー
クで一体化した構成を採る並列計算機が普及しつつあ
る。この並列計算機を使用するにあたっては、処理対象
となるデータをどのようにPEに割り付けるかというデ
ータレイアウトが重要な問題である。なぜならば、この
データレイアウトは、プログラムから抽出できる並列
性、通信オーバーヘッド、負荷分散に大きな影響を与え
るからである。
【0003】
【従来の技術】並列計算機の処理の並列を引き出し、か
つPE間の通信のオーバーヘッドを小さくするために
は、別々のPEで並列に処理すべきデータは異なるPE
に割り付けることが好ましく、また、同一の処理に必要
となる複数データは同じPEに割り付けることが好まし
い。
【0004】これから、従来の並列計算機のデータレイ
アウト法では、プログラムで用いる配列データのある次
元を、そのまま順番にn次元格子に想定したPEのある
次元に割り付けていくという方式を用いている。この場
合、PE格子のある次元に割り付けられる配列データは
PE間で分散され、そうでない配列データは同一PE内
に割り付けられることになる。
【0005】例えば、図15に示すプログラムで説明す
るならば、外側のループ(DO 100)にのみ並列性
がある場合には、図16(a)に示すような形態に従っ
て、2次元配列Aの1次元目のみを1次元PEアレイに
分散的に割り付け、一方、内側のループ(DO 20
0)にのみ並列性がある場合には、図16(b)に示す
ような形態に従って、2次元配列Aの2次元目のみを1
次元PEアレイに分散的に割り付けていくのである。
【0006】ここで、配列データのある次元をPE格子
のある次元に割り付けるにあたっては、ブロック割付方
式によるデータ分散方法と、サイクリック割付方式によ
るデータ分散方法という2つがある。
【0007】すなわち、前者のブロック割付方式による
データ分散方法は、図17に示すように、分散する次元
方向のサイズを割付対象のプロセッサ台数で割り算し、
等分になるようにと連続した領域に割り付けていく方法
である。このデータ分散方法は、連続した複数のデータ
を用いる処理を行うにあたって、通信量を小さくできる
という利点がある。ここで、図17では、8×8サイズ
の2次元配列の2次元目を分散次元としつつ、ブロック
割付方式に従って分散配置する例を示してある。
【0008】一方、後者のサイクリック割付方式による
データ分散方法は、図18に示すように、分散する次元
方向のデータを1つ(あるいはサイクリックの幅分)ず
つ順番にプロセッサに割り付けていって、プロセッサ台
数分割り付けたら再び始めから順番に割り付けて、その
次元方向のサイズ分がすべて割り付けられるまでこれを
行う方法である。このデータ分散方法は、担当するデー
タの位置により処理の量が違う場合に、負荷分散を良く
できるという利点がある。ここで、図18では、8×8
サイズの2次元配列の2次元目を分散次元としつつ、サ
イクリック割付方式に従って分散配置する例を示してあ
る。
【0009】なお、これらの従来手法については下記の
文献に紹介されている。 〔1〕High Performance Fortran Forum. High Perform
ance Fortran LanguageSpecification Ver. 1.0. 1933. 〔2〕S.Hiranandani,K.Kennedy,and C.Tseng. "Compil
er optimizations for Fortran D on MIMD Distributed
-Memory Machines" in Proc. Supercomputig'91pp.86-1
00, Nov. 1991. 〔3〕R.Ruhl and M.Annaratone. "Parallelization of
FORTRAN Code on Distributed-memory Parallel Proce
ssors" in Proc. International Conference onSUPERCO
MPUTING, pp342-353, June. 1990. 〔4〕H.Zima,H.Bast, and M.Gerndt. "SUPERB: A tool
for semi-automatic MIMD/SIMD parallelization" in
Parallel Computing, 6:1-18, 1988. 〔5〕A.Rogers and K.Pingali. "Process Decompositi
on Through Locality ofReference" in Proc. ACM SIG-
PLAN '89 Conf. Programming Language Desighand Impl
ementation, pp.69-80, June. 1989. 〔6〕C.Koelbel and P.Mehrotra. "Compiling global
Name-Space Parallel Loops for Distributed Executio
n" in IEEE Transactions on Parallel and Distribute
d Systems, pp.440-451, Oct. 1991. 〔7〕進藤達也,岩下英俊,土肥実久,萩原純一. "AP
1000を対象としたVPP Fortran 処理系の実現と評価” S
WoPP鞆の浦'93HPC研究会, Vol.93-HPC-48-2, pp.9-16,
Aug. 1993.
【0010】
【発明が解決しようとする課題】プログラムのある部分
にとって、最適な配列データのデータレイアウトであっ
ても、そのプログラムの別の部分では、最適なものとな
らないことが起こる。
【0011】例えば、図19に示すプログラムについて
考えてみる。ここで、このプログラム中のDOALLル
ープとは、並列実行可能なDOループを意味する。この
プログラムの最初のループネスト(100)内側のルー
プの並列性を活かすためには、2次元配列Aの2次元目
を分散させるデータレイアウトが最適である。すなわ
ち、図16(b)に示すようなデータレイアウトが最適
である。これに対して、2番目のループネスト(20
0)外側のループの並列性を活かすためには、この2次
元配列Aの1次元目を分散させるデータレイアウトが最
適である。すなわち、図16(a)に示すようなデータ
レイアウトが最適である。
【0012】このような配列データの最適データレイア
ウトのコンフクリトが起こる場合に、従来手法で対処す
るには次の2つのやり方が考えられる。すなわち、その
1つとしては、一方のプログラム部分に最適なデータレ
イアウトを決定し、そのデータレイアウトに従ってデー
タ分散を行ってプログラム全体を実行するという方法で
ある。
【0013】もう1つとしては、一方のプログラム部分
に最適なデータレイアウトを決定し、そのデータレイア
ウトに従ってデータ分散を行って処理を実行し、もう一
方のプログラム部分の処理に入る前に、そのプログラム
部分に最適なデータレイアウトを決定し、そのデータレ
イアウトに従ってデータ分散を変更して処理を実行する
という方法である。
【0014】しかしながら、前者の方法に従うと、一方
のプログラム部分では、性能が出るものの、もう一方の
プログラム部分では、並列性が活かせないことや通信の
オーバーヘッドが大きくなることから、性能が出ないと
いう問題点がある。また、後者の方法に従うと、実行時
のデータレイアウトの変更に伴う通信のオーバーヘッド
により性能が低下するという問題点がある。
【0015】本発明はかかる事情に鑑みてなされたもの
であって、ソースプログラムに記述される配列データを
複数の物理プロセッサに分散配置するときにあって、通
信のオーバーヘッドを招くことなく高い並列性を実現す
る配列データの分散配置を提供する新たなコンパイル処
理装置の実現を目的とする。
【0016】
【課題を解決するための手段】図1に本発明の原理構成
を図示する。図中、1は本発明を具備するコンパイル処
理装置であって、ソースプログラムに記述される配列デ
ータを複数の物理プロセッサに分散配置しつつ、ソース
プログラムをコンパイルすることでオブジェクトを生成
するもの、2はコンパイル処理装置1に接続されるソー
スファイルであって、コンパイル対象となるソースプロ
グラムを格納するもの、3はコンパイル処理装置1に接
続されるオブジェクトファイルであって、コンパイル結
果のオブジェクトを格納するものである。
【0017】このコンパイル処理装置1は、本発明を実
現するために、検出手段10/割付手段11/配置手段
12/分割手段13を備えるコンパイラ4を展開する。
この検出手段10は、本発明の分散処理の対象となる配
列データ及びその次元を検出する。割付手段11は、検
出手段10の検出した配列データを、検出手段10の検
出した次元を分散対象の次元(分散次元)としつつ、規
定のアルゴリズムに従って複数の仮想プロセッサに割り
付ける。配置手段12は、割付手段11の割り付けた配
列データを、ツイストする形態でもって各物理プロセッ
サに割り付ける。分割手段13は、並列実行の対象とな
るループを、配置手段12の配置した配列データに合わ
せて分割して各物理プロセッサに割り付ける。
【0018】
【作用】本発明では、検出手段10が、本発明の分散処
理の対象となる配列データ及びその次元を検出すると、
割付手段11は、物理プロセッサの台数がn台のときに
あって、例えば、分散対象の配列データが2次元である
ときには(n×n)台、3次元であるときには(n×n
×n)台というような複数の仮想プロセッサを想定し
て、検出手段10の検出した配列データを、検出手段1
0の検出した次元を分散次元としつつ、規定のアルゴリ
ズムに従ってこれらの仮想プロセッサに割り付ける処理
を行う。例えば、ブロック単位やサイクリックのアルゴ
リズムに従って割り付けるのである。
【0019】割付手段11の処理に従って分散対象の配
列データが仮想プロセッサに割り付けられると、続い
て、配置手段12は、この仮想プロセッサ上の配列デー
タをツイストする形態でもって各物理プロセッサに割り
付ける処理を行う。
【0020】このツイスト分散処理は、仮想プロセッサ
の集合をV、物理プロセッサの集合をP、仮想プロセッ
サの次元数をm、分散対象の配列データのk次元目のサ
イズをlk 、物理プロセッサの台数をn、すなわち、
【0021】
【数1】
【0022】のように表すならば、
【0023】
【数2】
【0024】の変換式に従って実行される。例えば、4
×4(l1=4,l2=4 )の2次元配列Aと、4台の物理プ
ロセッサ(p=0,1,2,3)と、次元数2(m=2)の4×4
台の仮想プロセッサとを想定して、図2の上段に示すよ
うに、これらの仮想プロセッサv1,v2(v1=0,1,2,3/v
2=0,1,2,3)の各々に、2次元配列データAの配列要素A
(i,j) が割り付けられたとすると、例えば、「v1=2,v
2=3 」に割り付けられた配列要素A(2,3) は、この〔数
2〕式に従い、 (2+3)mod4=1 が指す「p=1」の物理プロセッサに割り付けられるこ
とになる。
【0025】この変換処理に従って、図2の上段のよう
に仮想プロセッサに割り付けられた2次元配列データA
は、図2の下段に示すように、本来の2次元配列データ
Aをツイストした形態で物理プロセッサに割り付けられ
ることになる。従って、2次元配列データAの1次元目
と2次元目の双方が物理プロセッサに分散されることと
なって、例えば、配列要素A(0,0),A(1,0),A(2,0),A
(3,0) がそれぞれ別の物理プロセッサに割り付けられる
とともに、配列要素A(0,0),A(0,1),A(0,2),A(0,3)
がそれぞれ別の物理プロセッサに割り付けられることに
なるので、最適なデータ分散のコンフクリトを防止でき
るようになる。
【0026】配置手段12の処理に従って配列データが
ツイストする形態でもって各物理プロセッサに割り付け
られると、続いて、分割手段13は、並列実行の対象と
なるループを、配置手段12の配置した配列データに合
わせて分割して各物理プロセッサに割り付ける。
【0027】このようにして、本発明によれば、ソース
プログラムに記述される配列データを複数の物理プロセ
ッサに分散配置するときにあって、通信のオーバーヘッ
ドを招くことなく高い並列性を実現する配列データの分
散配置を提供できるようになる。
【0028】
【実施例】以下、実施例に従って本発明を詳細に説明す
る。図3に、本発明を実装する計算機システムのシステ
ム構成を図示する。
【0029】この図に示すように、本発明を実現する計
算機システムは、全体の制御処理や入出力処理を実行す
るホスト計算機20と、並列処理を実行する複数のプロ
セッサ21と、ホスト計算機20とプロセッサ21との
間を接続するネットワーク22とから構成される。な
お、以下では、プロセッサ21のことを物理プロセッサ
21と称することがある。
【0030】このホスト計算機20は、本発明により構
成されるコンパイラ23を備えて、このコンパイラ23
を使って実行対象のプログラムをコンパイルして、ネッ
トワーク22を介して各プロセッサ21にロードし、こ
のロード処理を受けて、各プロセッサ21は、ネットワ
ーク22を介して他プロセッサ21と通信しつつ、ロー
ドされたプログラムを並列実行していくよう処理するこ
とになる。
【0031】図4に、このコンパイラ23の実行する処
理フローの一実施例を図示する。この図に示すように、
本発明により構成されるコンパイラ23は、先ず最初
に、ステップ1で、分散対象となる配列データ及びその
次元を決定するローカルデータレイアウト決定処理を実
行し、続いて、ステップ2で、ツイスト分散対象となる
配列データ及びその次元を決定するツイストデータレイ
アウト決定処理を実行し、続いて、ステップ3で、ツイ
スト分散対象の配列データを各物理プロセッサ21にど
のようにアロケーションするのかを決定するデータ領域
計算処理を実行し、続いて、ステップ4で、ツイスト分
散対象の配列データを分散して各物理プロセッサ21に
割り付けるアドレス変換処理を実行し、続いて、ステッ
プ5で、並列実行対象のループを分割して各物理プロセ
ッサ21に割り付けるループ分割処理を実行する。
【0032】次に、これらの各処理について詳細に説明
する。図4の処理フローのステップ1で実行するローカ
ルデータレイアウト決定処理では、分散対象となる配列
データ及びその次元を決定する。
【0033】この決定処理は、プログラマに対して、ル
ープネスト毎にそこでアクセス対象となっている配列デ
ータの分散方法を指定させる構成を採る場合には、その
指定値を検出することで実行する。
【0034】例えば、プログラマに対して、「!DISTRI
BUTE 配列名 次元名」を記述させることで配列データ
の分散方法を指定させる構成を採る場合には、このディ
レクティブを検出することで、それぞれのループにおけ
る分散対象の配列データ及びその次元を決定するのであ
る。図5のプログラム例で説明するならば、「!DISTRI
BUTE A 2」を検出することで、ループネスト100
において配列データAの2次元目を分散する必要がある
ということを決定するとともに、「!DISTRIBUTE A
1」を検出することで、ループネスト200において配
列データAの1次元目を分散する必要があるということ
を決定することになる。
【0035】また、この決定処理は、プログラマに対し
て配列データの分散方法を指定させる構成を採らない場
合には、並列実行可能なループの添え字を評価すること
で実行する。
【0036】その方法の1つとして、並列実行可能なル
ープの添え字が、ループボディ内に記述される配列デー
タの特定の次元のみに表れるか否かをチェックして、表
れる場合には、その配列データをその次元を分散次元に
して分散するということを決定するのである。この決定
方法に従って、図5のプログラムで「!DISTRIBUTE」が
記述されていなくても、ループネスト100において配
列データAの2次元目を分散する必要があるということ
と、ループネスト200において配列データAの1次元
目を分散する必要があるということを決定できることに
なる。
【0037】また、別の方法として、並列実行可能なル
ープの添え字が、ループボディ内に記述される配列デー
タの複数の次元に表れる場合に、最も出現頻度の高い次
元を検出して、その配列データをその次元を分散次元に
して分散するということを決定するのである。
【0038】一方、図4の処理フローのステップ2で実
行するツイストデータレイアウト決定処理では、ツイス
ト分散対象となる配列データ及びその次元を決定する。
この決定処理は、プログラマに対して、配列データのツ
イスト法を指定させる構成を採る場合には、その指定値
を検出することで実行する。
【0039】例えば、プログラマに対して、「!TWIST
配列名,次元名,・・,次元名」を記述させることで
配列データのツイスト法を指定させる構成を採る場合に
は、このディレクティブを検出することで、ツイスト対
象の配列データ及びその次元を決定するのである。例え
ば、「!TWIST A,1,2」を検出するときには、配
列データAの1次元目と2次元目とを処理対象にしてツ
イストするということを決定することになる。
【0040】また、この決定処理は、プログラマに対し
て配列データのツイスト法を指定させる構成を採らない
場合には、ローカルデータレイアウト決定処理で決定し
た配列データ/次元を評価することで実行する。
【0041】具体的には、ローカルデータレイアウト決
定処理で決定した配列データ/次元を配列データ毎に集
め、各配列データについて、異なるループネストで異な
る次元の分散要求があるか否かをチェックして、ある場
合には、その配列データとそれらの次元とをツイスト対
象として決定するのである。例えば、ローカルデータレ
イアウト決定処理に従って、図5のプログラム中のルー
プネスト100において配列データAの2次元目を分散
する要求があるということと、ループネスト200にお
いて配列データAの1次元目を分散する要求があるとい
うことが決定されると、この決定を受けて、配列データ
Aの1次元目と2次元目とをツイスト対象として決定す
ることになる。
【0042】また、この決定処理は、プログラマに対し
て配列データのツイスト法を指定させる構成を採らない
とともに、ローカルデータレイアウト決定処理で決定し
た配列データ/次元を用いない場合には、1つのループ
ネストに着目して、並列実行可能なループの添え字が、
同一ループボディ内の異なるステートメントで同一配列
データの異なる次元に表れる否かをチェックして、表れ
る場合には、その配列データとそれらの次元とをツイス
ト対象として決定する。図6のプログラム例で説明する
ならば、「statement 1」では並列実行可能なループの
添え字Jが配列データAの2次元目に表れ、「statemen
t 2」ではこの添え字Jが配列データAの1次元目に表
れるので、配列データAの1次元目と2次元目とをツイ
スト対象として決定するのである。
【0043】一方、図4の処理フローのステップ3で実
行するデータ領域計算処理では、ツイストデータレイア
ウト決定処理で決定されたツイスト分散対象の配列デー
タを、各物理プロセッサ21にどのようにアロケーショ
ンするのかを決定する。
【0044】この決定処理は、物理プロセッサ21の台
数をn、ツイスト分散対象の配列データAの次元数を
N、この配列データAの次元iのサイズをDi で表すな
らば、各次元のサイズがnのm次元仮想プロセッサを想
定することで実行されるものであって、先ず最初に、各
仮想プロセッサに、
【0045】
【数3】
【0046】により算出されるサイズMi を持つ配列デ
ータA'(M1,・・・ ,N )を割り付け、続いて、m次
元の仮想プロセッサから1次元の物理プロセッサ21に
対して、
【0047】
【数4】
【0048】で規定される個数分の下記の配列データ A''(M1,・・・ ,N ,n,・・・・,n) 但し、nは(m−1)個 をアロケートすることで実行する。
【0049】この決定処理は、要するに、ツイスト分散
対象の配列データAを仮想プロセッサに等分配する形態
で割り付けてから、「n×(m−1)」台の仮想プロセ
ッサの持つ配列データAを1台の物理プロセッサ21に
割り付けていくことを意味している。
【0050】例えば、図7の上段に示すような8×8サ
イズの2次元配列データAがツイスト分散対象であると
すると、物理プロセッサ21が4台である場合、図7の
中段に示すように、各次元のサイズが4の2次元仮想プ
ロセッサ(16台)を想定して、〔数3〕式に従って
「Mi =2」を求めることで、各仮想プロセッサに、2
×2サイズの分割した2次元配列データAを割り付ける
ことを決定し、〔数4〕式に従って、「4×(2−1)
=4」を求めることで、図7の下段に示すように、4台
の仮想プロセッサの持つ配列データAを1台の物理プロ
セッサ21に割り付けることを決定するのである。
【0051】一方、図4の処理フローのステップ4で実
行するアドレス変換処理では、データ領域計算処理での
アロケーション結果を踏まえて、ツイストデータレイア
ウト決定処理で決定されたツイスト分散対象の配列デー
タ(処理対象の次元についても決定されている)を分散
して、各物理プロセッサ21に割り付けるアドレス変換
処理を実行する。
【0052】このアドレス変換処理は、先ず最初に、配
列データAの配列インデックスを使って、割り付け先と
なる仮想プロセッサの番号と、その仮想プロセッサ内で
のローカル位置番号とを求め、次に、仮想プロセッサの
番号を使って、割り付け先となる物理プロセッサ21の
番号と、その物理プロセッサ21内でのローカル位置番
号とを求めていくことで実行する。
【0053】すなわち、配列データAの配列インデック
スを(I1,・・・,IN )、仮想プロセッサの番号を
(V1,・・・,Vm )、仮想プロセッサ内でのローカル
位置番号を(I1 ' ・・・,IN ' )、物理プロセッサ
21の番号をp、物理プロセッサ21内でのローカル位
置番号を(J1,・・・,Jm-1 )で表すならば、
【0054】
【数5】
【0055】のように、第1段階の変換処理fX に従っ
て、配列データAの配列インデックスから、割り付け先
となる仮想プロセッサ番号と、仮想プロセッサ内ローカ
ル位置番号とを求め、次に、第2段階の変換処理fY
従って、仮想プロセッサ番号から、割り付け先となる物
理プロセッサ番号と、その物理プロセッサ内ローカル位
置番号とを求めていくのである。なお、物理プロセッサ
内ローカル位置で、更に、その位置内のどこに割り付け
るのかを指定する必要があるが、この位置(以下、ロー
カル内部位置と称することがある)については、〔数
5〕式に記述するように、仮想プロセッサ内ローカル位
置番号をそのまま用いている。
【0056】この第1段階の変換処理fX では、上述し
たブロック割付方式によるデータ分散方法を用いる場合
には、ツイストデータレイアウト決定処理で決定された
次元をi次元で表すならば、データ領域計算処理で求め
たサイズMi を用いて、
【0057】
【数6】
【0058】に従って、配列データAの配列インデック
ス(I1,・・・,IN )から、仮想プロセッサ番号(V
1,・・・,Vm )と、仮想プロセッサ内ローカル位置番
号(I 1 ' ・・・,IN ' )とを求め、一方、上述した
サイクリック割付方式によるデータ分散方法を用いる場
合には、
【0059】
【数7】
【0060】に従って、配列データAの配列インデック
ス(I1,・・・,IN )から、仮想プロセッサ番号(V
1,・・・,Vm )と、仮想プロセッサ内ローカル位置番
号(I 1 ' ・・・,IN ' )とを求めていくことにな
る。
【0061】例えば、図8の上段に示す8×8サイズの
2次元配列データAが、1次元目及び2次元目を処理対
象として指定されブロック分割されて、図7に示した1
6台の仮想プロセッサに割り付けられる場合には、この
2次元配列データAの各配列要素は、図8の下段に示す
ように仮想プロセッサに割り付けられることになるが、
第1段階の変換処理fX では、上述の〔数6〕式に従っ
てこれを実行するものである。なお、図8の下段に示す
仮想プロセッサの番号は、図2に示したものと同じもの
である。
【0062】配列データA(3,4)を例にして説明す
るならば、図7の所で説明したように、この例の場合に
は「M1 =M2 =2」であることから、〔数6〕式に、
「I 1 =3,I2 =4,M1 =2,M2 =2」を代入す
ることで、「V1 =1,V2=2」の仮想プロセッサ番
号が求められるとともに、「I1 ' =1,I2 ' =0」
の仮想プロセッサ内ローカル位置番号(仮想プロセッサ
番号と同様にマトリクス位置で定義される)が求められ
ることで、図8のブロック分割処理が実行されるのであ
る。
【0063】また、例えば、図9の上段に示すような8
×8サイズの2次元配列データAが、1次元目及び2次
元目を処理対象として指定されサイクリック分割され
て、図7に示した16台の仮想プロセッサに割り付けら
れる場合には、この2次元配列データAの各配列要素
は、図9の下段に示すように仮想プロセッサに割り付け
られることになるが、第1段階の変換処理fX では、上
述の〔数7〕式に従ってこれを実行するものである。な
お、図9の下段に示す仮想プロセッサの番号は、図2に
示したものと同じものである。
【0064】配列データA(3,4)を例にして説明す
るならば、〔数7〕式に、「I1 =3,I2 =4,n=
4」を代入することで、「V1 =3,V2 =0」の仮想
プロセッサ番号が求められるとともに、「I1 ' =0,
2 ' =1」の仮想プロセッサ内ローカル位置番号が求
められることで、図9のサイクリック分割処理が実行さ
れるのである。
【0065】一方、この第2段階の変換処理fy では、
【0066】
【数8】
【0067】に従って、仮想プロセッサ番号(V1,・・
・,Vm )から、物理プロセッサ21の番号pと、その
物理プロセッサ21内でのローカル位置番号(J1,・・
・,J m-1 )とを求めていくことになる。
【0068】例えば、図10の上段に示す割付形態で仮
想プロセッサに割り付けられた2次元配列データAの各
配列要素(図8の下段に示すものと同じ割付形態であ
る)は、この第2段階の変換処理fy で、図10の下段
に示すように物理プロセッサ21に割り付けられること
になる。
【0069】仮想プロセッサ番号「V1 =1,V2
2」、仮想プロセッサ内ローカル位置番号「I1 '
1,I2 ' =0」に割り付けられた配列データA(3,
4)を例にして説明するならば、〔数8〕式に、「V1
=1,V2 =2,n=4」を代入することで、「p=
3」の物理プロセッサ番号が求められるとともに、「J
1 =1」の物理プロセッサ内ローカル位置(順番位置で
定義される)が求められ、そして、上述したように、物
理プロセッサ内ローカル位置でのローカル内部位置につ
いては、仮想プロセッサ内ローカル位置番号がそのまま
用いられるので、「I 1 ' =1,I2 ' =0」のローカ
ル内部位置が求められるのである。
【0070】また、例えば、図11の上段に示す割付形
態で仮想プロセッサに割り付けられた2次元配列データ
の各配列要素(図9の下段に示すものと同じ割付形態で
ある)は、この第2段階の変換処理fy で、図11の下
段に示すように物理プロセッサ21に割り付けられるこ
とになる。
【0071】仮想プロセッサ番号「V1 =3,V2
0」、仮想プロセッサ内ローカル位置番号「I1 '
0,I2 ' =1」に割り付けられた配列データA(3,
4)を例にして説明するならば、〔数8〕式に、「V1
=3,V2 =0,n=4」を代入することで、「p=
3」の物理プロセッサ番号が求められるとともに、「J
1 =3」の物理プロセッサ内ローカル位置が求められ、
そして、上述したように、物理プロセッサ内ローカル位
置でのローカル内部位置については、仮想プロセッサ内
ローカル位置番号がそのまま用いられるので、「I1 '
=0,I2 ' =1」のローカル内部位置が求められるの
である。
【0072】この第2段階の変換処理fy で用いる〔数
8〕式の第1番目の式は、〔作用〕の欄で説明した〔数
1〕式と同一のものである。すなわち、図4の処理フロ
ーのステップ4で実行するアドレス変換処理は、要する
に、第1段階の変換処理fx で、ツイストデータレイア
ウト決定処理で決定された配列データを、ツイストデー
タレイアウト決定処理で決定された次元を分割次元とし
て、ブロック割付方式やサイクリック割付方式に従って
仮想プロセッサに割り付け、次に、第2段階の変換処理
y で、仮想プロセッサに割り付けた配列データを、図
2に示すようにツイストする形態で物理プロセッサ21
に割り付けていくものである。
【0073】この処理に従って、最適なデータ分散のコ
ンフクリトの防止を実現できるのである。一方、図4の
処理フローのステップ5で実行するループ分割処理で
は、アドレス変換処理での配列データの分散結果を踏ま
えて、並列実行対象のループを分割して各物理プロセッ
サ21に割り付けるループ分割処理を実行する。
【0074】例えば、図12に示すようなm重ループが
与えられ、この内のil が並列ループで、各ループがそ
れぞれ仮想プロセッサの各次元に割り付けられるとする
と、各物理プロセッサ21におけるループが、図13に
示すような(m×2−1)重ループとなるようにとコー
ドジェネレーションを行うのである。ここで、il 以外
の全てのループは、仮想プロセッサのインデックスを表
すループと、その仮想プロセッサ内の配列インデックス
を表すループにストリップマインされることになる。
【0075】このループ分割処理で用いる図13中のL
(Vk )/U(Vk )/Vl について説明する。このル
ープ分割処理で用いるL(Vk )は、仮想プロセッサ内
の配列インデックスの下限値、U(Vk )は、仮想プロ
セッサ内の配列インデックスの上限値を表しており、ア
ドレス変換処理でブロック割付方式を用いる場合には、
【0076】
【数9】
【0077】の式で導出され、サイクリック割付方式を
用いる場合には、
【0078】
【数10】
【0079】の式で導出される。ここで、Vk は仮想プ
ロセッサ番号、Mk は仮想プロセッサに割り付けられる
配列データのブロックサイズ、Nk は配列データのk次
元目のサイズから1を引いた値、Sは飛び幅を表してい
る。
【0080】ブロック割付方式により図10の上段に示
す割付形態でもって仮想プロセッサに割り付けられた8
×8サイズの2次元配列データで説明するならば、例え
ば、仮想プロセッサ番号「V1 =1,V2 =0」の仮想
プロセッサには、〔数9〕式に、「V1 =1,V2
0,M1 =2,M2 =2,N1 =7,N2 =7」を代入
することで、 L(V1 )=2,U(V1 )=3,L(V2 )=0,U
(V2 )=1 という上下限値を持つ配列インデックスが展開されてい
ることが分かる。なお、このときの配列インデックスの
飛び幅は1である。
【0081】また、サイクリック割付方式により図11
の上段に示す割付形態でもって仮想プロセッサに割り付
けられた8×8サイズの2次元配列データで説明するな
らば、例えば、仮想プロセッサ番号「V1 =1,V2
0」の仮想プロセッサには、〔数10〕式に、「V1
1,V2 =0,N1 =7,N2 =7」を代入すること
で、 L(V1 )=1,U(V1 )=5,L(V2 )=0,U
(V2 )=4 という上下限値を持つ配列インデックスが展開されてい
ることが分かる。なお、このときの配列インデックスの
飛び幅は4である。
【0082】一方、このループ分割処理で用いるV
l は、物理プロセッサ21の担当する仮想プロセッサの
インデックスを表しており、
【0083】
【数11】
【0084】の式で導出される。ここで、pは物理プロ
セッサ番号、nは物理プロセッサ台数、Vk は仮想プロ
セッサ番号である。
【0085】上述したように、ループ分割処理では、並
列実行対象のループを分割して図13に示すようなコー
ドを生成する処理を実行する。例えば、図19に示す2
重ループのプログラムが、図8の上段に示す8×8サイ
ズの2次元配列データを処理するときにあって、アドレ
ス変換処理で、ブロック割付方式を用いる場合には、こ
のループ分割処理では、図14に示すようなコードを生
成するのである。
【0086】この場合、L(Vk )は、 L(Vk )=2×Vk と表され、U(Vk )は、 U(Vk )=2×(Vk +1)−1 と表され、〔数11〕式は、 V1 =(p+(4−V2 ))mod4 V2 =(p+(4−V1 ))mod4 と表される。
【0087】従って、「p=0」の物理プロセッサ21
が担当する仮想プロセッサは、この〔数11〕式に、
「p=0,V1 =0」を代入することで特定される「V
1 =0,V2 =0」の仮想プロセッサと、「p=0,V
1 =1」を代入することで特定される「V1 =1,V2
=3」の仮想プロセッサと、「p=0,V1 =2」を代
入することで特定される「V1 =2,V2 =2」の仮想
プロセッサと、「p=0,V1 =3」を代入することで
特定される「V1 =3,V2 =1」の仮想プロセッサと
であることが分かる。すなわち、〔数11〕式に従っ
て、物理プロセッサ21の担当する仮想プロセッサを特
定できるのである。
【0088】このようにして、このループ分割処理で
は、仮想プロセッサ内の配列インデックスの下限値L
(Vk )と、仮想プロセッサ内の配列インデックスの上
限値U(Vk )と、物理プロセッサ21の担当する仮想
プロセッサのインデックスを特定する〔数11〕式とを
使いつつ、要するに、アドレス変換処理での配列データ
の分散結果を踏まえて、並列実行対象のループを分割し
て各物理プロセッサ21に割り付けていく処理を実行す
るのである。
【0089】図示実施例に従って本発明を詳細に説明し
たが、本発明はこれに限定されるものではない。例え
ば、実施例で使用した数値はあくまで一例に過ぎないも
のである。
【0090】
【発明の効果】以上説明したように、本発明によれば、
ソースプログラムに記述される配列データを複数の物理
プロセッサに分散配置するときにあって、最適なデータ
分散方法がコンフリクトするときには、配列データをツ
イストして物理プロセッサに分散配置することで、この
コンフリクトを解消するようにとコンパイル処理するも
のである。
【0091】これから、通信のオーバーヘッドを招くこ
となく高い並列性を実現する配列データの分散配置を提
供できるようになる。
【図面の簡単な説明】
【図1】本発明の原理構成図である。
【図2】ツイスト分散処理の説明図である。
【図3】本発明を実装する計算機システムのシステム構
成図である。
【図4】本発明のコンパイラが実行する処理フローの一
実施例である。
【図5】分散方法の指定されるプログラムの一例であ
る。
【図6】ツイスト対象となるプログラムの一例である。
【図7】データ領域計算処理の説明図である。
【図8】アドレス変換処理の説明図である。
【図9】アドレス変換処理の説明図である。
【図10】アドレス変換処理の説明図である。
【図11】アドレス変換処理の説明図である。
【図12】ループ分割処理の説明図である。
【図13】ループ分割処理の説明図である。
【図14】ループ分割処理の説明図である。
【図15】プログラムの一例である。
【図16】従来技術の説明図である。
【図17】従来技術の説明図である。
【図18】従来技術の説明図である。
【図19】最適データ分散がコンフリクトを起こすプロ
グラム例である。
【符号の説明】
1 コンパイル処理装置 2 ソースファイル 3 オブジェクトファイル 4 コンパイラ 10 検出手段 11 割付手段 12 配置手段 13 分割手段

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムに記述される配列デー
    タを複数の物理プロセッサに分散配置するコンパイル処
    理装置において、 分散配置の対象となる配列データを分割するとともに、
    この分割配列データをツイストする形態でもって各物理
    プロセッサに割り付ける配置手段を備えることを、 特徴とするコンパイル処理装置。
  2. 【請求項2】 ソースプログラムに記述される配列デー
    タを複数の物理プロセッサに分散配置するコンパイル処
    理装置において、 分散配置の対象となる配列データを、指定される次元を
    分散対象の次元としつつ、規定のアルゴリズムに従って
    複数の仮想プロセッサに割り付ける割付手段(11)と、 上記割付手段(11)の割り付けた分割配列データを、ツイ
    ストする形態でもって各物理プロセッサに割り付ける配
    置手段(12)とを備えることを、 特徴とするコンパイル処理装置。
  3. 【請求項3】 請求項2記載のコンパイル処理装置にお
    いて、 割付手段(11)は、配列データをブロック単位に仮想プロ
    セッサに割り付けるよう処理することを、 特徴とするコンパイル処理装置。
  4. 【請求項4】 請求項2記載のコンパイル処理装置にお
    いて、 割付手段(11)は、配列データをサイリックに仮想プロセ
    ッサに割り付けるよう処理することを、 特徴とするコンパイル処理装置。
  5. 【請求項5】 請求項2ないし4記載のコンパイル処理
    装置において、 並列実行の対象となるループを、配置手段(12)の配置し
    た配列データに合わせて分割して各物理プロセッサに割
    り付ける分割手段(13)を備えることを、 特徴とするコンパイル処理装置。
  6. 【請求項6】 請求項2ないし5記載のコンパイル処理
    装置において、 配列データ名及び次元名を指定する配列データ分散指示
    のソースプログラム記述を検出する検出手段(10)を備
    え、 上記検出手段(10)の検出するプログラム記述が異なるル
    ープネストで同一配列データの異なる次元の分散指示を
    表示するときには、該配列データ及び該次元を指定して
    割付手段(11)を起動していくよう構成されることを、 特徴とするコンパイル処理装置。
  7. 【請求項7】 請求項2ないし5記載のコンパイル処理
    装置において、 ソースプログラムに記述される並列実行可能なループの
    添え字が、ループボディ内に記述される配列データの特
    定の次元のみに表れる場合に、その次元を検出する検出
    手段(10)を備え、 上記検出手段(10)が異なるループネストで同一配列デー
    タの異なる次元を検出するときには、該配列データ及び
    該次元を指定して割付手段(11)を起動していくよう構成
    されることを、 特徴とするコンパイル処理装置。
  8. 【請求項8】 請求項2ないし5記載のコンパイル処理
    装置において、 ソースプログラムに記述される並列実行可能なループの
    添え字が、ループボディ内に記述される配列データの複
    数の次元に表れる場合に、最も出現頻度の高い次元を検
    出する検出手段(10)を備え、 上記検出手段(10)が異なるループネストで同一配列デー
    タの異なる次元を検出するときには、該配列データ及び
    該次元を指定して割付手段(11)を起動していくよう構成
    されることを、 特徴とするコンパイル処理装置。
  9. 【請求項9】 請求項2ないし5記載のコンパイル処理
    装置において、 配列データ名及び次元名を指定する配列データツイスト
    指示のソースプログラム記述を検出する検出手段(10)を
    備え、 上記検出手段(10)の検出するプログラム記述が指定する
    配列データ及び次元を指定して割付手段(11)を起動して
    いくよう構成されることを、 特徴とするコンパイル処理装置。
  10. 【請求項10】 請求項2ないし5記載のコンパイル処
    理装置において、 ソースプログラムに記述される並列実行可能なループの
    添え字が、同一ループボディ内の異なるステートメント
    で同一配列データの異なる次元に表れる場合に、それら
    の次元を検出する検出手段(10)を備え、 上記検出手段(10)の検出する配列データ及び次元を指定
    して割付手段(11)を起動していくよう構成されること
    を、 特徴とするコンパイル処理装置。
JP10261094A 1994-05-17 1994-05-17 コンパイル処理装置 Expired - Fee Related JP3540837B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10261094A JP3540837B2 (ja) 1994-05-17 1994-05-17 コンパイル処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10261094A JP3540837B2 (ja) 1994-05-17 1994-05-17 コンパイル処理装置

Publications (2)

Publication Number Publication Date
JPH07311746A true JPH07311746A (ja) 1995-11-28
JP3540837B2 JP3540837B2 (ja) 2004-07-07

Family

ID=14332016

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10261094A Expired - Fee Related JP3540837B2 (ja) 1994-05-17 1994-05-17 コンパイル処理装置

Country Status (1)

Country Link
JP (1) JP3540837B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011507085A (ja) * 2007-12-14 2011-03-03 コミシリア ア レネルジ アトミック エ オ エナジーズ オルタネティヴズ 制御タイプの実行モードとデータフロータイプの実行モードとの組み合わせによりタスクを並列に実行可能な複数の処理ユニットを有するシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011507085A (ja) * 2007-12-14 2011-03-03 コミシリア ア レネルジ アトミック エ オ エナジーズ オルタネティヴズ 制御タイプの実行モードとデータフロータイプの実行モードとの組み合わせによりタスクを並列に実行可能な複数の処理ユニットを有するシステム

Also Published As

Publication number Publication date
JP3540837B2 (ja) 2004-07-07

Similar Documents

Publication Publication Date Title
US6681388B1 (en) Method and compiler for rearranging array data into sub-arrays of consecutively-addressed elements for distribution processing
Zima et al. SUPERB: A tool for semi-automatic MIMD/SIMD parallelization
CA2166254C (en) Improving memory layout based on connectivity considerations
Lundstrom Controllable Multiple-Instruction, Multiple-Data Stream (MIMD) Architecture
EP3443458A1 (en) A computer-implemented method, a computer-readable medium and a heterogeneous computing system
Ahn et al. A spatial mapping algorithm for heterogeneous coarse-grained reconfigurable architectures
JPH0830561A (ja) プログラムの並列化実行方法及び並列化実行コンパイラ
US5797012A (en) Connectivity based program partitioning
Van Luong et al. GPU-based multi-start local search algorithms
CN108470211B (zh) 一种卷积计算的实现方法、设备和计算机存储介质
US20200356600A1 (en) Method and Apparatus for Compiling Computation Graphs into an Integrated Circuit
Chapman et al. Automatic support for data distribution
CN110825380A (zh) 核函数的生成方法、目标代码的生成方法和组合处理装置
Diekmann et al. Combining helpful sets and parallel simulated annealing for the graph-partitioning problem
US5737623A (en) Multi-processor parallel computer architecture using a parallel machine with topology-based mappings of composite grid applications
Wang et al. Applying AI techniques to program optimization for parallel computers
Quinn et al. On the utility of communication–computation overlap in data-parallel programs
Shirazi et al. PARSA: A parallel program scheduling and assessment environment
Papadimitriou et al. Multiple-tasks on multiple-devices (MTMD): exploiting concurrency in heterogeneous managed runtimes
JPH07311746A (ja) コンパイル処理装置
JP5120778B2 (ja) 分散メモリ型マルチプロセッサシステム、マスク付き逆シフト通信方法及びプログラム
Eigenmann et al. Cedar Fortrand its compiler
Wang et al. A divide-and-conquer algorithm for irregular redistribution in parallelizing compilers
JPH0844577A (ja) データ分割方法及びマルチプロセッサシステム
Brezany et al. Parallelization of irregular out-of-core applications for distributed-memory systems

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040323

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040326

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080402

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090402

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090402

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100402

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110402

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110402

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees