JP5036523B2 - プログラム並列化装置 - Google Patents
プログラム並列化装置 Download PDFInfo
- Publication number
- JP5036523B2 JP5036523B2 JP2007330336A JP2007330336A JP5036523B2 JP 5036523 B2 JP5036523 B2 JP 5036523B2 JP 2007330336 A JP2007330336 A JP 2007330336A JP 2007330336 A JP2007330336 A JP 2007330336A JP 5036523 B2 JP5036523 B2 JP 5036523B2
- Authority
- JP
- Japan
- Prior art keywords
- task
- program
- predicate
- process element
- tasks
- 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
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Description
図1は、この発明の実施の形態1による並列処理装置を示す構成図である。
図において、並列処理装置は、プロセッサ1と外部メモリ5およびこれらを相互に接続するためのバス6から構成されている。プロセッサ1は、二つ以上のプロセスエレメント(実施の形態1ではプロセスエレメント(PE)#0(2)、#1(3)の2台)と内蔵メモリ4からなる。これらプロセスエレメント#0(2)、#1(3)は、それぞれ、プレディケートレジスタ7,12、プレディケート受信レジスタ8,11、命令実行部9,13、同期機構10,14を備えている。
プレディケート受信レジスタ8,11は、他のプロセスエレメントで実行された命令の結果(真偽値)を受信するためのレジスタである。即ち、プレディケート受信レジスタ8は、プロセスエレメント#1(3)による命令実行結果を、また、プレディケート受信レジスタ11は、プロセスエレメント#0(2)による命令実行結果を受信する。
即ち、各プロセスエレメント#0(2),#1(3)は、他のプロセスエレメントに対して同期イベントを通知する命令を持つ。この同期イベントには、固有の番号が付けられる。この同期イベントの固有の番号は、後述するプログラム並列化装置20がプログラム30を分割する際に、静的に決定し、対応する命令をマシンコード31に組み込むものである。尚、プログラム30およびマシンコード31についても後述する。
この例では、マシンコード31を外部メモリ5上に配置しているが、プロセッサ1内部に存在する内蔵メモリ4上に配置してもよい。また、内蔵メモリ4上に配置されている変数は、外部メモリ5上に配置することもできる。尚、外部メモリ5もアービトレーション機能を持ち、アクセスが排他的に行われる。また、バス6は、プロセッサ1と外部メモリ5とを相互に接続するためのバスである。
図2は、プログラム並列化装置の構成図である。
図示のプログラム並列化装置20は、解析部21、タスク分割部22、スケジューリング部23、コード生成部24を備えている。
また、プログラム並列処理装置20と図1に示した並列実行装置とは、例えば、ネットワークケーブルやUSBケーブルによって接続され、プログラム並列化装置20によって並列化されたプログラムを、並列実行装置のプログラムを格納する外部メモリ5へ転送するよう構成されている。
例えば、あるプログラムを、実行条件とその条件下での処理のまとまりを一つのタスクとして扱った場合のタスク間の依存関係が、図3で表現されるようなプログラムを対象に説明する。図3は、プログラムの一部であり、その前後には他のタスクが存在していても良い。
図3の各ノードはタスクを表し、円の中の数字はタスクの番号である。また、円の右の数値はそのタスクの処理時間を数値で表現したものである。更にノード間の矢印は、タスク間の先行制約を表現している。例えば、タスク2はタスク1が終了するまで処理を開始することができず、タスク4はタスク2とタスク3が終了するまで処理を開始することができない。
プログラム並列化装置20は、プログラム30を入力として受けると、解析部21で字句解析・構文解析を行い中間コードを生成する(ステップST1)。このとき、タスク分割部22によって図3に示すタスク間の依存関係を求める(ステップST2)。次に、スケジューリング部23において、図3に示すタスクの依存性解析結果と各タスクの処理時間から、例えばクリティカルパス法を用いて、プロセスエレメントに対してタスクの割付を行う(ステップST3)。二つのプロセスエレメントに対して、図3のタスク構成を割り付けた例を図5に示す。
同期イベントの通知では、一つの同期イベント通知命令が、複数の同期イベント待機命令に対して、ある一つの同期イベントをブロードキャストしてもよい。
また、プレディケート付き同期イベントは、例えば同期イベント通知命令“SENDEV_PD n”およびプレディケート付き同期イベント待機命令“WAITEV_PD n”で表現する。
図5の例では、タスク4をプロセスエレメント#1(3)が実行している間、プロセスエレメント#0(2)にはタスクが割り当てられておらず、空き時間が存在する。そこで、タスク分割部22によるタスク再分割(ステップST5)に分岐し、タスクの再分割を行う。
先ず、空き時間を持つプロセスエレメントについて、空き時間の処理開始からの時刻とその時刻に空き時間を持つプロセスエレメントの数を求める(ステップST11)。次に、その時刻で処理を分割することができるタスクが存在するかを確認する(ステップST12)。このとき、タスクの処理時間が短く、分割して並列化するより、並列化による同期イベントの受け渡しのオーバーヘッドが大きくなる場合は、分割可能なタスクが存在しないと判断して処理を終了する。一方、図5のタスク4のように、同期イベントの受け渡しのオーバーヘッドに対して処理時間が長いタスクが存在する場合は、ステップST13に移行して、分割可能なタスクの処理を空き時間を持つプロセスエレメントの数で分割する。図5の例では、プロセスエレメントが二つ存在するため、タスク4の処理を二つに分割する。このようにタスクの処理を複数に分割する際には、処理の内部でのデータの依存性を確認し、依存性を持つ処理の間で分割することを避ける必要がある。その理由は、依存性を持つ処理を複数のプロセスエレメントに対して割り付けると、この依存性を保証するために、新たに同期イベントの受け渡しの命令を追加する必要があるためである。従って、異なるプロセスエレメントに分割する際には、依存性を持たない処理を割り付ける。依存性を持つ場合は、依存関係がある処理をまとめて一つのプロセスエレメントに配置し、残りの処理を別のプロセスエレメントに配置する。
以上がタスクを再分割する際のタスク分割部22の処理である。
空き時間がない場合は、コード生成部24でマシンコード31の生成を行う(ステップST6)。コード生成部24では、タスク間の依存関係に基づいて、同期イベントの受け渡しを行うための、同期イベント通知命令と同期イベントの待機命令を追加する。尚、タスクを再分割した際に追加したプレディケート付き同期命令が追加されたタスクについては、マシンコード31を生成する際に、その命令をマシンコード31中に組み込む。
図5に示したスケジューリング結果の空き時間を短縮する目的で、図4及び図6に示した処理を実行した結果、図7に示すスケジューリング結果が得られる。
図7は、図5のタスク4の処理を二つのプロセスエレメントに分割することで、空き時間を削減し、プログラム全体の処理時間を短縮している。尚、タスク4の条件判定処理の時間を2とすると、この時間は分割できないため、プロセスエレメント#1(3)上で処理を行う。この条件判定処理によって求められたプレディケートの値を、プロセスエレメント#0(2)に割り付けられたタスク4−2に通知する。このように、タスクを分割した結果、全体の処理時間は、タスク1及びタスク2の時間とタスク4−2の時間(=19)に対し、条件判定の時間2と二つの同期命令の時間の合計の47となる。
並列処理装置のプロセスエレメント#0(2)は、図7の左側のタスクであるタスク1、タスク2、タスク4−2のプログラムを順に実行する。また、プロセスエレメント#1(3)は、図7の右側のタスクであるタスク3、タスク4−1のプログラムを順に実行する。
先ず、プロセスエレメント#0(2)は、タスク1のプログラムをメモリ(内蔵メモリ4または外部メモリ5)から読み込んで処理を開始する。このとき、プロセスエレメント#1(3)でもタスク3のプログラムを読み込んで処理を開始するが、先頭の命令が、タスク3の先頭にタスク1が終了した時点でプロセスエレメント#0(2)から発行される同期イベントを待機する命令であるため、プロセスエレメント#1(3)が持つ同期機構14に、プロセスエレメント#0(2)からのイベントを待機する設定を行い、そのイベントの待機状態となる。尚、この同期イベントには固有の番号が割り振られており、その番号を持つイベントが発行されるまで待機する。同期イベントの固有番号は、プログラム並列化装置20のコード生成部24によって、同期イベントの受け渡しが必要となる箇所に、同期イベントの送受信命令を追加する際に、それぞれの箇所について固有の番号を割り付けられている。
プロセスエレメント#0(2)からの同期イベントを受けたプロセスエレメント#1(3)は、同期機構14によって受信した同期イベントが、待機状態を抜ける条件となる同期イベントであるかを判断する。この場合は、待機状態を抜け出す条件の同期イベントであるため、待機状態を抜け、命令実行部13での処理を再開し、プログラム3の処理を開始する。プロセスエレメント#0(2)の命令実行部9は、タスク2の処理が完了すると、タスク4−2のプログラムを読み出す。このプログラム4−2の先頭は、プロセスエレメント#1(3)からのプレディケート付き同期イベントを待機する命令である。このため、プロセスエレメント#0(2)の命令実行部9は、同期機構10に待機する同期イベントを登録し、待機状態に移る。
実施の形態2における並列処理装置とプログラム並列化装置の構成は実施の形態1と同様であるため、実施の形態1の図面を用いて説明する。
図8は、プログラムの一部であり、その前後には他のタスクが存在していても良い。
図8において、実施の形態1と同様に、各ノードがタスクを表し、円の中の数値はタスクの番号を表す。また、円の右側の数値はそのタスクの処理時間である。更に、ノード間の矢印は、タスク間の先行制約を表現している。この例では、処理時間4のタスク3を実行するためには、処理時間が40であるタスク1と処理時間が20であるタスク2の両方のタスクが処理を完了していなければならない。
その結果、プログラムは、図10に示すようにプロセスエレメントに対して割り付けられる。ここで、分割されたタスク1−2は、タスク2の後にスケジューリングされている。この例では、タスク1とタスク2の間に依存関係がないため、どちらのタスクを先に実行しても問題はない。ただし、タスク1−2は、タスク1−1で行われる実行条件判定の処理結果であるプレディケート値を必要とするため、このプレディケート値が確定してから処理を開始するようにした方がプロセスエレメントの空き時間の発生を抑えられる。そのため、プロセスエレメント#0(2)上で実行条件判定の処理を行っている時間に並行して、プロセスエレメント#1(3)上ではタスク2の処理を行うようにタスクを割り付ける。
並列処理装置のプロセスエレメント#0(2)は、図10のタスク1−1のプログラムを実行する。また、プロセスエレメント#1(3)は、図10のタスク2のプログラムから実行を開始する。
プロセスエレメント#0(2)が、タスク1−1の実行条件判定の処理を完了した時点で、プロセスエレメント#1(3)に対して、プレディケート付き同期イベントを通知する。その後、プロセスエレメント#0(2)は、タスク1−1の後続の処理を続けて行う。
プロセスエレメント#1(3)は、開始時にタスク2のプログラムから実行を開始するが、タスク2の実行中にプロセスエレメント#0(2)からプレディケート付き同期イベントを受信する。このとき、この同期イベント通知に対応する受信命令はまだ実行されていない。この同期イベントを受信する命令は、タスク2の処理が完了した後に実行するタスク1−2の先頭に存在するためである。このような場合、プレディケート付き同期イベントを受信したプロセスエレメント#1(3)は、この同期イベントの番号を同期機構14に保持すると共に、受信したプレディケートの値を、プレディケート受信レジスタ11に保持する。
実施の形態3はタスクの先行制約において、後続のタスクを多数持つタスクを分割するようにしたものである。
実施の形態3におけるプログラム並列化装置および並列処理装置の図面上の構成は、実施の形態1と同様であるため、これらの図を援用して説明する。
図11において、実施の形態1と同様に、各ノードがタスクを表し、円の中の数値はタスクの番号を表す。また、円の右側の数値はそのタスクの処理時間である。更に、ノード間の矢印は、タスク間の先行制約を表現している。この例では、処理時間が18であるタスク1を実行した後、タスク3〜タスク6が実行可能になる。また、タスク2は常に実行可能である。
しかし、このような細かな空き時間がスケジューリング結果の複数箇所に存在する場合、後続のタスクを多数持つタスクを分割することでスケジューリングの条件を改善し、プログラム全体の処理時間を短くできる可能性がある。
タスク1を分割した際のスケジューリング結果を図13に示す。図13のようなスケジューリングを行った際のプログラムの処理時間は25になり、タスク1を一つのタスクとして扱う場合に比べ短縮できる。図13のタスクを示す矢印の右側の数値は、そのタスクの処理時間を表す。
先ず、タスク分割部22は、全てのタスクのうち、後続のタスクが例えば三つ以上あるタスクについて、プログラム上の先頭のタスクから順にタスクを分割し(ステップST21,ST22)、スケジューリング部23でスケジューリングを行う(ステップST23)。その結果、ステップST24において処理時間短縮の効果があれば、そのスケジューリング結果を採用し、そのタスクを分割する。一方、ステップST24において、分割による効果がなければ、タスクを分割前に戻す(ステップST25)。
次に、タスク分割部22は、そのタスクがプログラムの最後のタスクかどうかを確認する(ステップST26)。また、上記のステップST21において、後続のタスクが三つ以上でなかった場合もステップST26に移行する。ステップST26において、そのタスクが最後のタスクであれば処理を終了する。一方、そのタスクが最後のタスクでない場合は、ステップST21に戻って次のタスクに移る。このとき、後続のタスクが三つ以上あるタスクに移る。
尚、この例では、後続のタスクの数を3タスク以上としたが、このタスクの数は、3タスク以上に限定されるものではなく、2タスクや4タスク以上であってもよい。
また、実施の形態1または2を実施した後、更に実施の形態3のタスク分割を適用することで、更なるプログラムの処理時間の短縮を行うことができる。
実施の形態4は、タスクの実行条件の判定処理を複数のプロセスエレメントに対応して分割するようにしたものである。
プログラム並列化装置の図面上の構成は図2と同様であるため、図2を用いて説明する。
実施の形態4のプログラム並列化装置20におけるタスク分割部22は、解析部21の解析結果に基づいて、プログラムを複数のプロセスエレメントに対応したタスクに分割すると共に、スケジューリング部23でスケジューリングを行った結果、いずれかのプロセスエレメントで、タスク実行の空き時間が存在した場合は、タスクの実行条件の判定処理を複数のプロセスエレメントに対応して分割するよう構成されている。また、コード生成部24は、タスク分割部22で、タスクの実行条件の判定処理を分割した場合に、分割したタスクの実行条件の判定処理を同期させるための同期命令を付加するよう構成されている。それ以外の構成は実施の形態1と同様である。
実施の形態4のプロセッサはN(Nは任意の整数)個のプロセスエレメント(PE)を備えており、図15はN番目(#N)のプロセスエレメント50を示している。
図示のプロセスエレメント50は、プレディケートレジスタ51、N−1個のプレディケート受信レジスタ52、命令実行部53、同期機構54を備えている。プレディケートレジスタ51は、そのプロセスエレメントで処理するプログラム用のプレディケート値を保持する(自プロセスエレメントの処理結果の真偽値を格納する)ためのレジスタであり、N−1個のプレディケート受信レジスタ52は、それぞれ、他のプロセスエレメントからプレディケート付き同期イベントによって受信した、接続先のプレディケート値を格納するためのレジスタである。また、命令実行部53は、プレディケートレジスタ51の値とプレディケート受信レジスタ52の値とに基づいて、タスクの実行を行うものである。更に、同期機構54は、実施の形態1における同期機構10,14と同様に、他のプロセスエレメントとの同期を行うためのものである。
以下、実行条件とその条件下での処理内容の一まとまりを一つのタスクとして扱った場合のタスク間の依存関係が図16に示されるようなプログラムを例に実施の形態4によるプログラム並列化装置20の処理の流れと並列処理装置の動作について説明する。
タスクの再分割では、空き時間の時刻とその時刻に空き時間を持つPEの数を求める(ステップST31)。その後、同時刻において処理を分割可能なタスクが存在するかを確認する(ステップST32)。ここで、タスク1は処理時間が40のタスクであるが、その処理時間40のうち実行条件判定の処理に30の時間を要するタスクであるとする。
この例では、プロセスエレメント#0(2)で処理時間が40のタスク1の実行を行っている間、プロセスエレメント#1(3)には処理が割り当てられておらず、空き時間がある。このため、30の時間を要するタスク1の実行条件判定を分割することができる。また、分割したタスク1の割当可能なプロセスエレメントは、プロセスエレメント#0(2)とプロセスエレメント#1(3)の二つである。そこで、プロセスエレメント#0(2)上で実行するタスク1の実行条件判定の処理を二つに分割し、それぞれをプロセスエレメント#0(2)とプロセスエレメント#1(3)の二つに割り付ける(ステップST33)。
そして、各プロセスエレメントで求めた実行条件の演算結果を、プレディケート値として同期イベントと共に、プレディケート付き同期命令を用いて、他のプロセスエレメントに対して送信する。他のプロセスエレメントからプレディケート付き同期イベントを受信するプロセスエレメントには、プレディケート付き同期イベントの受信命令を追加する。そして、元のプログラムでの論理演算をプレディケートレジスタ間の演算命令に置き換える。
並列処理装置のプロセスエレメント#0(2)は、分割されたタスク1−1を実行する。ここで、タスク1−1は、タスク1の実行条件判定処理の中の前半の処理である。また、プロセスエレメント#1(3)は、分割されたタスク1−2を実行する。タスク1−2は、タスク1の実行条件判定処理の中の後半の処理である。タスク1−1のプログラムの最後の部分には、プレディケート付きイベントの受信命令と、通知されるプレディケート値と自プロセスエレメントのプレディケート値との間で論理演算を行う命令が追加されている。また、タスク1−2のプログラムの最後の部分には、プレディケート付き同期イベントの送信命令が追加されている。
プロセスエレメント#0(2)の命令実行部53は、タスク1−3の実行を終えると、プロセスエレメント#1(3)上のタスク3に対して同期イベントを発行する。また、タスク2の処理を開始する。このとき、同期イベントを受信したプロセスエレメント#1(3)では、タスク3の処理を開始し、タスク2とタスク3の処理を並行して行う。
図20は、実施の形態4におけるタスク1の分割前のプログラムの概要を示す説明図である。この図20の処理Eの実行条件の判定処理において、論理和の部分で分割したものが、図21と図22である。この例では、図21の処理をプロセスエレメント#0(2)に、図22の処理をプロセスエレメント#1(3)に割り付けた例を示している。
図21に示すプログラムは、条件Aと条件Bの論理積をプレディケートレジスタ51に格納し、プロセスエレメント#1(3)からのプレディケート値の受信を待機することを示している。プロセスエレメント#0(2)は、プレディケート付き同期イベントを受信すると、そのプレディケート受信レジスタ52に格納された値と、自身のプレディケートレジスタ51の論理和を取ってプレディケートレジスタ51に格納する。そして、処理Eは、そのプレディケートレジスタ51の真偽値に基づいて、処理を実行する。その後、図16に示したタスクの先行関係に基づいて、タスク3を起動するために同期イベントをプロセスエレメント#1(3)に対して送信する。その後、タスク2の処理に進む。
このような処理を行うことにより、タスク1の分割前の図17に示すスケジューリングでは61の時間がかかっていたプログラムの処理時間は、実行条件判定の処理の並列化によって、図19に示すように48に短縮される。
Claims (3)
- 複数のプロセスエレメントを備え、これら複数のプロセスエレメントで、実行条件と当該実行条件下での処理内容の対で構成されるタスクの並列処理を行う並列処理装置において、
前記各プロセスエレメントは、
次の命令を実行するか否かを決定するための真偽値を格納するプレディケートレジスタと、
他のプロセスエレメントから受信した次の命令を実行するか否かを決定するための真偽値が付いたプレディケート付き同期イベントを格納するプレディケート受信レジスタと、
タスクの実行条件判定結果を他のプロセスエレメントで実行されるタスクに対して通知するタスクを実行する場合は、前記プレディケートレジスタの真偽値が付いたプレディケート付き同期イベントを前記他のプロセスエレメントに通知し、他のプロセスエレメントで実行されるタスクの実行条件判定結果に基づいて実行されるタスクを実行する場合は、前記プレディケート付き同期イベントの受信レジスタの真偽値に基づいて当該自身のタスクを実行する命令実行部とを備えた並列処理装置に対して、プログラムを前記複数のプロセスエレメント上で並列に実行するタスクに分割するプログラム並列化装置であって、
プログラムに含まれるデータの依存関係を解析する解析部と、
前記解析部の解析結果に基づいて、前記プログラムを前記複数のプロセスエレメントに対応したタスクに分割するタスク分割部と、
前記分割したタスクを、前記複数のプロセスエレメントで実行するためのスケジューリングを行うスケジューリング部と、
スケジューリングされた各プロセスエレメント毎のタスクを、データの依存関係に応じた同期命令を付加して前記各プロセスエレメントの実行形式のコードとして生成するコード生成部とを備え、
前記スケジューリング部でスケジューリングを行った結果、前記スケジューリング部がいずれかのプロセスエレメントで、タスク実行の空き時間が存在すると判断した場合は、前記タスク分割部がタスクの処理を前記複数のプロセスエレメントに対応して一つのタスクを複数のタスクへ再分割すると共に、前記コード生成部が、当該分割したタスクの処理を同期させるためのプレディケート付き同期イベントの受け渡しを行う命令を付加するプログラム並列化装置。 - 複数のプロセスエレメントを備え、これら複数のプロセスエレメントで、実行条件と当該実行条件下での処理内容の対で構成されるタスクの並列処理を行う並列処理装置において、
前記各プロセスエレメントは、
次の命令を実行するか否かを決定するための真偽値を格納するプレディケートレジスタと、
他のプロセスエレメントから受信した次の命令を実行するか否かを決定するための真偽値が付いたプレディケート付き同期イベントを格納するプレディケート受信レジスタと、
タスクの実行条件判定結果を他のプロセスエレメントで実行されるタスクに対して通知するタスクを実行する場合は、前記プレディケートレジスタの真偽値が付いたプレディケート付き同期イベントを前記他のプロセスエレメントに通知し、他のプロセスエレメントで実行されるタスクの実行条件判定結果に基づいて実行されるタスクを実行する場合は、前記プレディケート付き同期イベントの受信レジスタの真偽値に基づいて当該自身のタスクを実行する命令実行部とを備えた並列処理装置に対して、プログラムを前記複数のプロセスエレメント上で並列に実行するタスクに分割するプログラム並列化装置であって、
プログラムに含まれるデータの依存関係を解析する解析部と、
前記解析部の解析結果に基づいて、前記プログラムを前記複数のプロセスエレメントに対応したタスクに分割すると共に、データ依存の関係において後続のタスクが所定の個数以上の対象タスクがあった場合は、前記所定の個数以上の後続タスクを持つある一つのタスクの処理内容を更に再分割して、実行条件と分割された処理内容を持つタスクと、分割された残りの一つ若しくは複数の処理内容へ分け、前記実行条件と分割された処理内容を持つタスクの実行条件が確定した後に、前記実行条件の値を受け渡すプレディケート付き同期イベントの送信処理を追加し、残りの前記分割された処理内容のそれぞれの先頭に、プレディケート付き同期イベントの受信処理を追加して、並列に実行可能な前記分割された処理内容を持つタスクと前記分割された一つ若しくは複数の処理内容へ分割するタスク分割部と、
前記タスク分割部で分割したタスクを、前記複数のプロセスエレメントで実行するためのスケジューリングを行うスケジューリング部と、
スケジューリングされた各プロセスエレメント毎のタスクを、データの依存関係に応じた同期命令を付加して前記各プロセスエレメントの実行形式のコードとして生成するコード生成部とを備え、
前記スケジューリング部でスケジューリングを行った結果、前記スケジューリング部が処理時間の短縮が可能と判断した場合は、前記タスク分割部が前記対象タスクの分割を行うプログラム並列化装置。 - 複数のプロセスエレメントを備え、これら複数のプロセスエレメントで、実行条件と当該実行条件下での処理内容の対で構成されるタスクの並列処理を行う並列処理装置において、
前記各プロセスエレメントは、
次の命令を実行するか否かを決定するための真偽値を格納するプレディケートレジスタと、
他のプロセスエレメントから受信した次の命令を実行するか否かを決定するための真偽値が付いたプレディケート付き同期イベントを格納するプレディケート受信レジスタと、
タスクの実行条件判定結果を他のプロセスエレメントで実行されるタスクに対して通知するタスクを実行する場合は、前記プレディケートレジスタの真偽値が付いたプレディケート付き同期イベントを前記他のプロセスエレメントに通知し、他のプロセスエレメントで実行されるタスクの実行条件判定結果に基づいて実行されるタスクを実行する場合は、前記プレディケート付き同期イベントの受信レジスタの真偽値に基づいて当該自身のタスクを実行する命令実行部とを備えた並列処理装置に対して、プログラムを前記複数のプロセスエレメント上で並列に実行するタスクに分割するプログラム並列化装置であって、
プログラムに含まれるデータの依存関係を解析する解析部と、
前記解析部の解析結果に基づいて、前記プログラムを前記複数のプロセスエレメントに対応したタスクに分割するタスク分割部と、
前記分割したタスクを、前記複数のプロセスエレメントで実行するためのスケジューリングを行うスケジューリング部と、
スケジューリングされた各プロセスエレメント毎のタスクを、データの依存関係に応じた同期命令を付加して前記各プロセスエレメントの実行形式のコードとして生成するコード生成部とを備え、
前記スケジューリング部でスケジューリングを行った結果、前記スケジューリング部がいずれかのプロセスエレメントで、タスク実行の空き時間が存在すると判断した場合は、前記タスク分割部がタスクの実行条件の判定処理を前記複数のプロセスエレメントに対応して複数のタスクへ再分割すると共に、前記コード生成部が、当該分割したタスクの実行条件の判定処理を同期させるためのプレディケート付き同期イベントの受け渡しを行う命令を付加するプログラム並列化装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007330336A JP5036523B2 (ja) | 2007-12-21 | 2007-12-21 | プログラム並列化装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007330336A JP5036523B2 (ja) | 2007-12-21 | 2007-12-21 | プログラム並列化装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009151645A JP2009151645A (ja) | 2009-07-09 |
JP5036523B2 true JP5036523B2 (ja) | 2012-09-26 |
Family
ID=40920718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007330336A Expired - Fee Related JP5036523B2 (ja) | 2007-12-21 | 2007-12-21 | プログラム並列化装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5036523B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024030705A1 (en) * | 2022-08-02 | 2024-02-08 | Qualcomm Incorporated | Reordering workloads to improve concurrency across threads in processor-based devices |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9043401B2 (en) | 2009-10-08 | 2015-05-26 | Ebay Inc. | Systems and methods to process a request received at an application program interface |
JP5178852B2 (ja) * | 2011-01-12 | 2013-04-10 | 株式会社東芝 | 情報処理装置およびプログラム |
JP6428476B2 (ja) * | 2015-05-14 | 2018-11-28 | 株式会社デンソー | 並列化コンパイル方法、及び並列化コンパイラ |
JP6558310B2 (ja) * | 2016-06-13 | 2019-08-14 | 株式会社デンソー | 並列化方法、並列化ツール |
US10656964B2 (en) * | 2017-05-16 | 2020-05-19 | Oracle International Corporation | Dynamic parallelization of a calculation process |
JP7385989B2 (ja) * | 2018-12-12 | 2023-11-24 | 日立Astemo株式会社 | 演算制御装置 |
WO2020194402A1 (ja) * | 2019-03-22 | 2020-10-01 | 三菱電機株式会社 | 情報処理装置、計算機、計算機システム、情報処理方法及び情報処理プログラム |
CN114270307A (zh) * | 2019-08-22 | 2022-04-01 | 谷歌有限责任公司 | 用于同步处理器的分片 |
DE112019007851T5 (de) * | 2019-12-12 | 2022-10-27 | Mitsubishi Electric Corporation | Datenverarbeitungsausführungseinrichtung, Datenverarbeitungsausführungsverfahren und Datenverarbeitungsausführungsprogramm |
JP2024127077A (ja) * | 2023-03-08 | 2024-09-20 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62295162A (ja) * | 1986-06-14 | 1987-12-22 | Agency Of Ind Science & Technol | マルチプロセツサシステム |
JP3039953B2 (ja) * | 1989-04-28 | 2000-05-08 | 株式会社日立製作所 | 並列化装置 |
JP2004310651A (ja) * | 2003-04-10 | 2004-11-04 | Fujitsu Ltd | コスト解析に基づいてループの自動並列化処理を行う情報処理装置 |
JP3938387B2 (ja) * | 2005-08-10 | 2007-06-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ、制御方法、およびコンパイラ・プログラム |
WO2007105309A1 (ja) * | 2006-03-14 | 2007-09-20 | Fujitsu Limited | 並列化プログラム生成プログラム、並列化プログラム生成装置、及び並列化プログラム生成方法 |
-
2007
- 2007-12-21 JP JP2007330336A patent/JP5036523B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024030705A1 (en) * | 2022-08-02 | 2024-02-08 | Qualcomm Incorporated | Reordering workloads to improve concurrency across threads in processor-based devices |
Also Published As
Publication number | Publication date |
---|---|
JP2009151645A (ja) | 2009-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5036523B2 (ja) | プログラム並列化装置 | |
US10095657B2 (en) | Processor, accelerator, and direct memory access controller within a core reading/writing local synchronization flag area for parallel | |
US5408658A (en) | Self-scheduling parallel computer system and method | |
US20090254892A1 (en) | Compiling method and compiler | |
JP2010079622A (ja) | マルチコアプロセッサシステム、および、そのタスク制御方法 | |
JPH1027108A (ja) | スレッド実行方法 | |
JP2007328415A (ja) | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ | |
US8359588B2 (en) | Reducing inter-task latency in a multiprocessor system | |
JP2008500627A (ja) | 信号処理装置 | |
JP2008158759A (ja) | プログラミング方法、プログラム処理方法、処理プログラム及び情報処理装置 | |
CN115061803A (zh) | 一种多核处理系统及其任务调度方法、芯片、存储介质 | |
EP2799986B1 (en) | Apparatus and method for translating multithread program code | |
US8196146B2 (en) | Information processing apparatus, parallel processing optimization method, and program | |
JP4168281B2 (ja) | 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム | |
US20080271041A1 (en) | Program processing method and information processing apparatus | |
Kitagawa et al. | DAG scheduling algorithm for a cluster-based many-core architecture | |
WO2024109312A1 (zh) | 任务调度执行方法、任务调度执行指令的生成方法及装置 | |
JPH09293057A (ja) | 階層構造型マルチプロセッサシステムにおけるタスク割り当て方法 | |
US11822960B2 (en) | Cascading of graph streaming processors | |
WO2019188175A1 (ja) | デッドロック回避方法、デッドロック回避装置 | |
JP2000020482A (ja) | ループ並列化方法 | |
US20140223419A1 (en) | Compiler, object code generation method, information processing apparatus, and information processing method | |
US20100223596A1 (en) | Data processing device and method | |
US20240045737A1 (en) | Information processing method and information processing apparatus | |
JP5315703B2 (ja) | 並列化プログラム生成方法、並列化プログラム生成プログラム、及び並列化プログラム生成装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100114 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110131 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110208 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110404 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111213 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120208 |
|
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: 20120605 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120703 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150713 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |