JP3239963B2 - マルチ・プロセッサ計算機システム - Google Patents
マルチ・プロセッサ計算機システムInfo
- Publication number
- JP3239963B2 JP3239963B2 JP28151792A JP28151792A JP3239963B2 JP 3239963 B2 JP3239963 B2 JP 3239963B2 JP 28151792 A JP28151792 A JP 28151792A JP 28151792 A JP28151792 A JP 28151792A JP 3239963 B2 JP3239963 B2 JP 3239963B2
- Authority
- JP
- Japan
- Prior art keywords
- processor
- program
- data
- memory
- source 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.)
- Expired - Fee Related
Links
Landscapes
- Multi Processors (AREA)
- Devices For Executing Special Programs (AREA)
Description
成される計算機システムにおいて、データを分割して割
り当て、複数のプロセッサにより並列実行するためマル
チ・プロセッサ計算機システムに関し、特に、本発明は
各プロセッサがそれぞれ固有のメモリを持つ分散メモリ
方式のマルチ・プロセッサ計算機システムに関するもの
である。
ムとして、従来から図6(a),(b)に示すシステム
が知られている。同図(a),(b)において、11
a,11b…はプロセッサ、12,12a,12b…は
メモリ、13はネットワークを示す。同図(a)は、共
有メモリ方式のマルチ・プロセッサ・システムを示し、
各プロセッサ11a,11bはメモリ12を共有してお
り、メモリ12は各プロセッサ11a,11bの命令か
ら直接アクセス可能である。
ロセッサ・システムを示し、各プロセッサ11a,11
b…が固有のメモリ12a,12b…を有し、各プロセ
ッサ間の通信はネットワーク13を介して行われる。と
ころで、上記したマルチ・プロセッサ・システムにおい
て、複数のプロセッサによりプログラムを並列実行する
場合、従来、次の2つの方法が用いられていた。 並
列実行可能部分にその旨の指示を行った1つのソース・
プログラムを変換して並列実行する方法。
ログラムP1をプロセッサ11a,11b、メモリ12
より構成されるメモリ共有方式のマルチ・プロセッサ・
システムにおいて実行する場合を示した図である。同図
におけるソース・プログラムP1は、ファイルより配列
Aにデータを読込み2台のプロセッサによりDOループ
を並列実行する例を示したものであり、「READ A」によ
りファイルよりデータを配列Aに読み込み、「PARALLEL
DO I=1,1000…」「=A(I) 」により並列実行を行う。
方式のマルチ・プロセッサ・システムにおいて、同図
(a)に示すように実行される。プロセッサ11aによ
り、メモリ12に配列の領域を確保したのち、「READ
A」を実行して、メモリ12に確保された領域にファイ
ルよりデータを読み込む。ついで、プロセッサ11a,
11bにより並列実行が開始される。すなわち、DOル
ープの1〜1000のループを2つに分割し、プロセッ
サ11aにより1〜500のDOループを、また、プロ
セッサ11bにより501〜1000のDOループを並
列に実行し、参照データは、それぞれのプロセッサ11
a,11bによりメモリ12から読み込まれる。
を、メモリ12aを持つプロセッサ11a,メモリ12
bを持つプロセッサ11bより構成される分散メモリ方
式のマルチ・プロセッサ・システムにより実行する場合
を示す図である。同図(b)において、プロセッサ11
aにより、メモリ12aに配列の領域を確保したのち、
「READ A」を実行して、メモリ12aに確保された領域
にファイルよりデータを読み込む。
プを2つに分割し、同図(a)に示したように、プロセ
ッサ11a,プロセッサ11bにより1〜500のDO
ループ、501〜1000のDOループを並列に実行す
る。また、この場合には、配列データがメモリ12aに
格納されているため、プロセッサ11bがDOループの
命令を実行するごとに、データがプロセッサ11a,1
1b間で転送される。このため転送のオーバ・ヘッドが
生じて、実行時間が増大する。 プロセッサごとにソ
ース・プログラムを記述し、それぞれを実行形式プログ
ラムに変換して並列実行する方法。
サ11a、メモリ12bを持つプロセッサ11bから構
成される分散メモリ方式のマルチ・プロセッサ・システ
ムにより、それぞれのプロセッサ用に記述された図8
(b)に示すソース・プログラムP2a、ソース・プロ
グラムP2bを実行する場合を示す図である。ソース・
プログラムP2a,p2bは、ファイルよりそれぞれ配
列AおよびBにデータを読込み、ソース・プログラムP
1と同様に、2台のプロセッサによりDOループを並列
実行する例を示したものである。
1a用に記述されたプログラムであり、ソース・プログ
ラムP2bはプロセッサ11b用に記述されたプログラ
ムである。上記ソース・プログラムP2a,P2bは分
散メモリ方式のマルチ・プロセッサ・システムにおい
て、同図(a)に示すように実行される。
れのメモリ12a,12bに配列の領域を確保したの
ち、プロセッサ11aにおいては「READ A」を実行し
て、配列データを500要素分を読み込んで配列Aに格
納し、その後、”前半完了”という事象を通知する。プ
ロセッサ11bにおいては、”前半完了”という事象が
起きることを待ち続け、それが満足したのちに「READ
B」を実行して配列データを500要素分読み込み配列
Bへ格納する。
00までのデータが格納されるとプロセッサ11aによ
り、また、メモリ12bに501〜1000のデータが
格納されるとプロセッサ11bにより並列にDOループ
を実行し、参照データは、それぞれのプロセッサ11
a,11bによりメモリ12a,12bから読み込まれ
る。
の方法は、図6(a)に示したような、均一の共有メモ
リ方式(各プロセッサからのメモリに対するアクセス速
度にあまり差がない共有メモリ方式)のマルチ・プロセ
ッサ・システムに適用するには適しているが、図6
(b)に示した分散メモリにおいては、データの参照時
に他のプロセッサとのデータ転送が生じるため、実行時
間が増大するという欠点があった。
ごとにソース・プログラムを記述しなければならないた
め、例えば、READ文のような並列実行できない部分
のために、POST,WAIT文による同期制御等の考
慮をプログラム中でするなど、並列実行できない部分の
ための考慮をプログラム中でしなければならず、プログ
ラムの記述がむずかしいという欠点があった。
されたものであって、複数のプロセッサからなる分散方
式のマルチ・プロセッサ・システムにおいて、プロセッ
サを複数台利用するための命令の分割と、データを各プ
ロセッサの固有のメモリに割り当てるためのデータ分割
を、1つの分割指示により共通に行えるようにすること
により、並列実行用プログラムを容易に記述できるよう
にするとともに、データ参照時及び格納時のデータ転送
時間を削減し、並列実行における実行時間を短縮するこ
とができるマルチ・プロセッサ計算機システムを提供す
ることを目的とする。
ある。上記課題を解決するため、本発明は、図1に示す
ように、分散メモリ方式、もしくは、プロセッサとメモ
リ間の距離によってプロセッサからメモリへのアクセス
速度に差がある共有メモリ方式のマルチ・プロセッサ計
算機システムにおいて、マルチ・プロセッサ計算機シス
テム2の複数のプロセッサ2a,2b,2cにより一つ
のソース・プログラム1を分担して並列実行する際、ソ
ース・プログラム中に記述されたプロセッサ数と、命令
及びデータの分割基準となるインデックス区間と、イン
デックスの分割方法を示す情報とに基づき、ソース・プ
ログラム中の一つの一次元配列データおよび命令を、上
記ソース・プログラム中の命令部の各プロセッサへの分
割と、一次元配列データの各プロセッサのメモリへの分
割とが一致するように複数個に分割したオブジェクト・
プログラムを各プロセッサ毎に生成する。 そして、マル
チ・プロセッサ計算機システム2の各プロセッサ2a,
2b,2cに当該オブジェクト・プログラムを割り当
て、上記各プロセッサ2a,2b,2cにより、上記分
割された上記割り当てられたオブジェクト・プログラム
を並列実行するようにしたものである。
システム2の複数のプロセッサ2a,2b,2cにより
一つのソース・プログラム1を分担して並列実行する
際、ソース・プログラム1中に記述されたプロセッサ数
と、命令及びデータの分割基準となるインデックス区間
と、インデックスの分割方法を示す情報とに基づき、ソ
ース・プログラム中の一つの一次元配列データおよび命
令を、上記ソース・プログラム中の命令部の各プロセッ
サへの分割と、一次元配列データの各プロセッサのメモ
リへの分割とが一致するように複数個に分割したオブジ
ェクト・プログラムを各プロセッサ2a,2b,2c毎
に生成し、マルチ・プロセッサ計算機システムの各プロ
セッサ2a,2b,2cに当該オブジェクト・プログラ
ムを割り当て、上記割り当てられたオブジェクト・プロ
グラムを並列実行するようにしたので、並列実行用プロ
グラムを容易に記述することが可能となるとともに、デ
ータ参照時のデータ転送時間を削減し、並列実行におけ
る実行時間を短縮することが可能となる。また、プログ
ラム1中の命令部の各プロセッサ2a,2b,2cへの
分割と配列データの各プロセッサ2a,2b,2cのメ
モリへの分割とを一致させるようにしたので、配列デー
タの数と命令における繰り返し回数が異なっていても、
各プロセッサにおいて、問題なく並列実行を行うことが
でき、データ参照時のデータ転送時間を削減し、並列実
行における実行時間を短縮することが可能となる。
一例と、そのプログラムを図6(b)に示した分散メモ
リ方式のマルチ・プロセッサ・システムにより実行する
場合の動作を示す図である。同図において、11a,1
1bはプロセッサ、12a,12bは、それぞれプロセ
ッサ11a,11bに固有のメモリである。また、P3
は同図のシステムにより実行されるソース・プログラム
の一例であり、前記したソース・プログラムP1と同様
に、ファイルより配列Aにデータを読込み2台のプロセ
ッサによりDOループを並列実行する例を示したもので
ある。なお、ソース・プログラムP3は後述するコンパ
イラによりコンパイルされプロセッサ11a,11bに
より実行される実行形式のプログラムに変換される。
プロセッサ11a,11bにおける実行は、前記した図
8の場合と同様であり、プロセッサ11aにおいて「RE
AD A」によりファイルより配列Aにデータを読み込み、
プロセッサ11bにデータを転送して、並列実行を行
う。ソース・プログラムP3において、「PARTITION P=
(2,1:1000,BAND) 」は、命令部とデータ部を分割し複数
のプロセッサに割り当てるための分割情報であり、上記
記述において、括弧内の「2 」は命令又はデータを何台
のプロセッサへ割り当てるかを示すプロセッサ数、「1:
1000」は命令又はデータの分割基準となるインデックス
区間、「BAND」はインデックスの分割方法を示す。
・プログラムP1で示したものと同様、並列実行開始を
記述したものである。ここで、上記インデックス区間、
インデックスの分割方法について、説明する。 インデックス区間 インデックス区間は上記したように命令又はデータの分
割基準となるものであり、図2に示したソース・プログ
ラムP3においては、配列宣言が「REAL A(1000)」、ま
た、DOループにおける繰り返し回数が「I=1,1000」で
あり、これらはインデックス区間「1:1000」と一致して
いる。このため、配列宣言の上下限値、あるいは、DO
ループにおける繰り返し回数により命令、データを分割
しても、問題は生じない。
における繰り返し回数が一致しない場合、配列宣言の上
下限値、あるいは、DOループにおける繰り返し回数い
ずれか一方により命令、データを分割すると、他方によ
る分割値と一致しないという問題が生ずる。例えば、下
記の例において、 配列宣言においては、A(400)であるが、DOルー
プにおける繰り返し回数はI=3,398であり、配列
宣言の両端が「2」ずつ計算対象外となっている。上記
例において、配列Aを4分割すると、配列AはA(1:
100) A(101:200) A(201:30
0) A(301:400)に分割される。また、DO
ループのI=3,398により、繰り返し回数を4分割
すると、I=3,101 I=102,200 I=2
01,299 I=300,398に分割され、101
と300の所で両者は一致しない。
として分割すると、DOループにおける繰り返し回数
は、I=3,100 I=101,200 I=20
1,300 I=301,398に分割され、データの
分割と一致する。以上のように、命令や配列を、その繰
り返しの始値、終値あるいは配列宣言の添字の上下限値
ではなく、分割情報のインデックス区間を基準として分
割することにより、上記した例のように、境界値が計算
対象外であるとき等、縮小区間においても、命令と配列
の分割を一致させることができる。 インデックスの
分割方法図3はインデックスの分割方法を示す図であ
り、同図において、縦軸はプロセッサ番号を示し、横軸
はインデックス値を示している。同図に示すように、イ
ンデックスは「均等分割」、「循環分割」、「三角分
割」等の種々の方法で分割することができる。
は、DOループが下記のような2重ループになっている
場合など、後ろの方ほど処理量が多い場合に採用するこ
とにより、処理量を均一化することができる。 図4は、並列実行を行うためのソース・プログラムをコ
ンパイルするためのコンパイラの構成の一例を示す図で
あり、同図において、21は並列実行するためのソース
・プログラム、22はソース・プログラムをコンパイル
するためのコンパイラ、23はソース・プログラムを解
析するソース・プログラム解析部、24はソース・プロ
グラムより自動的に並列化可能部分を見つけ出す最適化
部、25は解析されたソース・プログラムより実行形式
の並列オブジェクト・プログラムを生成するコード生成
部、26はソース・プログラム解析部において構文解析
を行うための構文、27は作成された並列オブジェクト
・プログラムである。
応じて設けられるものであって、図2の例に示したよう
に、ソース・プログラム中に並列化部分が記述されてい
る場合には必要ない。同図において、ソース・プログラ
ム21がコンパイラ22に与えられると、ソース・プロ
グラム21は、まず、ソース・プログラム解析部23に
おいてソース・プログラムの解析が行われる。
文解析を行う際には、通常のソース・プログラムを解析
する場合に用いられる構文26の文法に加え、並列実行
用ソース・プログラムを解釈するための並列用構文26
aの文法を参照して、構文解析が行われる。図5はFo
rtranのソース・プログラムに並列実行用の分割記
述を採用した構文の一例を示す図であり、同図に示した
構文は、図2のソース・プログラムP3をBNF(Ba
ckus−Naur Form)により記述した一例を
示している(BNFについては、例えば、A.V.ホセ外2
名著「コンパイラI−原理・技法・ツール」株式会社サ
イエンス社1990/10/10初版発行などコンパイラ関係の文
献を参照されたい)。
必要に応じて最適化部24に与えられる。なお、最適化
部24は、前記したように、ソース・プログラム中に並
列化部分が記述されている場合には必要ない。最適化部
24においては、与えられたソース・プログラム中で並
列化可能な部分を選択する。ソース・プログラム中で並
列化可能な部分としては、DOループのように繰り返し
演算が行われる部分が選択されるが、その選択にあたっ
ては、例えば、多重DOループの場合にはDOループの
交換を行い出来るだけ外側のループを分割することによ
り並列処理制御の回数を少なくしてオーバ・ヘッドを削
減するなど、その実行性能を考慮する。
析部において、解析が行われたプログラム、あるいは、
最適化部24において、並列化対象ループが選択された
プログラムはコード生成部25に与えられる。コード生
成部25においては、上記プログラムより最終的なオブ
ジェクト・プログラムが生成される。
プログラムを生成するに際して、命令については、繰り
返し演算の始値、終値と分割情報のインデックス値とが
比較され、実行するプロセッサが決定されるとともに、
データについては、配列宣言の添字の下限、上限と分割
情報のインデックス値とが比較され、データを割りつけ
るプロセッサが決定される。
tement」に対しては、「array-name」の宣言における上
下限値を、分割情報のインデックス範囲と照らし合わせ
て複数の配列に分割し、それぞれのプロセッサ用の実行
形式プログラムに組み込む。また、「parallel-do-stat
ement 」に対しては、「start-value 」および「end-va
lue 」を分割情報のインデックス範囲に照らし合わせ
て、それぞれのプロセッサごとの新しい「start-value
」、「end-value 」による繰り返しを実行形式のプロ
グラムに組み込む。
は並列実行用の並列オブジェクト・プログラム27を生
成して出力し、並列オブジェクト・プログラム27aな
いし27cが各プロセッサにロードされ実行される。実
際には、各プロセッサ用の並列オブジェクト・プログラ
ム27aないし27cは一連のプログラムとして出力さ
れて各プロセッサにロードされ、各プロセッサにおける
実行時、各プロセッサが自プロセッサに対応したプログ
ラム部分を選んで実行する。
リ方式を持つマルチ・プロセッサ・システムに本発明を
適用した例を示したが、本発明は上記実施例に限定され
るものではなく、例えば、共有メモリ方式をもつマルチ
・プロセッサ・システムであっても、メモリと各プロセ
ッサとの間の距離によりメモリへのアクセス速度に差が
あり、各プロセッサの命令実行部が参照するデータを得
るためのデータ転送時間が演算時間より大きく、データ
転送時間の削減がプログラム全体の実行速度の向上に寄
与するシステムに適用することにより、分散メモリ方式
の場合と同様な効果を得ることが可能である。
ログラムをコンパイラによりコンパイルして実行する例
を示したが、本発明は上記実施例に限定されるものでは
なく、例えば、ソース・プログラムを計算機上でそのま
ま実行するインタプリータ方式、あるいは、一つのソー
ス・プログラムから複数個の新ソース・プログラムを生
成するプリプロセッサ方式にも適用することができる。
本発明においては、ソース・プログラム中の一つの配列
データを複数個の配列に分割し複数のプロセッサのメモ
リへ割り当て、上記プログラム中の命令部と配列データ
の分割・割り当てを一致させるようにしたので、並列実
行用プログラムを容易に記述することができるととも
に、データ参照時のデータ転送時間を削減し、並列実行
における実行時間を短縮することが可能となる。
である。
す図である。
ある。
成を示す図である。
Claims (1)
- 【請求項1】 分散メモリ方式、もしくは、プロセッサ
とメモリ間の距離によってプロセッサからメモリへのア
クセス速度に差がある共有メモリ方式のマルチ・プロセ
ッサ計算機システムであって、ソース・プログラム中に記述された プロセッサ数と、命
令及びデータの分割基準となるインデックス区間と、イ
ンデックスの分割方法を示す情報とに基づき、ソース・
プログラム中の一つの一次元配列データおよび命令を、
上記ソース・プログラム中の命令部の各プロセッサへの
分割と、一次元配列データの各プロセッサのメモリへの
分割とが一致するように複数個に分割したオブジェクト
・プログラムを各プロセッサ毎に生成し、マルチ・プロ
セッサ計算機システムの各プロセッサに当該オブジェク
ト・プログラムを割り当て、 上記各プロセッサは、上記割り当てられたオブジェクト
・プログラムを並列実行することを特徴とするマルチ・
プロセッサ計算システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28151792A JP3239963B2 (ja) | 1992-10-20 | 1992-10-20 | マルチ・プロセッサ計算機システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28151792A JP3239963B2 (ja) | 1992-10-20 | 1992-10-20 | マルチ・プロセッサ計算機システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06131313A JPH06131313A (ja) | 1994-05-13 |
JP3239963B2 true JP3239963B2 (ja) | 2001-12-17 |
Family
ID=17640288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP28151792A Expired - Fee Related JP3239963B2 (ja) | 1992-10-20 | 1992-10-20 | マルチ・プロセッサ計算機システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3239963B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8453132B2 (en) * | 2006-07-28 | 2013-05-28 | Hewlett-Packard Development Company, L.P. | System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems |
-
1992
- 1992-10-20 JP JP28151792A patent/JP3239963B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH06131313A (ja) | 1994-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2738692B2 (ja) | 並列化コンパイル方法 | |
Printz | Automatic mapping of large signal processing systems to a parallel machine | |
JP2000231545A (ja) | 並列プログラム生成方法 | |
JPH06266683A (ja) | 並列処理装置 | |
JP2669603B2 (ja) | コンパイラにおけるコード生成方法及びコンパイラ | |
JPH04268927A (ja) | メモリ管理方法 | |
US8578389B1 (en) | Method and system for merging directed acyclic graphs representing data flow codes | |
US20100115527A1 (en) | Method and system for parallelization of pipelined computations | |
US20160357703A1 (en) | Parallel computing apparatus, compiling apparatus, and parallel processing method | |
JP2002091777A (ja) | コンパイラ及びそのレジスタ割付方法 | |
Theobald et al. | Overview of the Threaded-C language | |
Bastem et al. | Overlapping data transfers with computation on GPU with tiles | |
Polychronopoulos | Toward auto-scheduling compilers | |
KR102062208B1 (ko) | 멀티스레드 프로그램 코드의 변환 장치 및 방법 | |
Emrath | Xylem: an operating system for the Cedar multiprocessor | |
US20030097395A1 (en) | Executing irregular parallel control structures | |
Cole et al. | Efficient resource oblivious algorithms for multicores with false sharing | |
US20050080981A1 (en) | Structure and method for managing workshares in a parallel region | |
JP3239963B2 (ja) | マルチ・プロセッサ計算機システム | |
Su et al. | Efficient DOACROSS execution on distributed shared-memory multiprocessors | |
WO2023221626A1 (zh) | 一种内存分配的方法和装置 | |
Cheramangalath et al. | DH-Falcon: A language for large-scale graph processing on Distributed Heterogeneous systems | |
US5369774A (en) | Method and apparatus for handling array type data in a data driven type information processor | |
Eisenbeis et al. | Compiler techniques for optimizing memory and register usage on the Cray 2 | |
Fumero et al. | Using compiler snippets to exploit parallelism on heterogeneous hardware: a Java reduction case study |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20001226 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071012 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081012 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081012 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091012 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091012 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101012 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |