JPH06290159A - 並列計算機のプロセス割当方法 - Google Patents

並列計算機のプロセス割当方法

Info

Publication number
JPH06290159A
JPH06290159A JP5093791A JP9379193A JPH06290159A JP H06290159 A JPH06290159 A JP H06290159A JP 5093791 A JP5093791 A JP 5093791A JP 9379193 A JP9379193 A JP 9379193A JP H06290159 A JPH06290159 A JP H06290159A
Authority
JP
Japan
Prior art keywords
processor
program
group
executed
time
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
JP5093791A
Other languages
English (en)
Inventor
Machiko Asaya
真知子 朝家
Takayuki Nakagawa
貴之 中川
Toshiaki Tarui
俊明 垂井
Tokuyasu Imon
徳安 井門
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.)
National Institute of Advanced Industrial Science and Technology AIST
Original Assignee
Agency of Industrial Science and Technology
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 Agency of Industrial Science and Technology filed Critical Agency of Industrial Science and Technology
Priority to JP5093791A priority Critical patent/JPH06290159A/ja
Publication of JPH06290159A publication Critical patent/JPH06290159A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 並列計算機で実行されるべき各プロセスに対
して、割当るべきプロセッサを含むプロセッサグループ
をユーザに指定させ、プロセスへのプロセッサ割当を半
自動化することにより、プログラマーのプログラミング
およびデバッグの手間を低減する。 【構成】 並列計算機で実行されるべき高級言語プログ
ラムのコンパイル時に、後の実行時に入力される、各プ
ロセスに割りつけるべきプロセッサグループを表わすパ
ラメータ6を解析して、そのプロセスへのそのグループ
内の一つのプロセッサを割り当てるコード3,4を付加
したオブジェクトプログラムを生成し、そのプログラム
の実行時に、その時入力されるパラメータ6を解析し
て、各プロセスを、それに対して指定されたプロセッサ
グループ内の一つのプロセッサに対して自動的に割り当
てる。なお、各プロセスに対するプロセッサグループの
指定は、コンパイル時あるいは高級言語プログラム内に
おいて行うようにすることもできる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、並列計算機の複数のプ
ロセッサへのプロセスの割当方法に関する。
【0002】
【従来の技術】並列計算機のプログラミングでは、プロ
グラマーがプロセッサの数および構成を十分注意して、
プログラム中にプロセッサ指定を表記することによっ
て、プロセス割当を実現している。
【0003】例えば、I COT((財)新世代コンピュー
タ技術開発機構)の開発した並列論理型言語KL1(9
2年6月無償公開)では、プロセスをプロセッサノード
に割り当てる方法として、後に図7に関して説明するよ
うに、ノードプラグマという表記手段が用意されてお
り、プログラマーが各々独自のアルゴリズムに基づい
て、各プロセスを割当てるべきプロセッサをプログラム
中に表現している。
【0004】
【発明が解決しようとする課題】従来のように、プロセ
ス割当をすべてプログラマーがプログラミングしている
場合、大規模プログラムのプログラミングでは、全体の
プロセス割当の把握・管理が難しい。
【0005】また、プロセッサ数や構造の異なる並列計
算機にプログラムを移植する場合、移植者は原プログラ
ムのプロセスのプロセッサへの割当を解析して、プログ
ラムを変更する場合が多く、それにともなってバグの発
生頻度が高くなる。
【0006】さらに、プロセッサ構成を変えて性能測定
を行ないたい場合も、プログラム移植の際と同じ問題が
発生する。
【0007】本発明の目的は、プロセスのプロセッサへ
の割当のためのプログラミングの手間を低減できるプロ
セス割当て方法を提供することである。
【0008】
【課題を解決するための手段】複数のプロセッサから構
成される並列計算機に対して、プロセッサを変数で指定
可能な高級言語プログラムから、(1)複数プロセッサ
をグループで指定できる関数、(2)プロセッサグルー
プから任意の1つのプロセッサを選ぶ関数、および、
(3)プロセスをプロセッサに割り当てる関数を備えた
目的プログラムを生成する。ユーザは、コンパイル時や
コンパイル後のプログラムの実行時のパラメータとし
て、プロセッサグループを指定したり、または、高級言
語プログラム中でプロセッサグループを指定すればよ
い。こうして、コンパイル後のプログラムの実行時に各
プロセスを、そのプロセスに対してユーザが指定したプ
ロセッサグループ内のいずれか一つのプロセッサに割り
当てる。
【0009】
【作用】プログラマーは、基本的には、各プロセスに対
して、いずれかのプロセッサグループを指定するだけで
よい。したがってプログラムは、プログラムを変更せず
に、実験的にさまざまな組み合わせのプロセスープロセ
ッサ割当を実行できるので、より稼働率のよいプロセス
割当方法が容易に導きだせる。さらに、プログラマー
は、異構造計算機間のプログラムの移植の際にプログラ
ムを変更なく使用できるので、プロセス割当に関するプ
ログラミング効率が向上する。
【0010】
【実施例】以下、本発明の1実施例を詳細に説明する。
【0011】図1は本処理の流れの概要を示す。オブジ
ェクトコード生成とプログラム実行時における処理の特
徴を示している。図2で示すように、プロセス割当をプ
ロセッサグループ単位で指定したい場合に有効である。
【0012】図2は、並列計算機の構成およびプロセス
割当方法を示す。20は、原プログラムで記述したプロ
セスの構成である。全体を管理するマスタープロセス2
1と、プロセスa,b (22、23)から成る。30は
並列計算機の構成を表している。31はプロセッサで、
並列計算機は番号付けられたプロセッサPE1〜PEnで構成
されている。
【0013】このとき、プロセッサグループa,bを、そ
れぞれプロセッサの集合である、プロセッサグループa
={PE0,PE1,PE2,PE3,PE4,PE5,PE6,PE7}、プロセッサグ
ループb={PE8,PE9,PE16,PE17}とする。プロセッサグル
ープの定義は、ユーザが任意に決めてよい。
【0014】プロセスaをプロセッサグループaに、プロ
セスbをプロセッサグループbに、割り当てたいとする。
プロセスはプロセッサグループのうちのいずれかのプロ
セッサ上で実行され、プロセッサグループ以外のプロセ
ッサで実行されることはない。プロセッサグループの定
義、プロセス割当の指定は、プログラム実行ごとに変更
できる。プロセッサグループの定義、およびプロセス割
当指定規則は、ユーザが定義してもよいし、また、あら
かじめシステムで固有の割当方法を定義しておいてもよ
い。
【0015】例えば、1回目の実行で、「プロセスaを
プロセッサグループaに、プロセスbをプロセッサグルー
プbに」割り当てて実行する。次の実行では、「プロセ
スaをプロセッサグループc={PE0,PE1,PE8,PE9}に、プ
ロセスbをプロセッサグループd={PE2,PE3,PE10,PE11}
に」割り当てて実行する。ユーザはこの2回の実行性能
を比較して、よりよいプロセス割り当てを導き出せる。
また、並列計算機のプロセッサ数や結合状態が変化した
場合にも、同様にプロセス割り当てを変更すればよい。
【0016】次に、図3を用いて、図2のようなプロセ
ス割当が可能になるためのコンパイル処理の流れを説明
する。通常のオブジェクト生成処理にプロセッサ割り付
け表記解析部41を組み込むことで、実現する。プロセ
ッサ割り付け表記解析部41では、原プログラム中にプ
ロセッサを変数で指定した箇所があるか判定し(ステッ
プ42)、そのような箇所があった場合、まず、プロセ
ッサグループ指定命令を発生し(ステップ43)、この
命令で指定したプロセッサグループから一つのプロセッ
サを選択する関数を生成し(ステップ44)、さらに、
プロセッサ割り付け命令を生成する(ステップ45)。
たとえば、図7のような原プログラムが与えられたと
き、図8に示すプログラムと同等のオブジェクトコード
を生成する。プログラム例についての詳細は、後述す
る。
【0017】図7は、原プログラム例を示す。並列論理
型言語KL1で記述している。並列論理型言語KL1は、ICOT
((財)新世代コンピュータ技術開発機構)の開発した
言語である。80で、master は述語といい、()内
の","で区切られた文字列は引き数である。変数名は、
大文字を頭とする文字列で表記する。
【0018】述語master(X,Y,Sum,Diff,A,B)というの
は、”整数X,Y、実行プロセッサノードA,Bを指定する
と、プロセッサノードAでX,Yの和add(81)、プロセ
ッサノードBでX,Yの差subtract(82)を計算し、それ
ぞれ、変数Sum, Diff に答えを返す”というプログラム
である。X,Yの和addと、X,Yの差subtractの計算は並列
に実行できる。@node(A),@node(B)は、ノードプラグマ
といい、add(X,Y,Sum)およびsubtract(X,Y,Diff)の実行
プロセッサA,Bを指定する。81、82でプロセッサノ
ードは変数で与えられている。これは、この計算に至る
までの間に、プロセッサノードA,Bの値が定数に具体化
される事を示している。プロセッサノードA,Bの値が決
まって始めて、X,Yの和add、X,Yの差subtractの値が計
算される。
【0019】図8は、図7のプログラムの変換例であ
る。原プログラム図7をコンパイルすると、図8プログ
ラムをコンパイルした場合と同等なオブジェクトコード
を生成する。83は変換後のプログラム例である。Para
m は、{ プロセス名, { プロセッサグループ名, プロセ
ッサリスト } }のような要素をもつパラメータである。
変数A,Bに対応させるプロセッサを述語select_processo
r84で選択する。述語select_processor84は、プロ
セッサリストからプロセッサを一つ選択する述語であ
る。add,subtractはそれぞれ選択されたプロセッサ上で
実行する。84でfunctionは、プロセッサグループProc
essor_Grの中から、プロセッサProcessorを1つ選び出
す任意の関数である。
【0020】図4は、プログラム実行の流れを示す。オ
ブジェクトプログラムを読み込み(ステップ50)、プ
ロセッサ指定をしたいプロセス名、および、そのプロセ
スに割り付けたいプロセッサグループをユーザが指定す
る(ステップ51)。プロセス名、プロセッサグループ
のパラメータがユーザより入力されると、プログラムが
実行される。プログラムがプロセス割り当ての部分に到
達すると、選択関数によりプロセッサグループから実行
プロセッサを一つ選択し(ステップ52)、選択された
プロセッサにプロセスを割り付ける53。
【0021】選択関数とは、複数のプロセッサから成る
プロセッサグループのうちから、任意のプロセッサを1
つ選択する関数である。選択の方法は、例えば、 (1)プロセッサの若い番号順に選ぶ (2)乱数で選択する (3)一番暇なプロセッサを選ぶ など、自由である。
【0022】また、この関数は、 (1)システムがあらかじめいくつかの関数を用意して
おき、ユーザが選ぶ (2)ユーザが関数を作成、指定できる などの方法が有効である。
【0023】こうして、ユーザはプログラムの実行時に
プロセッサグループを指定すればよいので、元のプログ
ラムの作成あるいは変更が容易にできる。しかも、プロ
グラムの変更なくして、プロセッサへのプロセスの割り
当てを変えられる。
【0024】図5は他の実施例である。
【0025】図5では、コンパイル時にプロセッサグル
ープをユーザが指定する場合のコンパイル処理を示す。
コンパイルの段階で、例えば、「プロセスaをプロセッ
サグループaに、プロセスbをプロセッサグループbに割
り当てる」という割り付け範囲を指定をする。図9の原
プログラム90をコンパイルする際に、ユーザーはパラ
メータ91を入力する。ParamA,ParamBは、{ プロセス
名, { プロセッサグループ名, プロセッサリスト } }の
ような要素をもつパラメータである。ここでは、「プロ
セスaddをプロセッサグループgroup_aで、プロセスsubt
ractをプロセッサグループgroup_bで、実行する」よう
にパラメータを指定している。図5では、ステップ60
はこのパラメータを読み込む処理をさす。図5におい
て、図3と異なるのは、このとき指定されたプロセッサ
グループを用いて点以外は、実質的に同じ処理(ステッ
プ61〜67)を行う。コンパイル後のオブジェクトコ
ードは、図10の原プログラムをコンパイルしたときに
得られるオブジェクトコードと同等になる。述語master
97の引き数の内、小文字を頭とする文字列(process_
add, group_a,など)は、定数である。プロセッサグル
ープを実行時に指定する図8の場合と比べると、パラメ
ータの部分が定数に置き替わっている。
【0026】この実施例でも、各プロセスに対して割り
当てるべきプロセッサが属するプロセッサグループを入
力パラメータで指定しているので、その割り当ては簡単
に、かつ、実行時に変更できる。
【0027】図6はさらに他の実施例である。図6で
は、原プログラムの中であらかじめプロセッサグループ
を指定する場合のコンパイル処理を示している。プログ
ラムの例を図11に示す。述語masterの引き数の内、小
文字で指定された値group_a,group_bは、定数である。p
rocessor_group101は、プロセッサグループ名group_
a,group_bを与えたときに、プロセッサ集合として、そ
れぞれ、{pe0,pe1,pe2,pe3,pe4,pe5,pe6,pe7}, {pe8,pe
9,pe16,pe17} を与えることを意味する。100では、@
processor_group(A)のように、add, subtractの割り当
てプロセッサをグループとして指定する。この実施例で
はステップ70において、プログラム内で指定されたプ
ロセッサグループの割り付け範囲を読み込む点でこれま
での実施例と異なる。コンパイル後のオブジェクトコー
ドは、図10の原プログラムをコンパイルして得られる
オブジェクトコードと同等になる。
【0028】この例でも、原プログラムでは、各プロセ
スに対してプロセッサグループを指定しているので、プ
ログラムの作成、修正は従来よりも平易となる。
【0029】
【発明の効果】プログラマーが割当プロセッサパラメー
タとしてプロセッサグループを指定すればよいので、指
定が容易である。また、指定の変更も容易であるので、
何種類ものプロセッサ割当の組み合わせを実験すること
ができ、最良なプロセッサ割当組み合わせを導きだせ
る。また、プロセッサ構造や、プロセッサ台数の異なる
並列計算機間のプログラム移植が容易である。
【図面の簡単な説明】
【図1】本発明による処理の概略的流れ図。
【図2】並列計算機の構成およびプロセス割当方法を模
式的に示す図。
【図3】コンパイル処理の流れ図。
【図4】プログラム実行の流れ図。
【図5】別の実施例のコンパイル処理の流れ図。
【図6】別の実施例によるコンパイル処理の流れ図。
【図7】並列論理型言語KL1で記述した原プログラム例
を示す図。
【図8】本処理の変換後プログラム例を示す図。
【図9】上記別の実施例で用いる原プログラム例を示す
図。
【図10】変換後のプログラム例を示す図。
【図11】上記さらに別の実施例で用いる原プログラム
の例を示す図。
【符号の説明】
20…プロセス構成、21…マスタープロセス、22,
23…プロセス、30…並列計算機、31…プロセッ
サ、32,33…プロセッサグループ、41…プロセッ
サ割り付け表記解析部。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 井門 徳安 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】並列計算機で実行されるべき複数のプロセ
    スを並列計算機を構成する複数のプロセッサに割り当て
    る方法であって、 高級言語プログラムをコンパイルする時に、後にユーザ
    が各プロセスに対して指定するプロセッサグループの中
    の一つのプロセッサをあらかじめ定めた基準で選択する
    コードを付加したオブジェクトプログラムを生成し、そ
    のオブジェクトプログラムの実行時に、その時に各プロ
    セスに対してユーザが指定するプロセッサグループに基
    づいて、そのコードを実行し、それにより各プロセス
    を、そのプロセスに対して実行時にユーザが指定したプ
    ロセッサグループ内の一つのプロセッサに割り当てるこ
    とを特徴とするプロセス割当方法。
  2. 【請求項2】並列計算機で実行されるべき複数のプロセ
    スを並列計算機を構成する複数のプロセッサに割り当て
    る方法であって、 高級言語プログラムでコンパイルする時に、その時にユ
    ーザが各プロセスに対して指定したプロセッサグループ
    の内の一つのプロセッサをあらかじめ定めた基準で選択
    するコードを付加したオブジェクトプログラムを生成
    し、そのオブジエクトプログラムの実行時にそのコード
    を実行し、それにより、各プロセスを、そのプロセスに
    対してコンパイル時にユーザが指定したプロセッサグル
    ープ内の一つのプロセッサに割り当てることを特徴とす
    るプロセス割当方法。
  3. 【請求項3】並列計算機で実行されるべき複数のプロセ
    スを並列計算機を構成する複数のプロセッサに割り当て
    る方法であって、 高級言語プログラムをコンパイルする時に、そのプログ
    ラム内の特定のプログラム文が各プロセスに対して指定
    するプロセッサグループの中の一つのプロセッサをあら
    かじめ定めた基準で選択するコードを付加したオブジェ
    クトプログラムを生成し、そのオブジェクトプログラム
    の実行時に、そのコードを実行し、それにより各プロセ
    スを、そのプロセスに対してプログラム文が指定したプ
    ロセッサグループ内の一つのプロセッサに割り当てるこ
    とを特徴とするプロセス割当方法。
JP5093791A 1993-03-30 1993-03-30 並列計算機のプロセス割当方法 Pending JPH06290159A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5093791A JPH06290159A (ja) 1993-03-30 1993-03-30 並列計算機のプロセス割当方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5093791A JPH06290159A (ja) 1993-03-30 1993-03-30 並列計算機のプロセス割当方法

Publications (1)

Publication Number Publication Date
JPH06290159A true JPH06290159A (ja) 1994-10-18

Family

ID=14092244

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5093791A Pending JPH06290159A (ja) 1993-03-30 1993-03-30 並列計算機のプロセス割当方法

Country Status (1)

Country Link
JP (1) JPH06290159A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120031759A (ko) * 2010-09-27 2012-04-04 삼성전자주식회사 프로세싱 유닛의 동적 자원 할당을 위한 방법 및 장치
JP2012252413A (ja) * 2011-05-31 2012-12-20 Toshiba Corp 情報処理装置、情報処理方法及び制御プログラム
JP2020519979A (ja) * 2017-05-12 2020-07-02 グーグル エルエルシー 設定可能な数のアクティブなコアを有する画像処理プロセッサおよびサポートする内部ネットワーク

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0447357A (ja) * 1990-06-12 1992-02-17 Hitachi Ltd 仮想計算機システムの制御方式

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0447357A (ja) * 1990-06-12 1992-02-17 Hitachi Ltd 仮想計算機システムの制御方式

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120031759A (ko) * 2010-09-27 2012-04-04 삼성전자주식회사 프로세싱 유닛의 동적 자원 할당을 위한 방법 및 장치
JP2013537991A (ja) * 2010-09-27 2013-10-07 サムスン エレクトロニクス カンパニー リミテッド プロセッシングユニットの動的リソース割り当てのための方法及び装置
US9311157B2 (en) 2010-09-27 2016-04-12 Samsung Electronics Co., Ltd Method and apparatus for dynamic resource allocation of processing units on a resource allocation plane having a time axis and a processing unit axis
JP2012252413A (ja) * 2011-05-31 2012-12-20 Toshiba Corp 情報処理装置、情報処理方法及び制御プログラム
JP2020519979A (ja) * 2017-05-12 2020-07-02 グーグル エルエルシー 設定可能な数のアクティブなコアを有する画像処理プロセッサおよびサポートする内部ネットワーク

Similar Documents

Publication Publication Date Title
Zima et al. SUPERB: A tool for semi-automatic MIMD/SIMD parallelization
US5293631A (en) Analysis and optimization of array variables in compiler for instruction level parallel processor
Allen et al. A framework for determining useful parallelism
US8949809B2 (en) Automatic pipeline parallelization of sequential code
US5367684A (en) Register allocation using an improved register candidate usage matrix
Agullo et al. Bridging the gap between OpenMP and task-based runtime systems for the fast multipole method
Rajbhandari et al. On fusing recursive traversals of Kd trees
Bloch et al. Programming heterogeneous cpu-gpu systems by high-level dataflow synthesis
Sbirlea et al. Dfgr an intermediate graph representation for macro-dataflow programs
Leupers et al. Software compilation techniques for heterogeneous embedded multi-core systems
Lee et al. Performing data flow analysis in parallel
Wolski et al. Program partitioning for NUMA multiprocessor computer systems
Shirazi et al. PARSA: A parallel program scheduling and assessment environment
Watson et al. Static program decomposition among machines in an SIMD/SPMD heterogeneous environment with non-constant mode switching costs
Ejjaaouani et al. , a Programming Model to Decouple Performance from Algorithm in HPC Codes
JPH06290159A (ja) 並列計算機のプロセス割当方法
Cosnard et al. Compact dag representation and its symbolic scheduling
Ştirb et al. Improving performance and energy consumption with loop fusion optimization and parallelization
Shashidhar et al. Lighthouse: An automatic code generator for graph algorithms on gpus
US20080282237A1 (en) Method and Apparatus For Generating Execution Equivalence Information
Foley et al. Efficient partitioning of fragment shaders for multiple-output hardware
Fumero et al. Using compiler snippets to exploit parallelism on heterogeneous hardware: a Java reduction case study
Long et al. FusionStitching: Boosting execution efficiency of memory intensive computations for DL workloads
Marker Design by transformation: from domain knowledge to optimized program generation
Ringenburg et al. Optimizing loop-level parallelism in Cray XMTTM applications