JP3047998B2 - 並列計算機におけるプロセッサ割り当て方法、及び装置 - Google Patents

並列計算機におけるプロセッサ割り当て方法、及び装置

Info

Publication number
JP3047998B2
JP3047998B2 JP3019749A JP1974991A JP3047998B2 JP 3047998 B2 JP3047998 B2 JP 3047998B2 JP 3019749 A JP3019749 A JP 3019749A JP 1974991 A JP1974991 A JP 1974991A JP 3047998 B2 JP3047998 B2 JP 3047998B2
Authority
JP
Japan
Prior art keywords
node
processor
internal node
candidate
assigned
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 - Lifetime
Application number
JP3019749A
Other languages
English (en)
Other versions
JPH04257928A (ja
Inventor
寛 太田
行介 迫田
鉄郎 斉藤
栄一郎 前田
俊之 山本
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
Hitachi Solutions Technology Ltd
Original Assignee
Hitachi Ltd
Hitachi ULSI Systems Co 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, Hitachi ULSI Systems Co Ltd filed Critical Hitachi Ltd
Priority to JP3019749A priority Critical patent/JP3047998B2/ja
Priority to US07/830,673 priority patent/US5485612A/en
Publication of JPH04257928A publication Critical patent/JPH04257928A/ja
Application granted granted Critical
Publication of JP3047998B2 publication Critical patent/JP3047998B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/456Parallelism detection
    • 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

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)
  • Multi Processors (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、分散メモリ方式の並列
計算機上で実行されるソフトウェアに関し、特に、逐次
処理計算機用に記述されたプログラムを、分散メモリ方
式の並列計算機上で実行可能なプログラムに変換する、
並列化変換ツール(並列化コンパイラ,並列化トランス
レータ,並列化支援ツールなど)に関する。
【0002】
【従来の技術】複数のプロセッサから構成される計算機
システムで、各要素プロセッサ(以後、PEと書く)ご
とにメモリが備えられているものがある(富田・末吉、
「並列処理マシン」、4章、1989年、オーム社)。
これは、分散メモリ型並列計算機などと呼ばれている。
また、各PEに備えられたメモリは、ローカルメモリな
どと呼ばれている。
【0003】分散メモリ型並列計算機で処理を実行する
には、使用するデータを各PEのローカルメモリに分散
して割り付け、それらのデータを用いた演算などの処理
を各PEで並列に実行する。このとき、他のPEに割り
付けられたデータを参照するには、PE間通信によっ
て、データの値を転送しなければならない。
【0004】例えば、科学技術計算などに現れる大規模
配列の処理方式としては、配列の各要素を各PEに分散
して割り付け、要素ごとの処理を並列に行うものが、考
えられている。配列要素の割り付け方は、様々なものが
考えられている(高橋編、「並列処理機構」、6章、1
989年、丸善)が、ここでは、既に与えられているも
のとする。その前提のもとで、それらの配列要素の処理
をどのような手順で行うかを考察する。
【0005】例として、逐次処理用のFORTRANプログラ
ムで、 DIMENSION A(1024),B(1024),C(102
4) DO 10 I=1,1022 10 A(I)=B(I)+C(I+2) と記述される処理を並列計算機で実行する方法について
述べる。配列A,B,Cの要素は、いずれも、図5に示
すように1個ずつ順に各PEのローカルメモリに割り付
けられているものとする(情報処理学会第40回全国大
会1G−4「並列計算機用FORTRANのDOループ実行制
御方式」)。
【0006】並列計算機では、このループを次のように
実行する。各Iにつき、C(I+2)が割り付けられたP
E(これを以後、PE(2)と呼ぶ)から、A(I)とB
(I)を持つPE(これを以後PE(0)と呼ぶ)にC(I
+2)の値を転送し、PE(0)で、転送されてきたC(I
+2)の値を用いて、代入文を実行する。これらの処理
を、各Iにつき各PEで並列実行する。
【0007】ここで述べたような処理は、並列計算機用
のプログラムにしたがって実行される。逐次処理用に記
述されたプログラムをもとにして、それと同等の処理を
行う並列計算機用のプログラムを作成するためには、並
列化コンパイラや並列化支援ツールなどが用いられる。
並列化コンパイラは、逐次処理プログラムから並列化可
能な部分を見つけだして、各PEへの処理の割り当ての
決定や、PE間通信の挿入などを行って、並列処理用プ
ログラムを出力する。また、並列化支援ツールは、並列
化コンパイラだけでは最適な並列化が行えないような場
合に、人手によって並列処理用プログラムを作成するの
を支援するために、プログラムを解析して様々な情報を
提供する。
【0008】
【発明が解決しようとする課題】式の中で、他のPEに
割り付けられたデータが2個以上参照されている場合に
は、式の中に現れる演算の一部を他のPEで実行した方
が良い場合がある。例として、 DO 10 I=1,1022 10 A(I)=B(I)+C(I+2)*D(I+2) という処理を並列計算機で実行する方法について説明す
る。配列A,B,C,Dの要素は、いずれも図5に示す
のと同様に、1個ずつ順に各PEのローカルメモリに割
り付けられているものとする。このとき、Iのとる値に
よらず、A(I)とB(I)は同一のPE上にあり、C(I
+2)とD(I+2)も同一のPE上にある。並列計算機
でこのループを実行する二つの方法を述べる。第1の方
法は、各Iにつき、PE(2)からPE(0)に、C(I+
2)およびD(I+2)の値を転送し、PE(0)で、転送
されてきたC(I+2)およびD(I+2)の値を用いて、
代入文を実行するというものである。第2の方法は、各
Iにつき、PE(2)でC(I+2)*D(I+2)という部
分式の値を求めておいてから、その値をPE(0)に転送
し、PE(0)で、転送されてきた値を用いて、代入文を
実行するというものである。言い変えれば、第1の方法
は、式の中に現れるすべての演算にPE(0)を割り当て
る方法であり、第2の方法は、式の中の乗算にPE(2)
を割り当て、加算にPE(0)を割り当てる方法であると
言える。
【0009】第1の方法では、各Iにつき、転送される
データの個数は2個である。一方、第2の方法では、転
送されるデータの個数は1個である。分散メモリ型並列
計算機では、PE間のデータ転送は、PE内のデータ参
照に比べて非常に長い時間がかかるので、できるだけ少
ない方が良い。したがって、第1の方法よりも第2の方
法の方が優れている。
【0010】上述の例からも分かるように、式の中の演
算へのPEの割り当て方を工夫することによって、デー
タ転送回数を減らすことができる。しかし、従来は、デ
ータ転送回数を減らすための一般的な割り当て方法が無
かった。そのため、並列計算機で処理を行うときに、例
えば上述の第1の方法のように、必要以上のデータ転送
が生じてしまうという問題があった。
【0011】本発明の目的は、与えられた式の値を評価
するときに、データ転送回数が最小になるように、式の
中の演算にPEを割り当てる方法を提供することにあ
る。
【0012】
【課題を解決するための手段】上記目的は、データを葉
ノード,演算子を内部ノードとする木の形式で式を表現
し、木をボトムアップにたどって、各内部ノードに、該
内部ノードの演算に対して割り当てるPEの候補(候補
PE)の集合を付随させる第1のステップと、木をトッ
プダウンにたどって、該内部ノードの演算に対して割り
当てるPEを決定する第2のステップによって、演算に
PEを割り当てることによって達成される。
【0013】また、上記目的は、上記の割り当て方法の
第1のステップにおいて、(1)葉ノードの候補PE
は、その葉ノードが表すデータが配置されたPEのみと
し、(2)内部ノードの候補PEは、その内部ノードの子
ノードの候補PEの中で、最も多くの子ノードの候補P
Eになっているもののすべてとする、ことによって達成
される。
【0014】また、上記目的は、上記の割り当て方法の
第2のステップにおいて、(1)該内部ノードがルート
ノードの場合は、該内部ノードの候補PEの集合から任
意に選んだ1個のPEを、該内部ノードに割り当てるP
Eとし、(2)該内部ノードがルートノードでなく、か
つ、該内部ノードの候補PEの集合に、該内部ノードの
親ノードに割り当てられたPEが含まれている場合に
は、該親ノードに割り当てられたPEを、該内部ノード
に割り当てるPEとし、(3)該内部ノードがルートノ
ードでなく、かつ、該内部ノードの候補PEの集合に、
該内部ノードの親ノードに割り当てられたPEが含まれ
ていない場合には、該内部ノードの候補PEの集合から
任意に選んだ1個のPEを、該内部ノードに割り当てる
PEとする、ことによって達成される。
【0015】
【作用】第1のステップで求められた候補PEのいずれ
かをそのノードに割り当てることは、そのノードをルー
トとする部分木が表す式の値を最小のデータ転送回数で
評価するための必要十分条件になっている。さらに、第
2のステップでは、親ノードとの間のデータ転送回数が
最小になるようにPE割り当てを決定するので、データ
転送回数が最小になるようにPEが割り当てられる。
【0016】
【実施例】図4は、本発明を適用する対象となる並列計
算機の構成例である。並列計算機は、複数のPE200
から20n,各PEに付属したローカルメモリ210か
ら21n,PE結合ネットワーク22から構成される。
PE結合ネットワーク22によってPE間のデータ転送
ができる。各PEにはPEを識別するための番号が1か
ら順に付けられているものとする。これを「絶対PE番
号」と呼ぶ。
【0017】図5は、各PEのローカルメモリ210,
211,212,…に配列A,B,C,D,Eの要素を
分散して割り付けた例である。この例では、各PEに1
個ずつ順に配列要素を割り付けている。
【0018】以下では、このように分散割り付けされた
データから構成される式が与えられたとき、最小のデー
タ転送回数でその式の値が求められるように、式の中の
演算にPEを割り当てる方法を述べる。本割り当て方法
は、任意の式に対して適用することができるが、ここで
は、 (A(I+1)*B(I+1)+C(I+2))*D(I+3)+E(I+2) という式を例として述べる。添字がI+k(kは整数)と
いう形の配列要素を持つPEをPE(k)で表し、kを
「相対PE番号」と呼ぶことにする。以後は、相対PE
番号のことを単に「PE番号」と呼び、PEを識別する
ために用いる。なお、初めは、式の値を評価することだ
けについて述べ、式の値を他の変数に代入する場合につ
いては、後で述べる。
【0019】式は、データを葉ノード,演算子を内部ノ
ードとする木の形で与えられるものとする。もし、文字
列の形で与えられていたとしても、通常のコンパイラ技
術によって、木の形に変換することは容易である。図6
は、上述の式を、木の形で表現したものである。各葉ノ
ード3010から3014には、それに対応するデータ
を持つPEのPE番号3020から3024を付随させ
ておく。
【0020】図1は、上で述べたような木が与えられた
ときに、内部ノードにPEを割り当てる処理のフローチ
ャートである。ステップ10では、木の各ノードをボト
ムアップにたどり、ステップ100で各ノードの「候補
PE」の集合を求める。候補PEは、そのノードに割り
当てるべきPEの候補であり、一般に1個のノードにつ
き複数の候補PEがある。ステップ11では、木の各ノ
ードをトップダウンにたどって、ステップ110で各ノ
ードの「確定PE」を求める。確定PEは、そのノード
に割り当てるべきPEである。
【0021】図2は、ステップ100の各ノードの候補
PEの集合を求める処理の詳細フローチャートである。
ステップ1000では、そのノードが葉ノードか内部ノ
ードかを判定する。もし葉ノードならば、ステップ10
01に進み、内部ノードならばステップ1002に進
む。ステップ1001では、葉ノードが表すデータがも
ともと割り付けられた1個のPEのみを候補PEとす
る。ステップ1002では、その内部ノードの子ノード
の候補PEを調べて、最も多くの子ノードの候補PEに
なっているPEを、その内部ノードの候補PEとする。
最も多くの子ノードの候補PEになっているPEが2個
以上ある場合は、それらをすべてその内部ノードの候補
PEとする。
【0022】図7は、内部ノードの候補PEの求め方の
例である。候補PEは、候補PE番号を用いて表してい
る。図7(a)は、内部ノード3100が2個の子ノード
3101および3102を持ち、子ノードの候補PE番号の
集合3131および3132が、それぞれ、{1,2,
3}と{1,2,4,5}である場合を示している。PE
番号「1」および「2」は、2個の子ノード3101お
よび3102の候補PE番号になっており、PE番号
「4」および「5」は1個の子ノード3101または3
102の候補PE番号になっている。したがって、この
内部ノード3100の候補PE番号は、「1」および
「2」の両方とする。図7(b)は、内部ノード3200
が2個の子ノード3201および3202を持ち、子ノ
ードの候補PE番号の集合3231および3232が、
それぞれ、{1,2}と{3,4}である場合を示してい
る。PE番号「1」,「2」,「3」、および「4」は
すべて、1個の子ノード3201または3202の候補
PE番号になっている。2個以上の子ノードの候補PE
番号になっているPE番号はない。したがって、この内
部ノードの候補PE番号は「1」,「2」,「3」、お
よび「4」のすべてとする。図8は、図6の木30の各
内部ノード3000から3003に対して、候補PE番
号の集合3030から3033を求めた様子を示してい
る。{}で囲まれた番号が、そのノードの候補PE番号で
ある。ただし、葉ノードの候補PE番号は、その葉ノー
ドに対応するデータを持つPEのPE番号3020から
3024と同じなので、省略してある。
【0023】図3は、図1のステップ110の各ノード
の確定PEを求める処理の詳細フローチャートである。
ステップ1100では、そのノードがルートノードかど
うかを判定する。もしルートノードならば、ステップ1
101に進み、そうでなければステップ1102に進
む。ステップ1101では、そのノードの候補PEの中
の任意の1個を選んで、そのノードの確定PEとする。
ステップ1102では、自ノードの候補PEの中に親ノ
ードの確定PEが含まれるかどうかを判定する。もし含
まれていればステップ1103に進み、そうでなければ
ステップ1102に進んでルートノードの場合と同じ方
法で確定PEを求める。なお、木をトップダウンにたど
るので、ルートノード以外では親ノードの確定PEは既
に求められている。ステップ1103では、親ノードの
確定PEを自ノードの確定PEとする。
【0024】図9は、図8に示した候補PE番号303
0から3033をもとにして、木の各ノードの確定PE
番号3040から3043を求めた様子を示している。
ルートノード3003では、図3のステップ1101に
したがって確定PE番号「2」3043が求められ、その
下の乗算ノード3042およびそのさらに下の加算ノー
ド3041では、図3のステップ1103にしたがって
確定PE番号「2」3042および3041が求められ
る。最下方の乗算ノード3030では、図3のステップ
1101にしたがって確定PE番号「1」3040が求
められる。葉ノード3010から3014の確定PE番
号は、その葉ノードに対応するデータを持つPEのPE
番号3020から3024と同じである。
【0025】求められた確定PE番号は、その演算に割
り当てるPEを示している。すなわち、この木30が表
す式の値を、次のようにして評価することを表してい
る。まず、部分式A(I+1)*B(I+1)の値をPE
(1)で評価して、その値をPE(2)に転送する。また、
D(I+3)の値をPE(3)からPE(2)に転送する。そ
の後、PE(2)で内部ノード上方の3個の内部ノード3
001から3003の演算を実行し、式全体の値を求め
る。このとき、データ転送回数は各Iについて2回であ
る。
【0026】図10は、本方法によるPE割り当てにし
たがって、すべてのIについて図6の木30で表される
式の値を評価するときのタイムチャートである。縦軸は
時間を表し、横軸は各PEを表す。PEは、割り付けら
れている配列要素のインデックスが小さい方から順に、
左から右に並べて書いてある。各Iに対する処理は、各
PEで並列に実行される。矢印は、PE間のデータ転送
を表す。フェーズ1では、各PEが自分自身に割り付け
られている配列Aの要素と配列Bの要素の積を求める。
これは図6の式30の最下方の内部ノード3000の演
算の実行に対応している。フェーズ2では、その積の値
を右隣のPEに転送する。フェーズ3では、各PEが自
分自身に割り付けられている配列Dの要素の値を、左隣
のPEに転送する。フェーズ4以降では、各PEが、左
隣から送られてきたAとBの積の値と、右隣から送られ
てきたDの値、さらに自分自身に割り付けられている配
列CとEの要素の値を用いて、図6の式30の上方の3
個の内部ノード3001から3003の演算を実行す
る。
【0027】従来は、データ転送回数を考慮して式の中
の演算にPEを割り当てる方法は、特に考えられていな
かった。そのため、例えば、式の内容によらず、すべて
の演算をPE(0)で実行するなどの割り当てが行われ
た。図11は、そのような割り当てにしたがって、図6
の木30で表される式の値を評価するときのタイムチャ
ートである。フェーズ1からフェーズ5まででは、各P
Eが自分自身に割り付けられている配列AとBの要素の
値を左隣のPEに転送し、配列CとEの要素の値を二つ
左隣のPEに転送し、配列Dの要素の値を三つ左隣のP
Eに転送する。フェーズ6以降では、他のPEから転送
されてきた配列A,B,C,D、およびEの要素の値を
用いて、式30の4個の内部ノード3000から300
3の演算を実行する。
【0028】本発明の方法と従来方法を比べると、本発
明の方がデータ転送回数が少なく、その結果、全体とし
ての経過時間も短くなっている。
【0029】図12は、本発明の割り当て方法を実行す
るための、計算機内部での木のノードの表現を示してい
る。ノードを表す構造体40は、割り当てPE番号4
1,候補PE番号リストへのポインタ42,子ノードの
数43,子ノードへのポインタ44,ノードが表す演算
・データ45などの情報から構成される。葉ノードの場
合は、割り当てPE番号41は、それが表すデータが割
り付けられたPEのPE番号を表す。内部ノードの場合
は、割り当てPE番号41は、本方法によるPE割り当
ての結果その内部ノードに割り当てられたPE番号を表
す。
【0030】図13は、図6の木30の計算機内部にお
ける表現400を示している。内部ノード4000から
4003については、割り当てPE番号は未定となって
いる。また内部ノード4000から4003、および、
葉ノード4010から4014すべてについて、候補PE番
号リストへのポインタはnilポインタとなっている。
【0031】図14は、図13に示した木400に対し
て候補PE番号を求めた様子を示している。内部ノード
4000から4003、および、葉ノード4010から
4014について、候補PE番号リスト4600から4
603および4610から4614へのポインタが設定
されている。候補PE番号リストの最後には、endマ
ークが付けられている。各ノードの候補PE番号は、図
2の処理にしたがって求められたものであり、図7に示
したものと同じである。
【0032】図15は、図14に示した候補PE番号付
きの木400をもとに、図3の処理にしたがって、各ノ
ードの確定PE番号を求めた様子を示している。内部ノ
ード4000から4003について、図8に示したもの
と同じ確定PE番号が求められている。
【0033】図16は、図1に示したPE割り当て方法
を実行する装置の例である。PE割り当て装置50は、
候補PE決定部51および確定PE決定部52を含む。
PE割り当て装置50は、例えば図13に示したような
式の木表現400を入力して、図15に示したような確
定PE番号付きの式の木表現402を出力する。候補P
E決定部500は、図1のステップ10の処理を実行し
て、木の各ノードの候補PE番号の集合を求める。確定
PE決定部52は図1のステップ11の処理を実行し
て、木の各ノードの確定PE番号を決定する。
【0034】これまでは、求めた式の値を他の変数に代
入することは考えていなかったが、代入がある場合も、
ほとんど同様の方法で、データ転送回数が最小になるよ
うにPEの割り当てを行うことができる。図17にその
例を示す。図17(a)は、 A(I)=B(I)+C(I+2)*D(I+2) という代入文を木の形で表現したものである。加算ノー
ド3301や乗算ノード3302は、必要なデータを転
送すればどのPEでも実行できるが、代入ノード330
0は、代入される配列要素A(I)を持っているPEでな
いと実行できない。したがって、代入ノード3300に
はもともとPE(0)が割り当てられていると見なすべき
である。そこで、木を図17(b)のように変形する。す
なわち、代入ノード3300を代入される配列要素A
(I)のノード3310と合併して、新たなノード331
4とする。さらに、そのノード3314を加算ノード3
301の子ノードとする。そしてそのノード3314に
は、A(I)が割り付けられたPEのPE番号「0」を付
随させる。変形した木331に対して、図1の割り当て
処理を適用する。その結果、加算ノード3301,乗算
ノード3302には、それぞれ、PE番号「0」,
「2」が割り当てられる。図17(c)は、PE番号を割
り当てた木を示している。ただし、図17(b)において
合併したノード3314は、もとの形の代入ノード3300
と葉ノード3310に戻してある。
【0035】第18図は、本発明のPE割り当て方法
を、並列化コンパイラに応用した実施例である。並列化
コンパイラ51は、構文解析部510,PE割り当て部
511,中間プログラム生成部512,オブジェクトプ
ログラム生成部514を含む。PE割り当て部511
は、候補PE決定部5110および確定PE決定部5111
から構成される。並列化コンパイラ51は、ソースプロ
グラム60を入力して、並列計算機用のオブジェクトプ
ログラム63を出力する。構文解析部510は、ソース
プログラムの構文を解析し、特に式を解析して木表現4
10に変換する。
【0036】PE割り当て部511は、式の木表現41
0を入力して、確定PE付きの式の木表現411を出力
する。中間プログラム生成部512は、ソースプログラ
ムから得られた情報を入力として中間プログラム61を
生成し、特に確定PE付きの式の木表現411を入力と
して、それに対応する中間プログラムを生成する。PE
用中間プログラム生成部513は中間プログラム61を
入力としてPE用中間プログラム62を生成する。オブ
ジェクトプログラム生成部514は、PE用中間プログ
ラム62を入力として、オブジェクトプログラム63を
生成する。
【0037】中間プログラム61は、ソースプログラム
に記述されている処理の各々に対して、PE割り当てを
示す情報を付加したものである。また、必要なら、ソー
スプログラム内の処理の分解や、データ転送処理の挿入
を行なったものである。PE用中間プログラム62は、
各PEが担当する処理を記述したものである。以下で
は、中間プログラム生成部512、および、PE用中間
プログラム生成部513が実行する処理について述べ
る。オブジェクトプログラム生成部514が実行する処
理については、従来の並列化コンパイラと比べて特に新
しい処理ではないので、ここでは述べない。
【0038】図19は、並列化コンパイラ51によるプ
ログラム変換例を示している。図19(a)は、ソースプ
ログラムの例600である。図19(b)は、本発明のP
E割り当て方法を用いて変換した結果の中間プログラム
610である。中間プログラム610では、ソースプロ
グラム600内の1個の代入文 A(I)=B(I)+C(I+2)*D(I+2) によって表される処理が分解され、分解した各処理に割
り当てPE番号6100が付けられている。すなわち、
PE(2)で、C(I+2)*D(I+2)の値を求め、PE
(0)に割り付けられているTMP(I)に転送する。TM
Pはコンパイラ51が生成した一時的な配列名である。
PE(0)で、TMP(I)がPE(2)から転送されるのを
待って、 A(I)=B(I)+TMP(I) という代入文を実行する。この中間プログラムは、図1
7(c)に示されたPE割り当てに従っている。
【0039】一方、図19(c)は、従来のPE割り当て
方法、すなわち、すべての演算にPE(0)を割り当てる
方法を用いて変換した結果の中間プログラム611であ
る。中間プログラム611では、PE(2)に割り付けら
れているC(I+2)およびD(I+2)の値を、それぞ
れ、PE(0)に割り付けれらているC′(I)およびD′
(I)に転送する。C′およびD′はコンパイラ51が生
成した一時的な配列名である。PE(0)で、C′(I)お
よびD′(I)がPE(2)から転送されるのを待って、 A(I)=B(I)+C′(I)*D′(I) という代入文を実行する。図19(c)の従来方法による
中間プログラムに比べ、図19(b)の本発明の方法によ
る中間プログラムの方が、データ転送回数が1回少な
く、明らかに効率が良い。
【0040】確定PE付きの式の木表現411から、中
間プログラム61を生成する方法を述べる。図20は、
計算機内部での木のノードの表現の中から、中間プログ
ラム生成のために必要な情報を抜き出して示したもので
ある。図12に示した情報の他に、親ノードへポインタ
46が加えられている。また、割り当てPE番号41に
は、PE割り当て部511によって、確定PE番号が設
定されているものとする。
【0041】図21は、中間プログラム生成部512が
実行する処理のフローチャートである。ステップ130
では、確定PE番号付きの木の各ノードをボトムアップ
にたどり、ステップ130で各ノードの中間プログラム
生成処理を行う。
【0042】図22は、ステップ130の各ノードでの
中間プログラム生成処理の詳細フローチャートである。
ステップ1300では、そのノードが代入を表すノード
かどうかを判定する。もし代入を表すノードならばステ
ップ1304に進み、そうでないならばステップ130
1に進む。ステップ1301では、そのノードの割り当
てPE番号41が親ノードの割り当てPE番号と同じか
どうかを判定する。親ノードの割り当てPE番号は、親
ノードへのポインタ46をたどることによって分かる。
もし同じならば、そのノードでは何もしないで処理を終
る。もし同じでないならばステップ1302に進む。ス
テップ1302では、そのノードをルートとする部分式
の値を求めて、親ノードの割り当てPE番号で表される
PEへ転送する文を、中間プログラムに出力し、その文
に自ノードの割り当てPE番号を付ける。データの転送
先として使用するための一時的変数は、他の変数と名前
が重ならないようにして生成する。なお、ノードが葉ノ
ードの場合には、そのノードをルートとする部分式と
は、そのノードが表すデータそのものである。ステップ
1303では、自ノードを、転送先の一時的変数を表す
葉ノードに置き換える。置き換えたノードの割り当てP
E番号41は、転送先のPE番号とする。そして、その
ノードに対する処理を終る。ステップ1304では、そ
のノードをルートとする木が表す代入文を、中間プログ
ラムに出力し、その文に自ノードの割り当てPE番号を
付ける。ただし、他のPEからのデータの転送先になっ
ている一時的変数がある場合には、その転送を待つ文を
代入文の前に出力する。
【0043】図23は、確定PE番号付きの木から、中
間プログラムが生成される過程を示している。図23
(a)は、図19(a)のソースプログラム600内の代入
文を表す、確定PE番号付きの木332である。図21
のステップ13に従い、木332をボトムアップにたど
る。各葉ノード3310から3313では、親ノードと
同じPEが割り当てられているので、何もしない。乗算
ノード3302では、親ノードと異なるPEが割り当て
られているので、図22のステップ1302に従い、部
分式C(I+2)*D(I+2)の値を一時的変数TMP
(I)に転送する文を中間プログラムに出力し、また、図
22のステップ1303に従い、自ノード3302を一時的
変数TMP(I)を表す葉ノード3316に置き換える。
図23(b)は、この様子を示している。加算ノード33
01では、親ノードと同じPEが割り当てられているの
で、何もしない。代入ノード3300では、図22のス
テップ1304に従い、一時的変数TMP(I)の転送を
待つ文、および、代入文 A(I)=B(I)+TMP(I) を中間プログラムに出力する。図23(c)は、この様子
を示している。
【0044】図24はPE用中間プログラム生成部51
3によって生成されるPE用中間プログラム62の例で
ある。中間プログラム61は、ソースプログラム60に
記述された処理全体を表していたが、PE用中間プログ
ラム62は、各PEが担当する処理を表している。プロ
グラム中のiは絶対PE番号である。図24(a)は、本
発明の方法によって、図19(b)に示した中間プログラ
ム610から生成されたPE用中間プログラム620で
ある。自PEの絶対PE番号iが3以上1024以下なら
ば、自PEに割り付けられているデータから計算される
C(i)*d(i)を、絶対PE番号2だけ小さいPEに割
り付けられているデータTMP(i−2)に転送する。そ
の後、自PEの絶対PE番号が1以上1022以下なら
ば、自PEに割り付けられているTMP(i)に絶対PE
番号が2だけ大きいPEからデータが転送されてくるの
を待ち、転送されたらA(i)=B(i)+TMP(i)とい
う代入文を実行する。図24(b)は、従来方法による中
間プログラム611から生成されたPE用中間プログラ
ム621であり、本方法によるPE用中間プログラム6
20に比べて、データ転送が1回多い。
【0045】次に本発明の別の実施例として、加算や乗
算などについて成り立つ演算の交換則や結合則を利用し
て、さらに転送回数を減らす方法について述べる。図2
5(a)は、 A(I+1)+B(I+2)+C(I+2)+D(I+1) という式に対する木表現340である。各内部ノード3
400から3402に対して、図1の方法にしたがって
付けた確定PE番号3420から3422が示されてい
る。このPE割り当てによれば、データ転送回数は2で
ある。ところで、上の式で加算の順序を変更して、 (A(I+1)+D(I+1))+(B(I+2)+C(I+2)) という式に変形すれば、図25(b)のような木341で
表される。この木341に対して、確定PE番号346
0から3462で示されるPE割り当てを行えば、デー
タ転送回数は1となり、演算順序を変更しない場合に比
べて、1個少なくなっている。
【0046】以下では、演算の交換結合法則を利用して
演算順序を変更しても良いという条件のもとで、木を変
形して各内部ノードにPEを割り当てる方法を述べる。
説明を簡単にするため、演算は加算と乗算だけに限るも
のとする。
【0047】図26は、この実施例におけるPE割り当
て処理のフローチャートである。ステップ70では実行
順序が交換可能な演算に対するノードを併合して、1個
のノードとする。すなわち、親子の関係にあるノード
が、ともに加算、またはともに乗算を表すノードなら
ば、それらを併合して、1個のノードとする。図27は
ノードの併合の例である。図27(a)の木340に対し
てノードの併合を行なうと、図27(b)の木341とな
る。図26のステップ71では、木の各ノードをボトム
アップにたどり、ステップ710で各ノードの候補PE
番号の集合を求める。ステップ72では、木の各ノード
をトップダウンにたどって、ステップ720で各ノード
の確定PE番号を求める。ステップ73では併合したノ
ードを分割して、木を二分木の形に戻す。分割したこと
によって生成された新たなノードには、適切な確定PE
番号を付ける。本実施例における候補PE番号の求め
方、確定PE番号の求め方,ノード分割方法の詳細を、
以下順に述べる。
【0048】図28は、ステップ710の、候補PE番
号の集合を求める処理の詳細フローチャートである。ス
テップ7100では、そのノードが葉ノードか内部ノー
ドかを判定する。もし葉ノードならばステップ7101
に進み、内部ノードならばステップ7102に進む。ス
テップ7101では、葉ノードが表すデータがもともと
割り付けられた1個のPEのPE番号のみを候補PE番
号とする。ステップ7102では、その内部ノードの子
ノードの候補PE番号を調べて、子ノードを、「各グル
ープにつき、そのグループ内の全ての子ノードに共通す
る候補PE番号がある」…(条件1)という条件を満た
し、かつ、グループ数が最小であるようなグループに分
割する。ここで、グループ内の全ての子ノードに共通す
る候補PE番号を、そのグループの「代表PE番号」と呼
ぶことにする。代表PE番号は、1個のグループにつき
2個以上ある場合もある。グループ分割の後、ステップ
7103で、各グループの代表PE番号をすべて、自ノ
ードの候補PE番号とする。グループ数が最小となる分
割の仕方が2通り以上ある場合は、そのようなグループ
分割の仕方のすべてについて、各グループの代表PE番
号を求め、それらをすべて、自ノードの候補PE番号と
する。
【0049】例として、図29(a)の内部ノード350
0に対するグループ分割と候補PE番号の求め方につい
て述べる。内部ノード3500は、4個の子ノード35
01から3504を持ち、4個の子ノード3501から
3504には、それぞれ{2,5},{2,3,6},{1,
4,6},{1,3,6}という候補PE番号3531か
ら3534が付いている。上に述べた(条件1)を満た
すようなグループ分割で、グループ数が最小のものは、
2通りある。それらは、 グループ分割A グループa:3501,3502 (代表PE番号:
「2」) グループb:3503,3504 (代表PE番号:
「1」,「6」)および、 グループ分割B グループc:3501 (代表PE番号:
「2」,「5」) グループd:3502,3502,3503 (代表P
E番号:「6」)というものである。上記のグループ分割
Aを図29(b)に示す。そこで、内部ノード3500の
候補PE番号は、すべての代表PE番号の集合、すなわ
ち、{1,2,5,6}とする。
【0050】図30は、図26のステップ720の、確
定PE番号を求める処理の詳細フローチャートである。
ステップ7200では、そのノードがルートノードかど
うかを判定する。もしルートノードならばステップ72
01に進み、そうでなければステップ7202に進む。
ステップ7201では、そのルートノードの候補PE番
号の中の任意の1個を選んで、そのルートノードの確定
PE番号とする。ステップ7202では、子ノードのグ
ループ分割の中から、自ノードの確定PE番号がいずれ
かのグループの代表PE番号の中に含まれるようなグル
ープ分割を任意に1個選ぶ。そして、そのグループ分割
の各グループについて、ステップ7203から7206まで
の処理を繰り返す。ステップ7203では、グループの
代表PE番号の中に自ノードの確定PE番号があるかど
うかを判定する。もしあればステップ7204に進み、
なければステップ7205に進む。ステップ7204で
は、自ノードの確定PE番号を、そのグループに属する
全ての子ノードの確定PE番号とする。ステップ720
5では、そのグループの代表PE番号の中の任意の1個
を選んで、そのグループに属する全ての子ノードの確定
PE番号とする。ステップ7206では未処理のグルー
プがあるかどうかを判定して、あればそのグループに対
してステップ7203からの処理を行い、なければ処理
を終了する。例として、図29(b)の内部ノード350
0の確定PE番号が「1」に決定したときの、その子ノ
ード3501から3504に対する確定PE番号の求め
方を述べる。子ノード3501から3504のグループ
分割は、前に図29(a)の説明のところで述べたよう
に、A,Bの2通りある。内部ノード3500の確定P
E番号「1」が代表PE番号の中に含まれるようなグル
ープ分割は、グループ分割Aである。グループ分割Aに
おいて、グループaの代表PE番号は「2」であるか
ら、子ノード3501、3502の確定PE番号は
「2」とする。また、グループbの代表PE番号は
「1」と「6」の2個であるが、ノード3500の確定
PE番号が「1」であるから、子ノード3503,35
04の確定PE番号は「1」とする。
【0051】図31は、図26のステップ73のノード
分割処理の詳細フローチャートである。ステップ73で
は、確定PE番号が付けられた木の各ノードに対して、
このフローチャートで表される処理を行なう。ステップ
730では、子ノードの数が3個以上かどうかを判定す
る。もし3個以上ならばステップ731に進み、3個未
満ならば処理を終了する。ステップ731では、子ノー
ド同士で同じ確定PE番号が付けられたものがあるかど
うかを判定する。もしあればステップ732に進み、な
ければステップ733に進む。ステップ732では、同
じ確定PE番号が付けられた子ノードを、任意に2個選
び、また、ステップ733では、子ノードを任意に2個
選ぶ。ステップ734では、自ノードと同じ演算を表す
新しいノードを生成して、自ノードの子ノードとし、ま
た、ステップ732または733で選ばれた2個の子ノ
ードを新ノードの子ノードとして、自ノードの子ノード
から消去する。ステップ735では、ステップ734で
生成された新ノードに、自ノードと同じ確定PE番号を
付ける。そしてステップ730へ戻り、子ノードの数が
3個未満になるまで、ステップ730からの処理を繰り
返す。
【0052】図32は、ノード分割処理の例である。図
29(a)は、図27(b)に示した木341に対して、図
26のステップ71,72にしたがって確定PE番号を
付けた様子を示している。この木341の各ノードに対
して図31のフローチャートの処理を行って、ノードを
分割した結果が、図32(b)の木342である。
【0053】次に、本発明のまた別の実施例として、複
数の文にまたがって、データ転送回数を最小化する例に
ついて述べる。これは、図1のPE割り当て処理の前
に、一時的に使用される変数を消去して、複数の文に現
れる複数の式を1個の式にまとめる処理を行なうことに
よって、実現できる。例として、DOループ内の TMP(I)=A(I+1)*B(I+1)+C(I+2) Q(I)=TMP(I)*D(I+3)+E(I+2) という2個の文について述べる。通常のコンパイラで用
いられるような依存性解析によって、TMP(I)の値が
後で使われることがあるかどうかを調べることができ
る。もし、後で使われることがないと分かれば、TMP
(I)を消去して、この2個の文を、 Q(I)=(A(I+1)*B(I+1)+C(I+2))*D
(I+3)+E(I+2)という1個の文にまとめることが
できる。この文の左辺の式は図6の木30によって表さ
れる。したがって、図1の方法でPE割り当てを行え
ば、Q(I)への代入も含めて、この文を実行するのに必
要なデータ転送回数は3となる。一方、TMP(I)がP
E(0)に割り付けられているものとして、もとの2個の
文にPE割り当てを行なうと、必要なデータ転送回数は
5となってしまう。すなわち、一時的に使用される変数
TMP(I)を消去したことによって、データ転送回数が
2回少なくなった。
【0054】本発明のまた別の実施例として、式を構成
するデータがスカラー変数である場合について述べる。
これまでは式を構成するデータが配列要素である場合に
ついて述べてきたが、スカラー変数の場合でも、本発明
のPE割り当て方法が適用できる。図33(a)は、 P=Q+R*S という代入文を表す木360を示す。スカラー変数P,
Qは、絶対PE番号「1」のPEに割り付けられており、
R,Sは、絶対PE番号「2」のPEに割り付けられて
いるものとする。なお、データが配列要素の場合には、
A(I)が割り付けられたPEからの相対PE番号を用い
てPEを識別していたが、ここでは、絶対PE番号を用
いてPEを識別する。図33(a)の木の各葉ノード36
10から3613には、そのノードが表すデータが割り
付けられたPEの絶対PE番号3620から3623が
付加されている。図33(b)は、この木の各内部ノード
3600から3602に対して、図17に示したのと同
様の方法で確定PE番号3640から3642を決定し
た様子を示している。このように決定したPE割り当て
によれば、1回のデータ転送で、この代入文を実行でき
る。
【0055】本発明のまた別の実施例として、PE間の
データ転送に要する時間が一定でないときに、式の評価
に要する転送時間を最小にするPE割り当て方法を述べ
る。これまでの実施例では、転送の回数だけに注目して
きた。しかし、同じ一回の転送でも、どのPE間の転送
であるかによって、転送時間が異なる場合がある。例え
ば図34のように8個のPE230から237が立方体
状に結合していれば、対角線の両端の位置関係にある2
個のPE間の転送は、隣合った2個のPE間の転送に比
べて、3倍の時間を要すると考えられる。なお、本実施
例の方法は、データ転送に伴なう量ならば、時間以外の
量についても適用可能なので、以後そのような量を一般
に「転送コスト」と呼ぶことにする。
【0056】ここで考える問題は以下の通りである。任
意の2個のPE間の転送コストが、あらかじめ与えられて
いるものとする。これを、TC(i,j)で表す。ただ
し、i,jはそれぞれ転送元と転送先の絶対PE番号で
ある。TC(i,j)は整数値を取るものとする。式の木
表現に確定PE番号を付けたとき、木の各枝に対して、
両端のノードの確定PEに応じて、コストTC(i,j)
がかかる。全枝のコストの総和が、式の値を評価するの
に要するコストである。そこで問題は、葉ノードのみに
絶対PE番号が付けられた木が与えられたときに、全枝
のコストの総和が最小になるように、各ノードに確定P
E番号を付けるということになる。
【0057】図36(a)は、 P*Q+R という式の木表現370、およびPE間コスト表80を
示している。スカラー変数P,Q,Rは、それぞれ、絶
対PE番号「1」,「3」,「2」のPEに割り付けら
れているものとする。PE間コスト表80は、絶対PE
番号i,jのすべての組合せについてのTC(i,j)の
値を表にしたものである。ここでは、PE台数は4とす
る。
【0058】図35は、本実施例におけるPE割り当て
処理のフローチャートである。ステップ75では、木の
各ノードをボトムアップにたどり、各ノードに対してス
テップ750で、図36(b)に示されるようなノードコ
スト表810から814を作成する。ステップ76で
は、木の各ノードをトップダウンにたどり、各ノードに
対してステップ760で、確定PE番号を求める。
【0059】ノードコスト表810から814は、ノー
ドコストNC(n,i)という量を表にしたものである。
さらに、内部ノードに対するノードコスト表813から
814には、左PE番号L(n,i),右PE番号R(n,
i)という番号も表の中に含まれる。ノードコストNC
(n,i)は、ノードnに確定PE番号iを付けたという
条件のもとでの、そのノードをルートとする部分木内の
枝の転送コストの総和の最小値である。ノードコストN
C(n,i)は、図35のステップ75で木をボトムアッ
プにたどりながら、次の規則にしたがって求められる。
ノードnが葉ノードならば、 NC(n,i)=TC(PN(n),i) とする。ここでPN(n)は、葉ノードnによって表され
るデータが割り付けられているPEの絶対PE番号であ
る。ノードnが内部ノードならば、 NC(n,i)=MINj(NC(LCHILD(n),j)+TC(j,i)) +MINk(NC(RCHILD(n),k)+TC(k,i)) とする。ここで、LCHILD(n),RCHILD(n)は、それぞ
れ、内部ノードnの左子ノードおよび右子ノードであ
り、また、MINj(),MINk()は、それぞれ、すべ
ての絶対PE番号j,kについての、括弧内の量の最小
値を表す。そして、その最小値を与える絶対PE番号
j,kを、それぞれ、左PE番号L(n,i),右PE番
号R(n,i)とする。図36(b)のノードコスト表81
0から814は、このようにして求められたものであ
る。
【0060】図35のステップ760で、ノードnの確
定PE番号を求める規則は、次の通りである。ノードn
がルートノードならば、NC(n,i)が最小であるよう
なPE番号iを確定PE番号とする。また、ルートノー
ドを含む全ての内部ノードnについて、その確定PE番
号がiに決定したら、その左右の子ノードの確定PE番
号を、それぞれ、左PE番号L(n,i),右PE番号R
(n,i)とする。図36(c)の確定PE番号3740,
3741は、このようにして求められたものである。
【0061】
【発明の効果】本発明のPE割り当て方法によれば、並
列計算機のPEに分散割り付けされたデータから構成さ
れる式の値を評価するときに、データ転送回数が最小に
なるようにすることができる。また、その結果として、
式の値を評価するのに要する時間が短縮され、実行性能
が向上する。
【0062】また、本発明PE割り当て方法を、並列化
コンパイラなどの並列化ツールに応用することにより、
実行効率の良い並列計算機用プログラムを作成すること
ができる。
【図面の簡単な説明】
【図1】PE割り当て処理のフローチャートである。
【図2】候補PEの集合を求める処理のフローチャート
である。
【図3】確定PEを求める処理のフローチャートであ
る。
【図4】並列計算機の構成例を示す図である。
【図5】配列の分散割り付けの例を示す図である。
【図6】式の木表現の例を示す図である。
【図7】候補PEの求め方の説明図である。
【図8】候補PEの例を示す図である。
【図9】確定PEの例を示す図である。
【図10】本発明の割り当てによる実行時タイムチャー
トである。
【図11】従来の割り当てによる実行時タイムチャート
である。
【図12】計算機内部でのノードの表現を示す図であ
る。
【図13】計算機内部での木の表現を示す図である。
【図14】計算機内部での候補PEの表現を示す図であ
る。
【図15】計算機内部での確定PEの表現を示す図であ
る。
【図16】PE割り当て装置を示す図である。
【図17】代入の扱いを示す図である。
【図18】並列化コンパイラの構成図である。
【図19】プログラム変換例を示す図である。
【図20】計算機内部でのノードの表現を示す図であ
る。
【図21】中間プログラム生成処理のフローチャートで
ある。
【図22】各ノードでの中間プログラム生成処理のフロ
ーチャートである。
【図23】中間プログラム生成の過程を示す図である。
【図24】PE用中間プログラムの例を示す図である。
【図25】演算の交換則の利用例を示す図である。
【図26】交換結合則を利用したPE割り当て処理のフ
ローチャートである。
【図27】ノードの併合の例を示す図である。
【図28】候補PEの集合を求める処理のフローチャー
トである。
【図29】ノードのグループ化の例を示す図である。
【図30】確定PEを求める処理のフローチャートであ
る。
【図31】ノードを分割する処理のフローチャートであ
る。
【図32】ノードの分割の例を示す図である。
【図33】スカラー変数の場合のPE割り当て例を示す
図である。
【図34】立方結合したPEを示す図である。
【図35】転送コストを考慮する場合のPE割り当て処
理のフローチャートである。
【図36】転送コストを考慮する場合のPE割り当て例
を示す図である。
【符号の説明】
100…ノードの候補PEの集合を求める処理、110
…ノードの確定PEを求める処理、200〜20n…P
E、210〜21n…ローカルメモリ、50…PE割り
当て装置、500…候補PE決定部、501…確定PE
決定部、51…並列化コンパイラ、60…ソースプログ
ラム、410…式の木表現、411…確定PE付きの式
の木表現、61…中間プログラム、62…PE用中間プ
ログラム。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 太田 寛 神奈川県川崎市麻生区王禅寺1099番地 株式会社 日立製作所 システム開発研 究所内 (72)発明者 迫田 行介 神奈川県川崎市麻生区王禅寺1099番地 株式会社 日立製作所 システム開発研 究所内 (72)発明者 斉藤 鉄郎 東京都小平市上水本町5丁目22番1号 株式会社日立マイコンシステム株式会社 内 (72)発明者 前田 栄一郎 茨城県日立市幸町3丁目2番2号 日立 ニュークリアエンジニアリング株式会社 内 (72)発明者 山本 俊之 東京都小平市上水本町5丁目22番1号 株式会社日立マイコンシステム内 (56)参考文献 「情報処理学会第40回(平成2年前 期)講演論文集」P.657−660 (58)調査した分野(Int.Cl.7,DB名) G06F 9/45 G06F 15/16

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】並列計算機に含まれる各プロセッサが有す
    る各々のメモリに分散して配置されたデータから構成さ
    れる式の中の演算を実行するプロセッサの割り当て方法
    において、データを葉ノード、演算子を内部ノードとす
    る木の形式で式を表現し、木をボトムアップにたどっ
    て、各内部ノードに、該内部ノードの演算に対して割り
    当てるプロセッサの候補(候補プロセッサ)の集合を決
    定する第1のステップと、木をトップダウンにたどっ
    て、該内部ノードの演算に対して割り当てるプロセッサ
    を決定する第2のステップを含むことを特徴とする、並
    列計算機におけるプロセッサ割り当て方法。
  2. 【請求項2】請求項1のプロセッサ割り当て方法におい
    て、前記候補プロセッサの集合を決定する第1のステッ
    プは、(1)葉ノードの候補プロセッサは、その葉ノー
    ドが表すデータが配置されたプロセッサとし、(2)内
    部ノードの候補プロセッサは、その内部ノードに対する
    子ノードの候補プロセッサの中で、最も多くの子ノード
    の候補プロセッサになっているもののすべてとすること
    を特徴とする、請求項1のプロセッサ割り当て方法。
  3. 【請求項3】請求項1のプロセッサ割り当て方法におい
    て、内部ノードの演算に対して割り当てるプロセッサを
    決定する第2のステップは、(1)該内部ノードがルー
    トノードの場合は、該内部ノードの候補プロセッサの集
    合から任意に選んだ1個のプロセッサを、該内部ノード
    に割り当てるプロセッサとし、(2)該内部ノードがル
    ートノードでなく、かつ、該内部ノードの候補プロセッ
    サの集合に、該内部ノードの親ノードに割り当てられた
    プロセッサが含まれている場合には、該親ノードに割り
    当てられたプロセッサを、該内部ノードに割り当てるプ
    ロセッサとし、(3)該内部ノードがルートノードでな
    く、かつ、該内部ノードの候補プロセッサの集合に、該
    内部ノードの親ノードに割り当てられたプロセッサが含
    まれていない場合には、該内部ノードの候補プロセッサ
    の集合から任意に選んだ1個のプロセッサを、該内部ノ
    ードに割り当てるプロセッサとすることを特徴とする、
    請求項1のプロセッサ割り当て方法。
  4. 【請求項4】請求項1のプロセッサ割り当て方法におい
    て、前記候補プロセッサの集合を決定する第1のステッ
    プは、(1)葉ノードの候補プロセッサは、その葉ノー
    ドが表すデータが配置されたプロセッサとし、(2)内
    部ノードの候補プロセッサは、その内部ノードに対する
    子ノードの候補プロセッサの中で、最も多くの子ノード
    の候補プロセッサになっているもののすべてとし、内部
    ノードの演算に対して割り当てるプロセッサを決定する
    第2のステップは、(3)該内部ノードがルートノード
    の場合は、該内部ノードの候補プロセッサの集合から任
    意に選んだ1個のプロセッサを、該内部ノードに割り当
    てるプロセッサとし、(4)該内部ノードがルートノー
    ドでなく、かつ、該内部ノードの候補プロセッサの集合
    に、該内部ノードの親ノードに割り当てられたプロセッ
    サが含まれている場合には、該親ノードに割り当てられ
    たプロセッサを、該内部ノードに割り当てるプロセッサ
    とし、(5)該内部ノードがルートノードでなく、か
    つ、該内部ノードの候補プロセッサの集合に、該内部ノ
    ードの親ノードに割り当てられたプロセッサ番号が含ま
    れていない場合には、該内部ノードの候補プロセッサの
    集合から任意に選んだ1個のプロセッサを、該内部ノー
    ドに割り当てるプロセッサとすることを特徴とする、請
    求項1のプロセッサ割り当て方法。
  5. 【請求項5】並列計算機に含まれる各プロセッサが有す
    る各々のメモリに分散して配置されたデータから構成さ
    れる式の中の演算を実行するプロセッサの割り当て方法
    において、データを葉ノード、演算子を内部ノードとす
    る木の形式で式を表現し、木をボトムアップにたどっ
    て、各内部ノードと各プロセッサとの組合せに対して、
    該内部ノードの演算を該プロセッサで実行したときの転
    送コストを決定する第1のステップと、木をトップダウ
    ンにたどって、前記転送コストの総和が少なくなるよう
    に該内部ノードの演算に対して割り当てるプロセッサを
    決定する第2のステップを含むことを特徴とする、並列
    計算機におけるプロセッサ割り当て方法。
  6. 【請求項6】並列計算機に含まれる各プロセッサが有す
    る各々のメモリに分散して配置されたデータから構成さ
    れる式の中の演算を実行するプロセッサの割り当て方法
    において、データを葉ノード,演算子を内部ノードとす
    る木の形式で式を表現し、実行順序が交換可能な複数の
    演算に対応する複数のノードを併合する第1のステップ
    と、木をボトムアップにたどって、各内部ノードに、該
    内部ノードの演算に対して割り当てるプロセッサの候補
    (候補プロセッサ)の集合を決定する第2のステップ
    と、木をトップダウンにたどって、該内部ノードの演算
    に対して割り当てるプロセッサを決定する第3のステッ
    プと、併合したノードを分解して新ノードを生成し、該
    新ノードの演算に対して割り当てるプロセッサを決定す
    る第4のステップを含むことを特徴とする、並列計算機
    におけるプロセッサ割り当て方法。
  7. 【請求項7】 並列計算機に含まれる各プロセッサが有す
    る各々のメモリに分散して配置されたデータから構成さ
    れる式の中の演算を実行するプロセッサの割り当て装置
    において、データを葉ノード,演算子を内部ノードとす
    る木の形式で式を表現し、木をボトムアップにたどっ
    て、各内部ノードに、該内部ノードの演算に対して割り
    当てるプロセッサの候補(候補プロセッサ)の集合を決
    定する第1の手段と、木をトップダウンにたどって、該
    内部ノードの演算に対して割り当てるプロセッサを決定
    する第2の手段を含むことを特徴とする、並列計算機に
    おけるプロセッサ割り当て装置。
JP3019749A 1991-02-13 1991-02-13 並列計算機におけるプロセッサ割り当て方法、及び装置 Expired - Lifetime JP3047998B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP3019749A JP3047998B2 (ja) 1991-02-13 1991-02-13 並列計算機におけるプロセッサ割り当て方法、及び装置
US07/830,673 US5485612A (en) 1991-02-13 1992-02-04 Method and apparatus for assigning processors in parallel computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3019749A JP3047998B2 (ja) 1991-02-13 1991-02-13 並列計算機におけるプロセッサ割り当て方法、及び装置

Publications (2)

Publication Number Publication Date
JPH04257928A JPH04257928A (ja) 1992-09-14
JP3047998B2 true JP3047998B2 (ja) 2000-06-05

Family

ID=12007994

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3019749A Expired - Lifetime JP3047998B2 (ja) 1991-02-13 1991-02-13 並列計算機におけるプロセッサ割り当て方法、及び装置

Country Status (2)

Country Link
US (1) US5485612A (ja)
JP (1) JP3047998B2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06266683A (ja) * 1993-03-12 1994-09-22 Toshiba Corp 並列処理装置
US6021274A (en) * 1996-12-19 2000-02-01 Raytheon Company Automated data distribution system and method for massively parallel processes
US5848404A (en) * 1997-03-24 1998-12-08 International Business Machines Corporation Fast query search in large dimension database
US6058265A (en) * 1997-10-21 2000-05-02 Hewlett Packard Company Enabling troubleshooting of subroutines with greatest execution time/input data set size relationship
GB9816301D0 (en) * 1998-07-28 1998-09-23 Int Computers Ltd Data processing apparatus and method
GB9816303D0 (en) * 1998-07-28 1998-09-23 Int Computers Ltd Data processing apparatus and method
US20040055001A1 (en) * 2002-09-16 2004-03-18 Islam Farhad Fuad Method and apparatus for computational load sharing in a multiprocessor architecture
JP4591226B2 (ja) * 2005-06-14 2010-12-01 コニカミノルタビジネステクノロジーズ株式会社 情報処理装置、ワークフロー制御プログラムおよびワークフロー制御方法
US8239844B2 (en) 2007-02-14 2012-08-07 The Mathworks, Inc. Method of using parallel processing constructs and dynamically allocating program portions
US8255889B2 (en) * 2007-02-14 2012-08-28 The Mathworks, Inc. Method of using parallel processing constructs and dynamically allocating program portions
US8239846B2 (en) * 2007-02-14 2012-08-07 The Mathworks, Inc. Device for performing parallel processing of distributed arrays
US8010954B2 (en) * 2007-02-14 2011-08-30 The Mathworks, Inc. Parallel programming interface to dynamically allocate program portions
US8239845B2 (en) * 2007-02-14 2012-08-07 The Mathworks, Inc. Media for using parallel processing constructs
US8250550B2 (en) * 2007-02-14 2012-08-21 The Mathworks, Inc. Parallel processing of distributed arrays and optimum data distribution
US8255890B2 (en) * 2007-02-14 2012-08-28 The Mathworks, Inc. Media for performing parallel processing of distributed arrays
US20100077384A1 (en) * 2008-09-23 2010-03-25 Microsoft Corporation Parallel processing of an expression
US8327345B2 (en) * 2008-12-16 2012-12-04 International Business Machines Corporation Computation table for block computation
US9104435B2 (en) * 2009-04-14 2015-08-11 Empire Technology Development Llc Program and data annotation for hardware customization and energy optimization
JP4621786B2 (ja) * 2009-04-28 2011-01-26 株式会社東芝 情報処理装置、並列処理最適化方法およびプログラム
JPWO2011096016A1 (ja) * 2010-02-05 2013-06-06 株式会社東芝 コンパイラ装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4344134A (en) * 1980-06-30 1982-08-10 Burroughs Corporation Partitionable parallel processor
US4843540A (en) * 1986-09-02 1989-06-27 The Trustees Of Columbia University In The City Of New York Parallel processing method
US4860201A (en) * 1986-09-02 1989-08-22 The Trustees Of Columbia University In The City Of New York Binary tree parallel processor
US4766534A (en) * 1986-10-16 1988-08-23 American Telephone And Telegraph Company, At&T Bell Laboratories Parallel processing network and method
US4845744A (en) * 1986-10-16 1989-07-04 American Telephone And Telegraph Company, At&T Bell Laboratories Method of overlaying virtual tree networks onto a message passing parallel processing network
US4910669A (en) * 1987-04-03 1990-03-20 At&T Bell Laboratories Binary tree multiprocessor

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
「情報処理学会第40回(平成2年前期)講演論文集」P.657−660

Also Published As

Publication number Publication date
JPH04257928A (ja) 1992-09-14
US5485612A (en) 1996-01-16

Similar Documents

Publication Publication Date Title
JP3047998B2 (ja) 並列計算機におけるプロセッサ割り当て方法、及び装置
US5293631A (en) Analysis and optimization of array variables in compiler for instruction level parallel processor
Marwedel A new synthesis algorithm for the MIMOLA software system
US5768594A (en) Methods and means for scheduling parallel processors
Kennedy et al. Automatic data layout for distributed-memory machines
EP2656208B1 (en) Agile communication operator
Pérez-Hurtado et al. P-Lingua in two steps: flexibility and efficiency
JP2669603B2 (ja) コンパイラにおけるコード生成方法及びコンパイラ
Fahringer Automatic performance prediction for parallel programs on massively parallel computers
Shterenlikht et al. Fortran 2008 coarrays
Fan et al. Graph algorithms: parallelization and scalability
JP2006024088A (ja) トランスレータプログラム、プログラム変換方法およびトランスレータ装置
Marzetta ZRAM: A library of parallel search algorithms and its use in enumeration and combinatorial optimization
Ejjaaouani et al. , a Programming Model to Decouple Performance from Algorithm in HPC Codes
Li PARALLEL PROCESSING OF COMBINATORIAL SEARCH PROBLEMS (DIVIDE-AND-CONQUER, BRANCH-AND-BOUND, LOGIC PROGRAMMING, DYNAMIC)
Kim Scheduling and allocation problems in high-level synthesis
Shimokawabe et al. A High-Productivity Framework for Adaptive Mesh Refinement on Multiple GPUs
Parsons et al. Generating parallel programs from skeleton based specifications
Hayashi Shape-based cost analysis of skeletal parallel programs
WO2011090032A1 (ja) 並列処理プログラム生成方法、並列処理プログラム生成プログラム、及び並列処理プログラム生成装置
Ramamoorthy et al. Compilation techniques for recognition of parallel processable tasks in arithmetic expressions
JPH07244647A (ja) 間接参照ループの並列化方法、並列化装置、並列実行方法および並列実行装置
Lossing et al. Automatic code generation of distributed parallel tasks
JP3233467B2 (ja) プログラム変換方法および装置
Chandy et al. Integrating task and data parallelism with the collective communication archetype

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20000208

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

Free format text: PAYMENT UNTIL: 20090324

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20090324

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20100324

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20110324

Year of fee payment: 11

EXPY Cancellation because of completion of term