JP2012511204A - リソースを最適化するためのタスク再編成方法 - Google Patents
リソースを最適化するためのタスク再編成方法 Download PDFInfo
- Publication number
- JP2012511204A JP2012511204A JP2011539175A JP2011539175A JP2012511204A JP 2012511204 A JP2012511204 A JP 2012511204A JP 2011539175 A JP2011539175 A JP 2011539175A JP 2011539175 A JP2011539175 A JP 2011539175A JP 2012511204 A JP2012511204 A JP 2012511204A
- Authority
- JP
- Japan
- Prior art keywords
- task
- tasks
- execution
- time
- processing elements
- 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
- 238000000034 method Methods 0.000 claims abstract description 76
- 239000011159 matrix material Substances 0.000 claims abstract description 22
- 238000004883 computer application Methods 0.000 claims abstract description 4
- 238000012545 processing Methods 0.000 claims description 101
- 230000008521 reorganization Effects 0.000 claims description 37
- 230000006870 function Effects 0.000 claims description 15
- 238000013507 mapping Methods 0.000 claims description 10
- 230000003068 static effect Effects 0.000 claims description 10
- 230000001419 dependent effect Effects 0.000 claims description 6
- 238000005457 optimization Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 claims description 2
- 238000011144 upstream manufacturing Methods 0.000 claims description 2
- 238000006243 chemical reaction Methods 0.000 claims 1
- 230000004044 response Effects 0.000 claims 1
- 230000008520 organization Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
ある環境においてリソースと実行時間を最適化するべく複数のタスクを再編成する方法を開示する。一実施形態において前記方法は、各タスクをマッピングして、各タスクを実行するべくタイムフレーム内で各関数要素及び変数の質的及び量的査定を得ることと、前記マッピングから得たデータをN×N(Nはタスクの総数を示す)の大きさのマトリックスで表すことと、前記マトリックス中に示すデータによって、前記タスクを再編成して実行することを含み、前記タスクの再編成は静的方法及び動的方法の両方を提供する。本発明はタスクを実際に全て完了する時間に必要なリソースの最適な数を決定すると共に、コンピュータアプリケーションではないものにも適用できるため、有利である。
Description
本発明は、概して少なくとも1つの処理要素を含む環境においてリソース及び実行時間を最適化するためにタスクを再編成する方法に関する。
コンピュータプログラムは、特定のシーケンス及び時間で実行される複数のタスクを含むが、これらのシーケンス及び時間は、対応するソースコードの論理と使用する処理ハードウェアの制約によって決まる。コンピュータシステム、詳細には複数の処理要素を含むコンピュータシステムは、コンピュータプログラムを含むタスクを実行する際のタスクの編成を効率化する方法が備わっていれば、コンピュータプログラムをより速く実行できると共に、処理ハードウェアのリソースに対しても合理的に要求を行うことができる。
一般にタスクの編成とは、実行キュー中のタスク又はプロセスにおいて優先度を論理的に割り当てることを指す。入力コード中の実行ユニットを識別し、その実行を編成してより速く正確に前記ソースコードを実行することは、多重処理/並列処理システム、そして特に実時間オペレーティングシステムの多重タスク処理効率と処理能力を決める重要なパラメータである。多重処理環境に合ったタスク編成方法の構築は、当技術分野で早急に必要とされてきた。
タスク編成機能を提供するオペレーティングシステムの部分は、タスクオーガナイザとして知られている。タスクオーガナイザの仕事は、単一CPUシステムの場合にはタスク/スレッド/プロセスを実行するCPU時間を割り当てることである。これらのタスクオーガナイザは一般的にはタイムシェアリング方法を実行し、各プロセス/タスク/スレッドに対して、それを実行するためのCPUタイムスロットを割り当てる。CPUを複数備えるシステムの場合に、タスクオーガナイザに求められるのは、CPU同士の間の負荷にバランスが取れるように、及び/又は実行時間が最短となるように、異なる処理要素同士の間でタスクを分配することである。より良いタスクの編成方法を編み出す際に直面する課題は、依存関係にあるタスク同士の間の同期及び通信時間を最短化すること、実行時間を最適化すること、リソース又はCPUの使用を最適化すること等である。
この点に関して、種々の従来技術では、次のような方法により上記問題を処理しようとした;例えば、データの競合を減らすと共にデータ局所性を最大化する目的で、反復する実行シーケンスを連続配列した形態で表す方法;並列処理できるタスクを識別し、これらを異なる処理ユニットに編成する方法;時点を起こった順に同期化することにより、総処理時間を分割することによって得た異なるレベルのタスクを分配することに基づく並列処理及び編成を行う方法等である。この他、プレランタイム技術とランタイム技術を組み合わせた方法、共通のコード分配バスを共有する埋め込みプロセッサの集まりを含む方法;タスクのリソース要求に基づいてタスクを編成する方法等を含む手段が幾つかある。
しかし、既存の従来技術における方法には、並列処理システムの効率が全面的に達成されないと共に、方法がタスクの静的編成又は動的編成のいずれかに限定されているという欠点がある。さらにこれらの方法は、フィードバック構造に依存すると共に、使用する処理要素の数に基づいたタスクの最適な編成を決定することができない。また、従来技術による方法は、所定のタスクを編成するために必要な処理要素の最適な数を提供することもなければ、処理要素の使用を最適化するようにタスクを編成することもない。さらに、これらの方法はデータ依存関係、関数コールチャート、利用可能な処理要素のマッピング等の関連するパラメータを考慮しないため、タスクの実行を最適に編成するまでに至っていない。
これらの問題に対処する試みに関する情報は、以下の特許文献1から特許文献11に記載されている。しかし、それらの文献にはそれぞれ、上に挙げた欠点が1つ以上ある。
そのためこれまでの方法では、最先端の上記問題を満足のいくように対処することができなかった。よって、実行リソースと実行時間の使用を最適化する静的且つ動的なタスク編成を可能にする方法を提供することにより、上記欠点に対処する方法が必要である。
開示する発明の幾つかの態様の基本的な理解を促すように、発明の概要を以下に示す。この概要は詳細に関わる要約ではなく、鍵となる/重要な要素を特定するものでもなければ、発明の範囲を明確に示すよう意図したものでもない。その唯一の目的は、後程示す、より詳細な説明の前置きとして、本発明の幾つかの概念を簡単に示すことである。
本発明の目的は、ある環境においてリソースと実行時間を最適化するべくタスクを再編成する方法を提供することである。本発明の一態様では、リソース及び実行時間を最適化するために複数のタスクを再編成する方法を示す。該方法は、各タスクをマッピングして各タスクを実行するべくタイムフレーム内で各関数要素及び変数の質的及び量的査定を得るステップと;マッピングから得たデータをN×Nの大きさのマトリックスで表すステップであって、Nはタスクの総数を示すステップと;マトリックス中に示すデータによって、タスクを再編成して実行するステップであって、タスクの再編成が静的方法及び動的方法の両方を提供するステップと;を含む。
従って、本発明は、例えばマルチコア要素、対称型要素、及び非対称型要素等(これらに限定しない)の多重処理要素を含む環境において使用する方法を提供する。
本発明の別の目的は、タスクの実行に必要なリソースの最適な数を決定することである。
従って本発明は、リソースの利用可能性を無限と仮定して、タスクの実行に必要な最短時間を決定し、任意の所与の実行時間に必要な最小のリソースを決定し、リソースの数が一定である場合に必要な実行時間を決定し、リソースの数が一定である場合にリソースの使用を決定し、所与の実行時間及び利用可能なリソースに対するリソースの使用を決定する方法を提供する。
本発明は、実際の全タスク完了時間を達成するのに必要なリソースの最適な数を決定するものであるが、コンピュータではない用途に適用でき、有利である。
本明細書で開示するシステム及び装置は、様々な態様を達成する任意の手段で実行可能である。添付の図面及び以下の詳細な記載から、その他の特徴が明らかとなろう。
幾つかの実施形態を例として示すが、実施形態は添付の図面に限定されない。また図面では、同じ要素については同じ参照番号を付して示している。
本発明は多くの実施形態が可能であると共に、明細書の記載及び図面で示す範囲に決して限定されない。
添付の図面を参照して、本発明の実施形態を説明する。ただし、開示する実施形態は本発明の一例にすぎず、本発明は様々な形態で実施できることを理解されたい。以下の記載と図面は本発明を制限するものととらえるべきではなく、また特許請求の範囲の基礎として、そして本発明の構築及び/又は使用を当業者に教示するための基礎として、特定的な詳細を複数示す。ただし場合によっては、本発明の詳細を不必要に不明瞭にしないように、周知又は従来の技術に関する詳細については記載しない。
本発明は少なくとも1つの処理要素を含む環境においてリソース及び実行時間を最適化するためにタスクを再編成する方法を示す。「リソース要素」、「処理要素」、及び「プロセッサ」等の用語は明細書を通して同義的に使用する。タスク又はプロセス又はスレッドは、コンピュータプログラムコードであり得ると共に、「タスク再編成手段」又は「再編成手段」は元々の実行によるタスクの実行を再編成する。
一例示的な実施形態では、ある環境においてリソース及び実行時間を最適化するべく複数のタスクを再編成する方法は、各タスクをマッピングしてタスクそれぞれを実行するタイムフレーム内の各関数要素及び変数の質的及び量的査定を得るステップを含む。このマッピングステップでは、個々のタスクの実行時間、実行シーケンス、タスク同士の依存関係、及び上流のタスクを実行した結果として下流のタスクを解放する図式等、元々の実行による対象タスクの特徴が明らかとなる。さらに、マッピングから得たデータをN×Nの大きさのマトリックスで表すことになるが、Nはタスクの総数を示す。さらに、マトリックス中に示すデータによってタスクを再編成して実行するが、タスクの再編成は静的方法及び動的方法の両方を提供する。
換言すれば、実行時間及び実行リソースの効果的な最適化を達成するためにタスクを再編成する方法は、静的方法及び動的方法の両方を提供する。実行可能な単位(タスク)を識別し、その後実行パイプラインにおいてタスクに優先度を論理的に割り当てる際に、関数を綿密に構築することが求められる。
タスクを再編成する動的方法
一実施形態では、並列計算システムのメインメモリは、並列計算システムにおけるすべてのリソース又は処理要素とタスクプログラムを共有する。並列計算システムは複数の処理要素を含む。さらに、並列システムのすべての処理要素においてタスクプログラムを実行する。全ての処理要素が共有するメインメモリにおけるデータ構造は、実行すべきタスクに関する情報を含む。異なる処理要素で実行される全てのタスク再編成プログラムが、このデータ構造を共有する。一例示的な実施形態では、一般的な技術であるミューテックス(Mutex)等のロックを使用すれば、共有するデータ構造への排他的アクセスを保証することができる。なお、処理要素又はタスク再編成手段の間にはマスタースレーブ関係は存在しない、即ち、全ての処理要素とタスク再編成手段は同レベルである。上記環境におけるタスク再編成手段の働きについて、以下で説明する。
一実施形態では、並列計算システムのメインメモリは、並列計算システムにおけるすべてのリソース又は処理要素とタスクプログラムを共有する。並列計算システムは複数の処理要素を含む。さらに、並列システムのすべての処理要素においてタスクプログラムを実行する。全ての処理要素が共有するメインメモリにおけるデータ構造は、実行すべきタスクに関する情報を含む。異なる処理要素で実行される全てのタスク再編成プログラムが、このデータ構造を共有する。一例示的な実施形態では、一般的な技術であるミューテックス(Mutex)等のロックを使用すれば、共有するデータ構造への排他的アクセスを保証することができる。なお、処理要素又はタスク再編成手段の間にはマスタースレーブ関係は存在しない、即ち、全ての処理要素とタスク再編成手段は同レベルである。上記環境におけるタスク再編成手段の働きについて、以下で説明する。
一例示的な実施形態では、全ての処理要素で実行するタスク再編成手段は、共有するデータ構造にアクセスして実行準備状態にあるタスクがあるかどうかをチェックする。実行準備状態にあるタスクの中で最も優先度の高いタスクを選んで実行する。タスク再編成手段は実行中のタスクの状態又はタスクのデータ構造中のフラグを変更し、そのタスクのフラグ又は状態を実行中と記録する。これは別の処理要素が同じタスクを選択した実行しないことを保証するためである。この共有データ構造への排他的アクセスを保証するために、ミューテックス及びセマフォ等の一般的なロック技術を使用できる。ロックが利用できない場合には、共有データ構造にアクセスするためのロックを利用できるようになるまで、タスクプログラムは待機する。タスクの実行が処理要素のいずれかにおいて終了すると、その処理要素において次のタスクの実行が開始される。
さらに、タスク再編成手段は、共有データ構造にアクセスすることによって、任意のタスクが実行準備状態であるかどうかを再度チェックする。実行準備状態にあるタスクがない場合には、タスク再編成手段はタスクが実行準備状態となるまで周期的にチェックを続け、実行を開始する。別の例示的な実施形態では、複数のタスクが実行準備状態である場合には、タスク再編成手段は最も優先度の高いタスクを選び出す。このように、上述のタスク再編成手段の作用とメカニズムは、環境の処理要素全てにおいて継続する。
さらに、タスクの実行が継続すると、事前に行ったデータ依存関係の解析に基づいて、より多くのタスクが実行準備状態となる。共有データ構造は、事前にプログラム解析を行なうことによって計算したデータ依存関係情報を含む。データ依存関係は複数存在し得るが、データ構造にはデータ依存関係情報が含まれる。別の例示的な実施形態では、各データ依存関係を解決した後にタスクプログラムコードをタスクに挿入することで、特定のデータ依存関係が完了したことを示すよう共有データ構造が修正される。すべての依存関係が解決されると、タスクは実行準備状態となる。タスク再編成手段が最も優先度の高いタスクを選んで実行すると、この時点でコンテキストスイッチが発生できる。タスクはI/Oに対して、又は一部のリソースに対して、又はミューテックスに対して待機状態となることが可能である。この場合にはタスクは実行されず、待機状態となる。リソースが利用可能となれば、タスクは実行準備状態となるであろう。タスクの状態としては、実行準備状態、非実行準備状態、待機状態、実行済又は完了状態がある。
例えば:タスクのデータ依存関係全てが解決し、そのタスクは実行準備状態となっているが、これを実行できる処理要素がない場合には、以下のケースが生じ得る:
ケース1:新たなタスクが実行準備状態にあり、別のタスクが実行中であるが、この実行中のタスクの優先度が、実行準備状態にあるタスクより低い場合。このような場合には、タスク再編成手段はコンテキストスイッチを実行して、優先度の高いタスクの実行を開始し、優先度の低いタスクは一時的に中断させる。中断されたタスクの状態は「実行準備状態」となり、新たなタスクの状態は「実行状態」となる。
ケース2:新たなタスクが実行準備状態にあり、現在実行中の全てのタスクの優先度が新たなタスクの優先度より高い場合。この場合には、コンテキストスイッチは発生せず、新たなタスクは処理要素が利用可能となるまで実行されない。よって、新たなタスクの状態は「実行準備状態」である。
ケース3:新たなタスクが実行準備状態にあるが、すべての処理要素がビジー状態である。ただし新たなタスクの優先度と同じ優先度を有するタスクが実行されているという場合。この場合には、ラウンドロビンタイムスライスタスク再編成手段を使用して、特定の期間、両方のタスクを実行する。この期間に、何か他のプロセッサを利用できるようになれば、2つの異なる処理要素において両方のタスクを同時に実行できる。
一例示的な実施形態では、上記システムを対称型マルチプロセッサシステムに適用可能である。しかし、非対称型マルチコアシステムでも上記システムを実行できる。非対称型マルチプロセッサシステムには、アプリケーションを実行する主要な処理要素が1つ存在し、これは大抵の場合RISC構造であり、また特定の計算の実行を専門的に行うコプロセッシング要素が1つ以上存在する。RISC処理要素は特殊命令、そして積和演算(MAC)のような特殊演算を実行するDSPコプロセッサ等の補助プロセッサを使用する。このような非対称型マルチプロセッサシステムの場合には、タスク再編成手段はメインのRISCプロセッサのみで実行する。この場合には、コプロセッサを使用するタスクプログラムコードの生成はコンパイラが行う。
タスクを再編成するための静的方法
一実施形態において、静的方法によるタスクへの優先度の割り当て手法は、特定のタスクに依存するタスク数が多くなる程、再編成手段はそのタスクに高い優先度を付与するため、特定のタスクの実行によってより多くのタスクが解放される、ということに基づく。さらに、別のタスクは実行準備状態にあっても、このやり方によって遅延される可能性がある。そのため、実行するタスクの選択やタスクの待機状態の維持に対しては主な基準が2つあり、例えば実行時間や実行する現タスクに依存するタスク数といったものである。
一実施形態において、静的方法によるタスクへの優先度の割り当て手法は、特定のタスクに依存するタスク数が多くなる程、再編成手段はそのタスクに高い優先度を付与するため、特定のタスクの実行によってより多くのタスクが解放される、ということに基づく。さらに、別のタスクは実行準備状態にあっても、このやり方によって遅延される可能性がある。そのため、実行するタスクの選択やタスクの待機状態の維持に対しては主な基準が2つあり、例えば実行時間や実行する現タスクに依存するタスク数といったものである。
さらに静的再編成方法では、再編成方針を決定するのに必要な情報全てを収集するために、タスクプログラムコードをオフラインで複数回実行する必要がある。関連情報としては、実行時間に関するタスクの分割とタスクの依存関係等がある。さらに、これらの入力に基づいて、タスク依存関係マトリックスを作成する。表Iは、別個の時間に沿ったマッピングによって明らかとなるプログラムコードのデータを示し、図1は多重処理要素を含む環境におけるタスクの再編成をグラフで示す。
表Iでは、タスク1を10ms実行し終わるとすぐに、タスク2を開始することができる。タスク1を20ms実行し、タスク2を10ms実行し終わった時に、タスク3を開始できる。この表の6行目は、タスク6は20msの持続時間を有するが、このタスク6に関しては、図1で示すようにタスク2を30ms実行し、タスク3を20ms実行し、タスク4を10ms実行し、そしてタスク5を15ms実行した後でしか実行することができないことを示している。表Iに基づいて、タスク依存関係マトリックスを形成し得る。
従って、実行中のタスクを有する行に沿ってマトリックスAを作成する。縦列に沿って実行準備状態となるタスクがある。i行目の各要素は、j番目の縦列におけるタスクjを解放する時間に等しい。よって、Tijはi番目のタスクがTijの時間の後にj番目のタスクを解放することを示している。いったん解放されると、タスクjは実行準備状態となる。
定義:
TAMWT−タスクjの実行が開始された後、タスクiを開始するのに必要な絶対時間(上記ケースではT21=タスク1の実行を開始した後タスク2を開始するのに必要な時間)
Ti−タスク番号i
Pi−プロセッサ番号i
T−タスク依存関係マトリックス
Tij−タスク依存関係マトリックスの要素であり、タスクjが単位時間Tijの実行を完了すると、タスクiがそのジョブを開始できることを意味する
Piwait−プロセッサiがそのジョブを終了し、次に利用可能なタスクに対して準備が整うまでに必要な時間
Pistat−プロセッサの状態(ビジー又は利用可)
Txi−タスクiを逐次実行する総時間
Tistat−タスクIの状態(実行中、完了、未開始)
Tidep−Tiに依存するタスクの数
Nproc−プロセッサの数
Tiexec−Tiが実行されてからの時間<Ti
TAMWT−タスクjの実行が開始された後、タスクiを開始するのに必要な絶対時間(上記ケースではT21=タスク1の実行を開始した後タスク2を開始するのに必要な時間)
Ti−タスク番号i
Pi−プロセッサ番号i
T−タスク依存関係マトリックス
Tij−タスク依存関係マトリックスの要素であり、タスクjが単位時間Tijの実行を完了すると、タスクiがそのジョブを開始できることを意味する
Piwait−プロセッサiがそのジョブを終了し、次に利用可能なタスクに対して準備が整うまでに必要な時間
Pistat−プロセッサの状態(ビジー又は利用可)
Txi−タスクiを逐次実行する総時間
Tistat−タスクIの状態(実行中、完了、未開始)
Tidep−Tiに依存するタスクの数
Nproc−プロセッサの数
Tiexec−Tiが実行されてからの時間<Ti
一実施形態では、タスクの再編成はタスク依存関係マトリックスに完全に基づいて、下に示すように実行される。
実行すべき第1のタスクを見出すために、依存関係を有さないタスクを選択する。表IIでは、タスク1が第1のタスクである。第1のタスクとなり得る候補が多く存在する場合には、タスクを実行する優先度を設定して、これらタスクのうちのどのタスクの実行を開始し、どれを遅延させるかを決定する。これを決定するには3つの要素がある:Txi、Nproc、及びTidepである。このように、この方法ではタスクの最適な再編成を決定することに対してこれらの3つの要素を考慮する。利用可能なプロセッサがより多く存在する場合には、より多くのTidepを有するタスクに高い優先度を付与する。実行により多くの時間を要するタスクは、より小さいTxiを有するタスクより早くは開始されない。同時に、現在のタスク実行を開始した場合に準備状態となるタスクの数は、実行すべき次のタスクを決定するための決定要素である。従って、他のタスクの依存関係の解除が保証される。こうしてプロセッサの最適な使用が保証される。
一実施形態では、実行するタスクの優先度を決定するために、(min(Txi × Tidep))を有するタスクにより高い優先度が付与される............(1)
第1のタスクの実行が開始されると、以下の値を更新する:
Tistat−実行中
Pistat−タスクiを実行中
Piwait−Txi(プロセッサが空くまでに時間Txiが残っていることを意味する)
Tistat−実行中
Pistat−タスクiを実行中
Piwait−Txi(プロセッサが空くまでに時間Txiが残っていることを意味する)
さらに、開始すべき次のタスク(1つ以上)を見出す際には、第1のステップで識別したタスクか、式(1)を用いて残りのタスクから選択したタスクか、のいずれかが選択される。次のタスクを選択するために、タスク依存関係マトリックスを精査して、現在実行中のタスクに依存するタスクがあるかどうかをチェックする。Tjがこのようなタスクであり、Tjは現在実行中のタスク番号iに依存すると仮定する。実行の優先度を決定する論理は以下の通りである:
a.Tijを見出す
b.Tiexec > Tijであるかどうかをチェックする
c.プロセッサの利用可能性をチェックする
d.プロセッサが利用可能な場合には、タスクjの実行を開始する
e.タスクx,y,z...もこの条件を満たす場合には、式(1)を使用して優先度を決定し、利用できるプロセッサ数に基づいてこれらのタスクの同時実行を開始する
f.全てのタスクの実行を開始し、実行し終わるまでプロセスを反復する。
a.Tijを見出す
b.Tiexec > Tijであるかどうかをチェックする
c.プロセッサの利用可能性をチェックする
d.プロセッサが利用可能な場合には、タスクjの実行を開始する
e.タスクx,y,z...もこの条件を満たす場合には、式(1)を使用して優先度を決定し、利用できるプロセッサ数に基づいてこれらのタスクの同時実行を開始する
f.全てのタスクの実行を開始し、実行し終わるまでプロセスを反復する。
タスク依存関係マトリックスの特性:タスクiの絶対最短待機時間であるTAiは、0からタスクiの実行時間TXiである。TAi=0である場合には、(i+1)番目のタスクをタスクiと同時に開始できることを意味する。一方、TAi=TXiである場合には、タスクiが完了するまでは次のタスクを実行できないことを意味している。
特性1:
0 <=TAi <=TXi
0 <=TAi <=TXi
特性2:
逐次実行に対する総時間、Tmax=TX1+TX2+TX3+TX4+TX5 ... TXM
逐次実行に対する総時間、Tmax=TX1+TX2+TX3+TX4+TX5 ... TXM
特性3:
並列実行に要する最短総時間、Tmin=Max(TXi)、ここでiは1からM、即ちタスクの最大数まで変化する。
上記ケースでは、TAiは全てゼロであると仮定するため、全てのタスクを同時に実行開始できる。
並列実行に要する最短総時間、Tmin=Max(TXi)、ここでiは1からM、即ちタスクの最大数まで変化する。
上記ケースでは、TAiは全てゼロであると仮定するため、全てのタスクを同時に実行開始できる。
特性4:
最後の実行は常にTAlast=TXlastを有する。
タスクiの実行時間=TXi
異なる処理要素で次のタスクが開始された場合、現プロセッサでの実行にかかる残りの時間は(TXi−TAi)となる。これは、並列処理によって節約される時間である。
ケース1:
(TXi-TAi)=0
モジュールを同時に実行することができない。
ケース2:
(TXi-TAi) <=TA(i+1)
この(i+1)番目のタスクを新たなプロセッサで開始できる。ただし、(i+2)番目のタスクは実行開始できない。よってプロセッサを追加しても意味がない。
ケース3:
(TXi-TAi) > TA(i+1)
この場合には以下のことを実行する必要がある:
合計=0
フラグ=0、N=0、ここでNは処理要素の数である
sum = 0
flag = 0
N = 0, where N is the number of processing elements(Nは処理要素数である)
loop (flag!=1)
N = N+1
sum = sum + TA(i+N)
loop from j =0 to j < N && flag==0
if ( sum > (TX(i+j) - TA(i+j)))
flag = 1
j=j+1
end loop
end loop
最後の実行は常にTAlast=TXlastを有する。
タスクiの実行時間=TXi
異なる処理要素で次のタスクが開始された場合、現プロセッサでの実行にかかる残りの時間は(TXi−TAi)となる。これは、並列処理によって節約される時間である。
ケース1:
(TXi-TAi)=0
モジュールを同時に実行することができない。
ケース2:
(TXi-TAi) <=TA(i+1)
この(i+1)番目のタスクを新たなプロセッサで開始できる。ただし、(i+2)番目のタスクは実行開始できない。よってプロセッサを追加しても意味がない。
ケース3:
(TXi-TAi) > TA(i+1)
この場合には以下のことを実行する必要がある:
合計=0
フラグ=0、N=0、ここでNは処理要素の数である
sum = 0
flag = 0
N = 0, where N is the number of processing elements(Nは処理要素数である)
loop (flag!=1)
N = N+1
sum = sum + TA(i+N)
loop from j =0 to j < N && flag==0
if ( sum > (TX(i+j) - TA(i+j)))
flag = 1
j=j+1
end loop
end loop
プロセッサ数K(i)=N
Nは処理要素数、jは処理要素に対する反復、Mはタスク数、そしてiはタスクの反復であると仮定すると、プロセッサ(同一プロセッサ)が空くまでの残り時間は、異なる幾つかのタスクを考慮する場合、異なる可能性がある。よって、
TR1=TX10-TA10
又は
TR1=TX1-TA1
Nは処理要素数、jは処理要素に対する反復、Mはタスク数、そしてiはタスクの反復であると仮定すると、プロセッサ(同一プロセッサ)が空くまでの残り時間は、異なる幾つかのタスクを考慮する場合、異なる可能性がある。よって、
TR1=TX10-TA10
又は
TR1=TX1-TA1
プロセッサの最適な数対最適な時間
別の実施形態では、タスクを実行する最適な速度を達成するのに必要なプロセッサ数を決定する。さらに、タスクの実行に関するむだ時間及び待機時間に基づいて、任意の所与の逐次タスクプログラムを実行するのに必要な処理要素の最適な数を決定することができる。待機時間とむだ時間は全ての処理要素の最大処理能力をもって最短とすることができることを考慮することにより、処理要素の最適な数を決定する。
別の実施形態では、タスクを実行する最適な速度を達成するのに必要なプロセッサ数を決定する。さらに、タスクの実行に関するむだ時間及び待機時間に基づいて、任意の所与の逐次タスクプログラムを実行するのに必要な処理要素の最適な数を決定することができる。待機時間とむだ時間は全ての処理要素の最大処理能力をもって最短とすることができることを考慮することにより、処理要素の最適な数を決定する。
従って一実施形態では、実行時間及び/又は処理要素数に関して、性能の最適化を以下のように達成できる:
用途又はユーザの要件に基づいて、タスク依存関係マトリックスを作成することによって、上記方法は所望の性能を発揮するよう調整を行う。
Tij=i番目のタスクの実行を開始した後、j番目に実行開始すべきタスクの待機時間を示す。即ち、j番目のタスクのi番目のタスクに対する依存関係は、i番目のタスクが時間Tijの間実行されると終了する。
Tji=i番目のタスクの開始後に実行を開始されるまでのタスクjの待機時間を示す。
Tji=i番目のタスクの開始後に実行を開始されるまでのタスクjの待機時間を示す。
図2は、本発明によるタスク依存関係のグラフを示す。詳細には、図2はタスクと、丸括弧内にそれぞれの実行時間を示している。例えば、タスク0は50msの実行時間を有し、タスク5は20msの実行時間を有する。図2で示す黒枠円内の数字は、新たな処理要素でそれぞれのタスクを開始するのに必要な待機時間を示す。開始時間は絶対時間であり、タスク0はプロセッサ0で開始されると仮定する。
タスク3の絶対待機時間は、3つの依存関係(T13、T03、T23)のうちの最大値であるというだけでT13=25にはならず、タスク3はタスク2に依存し、タスク2はタスク0に依存しているため、実行時間は30msとなる。このように、これら前のタスクに対する待機時間を考慮しなければならない。従って、この場合には最長時間はタスク2の待機時間である20msとT23である10msを加算したものである。さらに、実行時間対プロセッサ番号は表IVで示す通りである。
図3A、図3B、図3C、及び図3Dは、表IIIに示す依存関係マトリックスを有するアプリケーションに対するタスク再編成のシミュレーション結果を示す。このシミュレーションから以下のことが明らかである。
Texec α(1/Nproc) ............(2)
Texec α(1/Nproc) ............(2)
さらに別の実施形態では、以下に示すように、必要なプロセッサの最適な数を決定する。 実際のケースでは、コードを並列実行するためにN個のプロセッサを有することができない場合もある。例えば、プロセッサが4つ存在する場合
1番目はマスター=プロセッサ番号0
2番目にタスク又は関数F1を実行する=プロセッサ番号1
3番目にタスク又は関数F2を実行する=プロセッサ番号2
4番目にタスク又は関数F3を実行する=プロセッサ番号3
1番目はマスター=プロセッサ番号0
2番目にタスク又は関数F1を実行する=プロセッサ番号1
3番目にタスク又は関数F2を実行する=プロセッサ番号2
4番目にタスク又は関数F3を実行する=プロセッサ番号3
タスクF4が実行準備状態にあるが、利用できるプロセッサがない場合には、むだ時間(Tdead)を計算する。
各モジュールは固有のインデックスを有するが、このインデックスは、タスクプログラムにおける並列処理コードインデックスセクションの番号に等しいものである。さらにインデックスはコールグラフにおいてそのタスクの近隣にある各タスクの実行時間にも依存するが、コールグラフは、逐次コンピュータコードの実行の実際のタイムスケールにおいて異なるタスクを実行するシーケンスをグラフで示したものを含む。
例えば、F1、F2、及びF3の実行にはそれぞれα1、α2、及びα3の時間がかかるとする。F4が実行準備状態にあるが、プロセッサ1、2、及び2はF1、F2、及びF3の実行でビジー状態である場合には、タスクF4は、F4を実行できるプロセッサを利用できるようになるまで最低α1、α2、及びα3の間待機しなければならない。このαminがむだ時間となる。この状況を解決する方法の1つは、F1、F2、F3、及びF4の実行にかかる専用の時間を見出して、最長実行時間を見出すことである。F4の実行には(F1+F2+F3)を実行するための最長時間がかかる、又はF1/F2/F3の任意の組み合わせを同時に実行しなければならないと仮定する。
さらに、本明細書で示す方法は、むだ時間と待機時間に基づいて、任意の所与の逐次タスクプログラムの実行に必要な処理要素の最適な数を決定する。最適な数は、全ての処理要素の最大処理能力により待機時間とむだ時間を最短にできることを考慮することによって、決定される。
従って、任意のアプリケーションに必要なプロセッサの最適な数を得るために、Nproc=1を選択することによって、タスク依存関係マトリックスを考慮する。この場合の実行時間を書き留めておく。Nprocを一回に1増やし、Texec(total)を書き留める。プロセッサを追加しても総実行時間に効果がでない場合もある。この場合のプロセッサ数を、このアプリケーションに必要な最適プロセッサ数(Nprocopt)と称する。
Nprocopt=(その後実行時時間が一定=TconstとなるNproc)
Nprocopt=(その後実行時時間が一定=TconstとなるNproc)
このように、ここで示す方法は任意のアプリケーションに対して必要な処理要素の数を決定する。ユーザが実行時間に満足している場合もある(Topt < Tconst)。このような場合には、t >Toptとなるとすぐにシミュレーションを停止する必要がある。この場合には、プロセッサの最適な数はN < Nprocoptとなる。上記の例は、ユーザが95msよりも高速化する必要なしと考えている場合である。それ故、このように使用する場合のプロセッサの最適な数は5ではなく2となるであろう。図1、図3A、図3B、図3C、及び図3Dは、実時間フレームに沿ったタスクT0、T1、T2、T3、T4、及びT5の再編成をグラフでして示している。図1は複数の処理要素を含む環境におけるタスクの再編成を示し、一方図3Aから図3Dは、1つの追加的処理要素を含む状況を示している。
要約すると、処理要素の最適化は、実行する複数の処理要素にタスクを入力し、処理要素がタスクを実行し、各タスクの総実行時間を記録し、各処理要素の稼働時間を記録し、実行時間で稼働時間を割ることでリソースの使用を決定することにより、必要なリソースを最適化することを含む。さらに、最短実行時間を達成するために使用する処理要素数は、タスクの最速な実行を達成するのに必要なリソースの最小数である。
一実施形態では、実行に必要な最短時間とドル関数(Tmax−Tmin)*(コスト関数)により、タスクの実行を並列処理した場合に節約される費用を決定する。従って、所与のアプリケーションを並列処理することに関して、費用対効果が高いかどうかを決定する。さらに、最大限の最適化を行うのに必要な追加コストを、一定数の処理要素と無限数の処理要素に対する実行時間の差で決定できる。
タスク依存関係の解析とタスクプログラムコード機能:
一実施形態で、開示する方法はデータ依存関係解析を実行し、並列実行できるタスクを見出す。なお、タスクプログラムは並列実行できる、又は元々の実行時間より前に実行できるコードピースを暗示する。
一実施形態で、開示する方法はデータ依存関係解析を実行し、並列実行できるタスクを見出す。なお、タスクプログラムは並列実行できる、又は元々の実行時間より前に実行できるコードピースを暗示する。
さらに、タスク依存関係情報とタスク状態情報を、共有データ構造メモリに格納する。1つのタスクが、1つ以上の他のタスクに対して複数のデータ依存関係を有する可能性がある。さらにタスクプログラムコード解析を実行する間に、アプリケーションプログラミングインタフェース(API)コールを、それぞれのデータ依存関係が解消された後にタスクプログラムコードに挿入することができる。APIは、タスク依存関係の解消を記すべく、共有データ構造メモリを変更する。
加えて、多数のデータ依存関係がある場合には、タスク再編成手段はすべてのデータ依存関係を解消した後にのみ、並列タスクを実行する。これは、機能を備えたコードを使用することで可能となるが、これは各データ依存関係の後に挿入したAPIコードが各タスクに対して、そして全てのデータ依存関係に対してデータ構造中のデータ依存関係の解消を継続して行うためである。
依存関係を決定するには、個々のタスクを時間に沿ってマッピングすることが必要である。図2は、コードの実行中のタスクとそれらの依存関係との間のデータの流れを示す。タイムスケールを明確にするために実行時間も示している。
主記憶装置におけるデータ構造:
表Vは、処理要素で実行しているタスク再編成手段がアクセスする共有データ構造の必須要素である種々のヘッドを示す。
表Vは、処理要素で実行しているタスク再編成手段がアクセスする共有データ構造の必須要素である種々のヘッドを示す。
なお、各タスクに対してかかるデータ構造エントリが1つある。すべてのタスクに対して表Vを生成することで、データ依存関係解析を実行することができる。
タスクID:タスクを識別する独自の番号
状態:タスクの状態 − 実行準備状態、実行状態、非実行準備状態、待機状態等。
データ依存関係数:タスクの実行を開始する前に解消すべきデータ依存関係数。上述のAPI(タスクプログラムコードに挿入される)は本質的にこの数を減分することで、データ依存関係の解消を示す。よって、最初にこの数はこのタスクのデータ依存関係の数を示す。フィールドがゼロである場合には、すべてのデータ依存関係が解消されて、タスクを実行する準備が整っていることを示している。
このタスクの実行により利用可能となるタスクの数:このフィールドは他のタスクが幾つ、このタスクに依存しているかを示している。これはタスクの優先度として作用する。より多くのタスクがこのタスクに依存している場合には、利用できるタスクの全ての中でまずこのタスクを実行すべきである。
データポインタ:タスクを実行するのに必要なデータへのポインタ。これはグローバル変数を含み得る。
スタックポインタ:このタスクの実行中にコールスタックとローカル変数を含むスタックへのポインタ。
タスクID:タスクを識別する独自の番号
状態:タスクの状態 − 実行準備状態、実行状態、非実行準備状態、待機状態等。
データ依存関係数:タスクの実行を開始する前に解消すべきデータ依存関係数。上述のAPI(タスクプログラムコードに挿入される)は本質的にこの数を減分することで、データ依存関係の解消を示す。よって、最初にこの数はこのタスクのデータ依存関係の数を示す。フィールドがゼロである場合には、すべてのデータ依存関係が解消されて、タスクを実行する準備が整っていることを示している。
このタスクの実行により利用可能となるタスクの数:このフィールドは他のタスクが幾つ、このタスクに依存しているかを示している。これはタスクの優先度として作用する。より多くのタスクがこのタスクに依存している場合には、利用できるタスクの全ての中でまずこのタスクを実行すべきである。
データポインタ:タスクを実行するのに必要なデータへのポインタ。これはグローバル変数を含み得る。
スタックポインタ:このタスクの実行中にコールスタックとローカル変数を含むスタックへのポインタ。
これらはタスク再編成手段が必要とする共有データ構造の必須のフィールドであることに留意されたい。システムの実際の実行によっては、この表により多くのフィールドが必要となる場合もある。
タスクの優先度の決定:一実施形態では、タスクの優先度の決定に関しては2つの要素、すなわちタスクの実行時間とそのタスクに依存している他のタスクの総数に基づいて行う。
まず、タスクに依存している他のタスクの数をカウントすることにより、タスクの優先度を設定する。他のタスクが多く依存しているタスクには、より高い優先度を割り当てる。以下のような持続時間によって優先度を再調整する:
a.タスク全てを持続時間の長い順に分類する;
b.可変カウント値をタスクの総数に設定する;
c.分類したリストにおける第1のタスクの優先度にカウント値を加算する;
d.カウント値を減分する;
e.分類したリストにおけるタスク全てに対して、優先度にカウントを加算しカウントを減分する操作を続ける。
a.タスク全てを持続時間の長い順に分類する;
b.可変カウント値をタスクの総数に設定する;
c.分類したリストにおける第1のタスクの優先度にカウント値を加算する;
d.カウント値を減分する;
e.分類したリストにおけるタスク全てに対して、優先度にカウントを加算しカウントを減分する操作を続ける。
いくつかの実施例により本発明をより詳細に述べるが、本発明は以下の実施例に限定されるととらえるべきではない。以下の例は、本発明の実施を例証するためのものであるが、それらの中で示す詳細は単なる例示であり、本発明の実施形態を説明するために用いるものであることを理解されたい。
実施例1
表VIで示すようにデータを有する7つのタスクを含む仮想コンピュータアプリケーションに関して考察する。
Tidは、対象とするアプリケーションにおいてタスク名を指定するために使用する名前、即ちタスクのIDである。
Txは対応するタスクの実行に必要な時間である。
NDTは、対応するタスクの実行開始後にのみ実行を開始できるタスクの数である。優先度をタスクに割り当てる際には、特定のタスクによって解放される従属タスクの数を十分考慮する。
LDTは対応するタスクの実行中に解放されるタスクIDのリストである。
Twは、解放した特定のタスクの実行に要する時間であり、それまでは対応するタスクの実行を開始できない。
Tsは、タスクがその実行を開始する実時間スケールにおける絶対時間である。この時間は、第1のタスクがスケジューリングされている第1リソースに対するものである。
Teは、その時点において経過した、実時間スケールにおける総時間である。この時間は、タスクがスケジューリングされているリソースに対して経過した時間に相当する。
SFは、次の値を有するタスクの状態に対するフラグである:
a.S→スケジューリングされている又は実行開始されたタスク;
b.NS→まだスケジューリングされていないタスク;
c.C→タスクの実行が完了した。
表VIで示すようにデータを有する7つのタスクを含む仮想コンピュータアプリケーションに関して考察する。
Tidは、対象とするアプリケーションにおいてタスク名を指定するために使用する名前、即ちタスクのIDである。
Txは対応するタスクの実行に必要な時間である。
NDTは、対応するタスクの実行開始後にのみ実行を開始できるタスクの数である。優先度をタスクに割り当てる際には、特定のタスクによって解放される従属タスクの数を十分考慮する。
LDTは対応するタスクの実行中に解放されるタスクIDのリストである。
Twは、解放した特定のタスクの実行に要する時間であり、それまでは対応するタスクの実行を開始できない。
Tsは、タスクがその実行を開始する実時間スケールにおける絶対時間である。この時間は、第1のタスクがスケジューリングされている第1リソースに対するものである。
Teは、その時点において経過した、実時間スケールにおける総時間である。この時間は、タスクがスケジューリングされているリソースに対して経過した時間に相当する。
SFは、次の値を有するタスクの状態に対するフラグである:
a.S→スケジューリングされている又は実行開始されたタスク;
b.NS→まだスケジューリングされていないタスク;
c.C→タスクの実行が完了した。
タスク依存関係解放マトリックス(TDM)=T[N][N]
T[i][j]=i番目のタスクの実行が開始した後、j番目のタスクの実行を開始するまでの待機時間を示す。すなわち、i番目のタスクに対するj番目のタスクの依存関係は終了する。
T[j][i]=i番目のタスクの開始後に、タスクjが実行を開始するまでの待機時間を示す。
T[i][j]=i番目のタスクの実行が開始した後、j番目のタスクの実行を開始するまでの待機時間を示す。すなわち、i番目のタスクに対するj番目のタスクの依存関係は終了する。
T[j][i]=i番目のタスクの開始後に、タスクjが実行を開始するまでの待機時間を示す。
さらに、タスクの依存関係を決定すると、個々の処理要素にタスクを論理的に送って、複数の処理要素の完全な能力を把握ことが、本発明の目的である。利用可能な複数の処理要素のマッピングは、前記処理環境において処理を行うために利用可能なタスクを再編成する論理を導出することへの次のステップである。単一のプロセッサを有すると仮定することから始めるが、同じ論理により、対象とするコードを最も速く実行するようプロセッサの最適な数を決定することになる。このために、実時間で更新したプロセッサ状態シートを維持する。上に示した詳細には、本発明の適用可能性を制限するものは一切ないと理解できる。実施例2でより特定して示す。
実施例2:
同じ技術を有するエンジニアが、実行すべき種々のタスクに関する情報を含む中央の共有データベースにアクセスできると考える。データベース中の各タスクは固有の持続時間を有し、タスク同士の間には依存関係が存在する。エンジニアが行うことは、任意のタスクが実行準備状態にあるかどうかを周期的にチェックし、そのタスクの実行を開始することである。複数のタスクが実行準備状態にある場合には、エンジニアは常に最も優先度の高いタスクを選択し、そのタスクの実行を開始する。タスクを実行する間に、一部の他のタスクの依存関係が解消されると、エンジニアは中央データベースにおけるそのタスクに対するデータを修正する。この依存関係データの修正後に、より優先度の高いタスクが開始準備状態となる。このような場合、エンジニアは最も優先度の高いタスクの実行を開始する。最も優先度の高いタスクを開始する前に、エンジニアが現行のタスクの現在の状態を中央データベースに格納することで、他のエンジニアは手が空いていれば、そこでそのタスクに着手することができる。エンジニアはタスクを完了すると、タスクを実行したと中央データベース中のデータを修正し、開始準備状態にあるタスクを再びチェックする。その時点で準備状態にあるタスクがなければ、エンジニアは全てのタスクが完了するまで、開始準備状態にあるタスクがあるかどうか周期的にチェックし続ける。
同じ技術を有するエンジニアが、実行すべき種々のタスクに関する情報を含む中央の共有データベースにアクセスできると考える。データベース中の各タスクは固有の持続時間を有し、タスク同士の間には依存関係が存在する。エンジニアが行うことは、任意のタスクが実行準備状態にあるかどうかを周期的にチェックし、そのタスクの実行を開始することである。複数のタスクが実行準備状態にある場合には、エンジニアは常に最も優先度の高いタスクを選択し、そのタスクの実行を開始する。タスクを実行する間に、一部の他のタスクの依存関係が解消されると、エンジニアは中央データベースにおけるそのタスクに対するデータを修正する。この依存関係データの修正後に、より優先度の高いタスクが開始準備状態となる。このような場合、エンジニアは最も優先度の高いタスクの実行を開始する。最も優先度の高いタスクを開始する前に、エンジニアが現行のタスクの現在の状態を中央データベースに格納することで、他のエンジニアは手が空いていれば、そこでそのタスクに着手することができる。エンジニアはタスクを完了すると、タスクを実行したと中央データベース中のデータを修正し、開始準備状態にあるタスクを再びチェックする。その時点で準備状態にあるタスクがなければ、エンジニアは全てのタスクが完了するまで、開始準備状態にあるタスクがあるかどうか周期的にチェックし続ける。
タスクは関数と同義ではなく、タスクの再編成に関して考慮し得る最小単位のプログラム要素とすることが有利である。本発明の利点は次の通りである:
a.実際のタスク完了総時間を達成するのに必要なリソースの最適な数を決定する。
b.コンピュータアプリケーションではないものに適応できる。
a.実際のタスク完了総時間を達成するのに必要なリソースの最適な数を決定する。
b.コンピュータアプリケーションではないものに適応できる。
本発明を説明した特定の実施形態を参照することにより、本発明をより容易に理解できよう。ただし、上記の実施形態は単なる例示であり、本発明はその主旨及び範囲から逸脱することなく、特定的に示したものとは別の形態で実施できることを理解されたい。理解されるように、本発明は様々なその他の実施形態が可能であり、その幾つかの要素及びそれらに関連する詳細は、本発明の基本的概念を逸脱することなく、多様に変更することが可能である。従って本明細書の記載は本質的に例示であり、いかなる形態にも限定されない。当業者には、本明細書で示したシステム及び装置の変更及び変形が明らかであろう。かかる変更及び変形は、添付の特許請求の範囲に含むものと意図している。
Claims (23)
- ある環境においてリソースを最適化するべく複数のタスクを再編成する方法であって、
各タスクをマッピングして、各タスクを実行するべくタイムフレーム内で各関数要素及び変数の質的及び量的査定を得るステップと;
前記マッピングから得たデータをN×Nの大きさのマトリックスで表すステップであって、Nはタスクの総数を示すステップと;
前記マトリックス中に示すデータによって、前記タスクを再編成して実行するステップであって、前記タスクの再編成が静的方法及び動的方法の両方を提供するステップと;
を含む方法。 - 前記タスクの質的及び量的査定が、各タスクの実行時間、時間に沿ったデータ、前記タスク同士の依存関係、及び上流のタスクを実行した結果として下流のタスクを解放する図式を査定することを含む、請求項1に記載の方法。
- 前記環境が少なくとも1つの処理要素と、タスクの値及び実行優先度の関数として各処理要素の状態値を記録するための共通した共有主記憶装置とを含む、請求項1に記載の方法。
- 前記処理要素が、限定しないがマルチコアプロセッサ、対称型プロセッサ、及び非対称型プロセッサ等のプロセッサを含む、請求項3に記載の方法。
- 前記タスクの動的再編成が、前記環境における全ての処理要素における前記タスクプログラムの実行と、前記共通した主記憶装置にタスクの実行状態を格納することを含む、請求項1に記載の方法。
- ミューテックス又はセマフォ等の一般的なロック技術を使用して、前記主記憶装置における共有データへの排他的アクセスを保証する、請求項5に記載の方法。
- タスクを実行する順序を決定する方法が前記タスクの優先度に基づく、請求項5に記載の方法。
- 実行中、非実行準備状態、待機状態、又は完了状態等のフラグを介して前記タスクの状態をマーキングすることにより、前記主記憶装置中のデータを前記タスクの実行時間において修正することで、別の処理要素が同じタスクを選択して実行しないことを保証する、請求項5に記載の方法。
- 動的タスク再編成手段と前記処理要素が同じレベルにあり、マスタースレーブ関係が存在しない、請求項5に記載の方法。
- 前記タスクの静的再編成が前記タスクの優先度によって決定され、前記タスクの優先度が各タスクの実行時間と前記タスクに依存する他のタスクの数とに基づく、請求項1に記載の方法。
- 前記タスクの値がタスクID、タスクの実行時間、依存するタスクの数、依存するタスクのリスト、タスクを解放するための待機時間、各処理要素に対する開始時間、対応する処理要素に対する経過時間、タスク状態フラグを含む、請求項3に記載の方法。
- 前記処理要素の状態が、処理要素ID、実行すべきタスクのリスト、実時間スケールにおける各タスクの開始時間、実時間スケールにおける各タスクの完了時間、処理要素が利用可能となる時間、処理要素の処理能力、処理要素の転換、処理要素の待機時間、処理要素の応答時間を含む、請求項3に記載の方法。
- 前記マトリックスが実行すべきタスクの数に等しい数の行及び縦列を有する正方行列であり、さらに前記マトリックスではT[i][j]が、i番目のタスクの実行が開始した後j番目のタスクの実行を開始するまでの待機時間を示すと共に、i番目のタスクの開始後に実行開始されるタスクjの待機時間を示すことを特徴とする、請求項1に記載の方法。
- 前記タスクを実行する優先度を決定することが、
タスク全てを実行時間の長い順に分類するステップと;
可変カウント値をタスクの総数に設定するステップと;
分類したリストにおける第1のタスクの前記優先度にカウント値を加算するステップと;
前記カウント値を減分するステップと;
実行する優先度を割り当てるために、前記分類したリストにおけるタスク全てに対して、優先度にカウントを加算しカウントを減分する操作を反復して行うステップと;
を含む、請求項3に記載の方法。 - 全てのタスク依存関係を解消した後で、各タスクに対して、及び各タスク依存関係に対して前記データ構造中のデータ依存関係の解消を各タスク依存関係が記録した後、アプリケーションプログラムインタフェース(API)コードとしての機能コードを挿入することにより、依存するタスクの実行を行うことができる、請求項14に記載の方法。
- リソースの最適化が、
実行するために複数の処理要素にタスクを入力するステップと;
前記処理要素が前記タスクを実行するステップと;
各タスクの総実行時間を記録するステップと;
各処理要素の稼働時間を記録するステップと;
前記稼働時間を前記実行時間で割ることで前記リソースの使用を決定し、必要なリソースを最適化するステップと;
により決定される、請求項1に記載の方法。 - 実行時間が既定の実行時間以下になるまで処理要素の数を1つ増分することにより、各タスクの実行時間を計算するステップと、使用する前記処理要素の数を記録するステップと、によってタスクの実行に必要な処理要素の最適な数を決定する、請求項1に記載の方法。
- 最短実行時間を達成するよう使用する処理要素の数が、前記タスクの最速な実行を達成するのに必要なリソースの最小数である、請求項17に記載の方法。
- 処理要素の数が一定である場合に必要な実行時間の決定が、処理要素が空くまで前記タスクの一部を遅延させ、依存関係から解放されるタスクの実行時間と数に基づいて実行すべきタスクを選択することを含む、請求項1に記載の方法。
- 一定数の処理要素と無限数の処理要素に対する実行時間の差によって、最大限の最適化に必要な追加のコストを決定できる、請求項1に記載の方法。
- 全ての処理要素の使用をチェックし、その後前記タスクが実行されるよう前記処理要素に割り当てられることにより、前記リソースの数が一定である場合のリソースの最適な使用を決定できる、請求項1に記載の方法。
- コンピュータアプリケーションではないものにも前記方法を適用できる、請求項1に記載の方法。
- 命令を有する記憶媒体を含む製品であって、コンピュータは前記命令を実行すると、請求項1に記載の方法を実行する製品。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN2559MU2008 | 2008-12-08 | ||
IN2559/MUM/2008 | 2008-12-08 | ||
PCT/IN2009/000701 WO2010067377A2 (en) | 2008-12-08 | 2009-12-03 | Method for reorganizing tasks for optimization of resources |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012511204A true JP2012511204A (ja) | 2012-05-17 |
Family
ID=42243141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011539175A Pending JP2012511204A (ja) | 2008-12-08 | 2009-12-03 | リソースを最適化するためのタスク再編成方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8732714B2 (ja) |
EP (1) | EP2356567A2 (ja) |
JP (1) | JP2012511204A (ja) |
WO (1) | WO2010067377A2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101757886B1 (ko) | 2017-01-11 | 2017-07-13 | 엘아이지넥스원 주식회사 | 태스크 분할 할당 시스템 |
KR101757882B1 (ko) | 2017-01-11 | 2017-07-26 | 엘아이지넥스원 주식회사 | 태스크 분할 할당 방법 |
JP2019040344A (ja) * | 2017-08-24 | 2019-03-14 | 富士通株式会社 | 送信制御プログラム、送信制御装置および送信制御方法 |
JP2021517697A (ja) * | 2018-10-11 | 2021-07-26 | 華為技術有限公司Huawei Technologies Co.,Ltd. | リソーススケジューリング方法および端末デバイス |
WO2023153752A1 (ko) * | 2022-02-08 | 2023-08-17 | 삼성전자 주식회사 | 태스크에 메모리 자원을 할당하는 전자 장치 및 전자 장치의 동작 방법 |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8930954B2 (en) * | 2010-08-10 | 2015-01-06 | International Business Machines Corporation | Scheduling parallel data tasks |
KR101710910B1 (ko) * | 2010-09-27 | 2017-03-13 | 삼성전자 주식회사 | 프로세싱 유닛의 동적 자원 할당을 위한 방법 및 장치 |
US9218177B2 (en) * | 2011-03-25 | 2015-12-22 | Microsoft Technology Licensing, Llc | Techniques to optimize upgrade tasks |
US8782645B2 (en) * | 2011-05-11 | 2014-07-15 | Advanced Micro Devices, Inc. | Automatic load balancing for heterogeneous cores |
US8683468B2 (en) * | 2011-05-16 | 2014-03-25 | Advanced Micro Devices, Inc. | Automatic kernel migration for heterogeneous cores |
US8863136B2 (en) * | 2011-05-19 | 2014-10-14 | International Business Machines Corporation | Lock control in multiple processor systems |
US8707316B1 (en) * | 2012-01-05 | 2014-04-22 | The Boeing Company | Methods and systems for mission-driven quality of service management |
KR101885211B1 (ko) * | 2012-01-27 | 2018-08-29 | 삼성전자 주식회사 | Gpu의 자원 할당을 위한 방법 및 장치 |
US20130304738A1 (en) * | 2012-05-11 | 2013-11-14 | International Business Machines Corporation | Managing multimedia information using dynamic semantic tables |
US10474502B2 (en) * | 2013-01-14 | 2019-11-12 | Microsoft Technology Licensing, Llc | Multi-tenant license enforcement across job requests |
US9619298B2 (en) | 2013-04-17 | 2017-04-11 | Empire Technology Development Llc | Scheduling computing tasks for multi-processor systems based on resource requirements |
WO2014171130A1 (ja) * | 2013-04-17 | 2014-10-23 | 日本電気株式会社 | 情報処理システム、配備方法、処理装置、及び、配備装置 |
ITMI20130942A1 (it) | 2013-06-07 | 2014-12-08 | Ibm | Pianificazione dell'esecuzione di attivita' con risoluzione di dipendenze |
US20150058392A1 (en) * | 2013-08-20 | 2015-02-26 | Cellco Partnership D/B/A Verizon Wireless | Provisioning chain queuing and processing |
US9836563B2 (en) | 2013-09-26 | 2017-12-05 | Synopsys, Inc. | Iterative simulation with DFT and non-DFT |
US10489212B2 (en) * | 2013-09-26 | 2019-11-26 | Synopsys, Inc. | Adaptive parallelization for multi-scale simulation |
WO2015048509A1 (en) | 2013-09-26 | 2015-04-02 | Synopsys, Inc. | First principles design automation tool |
US10417373B2 (en) | 2013-09-26 | 2019-09-17 | Synopsys, Inc. | Estimation of effective channel length for FinFETs and nano-wires |
WO2015048437A1 (en) | 2013-09-26 | 2015-04-02 | Synopsys, Inc. | Mapping intermediate material properties to target properties to screen materials |
US10516725B2 (en) | 2013-09-26 | 2019-12-24 | Synopsys, Inc. | Characterizing target material properties based on properties of similar materials |
US9396032B2 (en) * | 2014-03-27 | 2016-07-19 | Intel Corporation | Priority based context preemption |
CN105446801A (zh) * | 2014-06-23 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 分布式系统中的任务处理方法和装置 |
JP6558037B2 (ja) * | 2015-04-10 | 2019-08-14 | 富士通株式会社 | 運用管理プログラム、運用管理方法、および運用管理装置 |
US10078735B2 (en) | 2015-10-30 | 2018-09-18 | Synopsys, Inc. | Atomic structure optimization |
US10734097B2 (en) | 2015-10-30 | 2020-08-04 | Synopsys, Inc. | Atomic structure optimization |
US10706065B2 (en) * | 2016-04-05 | 2020-07-07 | Sap Se | Optimizing transformation of data |
US10540625B2 (en) * | 2016-07-22 | 2020-01-21 | Tata Consultancy Services Limited | Approximate computing for application performance in heterogeneous systems |
US10491524B2 (en) | 2017-11-07 | 2019-11-26 | Advanced Micro Devices, Inc. | Load balancing scheme |
CN109725993A (zh) * | 2018-06-01 | 2019-05-07 | 中国平安人寿保险股份有限公司 | 任务执行方法、装置、设备及计算机可读存储介质 |
DE102018125090A1 (de) * | 2018-10-10 | 2020-04-16 | Beckhoff Automation Gmbh | Verfahren zur Datenverarbeitung und speicherprogrammierbare Steuerung |
US10929186B2 (en) * | 2018-12-12 | 2021-02-23 | Servicenow, Inc. | Control token and hierarchical dynamic control |
US10949211B2 (en) * | 2018-12-20 | 2021-03-16 | Vmware, Inc. | Intelligent scheduling of coprocessor execution |
US11126466B2 (en) * | 2019-02-26 | 2021-09-21 | Sap Se | Server resource balancing using a fixed-sharing strategy |
US11307898B2 (en) | 2019-02-26 | 2022-04-19 | Sap Se | Server resource balancing using a dynamic-sharing strategy |
US10884800B2 (en) | 2019-02-26 | 2021-01-05 | Sap Se | Server resource balancing using a suspend-resume strategy |
US11042402B2 (en) | 2019-02-26 | 2021-06-22 | Sap Se | Intelligent server task balancing based on server capacity |
US10884801B2 (en) | 2019-02-26 | 2021-01-05 | Sap Se | Server resource orchestration based on application priority |
CN112711427A (zh) * | 2019-10-24 | 2021-04-27 | 华为技术有限公司 | 一种镜像文件的获取方法以及装置 |
US11360805B1 (en) | 2020-07-10 | 2022-06-14 | Workday, Inc. | Project discovery for automated compilation, testing, and packaging of applications |
US11481245B1 (en) * | 2020-07-10 | 2022-10-25 | Workday, Inc. | Program inference and execution for automated compilation, testing, and packaging of applications |
CN112395088B (zh) * | 2020-11-17 | 2024-08-27 | 中国平安人寿保险股份有限公司 | 任务调度方法、装置、设备及存储介质 |
WO2022109351A1 (en) * | 2020-11-20 | 2022-05-27 | Okta, Inc. | Server-based workflow management using priorities |
US12112196B2 (en) * | 2021-04-26 | 2024-10-08 | GM Global Technology Operations LLC | Real-time scheduling for a heterogeneous multi-core system |
CN113716495A (zh) * | 2021-09-02 | 2021-11-30 | 衡阳宝坤机械制造有限公司 | 一种智能化仓储叉车控制系统 |
CN113886187A (zh) * | 2021-10-19 | 2022-01-04 | 北京达佳互联信息技术有限公司 | 任务处理前等待时间的确定方法及装置 |
US11934255B2 (en) | 2022-01-04 | 2024-03-19 | Bank Of America Corporation | System and method for improving memory resource allocations in database blocks for executing tasks |
US20230236878A1 (en) * | 2022-01-25 | 2023-07-27 | Nvidia Corporation | Efficiently launching tasks on a processor |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05242051A (ja) * | 1992-02-28 | 1993-09-21 | Nec Corp | タスクスケジューリング方式 |
JP2007048052A (ja) * | 2005-08-10 | 2007-02-22 | Internatl Business Mach Corp <Ibm> | コンパイラ、制御方法、およびコンパイラ・プログラム |
JP2008046669A (ja) * | 2006-08-10 | 2008-02-28 | Hitachi Ltd | 稼動管理プログラム、稼動管理方法、この方法を実行する装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4885686A (en) * | 1987-01-12 | 1989-12-05 | American Telephone And Telegraph At&T Bell Laboratories | Methods and apparatus for efficient resource allocation |
IL93239A (en) * | 1990-02-01 | 1993-03-15 | Technion Res & Dev Foundation | High flow-rate synchronizer/schedular apparatus for multiprocessors |
CA2078315A1 (en) | 1991-09-20 | 1993-03-21 | Christopher L. Reeve | Parallel processing apparatus and method for utilizing tiling |
US5630070A (en) * | 1993-08-16 | 1997-05-13 | International Business Machines Corporation | Optimization of manufacturing resource planning |
US5408663A (en) * | 1993-11-05 | 1995-04-18 | Adrem Technologies, Inc. | Resource allocation methods |
US5838968A (en) * | 1996-03-01 | 1998-11-17 | Chromatic Research, Inc. | System and method for dynamic resource management across tasks in real-time operating systems |
US6675189B2 (en) * | 1998-05-28 | 2004-01-06 | Hewlett-Packard Development Company, L.P. | System for learning and applying integrated task and data parallel strategies in dynamic applications |
US6938256B2 (en) * | 2000-01-18 | 2005-08-30 | Galactic Computing Corporation | System for balance distribution of requests across multiple servers using dynamic metrics |
JP2004054680A (ja) | 2002-07-22 | 2004-02-19 | Fujitsu Ltd | 並列効率計算方法 |
US20040230404A1 (en) * | 2002-08-19 | 2004-11-18 | Messmer Richard Paul | System and method for optimizing simulation of a discrete event process using business system data |
US7178130B2 (en) * | 2003-01-14 | 2007-02-13 | Nvidia Corporation | Digital processing architecture using compiled dataflow definition |
US20050223046A1 (en) * | 2004-04-06 | 2005-10-06 | Smith Rick A | Method and system for balancing and scheduling database maintenance tasks |
GB0427133D0 (en) * | 2004-12-10 | 2005-01-12 | British Telecomm | Workflow scheduler |
US8073724B2 (en) * | 2005-12-02 | 2011-12-06 | Saudi Arabian Oil Company | Systems program product, and methods for organization realignment |
-
2009
- 2009-12-03 WO PCT/IN2009/000701 patent/WO2010067377A2/en active Application Filing
- 2009-12-03 EP EP09831571A patent/EP2356567A2/en not_active Withdrawn
- 2009-12-03 US US13/133,608 patent/US8732714B2/en not_active Expired - Fee Related
- 2009-12-03 JP JP2011539175A patent/JP2012511204A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05242051A (ja) * | 1992-02-28 | 1993-09-21 | Nec Corp | タスクスケジューリング方式 |
JP2007048052A (ja) * | 2005-08-10 | 2007-02-22 | Internatl Business Mach Corp <Ibm> | コンパイラ、制御方法、およびコンパイラ・プログラム |
JP2008046669A (ja) * | 2006-08-10 | 2008-02-28 | Hitachi Ltd | 稼動管理プログラム、稼動管理方法、この方法を実行する装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101757886B1 (ko) | 2017-01-11 | 2017-07-13 | 엘아이지넥스원 주식회사 | 태스크 분할 할당 시스템 |
KR101757882B1 (ko) | 2017-01-11 | 2017-07-26 | 엘아이지넥스원 주식회사 | 태스크 분할 할당 방법 |
JP2019040344A (ja) * | 2017-08-24 | 2019-03-14 | 富士通株式会社 | 送信制御プログラム、送信制御装置および送信制御方法 |
JP2021517697A (ja) * | 2018-10-11 | 2021-07-26 | 華為技術有限公司Huawei Technologies Co.,Ltd. | リソーススケジューリング方法および端末デバイス |
JP7195334B2 (ja) | 2018-10-11 | 2022-12-23 | 華為技術有限公司 | リソーススケジューリング方法および端末デバイス |
US11765754B2 (en) | 2018-10-11 | 2023-09-19 | Huawei Technologies Co., Ltd. | Resource scheduling method and terminal device |
WO2023153752A1 (ko) * | 2022-02-08 | 2023-08-17 | 삼성전자 주식회사 | 태스크에 메모리 자원을 할당하는 전자 장치 및 전자 장치의 동작 방법 |
Also Published As
Publication number | Publication date |
---|---|
US20110246998A1 (en) | 2011-10-06 |
WO2010067377A2 (en) | 2010-06-17 |
US8732714B2 (en) | 2014-05-20 |
WO2010067377A3 (en) | 2010-10-21 |
EP2356567A2 (en) | 2011-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2012511204A (ja) | リソースを最適化するためのタスク再編成方法 | |
US10089142B2 (en) | Dynamic task prioritization for in-memory databases | |
US9417935B2 (en) | Many-core process scheduling to maximize cache usage | |
US8959525B2 (en) | Systems and methods for affinity driven distributed scheduling of parallel computations | |
Dong et al. | Analysis techniques for supporting hard real-time sporadic gang task systems | |
US8458136B2 (en) | Scheduling highly parallel jobs having global interdependencies | |
Zhou et al. | Task mapping in heterogeneous embedded systems for fast completion time | |
Wang et al. | Global fixed priority scheduling with preemption threshold: Schedulability analysis and stack size minimization | |
US20230123634A1 (en) | Dynamic, low-latency, dependency-aware scheduling on simd-like devices for processing of recurring and non-recurring executions of time-series data | |
Muller et al. | Fairness in responsive parallelism | |
Ueter et al. | Response-time analysis and optimization for probabilistic conditional parallel DAG tasks | |
Gharajeh et al. | Heuristic-based task-to-thread mapping in multi-core processors | |
EP2840513B1 (en) | Dynamic task prioritization for in-memory databases | |
Wang et al. | DDS: A deadlock detection-based scheduling algorithm for workflow computations in HPC systems with storage constraints | |
CN113220444A (zh) | Os优化的工作流分配 | |
Schmid et al. | Fine-grained parallelism framework with predictable work-stealing for real-time multiprocessor systems | |
Tsog et al. | Static allocation of parallel tasks to improve schedulability in cpu-gpu heterogeneous real-time systems | |
Ras et al. | An evaluation of the dynamic and static multiprocessor priority ceiling protocol and the multiprocessor stack resource policy in an SMP system | |
Manolache et al. | Optimization of soft real-time systems with deadline miss ratio constraints | |
Wang et al. | Maximizing active storage resources with deadlock avoidance in workflow-based computations | |
Chen et al. | Speculative slot reservation: Enforcing service isolation for dependent data-parallel computations | |
Sudvarg et al. | Analysis of federated scheduling for integer-valued workloads | |
Andrei et al. | An improved upper-bound algorithm for non-preemptive task scheduling | |
Kumar et al. | Global analysis of resource arbitration for MPSoC | |
Okamura et al. | DAG scheduling considering parallel execution for high-load processing on clustered many-core processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120731 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140415 |