JP5381302B2 - 並列化スケジューリング装置 - Google Patents

並列化スケジューリング装置 Download PDF

Info

Publication number
JP5381302B2
JP5381302B2 JP2009112699A JP2009112699A JP5381302B2 JP 5381302 B2 JP5381302 B2 JP 5381302B2 JP 2009112699 A JP2009112699 A JP 2009112699A JP 2009112699 A JP2009112699 A JP 2009112699A JP 5381302 B2 JP5381302 B2 JP 5381302B2
Authority
JP
Japan
Prior art keywords
task
processing time
tasks
execution condition
scheduling
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
Application number
JP2009112699A
Other languages
English (en)
Other versions
JP2010262471A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2009112699A priority Critical patent/JP5381302B2/ja
Publication of JP2010262471A publication Critical patent/JP2010262471A/ja
Application granted granted Critical
Publication of JP5381302B2 publication Critical patent/JP5381302B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

本発明は、実行条件とその条件下での処理の組合せで表現されるプログラムを並列化された演算装置で処理するための並列化スケジューリング装置に関するものである。
従来の並列スケジューリング装置においては、実行条件とその条件下での処理の組合せで表現されるプログラムを並列化された演算装置で処理する並列化スケジュールを求めるものである。従来の並列スケジューリング装置は、全ての実行条件に対して並列化スケジューリングを行い、全ての並列化スケジューリング結果に対して、それぞれ全ての実行条件下での処理の時間を総当りで当てはめて、各並列化スケジューリング結果における最長スケジュール長(以下、最悪実行時間)を求め、この最悪実行時間が最短となる並列化スケジューリング結果を出力する(例えば、非特許文献1参照。)。
ここで、実行条件とこの実行条件下での処理の組み合わせで表現されるプログラムの中で、一組の実行条件とこの実行条件下での処理の組み合わせをスケジューリングの最小単位であるタスクとして扱うとする。すると、総当りで上述の並列化スケジュール結果を計算するには、タスク数をNとして、2の2N乗のスケジュール長の計算が必要になる。
具体的には、タスク数をNとすると、各タスクが1つの実行条件を持つため、実行条件の組合せの数は2のN乗通りになる。この2のN乗通りの実行条件のそれぞれについて、並列化スケジューリングを行うため、2のN乗通りの並列化スケジュールが得られる。この2のN乗通りの並列化スケジュールの中から、全ての実行条件下において、最悪実行時間が最短となる並列化スケジュールを特定する。このため、ここで得られた2のN乗通りの並列化スケジュールのそれぞれに対して、2のN乗通りの実行条件における各タスクの処理時間を総当りで当てはめてスケジュール長を算出する。このスケジュール長を計算する処理は、タスク数をNとすると、2の2N乗通りの計算(並列化スケジュールの計算)が必要になる。
従来の並列スケジューリング装置では、タスク数増加に伴う上記計算量の指数関数的な増加を緩和するため、タスク間の実行条件の相関関係を解析して、当該プログラムの処理時間に影響を与える実行条件のみを抽出し、抽出した実行条件に対して、総当りでスケジュール長を算出することが開示されている(例えば、非特許文献1参照。)。
佐々木、南出、「条件解析による並列化スケジューリングの効率化」、2008年度電気学会C部門大会講演論文集、924ページ
従来の並列スケジューリング装置では、全ての並列化スケジューリング結果に対して、全ての実行条件下での処理時間を総当りで当てはめて、各並列化スケジューリング結果の最悪実行時間が最短となる並列化スケジューリング結果を求めるので、タスクが多くなると、処理に時間を要する。例えば、タスク数が10以上では、1分から数分以上の時間を要し、タスク数の増加に対して指数関数的に処理時間が長くなる問題があった。
また、タスク間の実行条件の間に相関関係が無い場合には、計算量を削減できないという問題もあった。
この発明は、上述のような問題を解決するためになされたもので、タスク数が多くなっても短時間で並列化スケジューリング結果を出力する並列化スケジューリング装置を得るものである。
本発明に係る並列化スケジューリング装置は、1の実行条件及び前記実行条件下での処理を含むタスクを構成要素とするプログラムを記憶する記憶部と、前記プログラム中の前記タスクの前記実行条件の全ての条件下での処理時間を求めて前記処理時間の前記タスクごとの最長処理時間と最短処理時間との差の順に前記タスクを並べ、最も前記差が大きいタスクから所定数の前記タスクを変化タスクとし、前記変化タスク以外を固定タスクとして判別して前記記憶部に前記判別した結果を記憶する解析対象抽出部と、複数の演算処理装置を有する並列演算処理装置の並列化スケジュールを作成する並列化スケジューリングを行うとともに、前記並列化スケジュールに含まれる前記変化タスクに対しては、全ての実行条件ごとに当該変化タスクの処理時間を計算し、前記並列化スケジュールに含まれる前記固定タスクに対しては、当該固定タスクの処理時間が最長となる実行条件での当該固定タスクの処理時間として計算して、前記並列化スケジュールの処理時間の計算を行うスケジューリング部と、前記並列化スケジュールの中で、最長処理時間が最短の前記並列化スケジュールを出力する出力部を備えたものである。
この発明は、実行条件によりタスクの処理時間の差が大きいタスクを解析対象として抽出する機能によって、タスク数が多いプログラムに対して、短時間で並列化スケジューリング結果を得ることができる。
実施の形態1の並列処理装置の構成図である。 実施の形態1の入力プログラムを示す図である。 実施の形態1の並列化スケジューリング装置の構成図である。 実施の形態1の並列化スケジューリングの探索を示す図である。 実施の形態1の実行条件パターンの削減を示す図である。 実施の形態1の入力プログラムの先行制約と、THEN節及びELSE節実行時の処理時間を示す図である。 実施の形態1のタスク間の実行条件の相関関係を求めるための二分木の説明図である。 実施の形態1の実行条件解析部の処理手順を示すフローチャートである。 実施の形態1の解析対象タスクリストを示す図である。 実施の形態1の実行条件の解析対象抽出の処理手順を示すフローチャートである。 実施の形態2の入力プログラムのモデルを示す図である。 実施の形態2の解析対象タスク抽出表を示す図である。 実施の形態2の実行条件の解析対象抽出の処理手順を示すフローチャートである。
実施の形態1.
図1は、この発明を実施するための実施の形態1における並列処理装置の構成図である。図において、並列処理装置には、2以上のプロセッシングエレメント12(以下、「PE」と呼ぶ。)と、それぞれのPE12に接続されたローカルメモリ10と、PE12を相互に接続するためのバス13と、バス13に接続された共有メモリ14とが設けられている。ここで、プロセッシングエレメントとは、種々の命令を実行可能な演算装置である。なお、ここでは、2個のPE12を有する並列処理装置の例を示したが、さらに多数のPE12がある構成でもよく、各PE12は、バス13に接続され、各PE12にローカルメモリ10が接続される。並列化スケジューリング装置は、並列処理装置の複数の演算装置(PE12)で、実行する対象プログラムを並列処理させる並列化スケジュールを作成する。
ローカルメモリ10は、対象プログラム全体の中で、当該ローカルメモリ10が接続されているPE12で実行するプログラムを記憶する。ここで、プログラムとは、1の実行条件(条件節)及び当該実行条件下での処理(帰結節)を記述したタスクを構成要素とする。タスクは、変数と演算により表現されている。また、ローカルメモリ10は、当該ローカルメモリ10が接続されているPE12以外の他のPE12で実行されるプログラムと関係しない変数(他のプログラムで記載されていない変数)を記憶する。
共有メモリ14は、並列化スケジューリング装置によって、異なるPE12に割当てられる並列化されたプログラム間で値の受渡しが必要となる変数である共有変数を記憶する。
PE12は、接続されたローカルメモリ12に記憶された並列化されたプログラムを順次実行する。各PE12は、ローカルメモリ12に記憶されたプログラムを実行する際に、当該ローカルメモリ12及び共有メモリ14との間で、値の読み書きを行う。
また、PE12は、同期機構を持つ。この同期機構は、並列化されたプログラム間が持つ先行制約を満たすように、PE12間で同期を取りながら処理を進め、演算結果の整合性を保つために用いられる。この先行制約は、変数間のフロー依存、逆依存、出力依存によって生じるものである。
同期機構は、PE12間で同期を指示する信号である同期イベントを受け渡すことで、同期処理を実現する。PE12は、同期イベントを送信する命令と、同期イベントを受信する命令を持つ。同期イベントの送信命令は、同期イベントの送信先のPE12を指定して同期イベントを送信する。一方、同期イベントの受信命令は、同期イベントの送信元のPE12を指定する。同期イベントの送信及び同期イベントの受信は、1つのPE12のみを指定することもできるし、複数のPE12を指定することもできる。1つのPE12を指定する場合は、同期イベントの送信命令、受信命令は、共に指定したPE12に対して、送信、受信の処理を行う。また、複数のPE12を指定する場合は、送信命令は指定した複数のPE12に対して一斉に同期イベントを送信し、受信命令は指定した全てのPE12からの同期イベントが揃う(受信する)まで待機する。
上述の同期イベントの送受信を行う命令は、並列化されたプログラムの間に設定された先行制約に応じて、並列化スケジューリング装置が、並列化されたプログラムの中に自動的に生成する。
具体的な処理について、変数Aに関してフロー依存の関係にある2つの式を、2つのPE12に割り当てる際に、一方のPE1(12)で定義された変数を他方のPE2(12)が使用する場合を例に説明する。この場合には、一方のPE1(12)で、変数Aを定義した直後に、他方のPE2(12)への同期イベントの送信命令を生成する。他方のPE2(12)は、変数Aを使用する直前に、PE1(12)からの同期イベントからの同期イベントの受信命令を生成する。
次に、上記の変数Aに加えて、変数Bも、一方のPE1(12)から他方のPE2(12)に対してフロー依存の関係があり、変数Aの先行制約が、変数Bの変更制約の前に存在し、変数A、B間の先行制約に対して、他の変数の先行制約が関係しない場合を例に説明する。この場合には、変数Aについての同期イベントの送受信と、変数Bについての同期イベントの送受信をまとめて、1つの同期イベントの受け渡しをすることができ、演算結果の整合性を保つことができる。
この例では、変数Bについての同期イベントの送信命令と、変数Aについての同期イベントの受信命令を同期イベントの送受信の対として残し、変数Aについての同期イベントの送信命令と、変数Bについての同期イベントの受信命令は、削除することができる。
以上のように、プログラムサイズの削減と、処理時間の短縮を目的にして、冗長な同期命令を1つの同期命令へまとめることができる。
図2は、この実施の形態1による入力プログラム20を示す図である。プログラムは、条件判定とその条件下での処理の組合せによって構成される。図において、条件節を“条件判定1”、THEN節を“処理1−A,処理1−B,・・”、ELSE節を“処理1−a,処理1−b,・・”で表現している。この条件節並びに帰結節(THEN節及びELSE節)の一まとまりをタスクと呼ぶ。
この図では、タスク1に続き、条件節として“条件判定2”、帰結節のTHEN節が“処理2−A,処理2−B,・・”、帰結節のELSE節が“処理2−a,処理2−b,・・”がタスク2として記述されている例を示している。
本実施の形態のプログラムは、1階層のIF文による条件判定(条件節)並びにこの条件判定結果が真の場合の処理を記述したTHEN節及び条件判定結果が偽の場合意の処理を記述したELSE節を一まとまりとして、当該一まとまりの集合(タスク)で構成される。
また、IF文のTHEN節またはELSE節の中に、IF文を持つ、階層構造を持つIF節については、外側のIF節の条件節と内側のIF節の条件節の論理積を条件節とする、新たなIF文を生成する。以上のようにして、構想構造を持つIF文についても、上記1階層のIF文によるプログラムへ変換(再構成)することによって、全て1階層のIF文として処理できる。
また、図2の条件節は、変数同士や変数と定数の間における比較演算、論理演算またはこれらを組合せた演算で表現される。
図6は、本実施の形態による入力プログラムの先行制約と、THEN節実行時及びELSE節実行時のそれぞれの処理時間との例を示す図である。図において、4つのタスクa,b,c及びdが存在する。この図は、入力プログラムの先行制約として、タスクaの実行後に、タスクb,cの実行が可能となり、タスクb及びタスクcの両方の実行完了後に、タスクdが実行可能となることを示している。
また、各タスクを示す丸の右側の記載は、(THEN節の処理時間)/(ELSE節の処理時間)となっている。例えば、タスクaは、THEN節実行の際は、2単位の処理時間を要し、ELSE節実行の際は、1単位の処理時間を要することを示している。
図3は、本実施の形態による並列化スケジューリング装置の構成を示す図である。以下、図に従って説明する。図において、並列化スケジューリング装置は、入力プログラム記憶部30に記憶された入力プログラムを読み出して、字句構文解析部31が字句及び構文解析を行い、スケジューリング部32が並列化スケジューリングを行い、実行コード生成部37が並列化スケジューリング結果に基づき実行コードを生成する。
入力プログラム記憶部30は、図2に示すような条件判定とその条件下での処理の組合せによって構成されるプログラムが記憶された入力プログラム記憶部である。
字句構文解析部31は、入力プログラム記憶部30に記憶された入力プログラムを読み出して、入力プログラムに記述されている字句を取り出した後、構文解析を行い、並列化スケジューリング装置が持つプログラムの内部表現へ変換する。
スケジューリング部32は、入力プログラム30の内部表現に対して並列化スケジューリングを行い、指定されたPE12の数へ分割する。
実行コード生成部37は、並列化スケジューリング装置の内部表現から、実行する並列処理装置が処理可能な実行コードを生成する。
スケジューリング部32は、依存性解析部33、実行条件の解析対象抽出部34、実行条件解析部35及び並列化スケジューリング部36から構成される。
依存性解析部33は、入力プログラムに記述された演算の対象である変数の使用と定義の関係から、フロー依存、逆依存及び出力依存の各依存関係の解析を行う。この解析によって、演算の間の先行制約が明らかとなる。以降の並列化スケジューリングにおいては、この演算の間の先行制約を満たすように、PE12に対してタスクの割り当てを行う。
実行条件の解析対象抽出部34は、与えられた基準に基づいて、入力プログラムのタスクの中から、後述する実行条件解析部35が解析対象とするタスクを選択する処理を行う。
実行条件解析部35は、並列化スケジューリング部36が対象とする、タスクの実行条件の組合せを削減する処理を行う。なお、実行条件解析部35の詳細は、後述する。
並列化スケジューリング部36は、(1)実行条件解析部35によって、削減された実行条件のパターンそれぞれに対して、並列化スケジューリングを行い、(2)これらの並列化スケジューリング結果に対して、総当りで各実行条件下での各タスクの実行時間の割り当てを行うことで、各並列化スケジューリング結果に対する最悪処理時間を求め、(3)最悪のスケジュール長が最も短い(最悪実行時間が最短となる)並列化スケジューリング結果を最適な並列化スケジューリング結果として特定する処理を行う。ここで、並列化スケジューリングのアルゴリズムの例として、クリティカルパス法が挙げられるが、この方法に限定される訳ではない。
また、並列化スケジューリング装置は、コンピュータによって実現され、字句・構文解析部31や、依存性解析部33、実行条件の解析対象抽出部34、実行条件解析部35、並列化スケジューリング部36を含むスケジューリング部32及び実行コード生成部37に対応したソフトウェアと、これらのソフトウェアを実行するためのCPUやメモリ等のハードウェアから構成されている。あるいは、字句・構文解析部31並びに依存性解析部33、実行条件の解析対象抽出部34、実行条件解析部35及び並列化スケジューリング部36を含むスケジューリング部32並びに実行コード生成部37は、専用のハードウェアから構成されている。
また、並列化スケジューリング装置と、並列処理装置とは、例えばネットワークケーブルやUSBケーブルなどの伝送線によって接続され、並列化スケジューリング装置によって並列化されたプログラムを、並列処理装置のプログラムを格納するPE12毎のローカルメモリ10へ転送するよう構成されている。
図4は、本実施の形態による実行条件パターンと、実行条件パターン毎のスケジュールの総当りによる最適なスケジューリングの探索の説明図である。入力プログラムに含まれるタスク数がNの場合、タスク群の実行条件のパターン数は、真偽の値がタスク数分だけ存在することになる。したがって、実行条件のパターン数は、2のN乗になる。最適な並列化スケジューリングは、この図に示すとおり、各実行条件のパターンにおける並列化スケジューリング結果を対象に、全ての実行条件パターンを割当てて、スケジュール長が最短となる並列化スケジューリングを特定するため、計算量は、2の2N乗のスケジュール長の計算となる。
図5は、実行条件解析部35による、実行条件の組合せの削減の説明図である。図において、実行条件列kは、タスクiの実行条件の真偽値kの集合であり、k=(k,k,・・・,k)である。また、実行条件列の集合Kは、kの集合である。このKは、タスク間の実行条件の相関関係を考慮していないため、存在しない実行条件の真偽値の組合せを含んでいる。
ここで、存在しない実行条件の真偽値の組合せとは、タスクが持つ実行条件の相関関係から、実際にはとり得ない実行条件の真偽値の組合せである。タスク1の条件節が変数Aと定数ゼロの比較演算である“(A>0)”で、タスク2の条件節が同じく変数Aと定数ゼロの比較演算である“(A>0)”の場合を例に挙げる。この場合、タスク1の実行条件の真偽値kが真の時、タスク2の実行条件の真偽値kも真となる。また、kが偽の時はkも偽となる。しかし、kが真の時kが偽となることはなく、kが偽の時kが真となることもない。このように、タスクが持つ実行条件の相関関係から、タスクの実行条件の真偽値の組合せとして、存在するものと、存在しないものがある。存在しないタスクの実行条件の真偽値の組合せは、並列化スケジューリングを実施する際の対象から外すことができる。
一方、Kはタスク間の実行条件の相関関係を考慮したkの集合である。Kタスク間の実行条件を考慮しているため、存在する実行条件の組合せのみを含んでいる。
このように、並列化スケジューリング部36で総当りにより、最適な並列化スケジューリング結果を求める際に、実行条件解析部35によって、対象となるタスク及び実行条件のパターンを削減しておくことで、総当りによる計算量を抑制することができる。
実行条件解析部35では、タスク間の実行条件の相関関係を基に、存在しない実行条件の組合せを削除することで、最適な並列化スケジューリングを求めるための、総当りの計算量を抑制する。
次に、実行条件解析部35による実行条件パターンの削減方法について述べる。図7は、実行条件解析部35が、タスク間の実行条件の相関関係を求める際に作成する、二分木の説明図である。図において、実行条件の解析対象タスクをノードとし、そのタスクの条件節が真の場合をノードの左下に延びる実線で、そのタスクの条件節が偽の場合をノードの右下に延びる破線で表現している。例えば、図の実線70は、タスク1の条件節が真となり、かつタスク2の条件節も真となる実行条件の組合せが存在することを表す。また、図の X印71は、タスク1の条件節が真となり、タスク2の条件節が偽となる実行条件の組合せが存在しないことを表す。
この実行条件の組合せの存在の有無は、各タスクの条件節に記述された実行条件の組合せに対する充足可能性判定を行うことで求める。ここで、充足可能性判定とは、論理式が与えられたとき、その論理式に含まれる全ての変数の値を真または偽に定めることで、論理式の値を真にできるか否かを判定することである。
図8に実行条件解析部35の処理の流れを示す。以下、図のフローチャートに沿って説明する。まず、ステップS30は、実行条件解析対象のプログラムの先頭タスクを注目タスクに設定する。これは、図7のタスク1を注目タスクに設定する処理である。
次に、ステップS31で注目タスクの条件節の論理式を作成する。これは、図7のタスク1の条件節の論理式を作成する処理であり、タスク1から左下に伸びる実線が示すパスである。
ステップ33は、プログラム上での順序が注目タスクの次にくるタスクが存在するかを確認する。次にくるタスクがなければAの呼出し元へ戻る。存在すれば、ステップS34へ進む。
ステップS34は、プログラム上での順序が注目タスクの次のタスクの条件節の論理式を作成する。これは、図7のタスク2の条件節の論理式を作成する処理である。タスク2から左下に伸びる実線が示すパスである。
ステップS35は、注目タスクと次のタスクの論理式の論理積について充足可能性を評価する。これは図7の注目タスクであるタスク1の条件節の論理式と、タスク2の条件節の論理式の間で論理積をとり、この論理式間の論理積に対して、充足可能性を評価する処理である。
ステップ36は、充足可能かどうかによって分岐を行なう。充足可能である場合は、ステップS40ヘ進み、注目タスクと次のタスクを新たに注目タスクとして扱い、注目タスクと次のタスクの2つの論理式の論理積を新たな注目タスクの条件節の論理式とする。これは、図7の注目タスクであるタスク1とその次のタスクであるタスク2をまとめて新たな注目タスクとし、タスク1とタスク2の条件節の論理式の論理積を、この新たな注目タスクの条件節の論理式とする処理である。この処理を行った後、新たな注目タスクに対して、再帰的にステップS33へ進む。
一方、ステップS36で充足可能でない場合は、ステップS37へ進む。ステップS37は、注目タスクと、次のタスクの条件節の論理を反転した論理式を作成する。これは、図7のタスク2の条件節の反転した論理式を作成する処理である。この処理は、タスク2から右下に伸びる破線が示すパスを作成するものである。
ステップS38は、注目タスクの論理式と次のタスクの反転した論理式の論理積について充足可能性を評価する。これは、図7の注目タスクであるタスク1の条件節の論理式と、タスク2の条件節の反転した論理式の間で論理積をとり、この論理式間の論理積に対して、充足可能性を評価する処理である。
ステップS39は、充足可能かどうかによって分岐を行なう。充足可能である場合は、ステップS40へ進む。一方、充足不可能でる場合は、Aの呼出し元へ戻る。
以上のように、注目タスクを更新しながら、再帰的に実行条件の充足可能性判定を進める。
以上は、ステップS31において設定した注目タスクの条件節の論理式を作成した後の処理である。図7では、タスク1の左下に伸びる実線から下についての充足可能性の判定に相当する。これらの処理を再帰的に行った後は、ステップS32において、タスク1の条件節の論理を反転した論理式を作成し、同様に後続のタスクの実行条件との間で充足可能性判定を再帰的に行なう。これは、図7のタスク1から右下に伸びる破線から下についての充足可能性の判定に相当する。
このように、充足不能となる実行条件の組合せを、並列化スケジューリングの対象外とすることにより、並列化スケジューリング部で総当りによって最適な並列化スケジューリング結果を求める際に、対象となるタスク及び実行条件のパターンを削減することができるため、総当りによる計算量を抑制することができる。
ただし、相関関係を求めるための計算量も、タスク数Nの増加に伴って指数関数的に増加するため、タスク数Nが10を超えると、計算量は多大となる。また、タスク間に相関関係が無い場合は、実行条件解析部でタスク間の相関関係を求めても、実行条件の組合せを削減することはできず、最適な並列化スケジューリングを求めるための、総当りの計算量は削減できない。そこで、実行条件の解析対象を抽出し、計算対象を限定する。
実行条件の解析対象抽出部34は、与えられた条件に基づいて、実行条件解析部35で対象とするタスクを、変化タスクとして予め抽出する。実行条件解析部35では、抽出された変化タスクについての実行条件のみを解析し、残りのタスクである固定タスクの実行条件については解析の対象としない。
この時、解析の対象としない固定タスクについては、THEN節及びELSE節の実行時間のうち、長い方の実行時間をそのタスクの実行時間として、固定的に(固定長の処理時間を)割当てる。
並列化スケジューリング部36は、実行条件の解析対象抽出部34で抽出した変化タスクについては、THEN節及びELSE節の実行条件と処理時間を考慮する。実行条件の解析対象抽出部34で抽出した変化タスク以外の固定タスクについては、固定長の処理時間を持つとして、抽出された実行条件に対して総当りで並列化スケジューリングを行い、最適となる並列化スケジューリングを求める。
本実施の形態では、THEN節とELSE節の処理時間の差が大きいタスクを、実行条件の解析対象抽出部34で抽出する変化タスクの条件とする。そして、タスクの処理時間の差が大きい上位N個のタスクを変化タスクとしてタスクに属性を付けて記憶し、実行条件解析部35での実行条件の相関関係の解析対象とする。
タスクの処理時間の差が大きいタスク(変化タスク)を抽出するために、図9に示す解析対象タスクリストを用いる。この解析対象タスクリストは、タスクごとにTHEN節とELSE節の処理時間の差を求め、THEN節とELSE節の処理時間の差が大きいものから順にタスクを並べたものである。
次に、タスクの処理時間の差が大きいタスク(変化タスク)の抽出の処理を、図10のフローチャートに沿って説明する。
まず、ステップS10は、プログラムの先頭タスクを注目タスクとして設定する。ステップS11からステップS17の注目タスクに関する処理ループは、プログラムに未処理のタスクがある間繰り返す。
この処理ループにおいて、ステップS12は、注目タスクのTHEN節/ELSE節の処理時間の差を求める。次に、ステップS13は、ステップS12で求めた注目タスクのTHEN節/ELSE節の処理時間の差について、図9の解析対象タスクリストの最後尾のタスクのTHEN節/ELSE節処理時間差と比較する。次に、ステップS14は、注目タスクのTHEN節/ELSE節の処理時間差が大きければ、解析対象タスクリストの最後尾のタスクを、注目タスクに置き換える。そして、ステップS15は、解析対象タスクリストを処理時間の差に関して降順にソートする。そして、ステップS16は、プログラム中の注目タスクを次のタスクへ進める。
一方、ステップS13での比較において、注目タスクのTHEN節/ELSE節の処理時間差が、解析対象タスクリストの最後尾のタスクのTHEN節/ELSE節の処理時間差より小さいか、同じであれば、解析対象タスクリストの内容は更新せず、ステップS16へ進み、プログラム中の注目タスクを次のタスクへ進める。全てのタスクについて、処理を終えるとループを終了する(ステップS17)。
このように、プログラム中の全てのタスクについて、図10に示すフローチャートを実行すると、処理時間差の大きい上位N個のタスクを抽出することができる。ここで抽出したN個のタスクを変化タスクとし、変化タスク以外を固定タスクとする。変化タスクを対象に、実行条件解析部35において、これらのタスク間の実行条件の相関関係を基に、存在しない実行条件の組合せを削除し、最適な並列化スケジューリングを求めるための、総当りの計算量を抑制する。
そして、並列化スケジューリング部36において、存在しない実行条件の組合せを削減した後の各パターン全てについて並列化スケジューリングを行う。こうして求めた並列化スケジューリング結果に対して、総当りで各実行条件下での各タスクの実行時間を割り当て、各並列化スケジューリングに対する最悪のスケジュール長を求める。この最悪のスケジュール長が最も短く、最悪実行時間が最短となる並列化スケジューリングを、最適な並列化スケジューリング結果として出力する。
処理時間差の大きい上位N個を対象にするが、Nの決め方の例として、最適な並列化スケジュールを得るまでの時間に基づいて決める方法がある。また、実行条件解析後のスケジューリングのパターン数に基づいて求める方法がある。
まず、最適な並列化スケジューリングを得るまでの時間に基づいた方法について説明する。この方法では、最初にNを2や3といった小さな値に設定し、最適な並列化スケジューリングを求める。この時間が、例えば1時間未満など実用的な時間であれば、Nの値を1加算し、実行条件の解析対象のタスクを増やした上で、改めて最適な並列化スケジューリングを求める。このように、実行条件の解析対象タスクの数を、最適な並列化スケジューリングを得るまでの処理時間に基づいて繰り返し増加させることで、例えば1時間など許容可能な設定時間内で計算を終えるNまで、最適なスケジューリング結果を得ることができる。設定した時間までに最適なスケジューリング結果が得られない場合は、その前のNの値で得られたスケジューリング結果を、最適なスケジューリング結果として扱うことができる。
次に、並列化スケジューリングを行う前の段階で、実行条件解析後のスケジューリングのパターン数を基にNを設定する方法について説明する。この方法も先の方法と同様に、最初にNを2や3といった小さな値に設定し、実行条件の解析を行う。実行条件の解析を行った結果、並列化スケジューリングのパターン数が小さければ、Nの値を1加算し、実行条件の解析対象のタスクを増やした上で、改めて実行条件の解析を行う。並列化スケジューリングのパターン数については、例えば512などの値を用いる。この値を特定するため、別のプログラムを対象に512パターンなど、様々なパターン数における最適な並列化スケジューリング結果を得るまでの処理時間を事前に求めておき、並列化スケジューリングの入力とするパターン数とそのパターン数での処理時間の関係を概算値として保持しておく。上位タスク数Nを決定する際には、上位Nタスクから得られるスケジューリングのパターン数が、希望する処理時間に収まるパターン数かどうかで判断することができる。
本実施の形態によれば、実行条件によりタスクの処理時間の差が大きいタスクを解析対象として抽出する機能によって、タスク数が多いプログラムに対して、短時間で並列化スケジューリング結果を得ることができる。
また、本実施の形態によれば、実行条件によりタスクの処理時間の差が小さいタスクを最悪実行時間の固定長のタスクとして、並列化スケジューリングをするので、総当りの計算量を抑制できる効果がある。
実施の形態2.
本実施の形態は、実施の形態1の実行条件の解析対象抽出部34とは別のタスク抽出方法の実行条件の解析対象抽出部34を持つ実施の形態である。実施の形態1とは異なり、本実施の形態の実行条件の解析対象抽出部34は、変数ごとに、当該変数が条件節に現れるタスクの条件の違いによる処理時間の差を積算し、積算した処理時間の差が大きい変数を含むタスクを変化タスクとして、実行条件解析部の解析対象とするものである。なお、実行条件解析部35にて対象とするタスク(変化タスク)を抽出し、変化タスク以外を固定タスクとした後は、実施の形態1と同様の処理を行う。
本実施の形態では、まず、プログラム中の条件節に現れる全ての変数を取り出して列挙する。次に列挙したすべての変数について、各々の変数が条件節に表れるタスク毎に、当該タスクのTHEN節とELSE節との処理時間の差を積算する。この積算したタスクの処理時間の差が大きい変数を含む上位N個のタスクを、実行条件解析部での実行条件の相関関係の解析対象とする変化タスクとし、変化タスク以外を固定タスクとする。本実施の形態は、変数毎に、プログラムの処理時間に与える影響を調べ、同じ変数がプログラムの複数の部分(条件節)で使用されていることを考慮するものである。
図3は、本実施の形態による並列化スケジューリング装置に構成である。以下、図に従って説明する。図において、並列化スケジューリング装置は、入力プログラム記憶部30に記憶された入力プログラムを読み出して、字句構文解析部31が、字句及び構文解析を行い、スケジューリング部32が並列化スケジューリングを行い、実行コード生成部37が並列化スケジューリング結果に基づき実行コードを生成する。この点において、実施の形態1と同様である。
また、スケジューリング部32は、依存性解析部33、実行条件の解析対象抽出部34、実行条件解析部35及び並列化スケジューリング部36から構成される点で、実施の形態1と同様である。ただし、実行条件の解析対象抽出部34の処理内容は、実施の形態1と異なる。実行条件の解析対象抽出部34を処理した後は、抽出したN個の変化タスクについて実行条件を解析する処理になるため、実施の形態1と同様である。
上述の積算した処理時間差が大きいタスク(変化タスク)を抽出するためには、例えば、図11に示す入力プログラムのモデルと、図12に示す解析タスク抽出表を用いる。図13は、積算した処理時間差が大きいタスク(変化タスク)の抽出の処理を示すフローチャートである。以下、図に沿って説明する。
まず、ステップS20は、プログラムの先頭タスクを注目タスクとして設定する。ステップS21は、注目タスクについて、プログラムに未処理のタスクがある間、以下の処理を繰り返す。ステップS22は、注目タスクの条件節に含まれる各変数に対し、THEN節の処理時間及びELSE節の処理時間を割当てる。図11の例では、まずタスク1を注目タスクとする。次に、タスク1の条件節に含まれる変数a、及びcについて、THEN節の処理時間/ELSE節の処理時間を、図12の該当する箇所(実行条件内の変数の列で注目タスクの行に該当する欄に相当する記憶領域)に設定する。
図11に示す入力プログラムの場合、タスク1の条件節は、変数aと変数cから成る。また、タスク1のTHEN節の処理時間は100(単位時間)、ELSE節の処理時間は2(単位時間)である。このため、図12の解析対象タスク抽出表のタスク1の行の変数aおよび変数cの列に、THEN節/ELSE節の処理時間である100/2を設定する。
注目タスクについて、ステップS22の処理を終えると、ステップS23は、プログラム中の注目ステップを次のタスクへ進める。ここで、プログラムは、図11のようにタスクがシーケンシャルに並んでおり、注目タスクをタスク1とした処理が終了すると、注目タスクをタスク2とする。そして、ステップS24は、プログラムに含まれる全てのタスクについて、ステップS22の処理を完了すると、ループを終了する。
次に、ステップS25は、条件節に含まれる各変数に対し、THEN節およびELSE節それぞれの処理時間の合計を求め、この合計したTHEN節の処理時間とELSE節の処理時間との差を求める。次に、ステップS26は、求めたTHEN節の処理時間とELSE節の処理時間との処理時間の差が最大の実行条件内の変数を求める。このとき、タスクの条件節が変数aや変数cの負論理であれば、変数aや変数cの位置には、THEN節とELSE節の処理時間を入れ換えて、ELSE節/THEN節の処理時間を設定する。つまり、図12の各変数について、それぞれ、正論理、負論理での処理時間の合計と差を求める。
次に、ステップS27は、対象となるタスク数がM個以下の間、以下の処理を繰り返す。まず、ステップS28は、ステップS26で求めた処理時間の差が最大の変数を含むタスクを、図12の解析対象タスク抽出表から求め、対象タスク(変化タスク)に加える。ここで、加える対象タスクが、すでに対象タスクにある場合は、加える処理は行わない。さらに、ステップS29は、処理時間の差が次に大きい変数を求める。この時点で、対象となるタスク(変化タスク)の数がM個を超えている場合は、ループを終了する(ステップS30)。
上述のMの決め方としては、実施例1で実行条件の解析対象タスクをN個へ限定する場合と同様に、最適な並列化スケジュールを得るまでの時間に基づいて決める方法と、実行条件解析後のスケジューリングのパターン数に基づいて求める方法がある。
図11に示す入力プログラムの場合、全てのタスクについて、解析対象タスク抽出表を設定した結果が図12となる。
図12において、処理時間の差は、変数aが最も大きい。この変数aを含むタスクは、タスク1、タスク3、タスク4の3つのタスクが解析対象である。ここで、解析対象とする変化タスクの数Mを3に設定している場合、この時点では、対象の変化タスク数が設定数を超えていないため、次の変数を候補に加える。
図12では、変数aに次いで、変数dの処理時間の差が大きい。このため、変数dを含むタスクであるタスク3を解析対象(変化タスク)に加える。ただし、この例では、既にタスク3を解析対象(変化タスク)としているため、解析対象タスクの数は増えない。そこで、次に処理時間の差が大きい変数bを含むタスクであるタスク2を候補とする。タスク2は、これまで解析対象としている変化タスクに含まれていないため、解析対象タスク(変化タスク)数が3を超えることになる。解析対象とするタスク数Mを3に設定している場合は、この時点で解析対象タスク(変化タスク)の選択を終了する。この時点で解析対象となっている変化タスクは、タスク1、タスク3、タスク4の3つのタスクである。
このように、実行条件の解析対象抽出部34で抽出したM個の変化タスクを対象に、実行条件解析部35において、これらのタスク間の実行条件の相関関係を基に、存在しない実行条件の組合せを削除し、最適な並列化スケジューリングを求めるための、総当りの計算量を抑制する。
そして、並列化スケジューリング部36において、存在しない実行条件の組合せを削減した後の各パターン全てについて、並列化スケジューリングを行う。並列化スケジューリングした結果の並列化スケジューリング結果に対して、総当りで各実行条件下での各タスクの実行時間を割り当て、各並列化スケジューリングに対する最悪のスケジュール長を求める。この最悪のスケジュール長が最も短く、最悪実行時間が最短となる並列化スケジューリングを、最適な並列化スケジューリング結果として出力する。
本実施の形態によれば、タスクのTHEN節とELSE節との処理時間の差が大きい変数を含むタスクを解析対象(変化タスク)として抽出するので、タスク数が多いプログラムに対して、短時間で並列化スケジューリング結果を得ることができる。
10 ローカルメモリ、12 プロセッシングエレメント(PE)、13 バス、14 共有メモリ、30 入力プログラム記憶部、31 字句構文解析部、32 スケジューリング部、33 依存性解析部、34 実行条件の解析対象抽出部、35 実行条件解析部、36 並列化スケジューリング部。

Claims (2)

  1. 1の実行条件及び前記実行条件下での処理を含むタスクを構成要素とするプログラムを記憶する記憶部と、
    前記プログラム中の前記タスクの前記実行条件の全ての条件下での処理時間を求めて前記処理時間の前記タスクごとの最長処理時間と最短処理時間との差の順に前記タスクを並べ、最も前記差が大きいタスクから所定数の前記タスクを変化タスクとし、前記変化タスク以外を固定タスクとして判別して前記記憶部に前記判別した結果を記憶する解析対象抽出部と、
    複数の演算処理装置を有する並列演算処理装置の並列化スケジュールを作成する並列化スケジューリングを行うとともに、前記並列化スケジュールに含まれる前記変化タスクに対しては、全ての実行条件ごとに当該変化タスクの処理時間を計算し、前記並列化スケジュールに含まれる前記固定タスクに対しては、当該固定タスクの処理時間が最長となる実行条件での当該固定タスクの処理時間として計算して、前記並列化スケジュールの処理時間の計算を行うスケジューリング部と、
    前記並列化スケジュールの中で、最長処理時間が最短の前記並列化スケジュールを出力する出力部を備えた並列化スケジューリング装置。
  2. 変数により表現された1の実行条件を表す条件節及び前記実行条件が真となる場合、偽となる場合それぞれの処理を表す帰結節を含むタスクを構成要素とするプログラムを記憶する記憶部と、
    前記プログラム中の前記タスクのそれぞれについて、前記実行条件が真の場合の処理時間及び偽の場合の処理時間を求めるとともに、前記条件節に現れる前記変数に対して前記実行条件が真の場合の処理時間及び偽の場合の処理時間を割り当てた上で、前記変数のそれぞれについて割り当てられた前記実行条件が真の場合の処理時間の積算値と偽の場合の処理時間の積算値との差の値が大きい順に前記変数の順序付けを行い、前記差の値が大きい変数を前記条件節に含む前記タスクから順に所定数の前記タスクを変化タスクとし、前記プログラム中の前記変化タスク以外のタスクを固定タスクとして前記記憶部に記憶する解析対象抽出部と、
    複数の演算処理装置を有する並列演算処理装置の並列化スケジュールを作成する並列化スケジューリングを行うとともに、前記並列化スケジュールに含まれる前記変化タスクに対しては、全ての実行条件ごとに当該変化タスクの処理時間を計算し、前記並列化スケジュールに含まれる前記固定タスクに対しては、当該固定タスクの処理時間が最長となる実行条件での当該固定タスクの処理時間として計算して、前記並列化スケジュールの処理時間の計算を行うスケジューリング部と、
    前記並列化スケジュールの中で、最長処理時間が最短の前記並列化スケジュールを出力する出力部を備えた並列化スケジューリング装置。
JP2009112699A 2009-05-07 2009-05-07 並列化スケジューリング装置 Expired - Fee Related JP5381302B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009112699A JP5381302B2 (ja) 2009-05-07 2009-05-07 並列化スケジューリング装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009112699A JP5381302B2 (ja) 2009-05-07 2009-05-07 並列化スケジューリング装置

Publications (2)

Publication Number Publication Date
JP2010262471A JP2010262471A (ja) 2010-11-18
JP5381302B2 true JP5381302B2 (ja) 2014-01-08

Family

ID=43360480

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009112699A Expired - Fee Related JP5381302B2 (ja) 2009-05-07 2009-05-07 並列化スケジューリング装置

Country Status (1)

Country Link
JP (1) JP5381302B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017001765A1 (de) 2016-02-29 2017-09-14 Fanuc Corporation Numerische steuerung für werkzeugmaschine

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140093508A (ko) * 2013-01-18 2014-07-28 한국과학기술원 근접질의 연산 가속화 시스템
JP6488738B2 (ja) * 2015-02-05 2019-03-27 株式会社デンソー 並列化コンパイル方法、及び、並列化コンパイラ
JP6488739B2 (ja) * 2015-02-05 2019-03-27 株式会社デンソー 並列化コンパイル方法、及び、並列化コンパイラ
CN112799821A (zh) * 2021-02-06 2021-05-14 读书郎教育科技有限公司 一种调度多个执行时机可变的周期任务的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05189243A (ja) * 1992-01-14 1993-07-30 Fujitsu Ltd 条件付演算のコンパイル処理装置
JP3664473B2 (ja) * 2000-10-04 2005-06-29 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの最適化方法及びこれを用いたコンパイラ

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017001765A1 (de) 2016-02-29 2017-09-14 Fanuc Corporation Numerische steuerung für werkzeugmaschine
US10120363B2 (en) 2016-02-29 2018-11-06 Fanuc Corporation Numerical controller for machine tool
DE102017001765B4 (de) 2016-02-29 2024-08-08 Fanuc Corporation Numerische steuerung für werkzeugmaschine

Also Published As

Publication number Publication date
JP2010262471A (ja) 2010-11-18

Similar Documents

Publication Publication Date Title
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
JP2002116916A (ja) プログラムの最適化方法及びこれを用いたコンパイラ
Melani et al. Schedulability analysis of conditional parallel task graphs in multicore systems
JP4962564B2 (ja) 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム
KR101279179B1 (ko) 병렬 프로그램 생성 방법
JP5381302B2 (ja) 並列化スケジューリング装置
Shojaei et al. A fast and scalable multidimensional multiple-choice knapsack heuristic
Li et al. Harmony: Overcoming the hurdles of gpu memory capacity to train massive dnn models on commodity servers
JP5083204B2 (ja) 並列化プログラム生成プログラム、並列化プログラム生成装置、及び並列化プログラム生成方法
Prihozhy et al. Pipeline synthesis and optimization from branched feedback dataflow programs
Vidal et al. UML design for dynamically reconfigurable multiprocessor embedded systems
Cordes et al. Automatic extraction of task-level parallelism for heterogeneous MPSoCs
Yin et al. Trigger-centric loop mapping on CGRAs
Velasco-Montero et al. A Pipelining-Based Heterogeneous Scheduling and Energy-Throughput Optimization Scheme for CNNs Leveraging Apache TVM
Bergamaschi et al. Scheduling under resource constraints and module assignment
Chen et al. Efficient resource constrained scheduling using parallel two-phase branch-and-bound heuristics
Heid et al. μStreams: a tool for automated streaming pipeline generation on soft-core processors
Fradet et al. Sequential Scheduling of Dataflow Graphs for Memory Peak Minimization
Wang et al. A scalable and fast microprocessor design space exploration methodology
Kelefouras et al. Workflow simulation aware and multi-threading effective task scheduling for heterogeneous computing
Dammak et al. Framework for a selection of custom instructions for Ht-MPSoC in area-performance aware manner
Prihozhy et al. Semantic model for high-level synthesis of dataflow pipelines
Cedersjö et al. Finding fast action selectors for dataflow actors
Duan et al. Notice of Violation of IEEE Publication PrinciplesScientific Workflow Partitioning and Data Flow Optimization in Hybrid Clouds
Tang et al. Parallelizing the merge sorting network algorithm on a multi-core computer using Go and Cilk

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111014

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130613

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130618

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130724

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130903

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130916

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees