JPH08305580A - 並列プログラムの言語処理装置 - Google Patents

並列プログラムの言語処理装置

Info

Publication number
JPH08305580A
JPH08305580A JP10730695A JP10730695A JPH08305580A JP H08305580 A JPH08305580 A JP H08305580A JP 10730695 A JP10730695 A JP 10730695A JP 10730695 A JP10730695 A JP 10730695A JP H08305580 A JPH08305580 A JP H08305580A
Authority
JP
Japan
Prior art keywords
program
processing
processor
data
parallel
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
JP10730695A
Other languages
English (en)
Inventor
Kenji Suehiro
謙二 末広
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP10730695A priority Critical patent/JPH08305580A/ja
Publication of JPH08305580A publication Critical patent/JPH08305580A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 連鎖的な計算処理過程において同期待ちの回
数が少ない効率良い並列処理が行なえるようプログラム
を変換する並列プログラム言語処理装置を提供する。 【構成】 構文解析装置1により内部表現に変換された
原始プログラムは、プログラム変換装置2によりローカ
ルメモリを備えた複数のプロセッサから成る並列計算機
システムで並列動作するよう変換され、目的コード生成
装置3により目的プログラムに変換され出力される。そ
の際、データ転送コード挿入装置4により各プロセッサ
の割当て部分の処理に必要な被演算数配列を各ローカル
メモリ上に当該処理の開始前に転送するようプログラム
を変換することで処理中途での被演算数の転送をなく
し、計算処理分割割当て装置5により処理の中間結果の
一部を複数のプロセッサで重複して計算させるよう変換
することで処理中途での中間結果の転送をなくす。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、原始プログラムを、ロ
ーカルメモリを備えた複数のプロセッサから成る並列計
算機システムで並列動作するような目的プログラムに変
換する並列プログラム言語処理装置に関するものであ
る。
【0002】
【従来の技術】ローカルメモリを備えた複数のプロセッ
サから成る並列計算機システムでプログラムを実行させ
る際、プログラム中の計算処理にかかる被演算数や結果
を保持する配列を、互いに素な部分配列に分割し、前記
複数のプログラムにそれぞれ割り当てて、各プロセッサ
は自己の分担する部分配列の更新計算処理のみを実行す
るという方式、すなわち所有者計算規則(owner
compute rule)に基づく並列処理が、広く
行なわれている。所有者計算規則に基づくプログラム言
語処理系は、たとえば「Languages,Comp
ilers and Run−Time Enviro
nments for Distributed Me
mory Machines(Salts,Mehro
tra共編,1992)」の139〜176ページ、
「Compiler Supportfor Mach
ine−Independent Parallel
Programming in Fortran D」
に提案されている。
【0003】この方式の並列処理では、あるプロセッサ
が計算処理を行なう上で他のプロセッサに割り当てられ
た部分配列上の被演算数を必要とする場合、当該プロセ
ッサ間で被演算数の転送処理が必要となる。
【0004】
【発明が解決しようとする課題】前記従来方式の並列処
理では、あるプロセッサが計算処理を行なう上で他のプ
ロセッサに割り当てられた部分配列上の被演算数を必要
とする場合、当該プロセッサ間で被演算数の転送処理が
必要となり、転送処理が終了するまでは計算処理を開始
することができないため、これに伴って同期待ちが発生
する。しかしながら、通常のプログラムに見られるよう
な連鎖的な計算処理過程、すなわちある計算処理の結果
が次の計算処理の被演算数となるような計算処理過程に
おいては、過程の各段階ごとに前記データ転送が発生
し、これに伴うプロセッサ間の同期待ちの回数が増大し
て並列処理の効率が損なわれるという問題があった。
【0005】図7は図6に示す従来のプログラム言語処
理装置で後述する図4のプログラムを処理し、ローカル
メモリを備えた複数のプログラムから成る並列計算機シ
ステムで実行させた場合のデータの流れを示している。
図7では配列A,B,C,Dを10等分し、連続する1
00個ずつの要素を10台のプロセッサに割り当てた場
合の2台目のプロセッサ(配列要素番号101〜200
を保持している)の様子を表している。長方形のマス目
はそれぞれ配列要素を表しており、中の数字はその要素
番号である。また矢印はデータの流れであり、各ステッ
プで上側の要素から下側の要素が計算されることを表し
ている。
【0006】図7では、ステップ1でのBおよびCの計
算にはデータ転送は必要ないが、ステップ2においてD
の計算をするために、B,Cのそれぞれ2要素ずつ合計
4要素を他のプロセッサから転送しなければならないこ
とがわかる。これらが転送元のプロセッサ上で計算され
るまで転送処理を始めることができないため、ステップ
1とステップ2の間でプロセッサ間の同期待ちが発生
し、並列処理の効率が損なわれる。
【0007】本発明はこのような点に鑑み、連鎖的な計
算処理過程において同期待ちの回数が少ない効率良い並
列処理が行なえるようプログラムを変換する並列プログ
ラム言語処理装置を提供することを目的とする。
【0008】
【課題を解決するための手段】第1の発明の並列プログ
ラム言語処理装置は、原始プログラム中の連鎖的な処理
単位ごとに、各プロセッサが当該処理を行なうにあたっ
て必要とする配列が各ローカルメモリ上に当該処理単位
の開始前に用意されるようプロセッサ間においてデータ
転送させ、かつ当該配列を扱う計算処理の一部を複数の
プロセッサで重複して実行させるようプログラムを変換
することを特徴としている。
【0009】第2の発明の並列プログラム言語処理装置
は、プロセッサに原始プログラムの配列を分割配置する
にあたり、その一部を複数のプロセッサに重複して配置
し、かつ当該配列を扱う計算処理の一部を複数のプロセ
ッサで重複して実行させるようプログラムを変換するこ
とを特徴としている。
【0010】
【作用】第1の発明においては、原始プログラム中の連
鎖的な処理単位ごとに、各プロセッサが当該処理を行な
うにあたって必要とする配列が各ローカルメモリ上に当
該処理単位の開始前に用意されるようプロセッサ間にお
いてデータ転送させることにより、一連の計算処理の中
途での被演算数のデータ転送の必要性を除去する。ま
た、当該配列を扱う計算処理の一部を複数のプロセッサ
で重複して実行させることにより、連鎖的な計算処理の
過程で生成される中間結果であって各プロセッサの後段
の処理に必要となる部分を、各プロセッサのローカルメ
モリ上のデータのみを用いてそれぞれに計算させ、一連
の計算処理の中途での中間結果のデータ転送の必要性を
除去する。
【0011】第2の発明においては、配列の一部を複数
のプロセッサに重複させて配置することにより、計算処
理に必要な被演算数を当該処理の開始前にすべてローカ
ルメモリ上に用意し、計算処理の中途での被演算数のデ
ータ転送の必要性を除去する。また、当該配列を扱う計
算処理の一部を複数のプロセッサで重複して実行させる
ことにより、連鎖的な計算処理の過程で生成される中間
結果であって各プロセッサの後段の処理に必要となる部
分を、各プロセッサのローカルメモリ上のデータのみを
用いてそれぞれに計算させ、一連の計算処理の中途での
中間結果のデータ転送の必要性を除去する。
【0012】
【実施例】本発明について、図1〜図3を参照して実施
例を説明する。図1は第1の発明の実施例の概略構成を
示す。本実施例は、入力であるFortran原始プロ
グラムを装置の内部表現に変換する構文解析装置1と、
内部表現された原始プログラムをローカルメモリを備え
た複数のプロセッサから成る並列計算機システムで並列
動作する内部表現された並列化プログラムに変換するプ
ログラム変換装置2と、内部表現をそれと等価なFor
tran目的プログラムに変換し出力する目的コード生
成装置3と、内部表現されたプログラムの処理単位ごと
に、各プロセッサが当該処理を行なうにあたって必要と
する配列が各ローカルメモリ上に当該処理単位の開始前
に用意されるようプロセッサ間においてデータ転送させ
るようなデータ転送コードを挿入するデータ転送コード
挿入装置4と、内部表現データで表されたプログラムの
配列を扱う計算処理の一部を複数のプロセッサで重複し
て実行させるように分割・割り当てを行なう計算処理分
割割当て装置5とから構成される。
【0013】本装置への入力であるFortran原始
プログラムは、構文解析装置1へ与えられる。構文解析
装置1は原始プログラムの文法の検出を行ないつつ、原
始プログラムを装置全体で用いる内部表現に変換し、プ
ログラム変換装置2へ渡す。プログラム変換装置2では
渡された原始プログラムを解析し、従来の方法によりプ
ログラム中の配列の分割配置方法を決定する。配列の分
割方法を決定したことで、所有者計算規則により計算処
理の分割方法もこの時点でおおむね自動的に決定する。
【0014】次に、プログラム変換装置2はプログラム
をデータ転送コード挿入装置4に渡す。データ転送コー
ド挿入装置4では、渡されたプログラムをサブルーチ
ン、その他の論理的処理単位に分割し、各処理単位ごと
に、各プロセッサが当該処理を行なうにあたって最低限
必要とする配列、すなわち当該処理の入力データを求
め、入力データが各ローカルメモリ上に当該処理単位の
開始前に用意されるようプロセッサ間においてデータ転
送させるようなコードを挿入する。入力データを求める
にあたっては、当該処理の中間結果が他のプロセッサで
計算される場合であっても自プロセッサ内で計算するも
のとして扱う。これによって当該処理単位の中途でのデ
ータ転送の必要性が除去される。
【0015】データ転送コード挿入装置4によりデータ
転送コードが挿入されたプログラムは、次に計算処理分
割割当て装置5に渡される。ここでは、所有者計算規則
により決定される計算処理の分割方法に基づいて、実際
に各プロセッサが各自の担当部分のみを実行するようプ
ログラムを変換する。また、データ転送コード挿入装置
4で前記のように自プロセッサ内で計算するものとして
扱った中間結果の計算処理を、実際に自プロセッサで行
なわせるようプログラムを調整する。この計算処理は本
来、それを行なうべきプロセッサにおいても当然行なわ
れることになるため、結果として当該計算処理は複数の
プロセッサで重複して実行されることになる。
【0016】以上の処理により並列化されたプログラム
は、再びプログラム変換装置2に戻され、通常の言語処
理装置において行なわれるような調整が施された後、最
後に目的コード生成装置3に渡されて、出力であるFo
rtran目的プログラムに変換される。
【0017】図2にデータ転送コード挿入装置4の構成
を示す。データ転送コード挿入装置4は、プログラム変
換装置2から渡されたプログラムをサブルーチン単位ま
たは原始プログラムの文面上に指示された処理単位に分
割する計算処理セクション化部41と、計算処理セクシ
ョン化部41で分割された処理単位ごとにデータの定義
・参照関係を勘案しながらプログラムの制御の流れをた
どることにより、当該処理単位の最終結果となる配列の
各プロセッサ相当部分の計算処理に最小限必要なデータ
集合を求めるデータフロー解析部42と、計算処理セク
ション化部41で分割された処理単位ごとに、データフ
ロー解析部42で求められたデータ集合のうち各プロセ
ッサのローカルメモリ上に割り当てられていないデータ
を、当該データを所有するプロセッサから転送する命令
を当該処理単位の先頭に挿入するデータ転送命令挿入部
43とから構成される。
【0018】計算処理セクション化部41では、プログ
ラムをサブルーチン単位または原始プログラムの文面上
に指示された処理単位に分割し、処理単位ごとにデータ
フロー解析部42に渡す。データフロー解析部42で
は、渡された処理単位を「Compilers−Pri
nciples,Techniques,and To
ols(Ahoほか,1986)」第10章に詳述され
るデータフロー解析手法により解析し、当該処理単位の
出口に到達する定義集合から当該処理単位の最終結果と
なる配列とそのインデックス範囲を求め、続いて各プロ
セッサに関し最終結果のうち担当する部分の要素から始
めてデータフローを逆向きに遡ることにより、前記要素
を計算するために当該処理単位の入口で用意されている
べき配列要素の集合を求める。この時、計算の中間結果
であって、自プロセッサに割り当てられていないものが
ある場合には記録しておき、計算処理分割割当て装置5
においてその情報をもとに、当該中間結果を自プロセッ
サでも計算させるようにコードを調整する。データ転送
命令挿入部43では、データフロー解析部42で求まっ
た当該処理単位の入口で用意されているべき配列要素の
集合のうち、当該プロセッサに割り当てられていないも
のについて、当該処理単位の先頭において当該要素を所
有するプロセッサからデータを転送する命令を挿入す
る。
【0019】図3は第2の発明の実施例の概略構成を示
す。本実施例は図1の第1の発明の実施例と比較して、
データ転送コード挿入装置4を用いる代わりに配列デー
タ分割割当て装置6を使用している点が異なっている。
配列データ分割割当て装置6では、実行中プロセッサ間
においてデータ転送させる代わりに、各プロセッサが当
該処理を行なうにあたって必要とする配列が各ローカル
メモリ上にプログラムの実行開始時に用意されているよ
うそれらの配列の分割方法自体を変更する。ここでは前
記データフロー解析の手法ないし、原始プログラムの文
面上に指示された方法によって、配列の分割方法を決定
する。
【0020】図4に示すFortranプログラムを例
に本発明の効果を説明する。このプログラムは2段階に
分かれており、ステップ1で被演算数Aから中間結果B
およびCを計算し、ステップ2でB,Cから最終結果D
を計算している。
【0021】図5は第1の発明のプログラム言語処理装
置で図4のプログラムを処理し、同条件でプロセッサに
割り当てて実行させた場合のデータの流れである。自プ
ロセッサ内に存在しない要素A(100)とA(20
1)をステップ1に先だって転送し、ステップ1におい
て本来自プロセッサに割り当てられていない計算(図で
は楕円で囲んだ部分)を併せて行なうことにより、処理
の中途でデータ転送することなしにすべての計算を自プ
ロセッサ内で行なうことができる。したがって、処理の
途中では同期待ちが発生せず、本発明によって並列処理
の効率が向上する。
【0022】また、第2の発明によって配列Aをあらか
じめA(100)〜A(201)の範囲でプロセッサに
割り当てておけば、ステップ1開始前のデータ転送が不
要になるため、さらに並列処理の効率が向上する。
【0023】なお、本発明は上述の実施例に限定される
ものではない。例えば入力言語は配列構造を持つ任意の
プログラムの言語であってもよく、出力はプログラム言
語、機械オブジェクト、実行可能コードのいずれであっ
てもよい。また、実施例の各構成要素は明確に分離され
ている必要はなく、一部を他の構成要素と共有するよう
な構成であってもよい。その他、本発明はその要旨を逸
脱しない範囲で種々変形して実施することができる。
【0024】
【発明の効果】以上説明してきたように、第1の発明に
よれば処理の中途でデータ転送することなしにすべての
計算を自プロセッサ内で行なうことができ、したがっ
て、処理の途中では同期待ちが発生せず、並列処理の効
率が向上する。
【0025】また、第2の発明によれば、ステップ1の
開始前のデータ転送が不要になるため、さらに並列処理
の効率が向上する。
【図面の簡単な説明】
【図1】第1の発明の一実施例を示す構成図である。
【図2】図1に示されたデータ転送コード挿入装置の一
例を示す構成図である。
【図3】第2の発明の一実施例を示す構成図である。
【図4】本発明の効果を説明するためのプログラムの例
である。
【図5】本発明の装置により処理したプログラムの実行
の様子を示す図である。
【図6】従来の装置の構成図である。
【図7】従来の装置により処理したプログラムの実行の
様子を示す図である。
【符号の説明】 1 構文解析装置 2 プログラム変換装置 3 目的コード生成装置 4 データ転送コード挿入装置 5 計算処理分割割当て装置 6 配列データ分割割当て装置 41 計算処理セクション化部 42 データフロー解析部 43 データ転送命令挿入部

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 原始プログラムを、ローカルメモリを備
    えた複数のプロセッサから成る並列計算機システムで並
    列動作するような並列化プログラムに変換するプログラ
    ム変換装置を備えたプログラム言語処理装置において、 原始プログラム中の、ある計算処理の結果が次の計算処
    理の被演算数となるような処理単位(連鎖的な処理単
    位)ごとに、各プロセッサが当該処理を行なうにあたっ
    て必要とする一群のデータ(配列)が各ローカルメモリ
    上に当該処理単位の開始前に用意されるようプロセッサ
    間においてデータ転送させるようなデータ転送コードを
    プログラムに挿入するデータ転送コード挿入装置と、 当該配列を扱う計算処理の一部を複数のプロセッサで重
    複して実行させるようプログラムを変換する装置と、を
    備えたことを特徴とする並列プログラム言語処理装置。
  2. 【請求項2】 請求項1記載のプログラム言語処理装置
    において、前記データ転送コード挿入装置は、 前記プログラム変換装置から渡されたプログラムをサブ
    ルーチン単位または原始プログラムの文面上に指示され
    た処理単位に分割する計算処理セクション化部と、 該計算処理セクション化部で分割された処理単位ごとに
    データの定義・参照関係を勘案しながらプログラムの制
    御の流れをたどることにより、当該処理単位の最終結果
    となる配列の各プロセッサ相当部分の計算処理に最小限
    必要なデータ集合を求めるデータフロー解析部と、 前記計算処理セクション化部で分割された処理単位ごと
    に、前記データフロー解析部で求められたデータ集合の
    うち各プロセッサのローカルメモリ上に割り当てられて
    いないデータを、当該データを所有するプロセッサから
    転送する命令を当該処理単位の先頭に挿入するデータ転
    送命令挿入部とから構成されることを特徴とする並列プ
    ログラム言語処理装置。
  3. 【請求項3】 原始プログラムを、ローカルメモリを備
    えた複数のプロセッサから成る並列計算機システムで並
    列動作するような目的プログラムに変換するプログラム
    言語処理装置において、 プロセッサに原始プログラムの配列を分割配置するにあ
    たり、その一部を複数のプロセッサに重複して配置させ
    るようプログラムを変換する装置と、 当該配列を扱う計算処理の一部を複数のプロセッサで重
    複して実行させるようプログラムを変換する装置と、を
    備えたことを特徴とする並列プログラム言語処理装置。
JP10730695A 1995-05-01 1995-05-01 並列プログラムの言語処理装置 Pending JPH08305580A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10730695A JPH08305580A (ja) 1995-05-01 1995-05-01 並列プログラムの言語処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10730695A JPH08305580A (ja) 1995-05-01 1995-05-01 並列プログラムの言語処理装置

Publications (1)

Publication Number Publication Date
JPH08305580A true JPH08305580A (ja) 1996-11-22

Family

ID=14455751

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10730695A Pending JPH08305580A (ja) 1995-05-01 1995-05-01 並列プログラムの言語処理装置

Country Status (1)

Country Link
JP (1) JPH08305580A (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06175857A (ja) * 1992-12-03 1994-06-24 Fujitsu Ltd プログラム生成処理装置
JPH0793269A (ja) * 1993-07-27 1995-04-07 Fujitsu Ltd データ転送の一括化処理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06175857A (ja) * 1992-12-03 1994-06-24 Fujitsu Ltd プログラム生成処理装置
JPH0793269A (ja) * 1993-07-27 1995-04-07 Fujitsu Ltd データ転送の一括化処理方法

Similar Documents

Publication Publication Date Title
JP2921190B2 (ja) 並列実行方式
JP3032031B2 (ja) ループ最適化方法及び装置
US4965724A (en) Compiler system using reordering of microoperations to eliminate interlocked instructions for pipelined processing of assembler source program
EP0295646B1 (en) Arithmetic operation processing apparatus of the parallel processing type and compiler which is used in this apparatus
JPH0498323A (ja) プロセス並列実行方法および装置
JP2884831B2 (ja) 処理装置
US5109523A (en) Method for determining whether data signals of a first set are related to data signal of a second set
JPH08305580A (ja) 並列プログラムの言語処理装置
JPH04293150A (ja) コンパイル方法
JP3887097B2 (ja) コンパイル方法,コンパイル装置および、コンパイル用プログラムを記憶したコンピュータ読み取り可能な記憶媒体
JPS6132697B2 (ja)
JP3757825B2 (ja) プロセッサ間通信削減方法と並列化コンパイラ装置並びにプログラム
JP2748582B2 (ja) コンパイル処理装置
EP0244928A1 (en) Improvements relating to control flow in computers
JP2585780B2 (ja) 入出力ライブラリにおけるdoループ最適化処理方式
JPH08235149A (ja) 単一命令・多データ型並列計算機の命令生成・分配装置
JP2956591B2 (ja) ループ外への条件付き飛び出しがあるループの並列化方法及び装置
US5335351A (en) Method for optimizing source program including variables necessary for synchronous/exclusive control
JP3218566B2 (ja) インライン展開処理装置
JPH03257579A (ja) コンパイラの並列化方式
JPS6020275A (ja) マルチプロセサの簡易プログラミングシステム
JPH07200498A (ja) 分散メモリ型並列計算機
JPS63163636A (ja) 並列処理実行方式
JPH11203273A (ja) 多重ループのベクトル化装置および記録媒体
JP2870218B2 (ja) 並列実行命令列生成方式