JP2013122633A - タスク並列処理方法、その装置及びそのプログラム、並びにプログラム生成方法、その装置及びそのプログラム - Google Patents
タスク並列処理方法、その装置及びそのプログラム、並びにプログラム生成方法、その装置及びそのプログラム Download PDFInfo
- Publication number
- JP2013122633A JP2013122633A JP2011270063A JP2011270063A JP2013122633A JP 2013122633 A JP2013122633 A JP 2013122633A JP 2011270063 A JP2011270063 A JP 2011270063A JP 2011270063 A JP2011270063 A JP 2011270063A JP 2013122633 A JP2013122633 A JP 2013122633A
- Authority
- JP
- Japan
- Prior art keywords
- task
- data
- synchronization
- thread
- executed
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 238000000034 method Methods 0.000 title claims description 249
- 230000001360 synchronised effect Effects 0.000 abstract description 30
- 238000004891 communication Methods 0.000 abstract description 20
- 230000001419 dependent effect Effects 0.000 abstract 1
- 230000005540 biological transmission Effects 0.000 description 22
- 238000012790 confirmation Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 2
- 230000008054 signal transmission Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】本発明にかかるタスク並列処理方法は、データの計算を表すタスクをひとつ以上含むグループがひとつずつ割り当てられた複数のスレッドを実行する際に、二つのスレッドの一方である第1スレッドのデータ供給タスクからのデータ依存関係をもつデータ使用タスクが割り当てられたもう一方のスレッドである第2スレッドにおいて、データ使用タスクが実行される前に、データ供給タスクからの同期待ち処理を行うとともに、第1スレッドにおいて、データ供給タスクが実行された後に、データ使用タスクへの同期通知処理を行い、各スレッドにおいて最初に実行されるデータ使用タスクに関する同期待ち処理及び同期通知処理をハンドシェイク付きで行うとともに、データ使用タスク以外のタスクに関する同期待ち処理及び同期通知処理をハンドシェイク無しで行う。
【選択図】図9
Description
図1は、本発明の模範的な実施形態にもとづいて、グループに分けられた複数のタスクからなるデータ依存関係グラフから、タスク並列処理ソフトウェアの構成を得るためのフローチャートである。まず、ステップS1において、本実施形態は、タスクをグループごとにスレッドに割り当てる。ステップS2において、本実施形態は、タスクのデータ依存関係にもとづいてスレッド内での タスクの実行順序を決定する。ステップS3において、異なるグループのタスク間のデータ依存関係に対応する同期処理を追加する。ステップS4において、同期処理の中で、各スレッドの中で最初に実行されるタスクへの同期処理をハンドシェイク付き同期処理にする。このような手順により、タスクを並列処理するためのソフトウェア構成が得られる。
本実施形態において、データ依存関係グラフから抽出したタスク並列処理のためのソフトウェア構成が、実際のコードとどのような関係にあるかを説明する。図3は、この関係を表す図である。図3(1)はスレッド依存関係グラフであり、図3(2)はこれに対応する各スレッドの抽象化コードを示すリスト(A)、(B)、(C)である。なお、スレッド依存関係グラフとは、スレッドへのタスク割当と同期処理の構成を表すグラフ構造を示すものである。また、リストは、スレッド内のタスクと同期処理の実行順序を示す。図3(2)において、Set()は、ハンドシェイク無し同期処理の送信側処理(ハンドシェイク無し同期通知処理)を示し、Wait()は、ハンドシェイク無し同期処理の受信側処理(ハンドシェイク無し同期待ち処理)を示し、HsSet()は、ハンドシェイク付き同期処理の送信側処理(ハンドシェイク付き同期通知処理)を示し、HsWait()は、ハンドシェイク付き同期処理の受信側処理(ハンドシェイク付き同期待ち処理)を示す。
図3スレッドA、B、Cは、ハンドシェイク付き同期処理を行っているため、なんども繰り返して実行することが可能である。すなわち、スレッドAはリスト(A)で示す処理を繰り返し、スレッドBはリスト(B)で示す処理を繰り返し、スレッドCはリスト(C)で示す処理を繰り返す。
つづいて、異なるスレッドに属するタスク間でのハンドシェイク無し同期処理のなかから、冗長なものを見つける方法について説明する。本実施形態は、図2のようにして、タスクのデータ依存関係グラフからスレッド依存関係グラフを導く。この過程で、冗長なハンドシェイク無し同期処理が発生する可能性がある。以降の説明では、ハンドシェイク無し同期処理を単に同期処理と記述する。
本実施形態では、ハンドシェイク付き同期処理は、ハンドシェイク付き同期通知処理と、ハンドシェイク付き同期待ち処理の二つで構成される、と説明した。送信側タスクがハンドシェイク付き同期通知処理を、受信側タスクがハンドシェイク付き同期待ち処理を、それぞれ行う。送信側タスクは、ハンドシェイク付き同期通知処理において、同期することを示す信号(同期信号)を受信側タスクへ伝える。そして、受信側タスクは、ハンドシェイク付き同期待ち処理において、その同期信号が伝えられるまで待合せ、読取る。同期信号を受け取った受信側タスクは、ハンドシェイク付き同期待ち処理において、同期信号を受け取ったことを示す信号(確認信号)を送信側タスクへ伝える。最後に、送信側タスクは、ハンドシェイク付き同期通知処理において、その確認信号が伝えられるまで待合せ、読取る。このように、ハンドシェイク付き同期処理は、送信側から受信側へ同期信号を送り、受信側から送信側へ確認信号を送る。送信側と受信側との間でこのようなやり取りを行えば、それはハンドシェイク付き同期処理のひとつの実施形態となる。
本実施形態では、ハンドシェイク無し同期処理は、ハンドシェイク無し同期通知処理と、ハンドシェイク無し同期待ち処理の二つで構成される、と説明した。送信側タスクがハンドシェイク無し同期通知処理を、受信側タスクがハンドシェイク無し同期待ち処理を、それぞれ行う。ハンドシェイク無し同期通知処理は、送信側タスクと受信側タスクがハンドシェイクを行なわずに、送信側タスクが単に変数に値をセットするような処理である。ハンドシェイク無し同期待ち処理は、当該変数に値がセットされるまで受信側タスクが待つ、という処理である。
続いて、図8を参照して、上述した本発明の実施の形態のシステム構成例について説明する。図8は、本実施の形態にかかるタスク並列処理システム1の構成例を示す図である。
続いて、図9を参照して、上述したタスク並列処理システム1の概略構成について説明する。図9は、本実施の形態にかかるタスク並列処理システム1の概略構成を示す図である。
10、91 プログラム生成装置
11、21、22、23 プロセッサ
12、24 記憶装置
13、25 メモリ
20、92 タスク並列処理装置
101 コンパイラ
201、202、203 スレッド
301 ソースプログラム
302 目的プログラム
900 プログラム
911 グループ割当て部
912 実行順序決定部
913 同期処理設定部
921 実行部
Claims (10)
- データの計算を表すタスクをひとつ以上含むグループがひとつずつ割り当てられた複数のスレッドを実行する際に、
二つのスレッドの一方である第1スレッドのデータ供給タスクからのデータ依存関係をもつデータ使用タスクが割り当てられたもう一方のスレッドである第2スレッドにおいて、前記データ使用タスクが実行される前に、前記データ供給タスクからの同期待ち処理を行うとともに、
第1スレッドにおいて、前記データ供給タスクが実行された後に、前記データ使用タスクへの同期通知処理を行い、
各スレッドにおいて最初に実行されるデータ使用タスクに関する前記同期待ち処理及び前記同期通知処理をハンドシェイク付きで行うとともに、当該データ使用タスク以外のタスクに関する前記同期待ち処理及び前記同期通知処理をハンドシェイク無しで行う、
ことを特徴とする、タスク並列処理方法。 - 前記同期待ち処理及び前記同期通知処理は、あるデータ使用側タスクに対して、同じスレッドに属する複数のデータ供給側タスクからのデータ依存関係がある場合、当該複数のデータ供給側タスクのなかで最も後で実行されるデータ供給側タスクのみに関して行われる、
ことを特徴とする、請求項1に記載のタスク並列処理方法。 - 前記同期待ち処理及び前記同期通知処理は、あるデータ供給側タスクから、同じスレッドに属する複数のデータ使用側タスクへのデータ依存関係がある場合、当該複数のデータ使用側タスクのなかで最も先に実行されるデータ使用側タスクのみに関して行われる、
ことを特徴とする、請求項1に記載のタスク並列処理方法。 - 前記同期待ち処理及び前記同期通知処理は、
あるデータ使用側タスクに対して、同じスレッドに属する複数のデータ供給側タスクからのデータ依存関係がある場合、当該複数のデータ供給側タスクのなかで最も後で実行されるデータ供給側タスクのみに関して行われるとともに、
あるデータ供給側タスクから、同じスレッドに属する複数のデータ使用側タスクへのデータ依存関係がある場合、当該複数のデータ使用側タスクのなかで最も先に実行されるデータ使用側タスクのみに関して行われる、
ことを特徴とする、請求項1に記載のタスク並列処理方法。 - 前記同期待ち処理及び前記同期通知処理は、前記グループ内で最初に実行されるデータ使用側タスクのみに関して、ハンドシェイク付きで行われる、
ことを特徴とする、請求項1乃至4のいずれか1項に記載のタスク並列処理方法。 - データの計算を表すタスクをひとつ以上含むグループがひとつずつ割り当てられた複数のスレッドを実行する実行部を備え、
前記実行部は、二つのスレッドの一方である第1スレッドのデータ供給タスクからのデータ依存関係をもつデータ使用タスクが割り当てられたもう一方のスレッドである第2スレッドにおいて、前記データ使用タスクが実行される前に、前記データ供給タスクからの同期待ち処理を行うとともに、第1スレッドにおいて、前記データ供給タスクが実行された後に、前記データ使用タスクへの同期通知処理を行い、
前記実行部は、各スレッドにおいて最初に実行されるデータ使用タスクに関する前記同期待ち処理及び前記同期通知処理をハンドシェイク付きで行うとともに、当該データ使用タスク以外のタスクに関する前記同期待ち処理及び前記同期通知処理をハンドシェイク無しで行う、
ことを特徴とする、タスク並列処理装置。 - データの計算を表すタスクをひとつ以上含むグループがひとつずつ割り当てられた複数のスレッドを実行する際に、
二つのスレッドの一方である第1スレッドのデータ供給タスクからのデータ依存関係をもつデータ使用タスクが割り当てられたもう一方のスレッドである第2スレッドにおいて、前記データ使用タスクが実行される前に実行される、前記データ供給タスクからの同期待ち処理と、
第1スレッドにおいて、前記データ供給タスクが実行された後に実行される、前記データ使用タスクへの同期通知処理と、をコンピュータに実行させ、
各スレッドにおいて最初に実行されるデータ使用タスクに関する前記同期待ち処理及び前記同期通知処理をハンドシェイク付きで実行させるとともに、当該データ使用タスク以外のタスクに関する前記同期待ち処理及び前記同期通知処理をハンドシェイク無しで実行させる、
ことを特徴とする、タスク並列処理プログラム。 - 複数のスレッドを含むプログラムを生成するプログラム生成方法であって、
データの計算を表すタスクをひとつ以上含むグループをスレッドに割当て、
前記タスク間のデータ依存関係にもとづいて各グループに属するタスクの実行順序を決定し、
二つのスレッドの一方である第1スレッドのデータ供給タスクからのデータ依存関係をもつデータ使用タスクが割り当てられたもう一方のスレッドである第2スレッドにおいて、前記データ使用タスクが実行される前に、前記データ供給タスクからの同期待ち処理を設定するとともに、第1スレッドにおいて、前記データ供給タスクが実行された後に、前記データ使用タスクへの同期通知処理を設定し、
各スレッドにおいて最初に実行されるデータ使用タスクに関する前記同期待ち処理及び前記同期通知処理をハンドシェイク付きで設定するとともに、当該データ使用タスク以外のタスクに関する前記同期待ち処理及び前記同期通知処理をハンドシェイク無しで設定する、
ことを特徴とする、プログラム生成方法。 - 複数のスレッドを含むプログラムを生成するプログラム生成装置であって、
データの計算を表すタスクをひとつ以上含むグループをスレッドに割当てるグループ割当て部と、
前記タスク間のデータ依存関係にもとづいて各グループに属するタスクの実行順序を決定する実行順序決定部と、
二つのスレッドの一方である第1スレッドのデータ供給タスクからのデータ依存関係をもつデータ使用タスクが割り当てられたもう一方のスレッドである第2スレッドにおいて、前記データ使用タスクが実行される前に、前記データ供給タスクからの同期待ち処理を設定するとともに、第1スレッドにおいて、前記データ供給タスクが実行された後に、前記データ使用タスクへの同期通知処理を設定する同期処理設定部と、を備え、
前記同期処理設定部は、各スレッドにおいて最初に実行されるデータ使用タスクに関する前記同期待ち処理及び前記同期通知処理をハンドシェイク付きで設定するとともに、当該データ使用タスク以外のタスクに関する前記同期待ち処理及び前記同期通知処理をハンドシェイク無しで設定する、
ことを特徴とする、プログラム生成装置。 - 複数のスレッドを含むプログラムを生成するプログラム生成プログラムであって、
データの計算を表すタスクをひとつ以上含むグループをスレッドに割当てる割当て処理と、
前記タスク間のデータ依存関係にもとづいて各グループに属するタスクの実行順序を決定する実行順序決定処理と、
二つのスレッドの一方である第1スレッドのデータ供給タスクからのデータ依存関係をもつデータ使用タスクが割り当てられたもう一方のスレッドである第2スレッドにおいて、前記データ使用タスクが実行される前に、前記データ供給タスクからの同期待ち処理を設定するとともに、第1スレッドにおいて、前記データ供給タスクが実行された後に、前記データ使用タスクへの同期通知処理を設定する同期処理設定処理と、をコンピュータに実行させ、
前記同期処理設定処理では、各スレッドにおいて最初に実行されるデータ使用タスクに関する前記同期待ち処理及び前記同期通知処理をハンドシェイク付きで設定するとともに、当該データ使用タスク以外のタスクに関する前記同期待ち処理及び前記同期通知処理をハンドシェイク無しで設定する、
ことを特徴とする、プログラム生成プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011270063A JP5857698B2 (ja) | 2011-12-09 | 2011-12-09 | タスク並列処理方法、その装置及びそのプログラム、並びにプログラム生成方法、その装置及びそのプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011270063A JP5857698B2 (ja) | 2011-12-09 | 2011-12-09 | タスク並列処理方法、その装置及びそのプログラム、並びにプログラム生成方法、その装置及びそのプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013122633A true JP2013122633A (ja) | 2013-06-20 |
JP5857698B2 JP5857698B2 (ja) | 2016-02-10 |
Family
ID=48774575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011270063A Active JP5857698B2 (ja) | 2011-12-09 | 2011-12-09 | タスク並列処理方法、その装置及びそのプログラム、並びにプログラム生成方法、その装置及びそのプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5857698B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016192153A (ja) * | 2015-03-31 | 2016-11-10 | 株式会社デンソー | 並列化コンパイル方法、並列化コンパイラ、及び車載装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0329049A (ja) * | 1989-06-27 | 1991-02-07 | Nec Corp | マルチプロセッサシステム |
-
2011
- 2011-12-09 JP JP2011270063A patent/JP5857698B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0329049A (ja) * | 1989-06-27 | 1991-02-07 | Nec Corp | マルチプロセッサシステム |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016192153A (ja) * | 2015-03-31 | 2016-11-10 | 株式会社デンソー | 並列化コンパイル方法、並列化コンパイラ、及び車載装置 |
Also Published As
Publication number | Publication date |
---|---|
JP5857698B2 (ja) | 2016-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tang et al. | A self-adaptive scheduling algorithm for reduce start time | |
JP5245722B2 (ja) | スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム | |
KR101332840B1 (ko) | 병렬 컴퓨팅 프레임워크 기반의 클러스터 시스템, 호스트 노드, 계산 노드 및 어플리케이션 실행 방법 | |
JP5402226B2 (ja) | 管理装置、情報処理システム、情報処理システムの制御プログラムおよび情報処理システムの制御方法 | |
JP2010079622A (ja) | マルチコアプロセッサシステム、および、そのタスク制御方法 | |
JP2012181852A (ja) | タスク処理のスケジューリング方法及びこの方法を適用するための装置 | |
JP2007041720A (ja) | ジョブステップ実行プログラムおよびジョブステップ実行方法 | |
JP2012533808A (ja) | 最適ネットワーク・トポロジの識別を用いた分散データ処理システム内のジョブ・スケジューリングのための方法及びシステム | |
JP2011065645A (ja) | マルチコアプロセッサシステム | |
WO2012120654A1 (ja) | タスクスケジューリング方法およびマルチコアシステム | |
JP5660149B2 (ja) | 情報処理装置、ジョブスケジューリング方法およびジョブスケジューリングプログラム | |
JP2012133682A (ja) | コンピュータ、コア割り当て方法およびプログラム | |
JP5462529B2 (ja) | タスク割当装置、および、タスク割当方法 | |
JP2007018268A (ja) | タスクスケジューリング方法、タスクスケジューリング装置、及びタスクスケジューリングプログラム | |
JP2019083009A5 (ja) | ||
KR101065436B1 (ko) | 불확실한 계산량을 가진 실시간 병렬 작업을 위한 멀티코어 프로세서의 확률적 스케줄링 방법 | |
US10162679B2 (en) | Method and system for assigning a computational block of a software program to cores of a multi-processor system | |
CN111061485A (zh) | 任务处理方法、编译器、调度服务器和介质 | |
WO2013005322A1 (ja) | 制御端末、および制御方法 | |
JP5857698B2 (ja) | タスク並列処理方法、その装置及びそのプログラム、並びにプログラム生成方法、その装置及びそのプログラム | |
JP7122299B2 (ja) | 処理タスクを実行するための方法、装置、デバイス、および記憶媒体 | |
JP2010191567A (ja) | 情報管理装置及び情報管理方法等 | |
CN108628639B (zh) | 处理器和指令调度方法 | |
CN114416311A (zh) | 一种基于Go语言管理消息队列的方法和装置 | |
US9710311B2 (en) | Information processing system, method of controlling information processing system, and recording medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20141113 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150616 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150804 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20151002 |
|
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: 20151117 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151130 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5857698 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |