JP2005258920A - マルチスレッド実行方法、マルチスレッド実行プログラム、およびマルチスレッド実行装置 - Google Patents
マルチスレッド実行方法、マルチスレッド実行プログラム、およびマルチスレッド実行装置 Download PDFInfo
- Publication number
- JP2005258920A JP2005258920A JP2004071140A JP2004071140A JP2005258920A JP 2005258920 A JP2005258920 A JP 2005258920A JP 2004071140 A JP2004071140 A JP 2004071140A JP 2004071140 A JP2004071140 A JP 2004071140A JP 2005258920 A JP2005258920 A JP 2005258920A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- execution
- threads
- executed
- executing
- 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
Links
Images
Abstract
【解決手段】実行中のアプリケーション・プログラムについて形成された制御スレッド中で、当該プログラム本来の機能を実現する複数の処理スレッドを生成した際に、これらの間の依存関係(スレッド1はスレッド2の終了後でなければ実行できない、など)もまとめて定義しておく。そして、制御スレッドからこれらのスレッドが起動されると、本発明にかかるスレッドライブラリはその依存関係に従って、これらのスレッドを連続して実行する。すなわち従来技術のように、処理スレッドの起動や終了に際して制御スレッドに制御を戻すことがないので、その分処理の高速化をはかることができる。なお実行順序の制御のほか、あるスレッドの実行結果によってどのスレッドを実行する/しない、などの処理の分岐も可能である。
【選択図】 図7
Description
図1は、この発明の実施の形態1にかかるマルチスレッド実行装置のハードウエア構成を示す説明図である。図示するように実施の形態1にかかるマルチスレッド実行装置は、プロセッサやキャッシュメモリなどから構成される複数のPE(Processor Element:プロセッサ要素)100と、各PE100から読み書き可能な共有メモリ101とがバス102で連結された、共有メモリ対称型マルチプロセッサ(Symmetric multiprocessor:SMP)であるものとする。
さて、上述した実施の形態1では前段のスレッドが終了してさえいれば後段のスレッドを実行可能としたので、たとえばあるスレッドの終了後、その結果によって実行するスレッドを切り替えること(処理の分岐)ができなかった。そこで以下で説明する実施の形態2のように、スレッド間の依存関係のほかに、スレッドの実行条件をより詳細に規定できるようにしてもよい。
(1−1)Flg=start_created(Pi)
(制御変数とは無関係に)スレッドPiの起動を指示
(1−2)Flg=start_createdv(Pi[])
(制御変数とは無関係に)複数スレッドPi[]の起動を指示
(1−3)Flg=ctstart_created(Pi,Eab)
制御変数Eabが真であることを条件にスレッドPiの起動を指示
(1−4)Flg=ctstart_createdv(Pi[],Eab)
制御変数Eabが真であることを条件に複数スレッドPi[]の起動を指示
(1−5)Flg=cfstart_created(Pi,Eab)
制御変数Eabが偽であることを条件にスレッドPiの起動を指示
(1−6)Flg=cfstart_createdv(Pi[],Eab)
制御変数Eabが偽であることを条件に複数スレッドPi[]の起動を指示
(2−1)Flg=set(Eak,Eval)
制御変数Eakに値Evalを代入
(2−2)Flg=ctset(Eak,Eval,Eab)
制御変数Eabが真であることを条件に他の制御変数Eakに値Evalを代入
(2−3)Flg=cfset(Eak,Eval,Eab)
制御変数Eabが偽であることを条件に他の制御変数Eakに値Evalを代入
第1のスレッドの実行前に実行されるべき第2のスレッドを少なくとも一つ指定する指定工程と、
前記第1のスレッドの実行が指示されたのを受けて、前記指定工程で指定された前記第2のスレッドのすべてが実行を終了しているか否かを判定する判定工程と、
前記判定工程で前記第2のスレッドのすべてが実行を終了していると判定された場合に、前記第1のスレッドを実行する実行工程と、
を含むことを特徴とするマルチスレッド実行方法。
前記実行工程では、前記第2の判定工程で前記第1のスレッドを実行してもよいと判定された場合に、前記第1のスレッドを実行することを特徴とする前記付記1に記載のマルチスレッド実行方法。
第1のスレッドの実行後に実行されるべき第2のスレッドを少なくとも一つ指定する指定工程と、
前記指定工程で指定された前記第2のスレッドの実行が指示されたのを受けて、前記第1のスレッドが実行を終了しているか否かを判定する判定工程と、
前記判定工程で前記第1のスレッドが実行を終了していると判定された場合に、前記第2のスレッドを実行する実行工程と、
を含むことを特徴とするマルチスレッド実行方法。
前記実行工程では、前記第2の判定工程で前記第2のスレッドを実行してもよいと判定された場合に、前記第2のスレッドを実行することを特徴とする前記付記3に記載のマルチスレッド実行方法。
第1のスレッドの実行前に実行されるべき第2のスレッドを少なくとも一つ指定する指定工程と、
前記第1のスレッドの実行が指示されたのを受けて、前記指定工程で指定された前記第2のスレッドのすべてが実行を終了しているか否かを判定する判定工程と、
前記判定工程で前記第2のスレッドのすべてが実行を終了していると判定された場合に、前記第1のスレッドを実行する実行工程と、
をプロセッサに実行させることを特徴とするマルチスレッド実行プログラム。
前記実行工程では、前記第2の判定工程で前記第1のスレッドを実行してもよいと判定された場合に、前記第1のスレッドを実行することを特徴とする前記付記5に記載のマルチスレッド実行プログラム。
第1のスレッドの実行後に実行されるべき第2のスレッドを少なくとも一つ指定する指定工程と、
前記指定工程で指定された前記第2のスレッドの実行が指示されたのを受けて、前記第1のスレッドが実行を終了しているか否かを判定する判定工程と、
前記判定工程で前記第1のスレッドが実行を終了していると判定された場合に、前記第2のスレッドを実行する実行工程と、
をプロセッサに実行させることを特徴とするマルチスレッド実行プログラム。
前記実行工程では、前記第2の判定工程で前記第2のスレッドを実行してもよいと判定された場合に、前記第2のスレッドを実行することを特徴とする前記付記7に記載のマルチスレッド実行プログラム。
第1のスレッドの実行前に実行されるべき第2のスレッドを少なくとも一つ指定する指定手段と、
前記第1のスレッドの実行が指示されたのを受けて、前記指定手段により指定された前記第2のスレッドのすべてが実行を終了しているか否かを判定する判定手段と、
前記判定手段により前記第2のスレッドのすべてが実行を終了していると判定された場合に、前記第1のスレッドを実行する実行手段と、
を備えることを特徴とするマルチスレッド実行装置。
前記実行手段は、前記第2の判定手段により前記第1のスレッドを実行してもよいと判定された場合に、前記第1のスレッドを実行することを特徴とする前記付記9に記載のマルチスレッド実行装置。
第1のスレッドの実行後に実行されるべき第2のスレッドを少なくとも一つ指定する指定手段と、
前記指定手段により指定された前記第2のスレッドの実行が指示されたのを受けて、前記第1のスレッドが実行を終了しているか否かを判定する判定手段と、
前記判定手段により前記第1のスレッドが実行を終了していると判定された場合に、前記第2のスレッドを実行する実行手段と、
を備えることを特徴とするマルチスレッド実行装置。
前記実行手段は、前記第2の判定手段により前記第2のスレッドを実行してもよいと判定された場合に、前記第2のスレッドを実行することを特徴とする前記付記11に記載のマルチスレッド実行装置。
101 共有メモリ
102 バス
200 スレッド依存関係記憶部
201 スレッド管理情報記憶部
202 スレッド実行制御部
203 スレッド実行可否判定部
204 実行可能スレッド記憶部
205 スケジューリング部
206 スレッド実行部
Claims (10)
- 依存関係のある複数のスレッドをプロセッサにより実行するマルチスレッド実行方法において、
第1のスレッドの実行前に実行されるべき第2のスレッドを少なくとも一つ指定する指定工程と、
前記第1のスレッドの実行が指示されたのを受けて、前記指定工程で指定された前記第2のスレッドのすべてが実行を終了しているか否かを判定する判定工程と、
前記判定工程で前記第2のスレッドのすべてが実行を終了していると判定された場合に、前記第1のスレッドを実行する実行工程と、
を含むことを特徴とするマルチスレッド実行方法。 - さらに、前記判定工程で前記第2のスレッドのすべてが実行を終了していると判定された場合に、前記第2のスレッドの終了時に更新された変数の値にもとづいて前記第1のスレッドを実行してもよいか否かを判定する第2の判定工程を含み、
前記実行工程では、前記第2の判定工程で前記第1のスレッドを実行してもよいと判定された場合に、前記第1のスレッドを実行することを特徴とする前記請求項1に記載のマルチスレッド実行方法。 - 依存関係のある複数のスレッドをプロセッサにより実行するマルチスレッド実行方法において、
第1のスレッドの実行後に実行されるべき第2のスレッドを少なくとも一つ指定する指定工程と、
前記指定工程で指定された前記第2のスレッドの実行が指示されたのを受けて、前記第1のスレッドが実行を終了しているか否かを判定する判定工程と、
前記判定工程で前記第1のスレッドが実行を終了していると判定された場合に、前記第2のスレッドを実行する実行工程と、
を含むことを特徴とするマルチスレッド実行方法。 - さらに、前記判定工程で前記第1のスレッドが実行を終了していると判定された場合に、前記第1のスレッドの終了時に更新された変数の値にもとづいて前記第2のスレッドを実行してもよいか否かを判定する第2の判定工程を含み、
前記実行工程では、前記第2の判定工程で前記第2のスレッドを実行してもよいと判定された場合に、前記第2のスレッドを実行することを特徴とする前記請求項3に記載のマルチスレッド実行方法。 - 依存関係のある複数のスレッドをプロセッサにより実行するマルチスレッド実行プログラムにおいて、
第1のスレッドの実行前に実行されるべき第2のスレッドを少なくとも一つ指定する指定工程と、
前記第1のスレッドの実行が指示されたのを受けて、前記指定工程で指定された前記第2のスレッドのすべてが実行を終了しているか否かを判定する判定工程と、
前記判定工程で前記第2のスレッドのすべてが実行を終了していると判定された場合に、前記第1のスレッドを実行する実行工程と、
をプロセッサに実行させることを特徴とするマルチスレッド実行プログラム。 - さらに、前記判定工程で前記第2のスレッドのすべてが実行を終了していると判定された場合に、前記第2のスレッドの終了時に更新された変数の値にもとづいて前記第1のスレッドを実行してもよいか否かを判定する第2の判定工程を含み、
前記実行工程では、前記第2の判定工程で前記第1のスレッドを実行してもよいと判定された場合に、前記第1のスレッドを実行することを特徴とする前記請求項5に記載のマルチスレッド実行プログラム。 - 依存関係のある複数のスレッドをプロセッサにより実行するマルチスレッド実行プログラムにおいて、
第1のスレッドの実行後に実行されるべき第2のスレッドを少なくとも一つ指定する指定工程と、
前記指定工程で指定された前記第2のスレッドの実行が指示されたのを受けて、前記第1のスレッドが実行を終了しているか否かを判定する判定工程と、
前記判定工程で前記第1のスレッドが実行を終了していると判定された場合に、前記第2のスレッドを実行する実行工程と、
をプロセッサに実行させることを特徴とするマルチスレッド実行プログラム。 - さらに、前記判定工程で前記第1のスレッドが実行を終了していると判定された場合に、前記第1のスレッドの終了時に更新された変数の値にもとづいて前記第2のスレッドを実行してもよいか否かを判定する第2の判定工程を含み、
前記実行工程では、前記第2の判定工程で前記第2のスレッドを実行してもよいと判定された場合に、前記第2のスレッドを実行することを特徴とする前記請求項7に記載のマルチスレッド実行プログラム。 - 依存関係のある複数のスレッドをプロセッサにより実行するマルチスレッド実行装置において、
第1のスレッドの実行前に実行されるべき第2のスレッドを少なくとも一つ指定する指定手段と、
前記第1のスレッドの実行が指示されたのを受けて、前記指定手段により指定された前記第2のスレッドのすべてが実行を終了しているか否かを判定する判定手段と、
前記判定手段により前記第2のスレッドのすべてが実行を終了していると判定された場合に、前記第1のスレッドを実行する実行手段と、
を備えることを特徴とするマルチスレッド実行装置。 - さらに、前記判定手段により前記第2のスレッドのすべてが実行を終了していると判定された場合に、前記第2のスレッドの終了時に更新された変数の値にもとづいて前記第1のスレッドを実行してもよいか否かを判定する第2の判定手段を備え、
前記実行手段は、前記第2の判定手段により前記第1のスレッドを実行してもよいと判定された場合に、前記第1のスレッドを実行することを特徴とする前記請求項9に記載のマルチスレッド実行装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004071140A JP2005258920A (ja) | 2004-03-12 | 2004-03-12 | マルチスレッド実行方法、マルチスレッド実行プログラム、およびマルチスレッド実行装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004071140A JP2005258920A (ja) | 2004-03-12 | 2004-03-12 | マルチスレッド実行方法、マルチスレッド実行プログラム、およびマルチスレッド実行装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005258920A true JP2005258920A (ja) | 2005-09-22 |
Family
ID=35084555
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004071140A Pending JP2005258920A (ja) | 2004-03-12 | 2004-03-12 | マルチスレッド実行方法、マルチスレッド実行プログラム、およびマルチスレッド実行装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005258920A (ja) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008041442A1 (fr) * | 2006-09-29 | 2008-04-10 | Fujitsu Limited | Procédé de création de programme par parallélisation, dispositif de création de programme par parallélisation, et programme de création de programme par parallélisation |
JP2008158759A (ja) * | 2006-12-22 | 2008-07-10 | Toshiba Corp | プログラミング方法、プログラム処理方法、処理プログラム及び情報処理装置 |
WO2008120367A1 (ja) * | 2007-03-29 | 2008-10-09 | Fujitsu Limited | 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム |
JP2009020692A (ja) * | 2007-07-11 | 2009-01-29 | Toshiba Corp | タスク管理装置、タスク管理方法及びタスク管理プログラム |
JP2009175882A (ja) * | 2008-01-22 | 2009-08-06 | Fujitsu Ltd | 並列化プログラム生成方法、並列化プログラム生成プログラム、及び並列化プログラム生成装置 |
JP2010020650A (ja) * | 2008-07-14 | 2010-01-28 | Sony Corp | 情報処理システム及び情報処理方法、ロボットの制御システム及び制御方法、並びコンピュータ・プログラム |
US7788672B2 (en) | 2008-06-27 | 2010-08-31 | Kabushiki Kaisha Toshiba | System for controlling assignment of a plurality of modules of a program to available execution units based on speculative executing and granularity adjusting |
US8074211B2 (en) | 2008-09-30 | 2011-12-06 | Kabushiki Kaisha Toshiba | Computer program, multiprocessor system, and grouping method |
WO2012020478A1 (ja) * | 2010-08-10 | 2012-02-16 | 富士通株式会社 | スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法 |
US8196146B2 (en) | 2007-09-25 | 2012-06-05 | Kabushiki Kaisha Toshiba | Information processing apparatus, parallel processing optimization method, and program |
US8255911B2 (en) | 2009-04-28 | 2012-08-28 | Kabushiki Kaisha Toshiba | System and method for selecting and assigning a basic module with a minimum transfer cost to thread |
US8544620B2 (en) * | 2004-11-24 | 2013-10-01 | Toyota Jidosha Kabushiki Kaisha | Suspension apparatus for vehicle |
JP2016520912A (ja) * | 2013-04-23 | 2016-07-14 | アビニシオ テクノロジー エルエルシー | コンピューティングシステムによって実行されるタスクの制御 |
-
2004
- 2004-03-12 JP JP2004071140A patent/JP2005258920A/ja active Pending
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8544620B2 (en) * | 2004-11-24 | 2013-10-01 | Toyota Jidosha Kabushiki Kaisha | Suspension apparatus for vehicle |
JP2008090541A (ja) * | 2006-09-29 | 2008-04-17 | Fujitsu Ltd | 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム |
WO2008041442A1 (fr) * | 2006-09-29 | 2008-04-10 | Fujitsu Limited | Procédé de création de programme par parallélisation, dispositif de création de programme par parallélisation, et programme de création de programme par parallélisation |
JP2008158759A (ja) * | 2006-12-22 | 2008-07-10 | Toshiba Corp | プログラミング方法、プログラム処理方法、処理プログラム及び情報処理装置 |
US8656347B2 (en) | 2007-03-29 | 2014-02-18 | Fujitsu Limited | Generation of parallelized program based on program dependence graph |
WO2008120367A1 (ja) * | 2007-03-29 | 2008-10-09 | Fujitsu Limited | 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム |
JPWO2008120367A1 (ja) * | 2007-03-29 | 2010-07-15 | 富士通株式会社 | 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム |
JP2009020692A (ja) * | 2007-07-11 | 2009-01-29 | Toshiba Corp | タスク管理装置、タスク管理方法及びタスク管理プログラム |
US8196146B2 (en) | 2007-09-25 | 2012-06-05 | Kabushiki Kaisha Toshiba | Information processing apparatus, parallel processing optimization method, and program |
JP2009175882A (ja) * | 2008-01-22 | 2009-08-06 | Fujitsu Ltd | 並列化プログラム生成方法、並列化プログラム生成プログラム、及び並列化プログラム生成装置 |
US7788672B2 (en) | 2008-06-27 | 2010-08-31 | Kabushiki Kaisha Toshiba | System for controlling assignment of a plurality of modules of a program to available execution units based on speculative executing and granularity adjusting |
JP2010020650A (ja) * | 2008-07-14 | 2010-01-28 | Sony Corp | 情報処理システム及び情報処理方法、ロボットの制御システム及び制御方法、並びコンピュータ・プログラム |
JP4577422B2 (ja) * | 2008-07-14 | 2010-11-10 | ソニー株式会社 | 情報処理システム及び情報処理方法、ロボットの制御システム及び制御方法、並びコンピュータ・プログラム |
US8074211B2 (en) | 2008-09-30 | 2011-12-06 | Kabushiki Kaisha Toshiba | Computer program, multiprocessor system, and grouping method |
US8255911B2 (en) | 2009-04-28 | 2012-08-28 | Kabushiki Kaisha Toshiba | System and method for selecting and assigning a basic module with a minimum transfer cost to thread |
JP5408356B2 (ja) * | 2010-08-10 | 2014-02-05 | 富士通株式会社 | スケジューラプログラム、マルチコアプロセッサシステムおよびスケジューリング方法 |
WO2012020478A1 (ja) * | 2010-08-10 | 2012-02-16 | 富士通株式会社 | スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法 |
US9262209B2 (en) | 2010-08-10 | 2016-02-16 | Fujitsu Limited | Scheduler, multi-core processor system, and scheduling method |
JP2016520912A (ja) * | 2013-04-23 | 2016-07-14 | アビニシオ テクノロジー エルエルシー | コンピューティングシステムによって実行されるタスクの制御 |
US10489191B2 (en) | 2013-04-23 | 2019-11-26 | Ab Initio Technology Llc | Controlling tasks performed by a computing system using controlled process spawning |
US10565005B2 (en) | 2013-04-23 | 2020-02-18 | Ab Initio Technology Llc | Controlling tasks performed by a computing system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9417935B2 (en) | Many-core process scheduling to maximize cache usage | |
US9891949B2 (en) | System and method for runtime scheduling of GPU tasks | |
JP5611756B2 (ja) | プログラム・フロー制御 | |
JP2005258920A (ja) | マルチスレッド実行方法、マルチスレッド実行プログラム、およびマルチスレッド実行装置 | |
JP5209933B2 (ja) | データ処理装置 | |
JP5646448B2 (ja) | パイプラインプロセッサ | |
WO2013192231A1 (en) | Managing use of a field programmable gate array by multiple processes in an operating system | |
JP5803972B2 (ja) | マルチコアプロセッサ | |
JPH04367936A (ja) | スーパースカラープロセッサ | |
JP7385989B2 (ja) | 演算制御装置 | |
JP5180285B2 (ja) | プロセッサにおいて実行ステージに先立って命令を実行するためのシステムおよび方法 | |
JP2004529405A (ja) | 依存性を決定するためのコンテンツ・アドレス指定可能メモリを実装したスーパースケーラ・プロセッサ | |
US8656393B2 (en) | Multi-core system | |
US20190266694A1 (en) | Graphics processing method utilizing predefined render chunks | |
US20090178054A1 (en) | Concomitance scheduling commensal threads in a multi-threading computer system | |
JP5187944B2 (ja) | コンピュータ使用可能コードを実行する装置及び方法 | |
JP6254352B2 (ja) | ループのプロローグまたはエピローグの無効演算を処理する装置及び方法 | |
US8762973B2 (en) | Information processing apparatus, method of controlling information processing apparatus, and program for executing intermediate code instructions | |
US9558003B2 (en) | Reconfigurable processor for parallel processing and operation method of the reconfigurable processor | |
KR102597201B1 (ko) | 트랜잭션 네스팅 심도 시험 명령 | |
JP7474779B2 (ja) | 命令順序付け | |
JP2024129675A (ja) | 実行制御プログラム、実行制御方法、および情報処理装置 | |
JP5033745B2 (ja) | ジョブ管理システム及びジョブ管理方法 | |
KR20070118543A (ko) | 재구성 어레이를 위한 멀티태스킹 방법 및 장치 | |
JP3743155B2 (ja) | パイプライン制御型計算機 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070308 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080925 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081007 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081208 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090616 |