JPH0844577A - データ分割方法及びマルチプロセッサシステム - Google Patents

データ分割方法及びマルチプロセッサシステム

Info

Publication number
JPH0844577A
JPH0844577A JP6174338A JP17433894A JPH0844577A JP H0844577 A JPH0844577 A JP H0844577A JP 6174338 A JP6174338 A JP 6174338A JP 17433894 A JP17433894 A JP 17433894A JP H0844577 A JPH0844577 A JP H0844577A
Authority
JP
Japan
Prior art keywords
access
variable
processors
task
processor
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
JP6174338A
Other languages
English (en)
Inventor
Tsuneo Nakanishi
恒夫 中西
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.)
SUMISHO ELECTRON KK
Original Assignee
SUMISHO ELECTRON KK
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 SUMISHO ELECTRON KK filed Critical SUMISHO ELECTRON KK
Priority to JP6174338A priority Critical patent/JPH0844577A/ja
Publication of JPH0844577A publication Critical patent/JPH0844577A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 マルチプロセッサシステムのデータ分割方法
及びマルチプロセッサシステムにおいて、変数にアクセ
スする時間を最小にし、またはプログラマが割り当てを
考える必要がない、一般的なデータ分割を提供すること
ができる。 【構成】 それぞれに割り当てられたタスクを行う複数
のプロセッサ2と、該複数のプロセッサに対応する複数
のメモリ3と、を備えたマルチプロセッサシステムにお
いて、該複数のメモリ3にデータを分割するデータ分割
方法が、該タスクと、該タスクにアクセスされる変数と
を対応づけるステップと、該変数に該タスクがアクセス
するときのアクセスの種別を決定するステップと、該変
数に該タスクがアクセスするときのアクセスコストを決
定するステップと、アクセスコストが最大であるタスク
を行うプロセッサに対応するメモリに、該変数を割り当
てるステップと、を包含している。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、マルチプロセッサシス
テムのデータ分割方法及びマルチプロセッサシステムに
関する。更に詳細にいえば、並列または分散環境上に分
散された複数のメモリ(記憶装置)をもつマルチプロセ
ッサシステムのデータ分割方法、及び並列または分散環
境上に分散された複数のメモリをもつマルチプロセッサ
システムに関するものである。
【0002】
【従来の技術】密結合型マルチプロセッサ(共有メモリ
型マルチプロセッサ)システムは、その共有メモリの配
置形式により、集中共有型と分散共有型の2種類に大別
される。近年、ハードウェア実装技術が進歩するにした
がい、一つのマルチプロセッサシステムに、数千〜数万
個のプロセッサが実装されるようになりつつある。この
ように非常に多くのプロセッサを有する超並列計算機の
共有メモリシステムは、メモリ上での競合回避などを考
えれば、分散共有型とするのが好ましい。
【0003】分散共有型マルチプロセッサシステムで
は、各プロセッサに対してローカルに配置された共有メ
モリへのアクセスは、充分短い時間で行うことができ
る。いっぽう、リモートに配置された共有メモリへのア
クセスは、相互結合網を通らなければならないので、少
なくともアクセスに伴うオーバヘッド(むだ時間)だ
け、余分に時間がかかる。各プロセッサに割り当てられ
たタスクが、変数(以下、「変数」は、スカラ変数また
は配列変数を示す)にアクセスする仕方に局所性がある
場合、各プロセッサに割り当てられたタスクによってア
クセスされる変数を、対応するローカルメモリ内に配置
すれば、プロセッサ間のアクセスを抑えることができ
る。すなわち各プロセッサは、最小のオーバヘッドでア
クセスを行うことができる。したがってデータ分割の方
法は、システムで用いる変数のアクセス時間に大きな影
響を与え、ひいてはシステム全体の演算速度をも大きく
左右し得る。以下において「データ分割」という場合、
複数の変数を分割し、各変数を各メモリに割り当てるこ
とをいう。また「分割パターン」とは、複数の変数を分
割して、各メモリに割り当てるときの、変数とメモリと
の対応関係をいう。
【0004】最適な変数割り当て(最適な割り当てが事
実上不可能または困難な場合は、準最適な割り当て)
は、オーバヘッドを削減し、アクセス時間の短縮に大き
く貢献する。例えば数値計算において配列要素の割り当
てを行う場合、プログラマが問題ごとに最適な分割パタ
ーンを求め、コード上に指示を書き込むことによって、
変数の割り当てについての情報をコンパイラに与えると
いうアプローチが従来から考えられている。この方法に
ついては、例えば、S.Hiranandani, K.Kennedy,C.Koelb
el, U.Kremer and C.W.Tseng: "An Overview of the Fo
rtran D Programming System", Proc. 4th Workshop on
Language and Compilers for ParallelComputing, Au
g. 1991. に詳細が述べられている。この方法は、充分
に最適化された分割パターンを実現し得る。
【0005】いっぽう、データ分割を自動的に行う手法
もある。配列変数を分割する場合を考える。例えば、図
12に代表される配列の分割パターンを複数用意し、そ
の中から最もよい(最もアクセス速度が早い)分割パタ
ーンを選択するという手法がある。図12の各部に付け
られた記号B1〜B4は、変数が割り当てられるメモリ
に対応するプロセッサを表現している。図12は、4つ
のプロセッサに対応するメモリに、変数(配列要素)が
分割されている(割り当てられている)状態を示してい
る。
【0006】自動並列化コンパイラなどにおいて、スケ
ジューリングやプロセッサ割り当てなどの問題を取り扱
う際、タスクグラフと呼ばれるグラフ構造(例えば M.G
irkar and C.D.Polychronopoulos: "Automatic Extract
ion of Functional Parallelism from Ordinary Progra
ms" IEEE Trans. on Parallel and Distributed System
s, Vol.3, No.2, pp.166-178, Mar.1992 を参照された
い)がよく利用される。その多くは、タスクを節点で表
現し、タスク間のデータの依存関係や制御の依存関係を
有向枝で表現したものである。したがってタスクの実行
可能条件の導出や、アクセスコスト(タスクが変数にア
クセスするときに必要な時間を表現する量で、通信コス
トともいう)があまり問題とならない場合のスケージュ
リングは、従来のタスクグラフによって十分対応でき
る。このようなアプローチをとる場合、データ分割をど
のように行うかは、考慮されないことが多い。
【0007】
【発明が解決しようとする課題】しかしながら、上述の
従来技術においては、次に示す問題があった。
【0008】プログラマが問題ごとに最適な分割パター
ンを求め、コンパイラに指示する方法では、ソースコー
ド中に指示するためのコードが必要であり、これはプロ
グラマの負担になる。またよい分割パターンを探す作業
も、プログラマにとっては大きな負担である。とりわけ
最適な分割パターンを手作業で求めることしばしば不可
能である。
【0009】データの分割を自動的に行う従来の手法
は、簡単ではあるが、最適な分割パターンを得るには不
適当である。なぜなら、自動的に分割を行う場合に用い
られる分割パターンは、比較的単純なパターンがいくつ
かあるだけで、この限られたパターンの中から最適な分
割パターンが見つかる可能性は、非常に小さいからであ
る。
【0010】また従来のタスクグラフには、依存関係の
もととなる変数(スカラ変数及び配列変数)そのものは
表現されていなかった。そのため、プロセッサ間のアク
セスが頻繁に発生するマルチプロセッサシステムにおい
て、従来のタスクグラフによるデータ分割方法では、効
率的な割り当てができない。
【0011】本発明は、上記課題を解決するためになさ
れたものであり、その目的とするところは、それぞれの
問題に依存したデータ分割を行うのではなく、一般的か
つ一元的なデータ分割を行う方法、及び最適にデータ分
割されたマルチプロセッサシステムを提供することにあ
る。
【0012】
【課題を解決するための手段】本発明によるデータ分割
方法は、それぞれに割り当てられたタスクを行う複数の
プロセッサと、該複数のプロセッサに対応する複数のメ
モリと、を備えたマルチプロセッサシステムにおいて、
該複数のメモリにデータを分割するデータ分割方法であ
って、該タスクと、該タスクにアクセスされる変数とを
対応づけるステップと、該変数に該タスクがアクセスす
るときのアクセスの種別を決定するステップと、該変数
に該タスクがアクセスするときのアクセスコストを決定
するステップと、アクセスコストが最大であるタスクを
行うプロセッサに対応するメモリに、該変数を割り当て
るステップと、を包含しており、そのことにより上記目
的が達成される。
【0013】前記アクセスコストが、アクセスコスト=
(変数のサイズ)×(変数へのアクセス回数)なる式で
決定されていてもよい。
【0014】本発明によるデータ分割方法は、それぞれ
に割り当てられたタスクを行う複数のプロセッサと、該
複数のプロセッサに対応する複数のメモリと、を備えた
マルチプロセッサシステムにおいて、該複数のメモリに
データを分割するデータ分割方法であって、該タスク
と、該タスクにアクセスされる変数と、該複数のプロセ
ッサとの関係を規定するデータ分割グラフ構造を決定す
るステップと、該構造に基づいて該変数を該複数のメモ
リのそれぞれに割り当てるステップと、を包含してお
り、そのことにより上記目的が達成される。
【0015】前記構造に基づいて該変数を該複数のメモ
リのそれぞれに割り当てるステップは、異なるプロセッ
サに割り当てられた複数のタスクにアクセスされる変数
を、該異なるプロセッサから選択された一つのプロセッ
サに対応するメモリに割り当てるサブステップを含んで
いてもよい。
【0016】前記サブステップは、前記変数を、アクセ
スコストが最大であるタスクを行うプロセッサに対応す
るメモリに割り当てるサブステップであってもよい。
【0017】前記アクセスコストは、アクセスコスト=
f(アクセス量n、アクセス生起確率p、コスト係数
α)なる式で表現されていてもよい。
【0018】前記アクセスコストは、アクセスコスト=
(該変数の大きさ)×(該プロセッサとのアクセス回
数)なる式で表現されていてもよい。
【0019】前記構造をグラフとして視覚的に表現する
ステップを包含していてもよい。
【0020】本発明によるマルチプロセッサシステム
は、それぞれに割り当てられたタスクを行う複数のプロ
セッサと、該複数のプロセッサに対応する複数のメモリ
と、を備えたマルチプロセッサシステムであって、該複
数のプロセッサに割り当てられたタスクにアクセスされ
る変数は、アクセスコストが最大であるタスクを行うプ
ロセッサに対応するメモリに割り当てられており、その
ことにより上記目的が達成される。
【0021】前記アクセスコストが、アクセスコスト=
f(アクセス量n、アクセス生起確率p、コスト係数
α)なる式で表現されていてもよい。
【0022】前記アクセスコストが、アクセスコスト=
(該変数の大きさ)×(該プロセッサとのアクセス回
数)で表現されていてもよい。
【0023】本発明によるマルチプロセッサシステム
は、それぞれに割り当てられたタスクを行う複数のプロ
セッサと、該複数のプロセッサに対応する複数のメモリ
と、を備えたマルチプロセッサシステムであって、異な
るプロセッサに割り当てられた複数のタスクにアクセス
される変数を、該異なるプロセッサから選択された一つ
のプロセッサに対応するメモリに割り当てられており、
そのことにより上記目的が達成される。
【0024】本発明によるマルチプロセッサシステム
は、それぞれに割り当てられたタスクを行う複数のプロ
セッサと、該複数のプロセッサに対応する複数のメモリ
と、を備えたマルチプロセッサシステムであって、i番
目(1≦i≦N)のプロセッサに割り当てられたタスク
のみにアクセスされる変数は、該i番目のプロセッサに
対応するメモリに割り当てられ、j番目(1≦j≦N)
のプロセッサに割り当てられたタスク、及びk番目(1
≦k≦N、k≠j)のプロセッサに割り当てられたタス
クの両方にのみアクセスされる変数は、該j番目及びk
番目のプロセッサから選択された一方のプロセッサに対
応するメモリに割り当てられており、そのことにより、
上記目的が達成される。
【0025】前記変数は、前記j番目及び前記k番目の
プロセッサのうち、アクセスコストが大きいほうのプロ
セッサに対応するメモリに割り当てられていてもよい。
【0026】
【作用】本発明の方法によれば、それぞれに割り当てら
れたタスクを行う複数のプロセッサと、複数のプロセッ
サに対応する複数のメモリと、を備えているマルチプロ
セッサシステムにおいて、複数のメモリにデータを分割
するときに、まず、タスクと、タスクにアクセスされる
変数とを対応づける。次に、変数にタスクがアクセスす
るときのアクセスの種別、及び変数にタスクがアクセス
するときのアクセスコストを決定する。このアクセスコ
ストが最大であるタスクを行うプロセッサに対応するメ
モリに、変数は割り当てられる。アクセスコストを、ア
クセスコスト=(変数のサイズ)×(変数へのアクセス
回数)なる式によって求めることもできる。このように
すれば、アクセスコストが一義的に決定され、種々の場
合にも統一的にデータ分割を行うことができる。
【0027】本発明によれば、一つまたは二つのタスク
にのみアクセスされる変数は、そのタスクが割り当てら
れているプロセッサに対応するメモリに割り当てられ
る。その結果、タスクにアクセスされる変数は、そのタ
スクを行わないプロセッサに対応するメモリに割り当て
られることはない。こうして、最適な(場合によっては
準最適な)メモリ割り当てを行うことができる。
【0028】タスクにアクセスされる変数は、アクセス
コストが最大であるタスクを行うプロセッサに対応する
メモリに割り当てられる。変数が、アクセスコスト=f
(アクセス量n、アクセス生起確率p、コスト係数α)
なる式で表現されるアクセスコストが最大であるタスク
を行うプロセッサに対応するメモリに割り当てられる
と、システムの構成を反映させた、より厳密な最適化が
行える。
【0029】アクセスコスト=(変数の大きさ)×(プ
ロセッサとのアクセス回数)なる式でアクセスコストを
表現すれば、アクセスコストの算出は、簡易でありなが
らもデータ分割の最適化(または準最適化)を図ること
ができる。
【0030】タスクと、タスクにアクセスされる変数
と、複数のプロセッサとの関係を規定する構造が、グラ
フとして視覚的に表現され得ると、関係を規定する構造
を容易に把握できる。
【0031】本発明のマルチプロセッサシステムは、そ
れぞれに割り当てられたタスクを行う複数のプロセッサ
と、複数のプロセッサに対応する複数のメモリと、を備
えている。複数のプロセッサに割り当てられたタスクに
アクセスされる変数は、アクセスコストが最大であるタ
スクを行うプロセッサに対応するメモリに割り当てられ
る。つまり、データのサイズが大きく、頻繁にアクセス
される変数が、アクセスする時間の充分小さいプロセッ
サに対応するメモリに割り当てられる。例えば、タスク
TAが、変数Xに対し、アクセスコスト10のアクセス
を行い、タスクTBが、変数Xに対し、アクセスコスト
が100のアクセスを行う場合を例に挙げる。このと
き、二つのタスクTA、TBを行うプロセッサにそれぞ
れ対応するメモリMA、MBに変数Xを割り当てる問題
を考える。一般に、あるプロセッサとそのプロセッサに
対応するメモリとの間のアクセスに要する時間は、プロ
セッサ間での通信を伴う場合のアクセス時間に比較し
て、非常に短い。「プロセッサ間での通信」とは、ある
タスクを行うプロセッサが、それと対応しないメモリに
割り当てられた変数にアクセスするときに、相互結合網
を介して、プロセッサどうしで行う通信のことをいう。
メモリMAに変数Xを割り当てると、タスクTBは、ア
クセスコストが100のアクセスを、プロセッサ間通信
によって行うことになる。メモリMBに変数Xを割り当
てると、プロセッサ間通信によるアクセスは、アクセス
コストが10になる。プロセッサ間通信に時間がかかる
ことを考えると、プロセッサ通信によるアクセスは、ア
クセスコストが小さいほどよい。つまり、変数を、それ
にアクセスするアクセスコストが最大であるタスクを行
うプロセッサに対応するメモリに割り当てることによっ
て、アクセスに要する時間を短縮できる。
【0032】本発明のマルチプロセッサシステムにおい
て、以下のように変数をメモリに割り当てることもでき
る。すなわち、異なるプロセッサに割り当てられた複数
のタスクにアクセスされる変数を、これらの異なるプロ
セッサから選択された一つのプロセッサに対応するメモ
リに割り当てる。もし、全く恣意的に、変数をメモリに
割り当てるならば、その変数をアクセスしないタスクを
行うプロセッサに対応するメモリにその変数を割り当て
る可能性がある。しかし本発明のマルチプロセッサシス
テムにおいては、そのような割り当ての可能性を排除で
きるのでアクセス時間が短縮される。
【0033】
【実施例】以下に、本発明を実施例について説明する。
【0034】まず、本発明のマルチプロセッサシステム
のアーキテクチャ及び本発明のデータ分割方法が対象と
するシステムのアーキテクチャを図1(a)〜(d)に
示す。各プロセッサ2は、相互結合網1を介して、他の
プロセッサとデータのやりとりを行うことができる。図
1(a)及び(b)においては、各プロセッサ2に、対
応するメモリ3が直接接続されている。図1(c)、
(d)においては、各プロセッサ2は、1次キャッシュ
メモリ4を介して対応するメモリ3に接続されている。
図1(d)においては、1次キャッシュメモリ4と相互
結合網1との間に2次キャッシュメモリ5が設けられて
いる。
【0035】各タスクは、各プロセッサに割り当てられ
る。あるプロセッサが行うタスクにアクセスされる変数
が、そのプロセッサに対応するメモリに割り当てられる
と、そのプロセッサは、直接、または1次キャッシュメ
モリを介してメモリ3にアクセスする。いっぽうプロセ
ッサが行うタスクにアクセスされる変数が、そのプロセ
ッサに対応するメモリ以外のメモリに割り当てられる
と、そのプロセッサは相互結合網1を経由してメモリに
アクセスしなければならない。
【0036】相互結合網1を介したメモリアクセスは、
相互結合網1を介さないメモリアクセスに比べてアクセ
スに時間がかかる。したがってアクセスに要する時間を
小さくするためには、相互結合網1を介するアクセスを
避けるようにデータを分割することが重要である。
【0037】本発明によって変数を各メモリに割り当て
る際には、データ分割グラフ(datapartitioning grap
h、以下「DPG」と略記する)を用いることができ
る。DPGは、プログラム中の変数を、複数のタスクか
らどのようにアクセスされるか(以下「アクセスパター
ン」という)によってグループに分け、その各グループ
を一つの節点のかたちで、従来のタスクグラフ中に表現
するものである。その結果、DPGには、C−nod
e、D−nodeと呼ばれる2種類の節点が存在する。
【0038】C−nodeは、従来のタスクグラフにお
ける節点と同じもので、プログラム中のタスクを表現す
る。細粒度の割り当てを行うなら、C−nodeは、例
えば代入文を表す。中粒度の割り当てを行うなら、C−
nodeは、例えばループイタレーションを表現する。
【0039】D−nodeは、同一のアクセスパターン
をもつプログラム中の変数を表現する。DPGでは、各
タスクの各変数へのアクセスの種別をN、R、W、RW
の4種類の記号で表現する。「N」は、そのタスクがそ
の変数に読み出しも書き込みもしないことを表す。
「R」、「W」、「RW」は、それぞれ読み出し(Re
ad)だけを行うこと、書き込み(Write)だけを
行うこと、読み出し及び書き込み(Read/Writ
e)の両方を行うことを意味する。例えば、変数A、
B、及びCが、次の表1のようなアクセスパターンをも
つとする。
【0040】
【表1】
【0041】この場合、A及びCは同じアクセスパター
ンをもつので、同一のD−nodeで表現される。B
は、A及びCとは異なるアクセスパターンをもつので、
別のD−nodeで表現される。なお本明細書のグラフ
では、C−nodeを円形の節点で、D−nodeを方
形の節点で表すことにする。
【0042】DPGでは、C−nodeからC−nod
eに、C−nodeからD−nodeに、及びD−no
deからC−nodeに有向枝が張られる。C−nod
e間の有向枝は、従来のタスクグラフと同様に制御依存
を表す。C−nodeからD−nodeへ張られる有向
枝、及びD−nodeからC−nodeへ張られる有向
枝は、それぞれ、変数への書き込み及び変数からの読み
出しを表す。C−nodeに対応するタスクが、D−n
odeに含まれる変数へ書き込みを行う場合(すなわち
C−nodeのD−nodeに対するアクセスが、Wま
たはRWの場合)、C−nodeからD−nodeに有
向枝を張る。いっぽう、C−nodeに対応するタスク
がD−nodeに含まれる変数から読み出しを行う場合
(すなわちC−nodeのD−nodeに対するアクセ
スがRまたはRWの場合)、D−nodeからC−no
deに有向枝を張る。C−nodeとD−nodeとの
間の有向枝には、アクセスコストが属性として付与され
る。
【0043】このDPGに基づくデータ分割は、次のよ
うなフロー(図6を参照)にしたがって行うことができ
る。
【0044】(1)タスクグラフの生成: タスクグラフ
は、並列化コンパイラにより既存のアルゴリズムにした
がって生成され得る。ここでいうタスクグラフとは、タ
スクを節点で表し、データ依存関係、制御依存関係を有
向枝(矢印)で表したものとする。タスクグラフの一例
を図2に示す。図2において、節点STARTは、プロ
グラムの開始点を、節点STOPは、プログラムの終了
点を示す。節点C1〜C8は、C−nodeを表す。実
線の有向枝、破線の有向枝は、それぞれ、データ依存関
係、制御依存関係を表現している。また有向枝に付けら
れた添え字(1−2、1−5など)は、制御依存関係を
表す。例えば「x−y」という添え字は、節点xからS
TOPへ向かう全てのパスが節点yを含む、すなわちx
からSTOPへ向かう場合yを通らざるを得ないことを
示す。
【0045】(2)D−nodeの生成: アクセスする
タスクと、アクセスパターンによってプログラム中の変
数を、クラス分けする。例えば、変数a、b、…、f
が、タスク1、2、…、8から、次の表2に示すような
アクセスを受けるものとする。ここでaとe、cとf
は、同じアクセスのパターンを有するため、この例では
A={a、e}、B={b}、C={c、f}、D=
{d}の4つの、グループ化された変数の集まり(以下
「変数群」という)が生成される。この各変数群をデー
タ分割グラフ上ではD−nodeとして表現する。以下
の表においては見やすくするために、アクセスの種別の
うちNを「−」で記している。
【0046】
【表2】
【0047】(3)D−node/C−node間の有向
枝の生成: C−nodeに相当するタスクが、D−n
odeに相当する変数群に、Readアクセスする(読
み込む)場合は、D−nodeからC−nodeに有向
枝を引き、Writeアクセスする(書き込む)場合
は、C−nodeからD−nodeに有向枝を引く。
【0048】(4)アクセスコストの算出: 各アクセス
(データ分割グラフ上では、D−node/C−nod
e間の有向枝として表される)に伴うアクセスコストを
算出し、該当する有向枝の属性として付与する。各変数
群のアクセスコストは、例えば、次式で算出される。
【0049】アクセスコスト=(変数のサイズ)×(変
数へのアクセス回数) また、アクセスコストは、より一般的な表現として、ア
クセス量、アクセス生起確率、及びコスト係数の関数と
しても表現され得る。
【0050】アクセスコスト=f(n、p、α) ここで、n:アクセス量、p:アクセス生起確率、α:
コスト係数である。コスト係数αは、システム構成(キ
ャッシュメモリの有無など)やアクセス種別(Read
かWriteかなどの種別)などによって決定される係
数である。D−nodeとC−node間の有向枝に付
与されるアクセスコストは、D−nodeの表す変数群
に含まれる各変数への、各々のアクセスコストを総和し
たものである。
【0051】ここでは、先の例において、変数a、b、
…、fのアクセスコストが次の表3に示すように得られ
たものとする。
【0052】
【表3】
【0053】したがって、D−node A、B、…、
Dと、C−node 1、2、…、8間の有向枝に付与
される、アクセスコストは、次の表4のようになる。
【0054】
【表4】
【0055】以上のステップによって、DPGが生成さ
れる。この例において生成されたDPGを図3に示す。
図3において、節点A〜Dは、D−nodeを示し、実
線の有向枝に付けられた数値は、アクセスコストを示
す。
【0056】(5)プロセッサ割り当て: タスク(C−
nodeに相当する)にプロセッサを割り当てる。割り
当てられたプロセッサが、そのタスクを実行する。この
プロセッサ割り当ては、既存のアルゴリズムによって行
う。
【0057】先の例においては、各タスクを3個のプロ
セッサP1〜P3に割り当てた後の状態を図4に示す。
図4において、網かけされた複数のタスクは、同一のプ
ロセッサに割り当てられることを示す。
【0058】(6)データ分割: 変数(D−nodeに
相当する)の、プロセッサへの割り当て、すなわちデー
タ分割を行う。DPG上でのデータ分割は、D−nod
eをグルーピングすることにより行う。D−nodeを
グルーピングする際は、D−node/C−node間
の有向枝に属性として付与されたアクセスコストに注目
する。アクセスコストが最も大きい有向枝をグループ内
に含ませることにより、その変数に対するアクセスによ
るコストを最小にすることが可能になる。
【0059】先の例におけるデータ分割の例を示す。D
−node B、Dに該当する変数は、それぞれプロセ
ッサ2、3からしかアクセスされないため、それぞれプ
ロセッサ2、3に割り当てる。いっぽう、Aに該当する
変数は、それぞれタスク2からアクセスコスト20、タ
スク3からトータルアクセスコスト40のアクセスを受
けている。この場合、二つのアクセスコストのうち大き
いほうであるアクセスコスト40のアクセスを防ぐべ
く、Aをプロセッサ2に割り当てる。同様の考えかた
で、Cに該当する変数は、プロセッサ1に割り当てる。
このときの割り当ての図を図5に示す。図5において、
網かけされたD−nodeは、同一のプロセッサに対応
するメモリに割り当てられることを示す。
【0060】上記(6)においては、アクセスコストを考
慮して、データ分割を最適化している。分割が、必ずし
も最適化されなくてもよいなら、(6)のデータ分割には
以下に示す他の方法もある。また、あるプロセッサに割
り当てられたタスクのみにアクセスされる変数は、その
プロセッサに対応するメモリに割り当て、ある複数のプ
ロセッサに割り当てられたタスクにアクセスされる変数
は、それら複数のプロセッサのうちから選択されたプロ
セッサに対応するメモリに割り当ててもよい。
【0061】本発明の他の実施例として、2×2行列の
積を求めるプログラムのDPGを作成する。まずプログ
ラムのリストを下記に示す。
【0062】 begin for i := 1 to 2 do for j := 1 to 2 do begin c[i][j] := 0; for k := 1 to 2 do c[i][j] := c[i][j] + a[i][j] * b[i][j]; end end. このプログラムのループを下記のように、既存手法によ
って展開した。
【0063】 1: c[1][1] := 0; 2: c[1][1] := c[1][1] + a[1][1] * b[1][1]; 3: c[1][1] := c[1][1] + a[1][2] * b[2][1]; 4: c[1][2] := 0; 5: c[1][2] := c[1][2] + a[1][1] * b[1][2]; 6: c[1][2] := c[1][2] + a[1][2] * b[2][2]; 7: c[2][1] := 0; 8: c[2][1] := c[2][1] + a[2][1] * b[1][1]; 9: c[2][1] := c[2][1] + a[2][2] * b[2][1]; 10: c[2][2] := 0; 11: c[2][2] := c[2][2] + a[2][1] * b[1][2]; 12: c[2][2] := c[2][2] + a[2][2] * b[2][2]; 展開した各文を一つのタスクとし、DPGを求めると図
7のようになる。図7において、C11〜C22は、C
−nodeを示し、方形(a[1][1]など)は、D−no
deを示す。また矢印は、データ依存関係を表す。
【0064】DPGにおいては、データ分割は、C−n
ode及びD−nodeを、p個の各プロセッサに割り
当てる問題となる。言い換えれば、節点をp色に塗り分
ける問題である。隣接するC−nodeとD−node
が同色であるなら、各々が表すタスクと変数が同じプロ
セッサに割り当てられることを意味し、これはその変数
に対するタスクからのアクセスが充分速い速度で行われ
る(アクセスが隠ぺいされる)ことを意味する。したが
って変数割り当てのときには、隣接するC−nodeと
D−nodeとは、できる限り同じ色になるようにし、
またD−nodeに塗る色が複数考えられる場合は、そ
のD−nodeに接続されている有向枝のうち、最もア
クセスコストの大きい有向枝につながるC−nodeと
同じ色になるように塗るのが望ましい。
【0065】ここでは、プロセッサが2つある場合及び
4つある場合のデータ分割を考える。システムは、2つ
のプロセッサと2つのメモリバンクを相互結合したも
の、及び4つのプロセッサと4つのメモリバンクを相互
結合したものを考える。図7中のD−nodeが示す変
数のサイズは全て等しく、またD−nodeにつながる
有向枝が表すアクセスは必ず生起する。よって、各有向
枝に付与されるアクセスコストは全て等しいと考えてよ
い。タスク3n+1はタスク3nに、タスク3n+2は
タスク3n+1にフロー依存している(ただしnは自然
数)ため、タスク3n、3n+1、3n+2は、まとめ
て一つのプロセッサに割り当てるのがよい。このタスク
割り当てに応じて、D−nodeを各プロセッサに割り
当てたものが、図8、図9である。図8、図9において
同じ種類の網かけは、同じ色を表すとする。ここでは、
有向枝のアクセスコストは全て同じ大きさになるため、
D−nodeに塗れる色が複数あるときは、その中の任
意の一色を選択することができる。つまりアクセスコス
トを考慮しない場合、複数のプロセッサに割り当てられ
た複数のタスクにアクセスされる変数は、複数のプロセ
ッサのうちの任意のプロセッサに対応するメモリに割り
当てればよい。こうすることにより、その変数をアクセ
スしないタスクを割り当てているプロセッサに対応する
メモリに、その変数を割り当てるよりは、アクセスの時
間が短縮される。
【0066】図8、図9のDPGより、変数(配列の各
要素)は、図10、図11のように分割すればよいこと
がわかる。図10、図11において、4分割された方形
は、配列変数を表す。p=2の場合の配列 a[][] の分
割と、p=4の場合の配列 b[][]、c[][]の分割に関し
ては、図10、図11の分割と同等な効果の分割方法が
他にもいくつか考えられる。
【0067】本発明のマルチプロセッサシステムにおい
ては、上記の方法を用いて分割されたデータは、例えば
図1のメモリ3に割り当てられる。
【0068】本発明のデータ分割方法を用いて、並列化
コンパイラ上でデータ分割を行うことも可能である。特
に、使用されるプロセッサの数が多い、大規模なシステ
ムにおけるデータ分割には、並列化コンパイラが非常に
有用な手段となる。
【0069】
【発明の効果】本発明のデータ分割方法によれば、変数
を、アクセスコストが最大であるタスクを行うプロセッ
サに対応するメモリに割り当てるので、変数にアクセス
する時間を最小にできる。またタスクと変数との関係を
規定する構造を決定し、この構造に基づいて変数を複数
のメモリに割り当てるので、プログラマが割り当てを考
える必要がなく、一般的なデータ分割方法を提供するこ
とができる。
【0070】また複数のプロセッサに割り当てられた複
数のタスクにアクセスされる変数は、それら複数のプロ
セッサのうちの一つのプロセッサに対応するメモリに割
り当てられるので、恣意的に割り当てられる場合より
は、アクセスする時間を短くできる。
【0071】またアクセスコストを、アクセスコスト=
(変数の大きさ)×(プロセッサとのアクセス回数)と
いう式で表現するので、アクセスコストを算出するのが
簡易でありながら、アクセスする時間が最適化(もしく
は準最適化)される。
【0072】複数のタスクと変数との関係を規定する構
造を、グラフとして視覚的に表現するので、タスクと変
数との関係を目で見て容易に理解できる。
【図面の簡単な説明】
【図1】(a)から(d)は、本発明のマルチプロセッ
サシステムのアーキテクチャ及び本発明のデータ分割方
法が対象とするシステムのアーキテクチャを示す図であ
る。
【図2】タスクグラフを示す図である。
【図3】DPG(データ分割グラフ)を示す図である。
【図4】プロセッサ割り当てを行ったDPGを示す図で
ある。
【図5】本発明のデータ分割方法を行ったDPGを示す
図である。
【図6】本発明のデータ分割方法のフローチャートを示
す図である。
【図7】DPG(データ分割グラフ)を示す図である。
【図8】プロセッサ割り当てを行った後のDPG(プロ
セッサが2つの場合)を示す図である。
【図9】プロセッサ割り当てを行った後のDPG(プロ
セッサが4つの場合)を示す図である。
【図10】本発明のデータ分割方法によるデータ分割
(プロセッサが2つの場合)を示す図である。
【図11】本発明のデータ分割方法によるデータ分割
(プロセッサが4つの場合)を示す図である。
【図12】従来の、配列の分割を自動的に行う場合の分
割パターンを示す図である。
【符号の説明】
1 相互結合網 2 プロセッサ 3 メモリ 4 1次キャッシャメモリ 5 2次キャッシュメモリ

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 それぞれに割り当てられたタスクを行う
    複数のプロセッサと、該複数のプロセッサに対応する複
    数のメモリと、を備えたマルチプロセッサシステムにお
    いて、該複数のメモリにデータを分割するデータ分割方
    法であって、(a)該タスクと、該タスクにアクセスさ
    れる変数とを対応づけるステップと、(b)該変数に該
    タスクがアクセスするときのアクセスの種別を決定する
    ステップと、(c)該変数に該タスクがアクセスすると
    きのアクセスコストを決定するステップと、(d)アク
    セスコストが最大であるタスクを行うプロセッサに対応
    するメモリに、該変数を割り当てるステップと、を包含
    するデータ分割方法。
  2. 【請求項2】 前記アクセスコストが、アクセスコスト
    =(変数のサイズ)×(変数へのアクセス回数)なる式
    で決定される請求項1に記載のデータ分割方法。
  3. 【請求項3】 それぞれに割り当てられたタスクを行う
    複数のプロセッサと、該複数のプロセッサに対応する複
    数のメモリと、を備えたマルチプロセッサシステムにお
    いて、該複数のメモリにデータを分割するデータ分割方
    法であって、(a)該タスクと、該タスクにアクセスさ
    れる変数と、該複数のプロセッサとの関係を規定するデ
    ータ分割グラフ構造を決定するステップと、(b)該構
    造に基づいて該変数を該複数のメモリのそれぞれに割り
    当てるステップと、を包含するデータ分割方法。
  4. 【請求項4】 前記構造に基づいて該変数を該複数のメ
    モリのそれぞれに割り当てるステップは、 異なるプロセッサに割り当てられた複数のタスクにアク
    セスされる変数を、該異なるプロセッサから選択された
    一つのプロセッサに対応するメモリに割り当てるサブス
    テップを含む請求項3に記載のデータ分割方法。
  5. 【請求項5】 前記サブステップは、 前記変数を、アクセスコストが最大であるタスクを行う
    プロセッサに対応するメモリに割り当てるサブステップ
    である請求項4に記載のデータ分割方法。
  6. 【請求項6】 前記アクセスコストは、 アクセスコスト=f(アクセス量n、アクセス生起確率
    p、コスト係数α) なる式で表現される請求項5に記載のマルチプロセッサ
    システム。
  7. 【請求項7】 前記アクセスコストは、アクセスコスト
    =(該変数の大きさ)×(該プロセッサとのアクセス回
    数)なる式で表現される請求項5に記載のデータ分割方
    法。
  8. 【請求項8】 前記構造をグラフとして視覚的に表現す
    るステップを包含する請求項3に記載のデータ分割方
    法。
  9. 【請求項9】 それぞれに割り当てられたタスクを行う
    複数のプロセッサと、該複数のプロセッサに対応する複
    数のメモリと、を備えたマルチプロセッサシステムであ
    って、 該複数のプロセッサに割り当てられたタスクにアクセス
    される変数は、アクセスコストが最大であるタスクを行
    うプロセッサに対応するメモリに割り当てられるマルチ
    プロセッサシステム。
  10. 【請求項10】 前記アクセスコストが、 アクセスコスト=f(アクセス量n、アクセス生起確率
    p、コスト係数α) なる式で表現される請求項9に記載のマルチプロセッサ
    システム。
  11. 【請求項11】 前記アクセスコストが、アクセスコス
    ト=(該変数の大きさ)×(該プロセッサとのアクセス
    回数)で表現される請求項9に記載のマルチプロセッサ
    システム。
  12. 【請求項12】 それぞれに割り当てられたタスクを行
    う複数のプロセッサと、該複数のプロセッサに対応する
    複数のメモリと、を備えたマルチプロセッサシステムで
    あって、 異なるプロセッサに割り当てられた複数のタスクにアク
    セスされる変数を、該異なるプロセッサから選択された
    一つのプロセッサに対応するメモリに割り当てるマルチ
    プロセッサシステム。
  13. 【請求項13】 それぞれに割り当てられたタスクを行
    う複数のプロセッサと、該複数のプロセッサに対応する
    複数のメモリと、を備えたマルチプロセッサシステムで
    あって、 i番目(1≦i≦N)のプロセッサに割り当てられたタ
    スクのみにアクセスされる変数は、該i番目のプロセッ
    サに対応するメモリに割り当てられ、 j番目(1≦j≦N)のプロセッサに割り当てられたタ
    スク、及びk番目(1≦k≦N、k≠j)のプロセッサ
    に割り当てられたタスクの両方にのみアクセスされる変
    数は、 該j番目及びk番目のプロセッサから選択された一方の
    プロセッサに対応するメモリに割り当てられるマルチプ
    ロセッサシステム。
  14. 【請求項14】 前記変数は、前記j番目及び前記k番
    目のプロセッサのうち、アクセスコストが大きいほうの
    プロセッサに対応するメモリに割り当てられる、請求項
    13に記載のマルチプロセッサシステム。
JP6174338A 1994-07-26 1994-07-26 データ分割方法及びマルチプロセッサシステム Pending JPH0844577A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6174338A JPH0844577A (ja) 1994-07-26 1994-07-26 データ分割方法及びマルチプロセッサシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6174338A JPH0844577A (ja) 1994-07-26 1994-07-26 データ分割方法及びマルチプロセッサシステム

Publications (1)

Publication Number Publication Date
JPH0844577A true JPH0844577A (ja) 1996-02-16

Family

ID=15976897

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6174338A Pending JPH0844577A (ja) 1994-07-26 1994-07-26 データ分割方法及びマルチプロセッサシステム

Country Status (1)

Country Link
JP (1) JPH0844577A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006235761A (ja) * 2005-02-22 2006-09-07 Nec Corp 分散共有メモリ装置およびメモリアクセス方法
JP2008234156A (ja) * 2007-03-19 2008-10-02 Nec Corp メモリアクセス装置及び方法
JP2011096107A (ja) * 2009-10-30 2011-05-12 Internatl Business Mach Corp <Ibm> 並列化方法、システム、及びプログラム
JP2012038219A (ja) * 2010-08-10 2012-02-23 Toshiba Corp プログラム変換装置、およびそのプログラム
WO2013021223A1 (en) * 2011-08-05 2013-02-14 Intel Corporation Method and system for work partitioning between processors with work demand feedback
US9218317B2 (en) 2012-08-07 2015-12-22 International Business Machines Corporation Parallelization method, system, and program
WO2019188180A1 (ja) * 2018-03-30 2019-10-03 株式会社デンソー スケジューリング方法、スケジューリング装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006235761A (ja) * 2005-02-22 2006-09-07 Nec Corp 分散共有メモリ装置およびメモリアクセス方法
JP4725130B2 (ja) * 2005-02-22 2011-07-13 日本電気株式会社 分散共有メモリ装置およびメモリアクセス方法
JP2008234156A (ja) * 2007-03-19 2008-10-02 Nec Corp メモリアクセス装置及び方法
JP2011096107A (ja) * 2009-10-30 2011-05-12 Internatl Business Mach Corp <Ibm> 並列化方法、システム、及びプログラム
US8677334B2 (en) 2009-10-30 2014-03-18 International Business Machines Corporation Parallelization method, system and program
JP2012038219A (ja) * 2010-08-10 2012-02-23 Toshiba Corp プログラム変換装置、およびそのプログラム
WO2013021223A1 (en) * 2011-08-05 2013-02-14 Intel Corporation Method and system for work partitioning between processors with work demand feedback
US9262230B2 (en) 2011-08-05 2016-02-16 Intel Corporation Method and system for work partitioning between processors with work demand feedback
US9218317B2 (en) 2012-08-07 2015-12-22 International Business Machines Corporation Parallelization method, system, and program
US9311273B2 (en) 2012-08-07 2016-04-12 International Business Machines Corporation Parallelization method, system, and program
WO2019188180A1 (ja) * 2018-03-30 2019-10-03 株式会社デンソー スケジューリング方法、スケジューリング装置
JP2019179417A (ja) * 2018-03-30 2019-10-17 株式会社デンソー スケジューリング方法、スケジューリング装置

Similar Documents

Publication Publication Date Title
US5768594A (en) Methods and means for scheduling parallel processors
US8261273B2 (en) Assigning threads and data of computer program within processor having hardware locality groups
JP6376865B2 (ja) 並列ツリー・ベースの予測のための、コンピュータにより実行される方法、ストレージ媒体、およびコンピュータ・システム
US7647590B2 (en) Parallel computing system using coordinator and master nodes for load balancing and distributing work
US8601480B2 (en) Support of non-trivial scheduling policies along with topological properties
US20210382754A1 (en) Serverless computing architecture for artificial intelligence workloads on edge for dynamic reconfiguration of workloads and enhanced resource utilization
CN105468439B (zh) 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行方法
Kaya et al. Iterative-improvement-based heuristics for adaptive scheduling of tasks sharing files on heterogeneous master-slave environments
CN113568599A (zh) 用于处理计算作业的方法、电子设备和计算机程序产品
Shterenlikht et al. Fortran 2008 coarrays
US20090006072A1 (en) Method and Apparatus Performing Automatic Mapping for A Multi-Processor System
US7454749B2 (en) Scalable parallel processing on shared memory computers
JPH0844577A (ja) データ分割方法及びマルチプロセッサシステム
US8914779B2 (en) Data placement for execution of an executable
Kuchumov et al. Staccato: shared-memory work-stealing task scheduler with cache-aware memory management
Kireev et al. The LuNA library of parallel numerical fragmented subroutines
Rossignon et al. A NUMA-aware fine grain parallelization framework for multi-core architecture
Haines et al. Task management, virtual shared memory, and multithreading in a distributed memory implementation of Sisal
Kulagina et al. Mapping tree-shaped workflows on memory-heterogeneous architectures
Foyer et al. Enabling System Wide Shared Memory for Performance Improvement in PyCOMPSs Applications
Yamashita et al. Bulk execution of the dynamic programming for the optimal polygon triangulation problem on the GPU
JP3304445B2 (ja) プログラム生成処理装置
Gustedt et al. Optimizing locality by topology-aware placement for a task based programming model
CN115826537B (zh) 一种多机器人产线柔性调度方法
Motokubota et al. Accelerating parameter sweep applications using CUDA

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040810

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041111

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050302