JP5464146B2 - スケジュール決定装置 - Google Patents

スケジュール決定装置 Download PDF

Info

Publication number
JP5464146B2
JP5464146B2 JP2010537726A JP2010537726A JP5464146B2 JP 5464146 B2 JP5464146 B2 JP 5464146B2 JP 2010537726 A JP2010537726 A JP 2010537726A JP 2010537726 A JP2010537726 A JP 2010537726A JP 5464146 B2 JP5464146 B2 JP 5464146B2
Authority
JP
Japan
Prior art keywords
task
candidate
candidates
schedule
execution
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.)
Active
Application number
JP2010537726A
Other languages
English (en)
Other versions
JPWO2010055719A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2010537726A priority Critical patent/JP5464146B2/ja
Publication of JPWO2010055719A1 publication Critical patent/JPWO2010055719A1/ja
Application granted granted Critical
Publication of JP5464146B2 publication Critical patent/JP5464146B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/506Constraint

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)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、複数のタスクを並列して実行するためのスケジューリングを行う技術に関する。
近年では、デジタル機器の高性能化および低消費電力化の要求が高まっている。これらの要求を解決する手段として、組み込みLSI(Large Scale Integration)に複数のプロセッサを搭載し、マルチコア構成とする方法が注目を集めている。
このようなマルチコア構成の機器を効率的に利用するには、アプリケーションを並列に実行するために並列プログラミングを行う必要があるが、一般的に並列プログラミングは、従来のシングルコア用のプログラミングよりも考慮すべき点が多く、難易度が高い。
並列プログラミングを容易にするため、特許文献1に記載のマルチプロセッサシステムでは、コンパイラが、入力プログラムから並列性を持つサブタスクを抽出し、各プロセッサユニットの特性に合わせてサブタスクを配置することで、効率的なスケジューリングを行っている。
また、リアルタイムシステムにおいては、並列に実行されるアプリケーションがタスクの実行周期が経過するまでに、そのタスクが完了しない事態(デッドラインミス)とならないように、スケジューリングを行う必要がある。
このデッドラインミスを防止するため、特許文献2に記載のスケジューリング判定方法は、所定の判定式を使用することで、デッドラインミスを起こすことなく、マルチコア用のスケジュールを実行できるかどうかを判定している。
特許4082706号 特許4016010号
しかし、特許文献1に記載のスケジューリングで最適のものとして求めた並列実行形式は、複数のタスクが異なる周期で独立に起動するシステムでは、必ずしも最適のスケジューリングにならないという問題があった。
各タスクの実行周期が異なる場合、それぞれのタスクが必要に応じてプロセッサ(コア)を利用するため、あるタスクの影響により、他のタスクの実行が待たされる場合がある。
特に、複数コアを使用してタスクを並列に実行するようなスケジューリングがなされると、ある1つのコアが他のタスクを実行しているだけで、並列に実行すべきタスク(並列実行タスク)が待たされて、装置全体が、その並列実行タスクを全く実行できない状態が発生しうる。
このため、全てのタスクの影響を考慮すると、特許文献1に記載の自動並列化コンパイラによっても、スケジュールを最適化できないことがある。
特許文献2に記載の方法では、作成したスケジュールにおいてデッドラインミスが生じるか否か、つまり、そのスケジュールが複数のコアで並列実行できるか否かを判断できるが、並列実行できるスケジュールのうち、いずれがタスクの実行に最適であるかについては判断できないという問題があった。
本発明は、マルチコアで、複数のタスクを並列実行するスケジュールを最適化する技術を提供することを目的とする。
上記目的を達成するために、本発明のスケジュール決定装置は、第1のタスクが分割された複数のサブタスクが満たすべき実行順序の依存関係を取得する依存関係取得手段と、前記依存関係取得手段により取得された前記依存関係を満たし、かつ、前記複数のサブタスクを複数の処理装置で実行する複数のサブタスク構成候補を作成する候補作成手段と、前記候補作成手段により作成された前記サブタスク構成候補のそれぞれに、更に少なくとも1つの第2のタスクを配置することにより、複数のスケジュール候補を作成するスケジューリング手段と、前記スケジューリング手段により作成された前記複数のスケジュール候補のそれぞれについて、前記第1のタスク及び前記第2のタスクの実行に対する有効性を示す有効度を算出する有効度算出手段と、前記有効度算出手段により算出された前記有効度に基づいて、前記複数のスケジュール候補の中から、前記第1のタスク及び前記第2のタスクの実行に用いるスケジュール候補を決定する候補決定手段と、を有する。
本発明の並列実行装置は、第1のタスクが分割された複数のサブタスクが満たすべき実行順序の依存関係を取得する依存関係取得手段と、前記依存関係取得手段により取得された前記依存関係を満たし、かつ、前記複数のサブタスクを複数の処理装置で実行する複数のサブタスク構成候補を作成する候補作成手段と、前記候補作成手段により作成された前記サブタスク構成候補のそれぞれに、更に少なくとも1つの第2のタスクを配置することにより、複数のスケジュール候補を作成するスケジューリング手段と、前記スケジューリング手段により作成された前記複数のスケジュール候補のそれぞれについて、前記第1のタスク及び前記第2のタスクの実行に対する有効性を示す有効度を算出する有効度算出手段と、前記有効度算出手段により算出された前記有効度に基づいて、前記複数のスケジュール候補の中から、前記第1のタスク及び前記第2のタスクの実行に用いるスケジュール候補を決定する候補決定手段と、前記候補決定手段により決定された前記スケジュール候補を使用して前記第1のタスク及び前記第2のタスクを実行する並列実行手段と、を有する。
本発明のスケジュール決定方法は、第1のタスクが分割された複数のサブタスクが満たすべき実行順序の依存関係を取得し、前記依存関係を満たし、かつ、前記複数のサブタスクを複数の処理装置で実行する複数のサブタスク構成候補を作成し、前記サブタスク構成候補のそれぞれに、更に少なくとも1つの第2のタスクを配置することにより、複数のスケジュール候補を作成し、前記複数のスケジュール候補のそれぞれについて、前記第1のタスク及び前記第2のタスクの実行に対する有効性を示す有効度を算出し、前記有効度に基づいて、前記複数のスケジュール候補の中から、前記第1のタスク及び前記第2のタスクの実行に用いるスケジュール候補を決定する。
本発明の第1の観点にかかるプログラムは、コンピュータに、第1のタスクが分割された複数のサブタスクが満たすべき実行順序の依存関係を取得する依存関係取得手順、前記依存関係取得手順で取得された前記依存関係を満たし、かつ、前記複数のサブタスクを複数の処理装置で実行する複数のサブタスク構成候補を作成する候補作成手順、前記候補作成手順で作成された前記サブタスク構成候補のそれぞれに、更に少なくとも1つの第2のタスクを配置することにより、複数のスケジュール候補を作成するスケジューリング手順、前記スケジューリング手順で作成された前記複数のスケジュール候補のそれぞれについて、前記第1のタスク及び前記第2のタスクの実行に対する有効性を示す有効度を算出する有効度算出手順、及び前記有効度算出手順で算出された前記有効度に基づいて、前記複数のスケジュール候補の中から、前記第1のタスク及び前記第2のタスクの実行に用いるスケジュール候補を決定する候補決定手順、を実行させるためのプログラムである。
本発明の第2の観点にかかるプログラムは、コンピュータに、第1のタスクが分割された複数のサブタスクが満たすべき実行順序の依存関係を取得する依存関係取得手順、前記依存関係取得手順で取得された前記依存関係を満たし、かつ、前記複数のサブタスクを複数の処理装置で実行する複数のサブタスク構成候補を作成する候補作成手順、前記候補作成手順で作成された前記サブタスク構成候補のそれぞれに、更に少なくとも1つの第2のタスクを配置することにより、複数のスケジュール候補を作成するスケジューリング手順、前記スケジューリング手順で作成された前記複数のスケジュール候補のそれぞれについて、前記第1のタスク及び前記第2のタスクの実行に対する有効性を示す有効度を算出する有効度算出手順、前記有効度算出手順で算出された前記有効度に基づいて、前記複数のスケジュール候補の中から、前記第1のタスク及び前記第2のタスクの実行に用いるスケジュール候補を決定する候補決定手順、及び前記候補決定手順で決定された前記スケジュール候補を使用して前記第1のタスク及び前記第2のタスクを実行する並列実行手順、を実行させるためのプログラムである。
本発明によれば、スケジュール決定装置は、第1のタスクから分割されたサブタスクを、依存関係を満たすように複数のコアに配置して複数のサブタスク構成候補を作成し、候補ごとに、第2のタスクを配置した場合におけるスケジューリング候補を作成し、各スケジューリング候補の有効度に基づいてスケジュールを決定する。スケジューリング決定装置は、サブタスクを配置した後に、その合間に第2のタスクを配置するので、並列に実行する第1のタスクが待たされて、スケジュール全体が実行不能となることが少なくなる。また、スケジュール決定装置は、スケジューリング候補ごとに有効度を算出するので、有効度に基づいて最適のスケジューリング候補を求めることにより、スケジュールを最適化できる。
本発明の第1の実施形態のスケジュール決定装置の構成を示すブロック図である。 本発明の第1の実施形態の依存関係取得部の構成を示すブロック図である。 (a)本発明の第1の実施形態の並列実行タスクの形状を示す図である。(b)本発明の第1の実施形態のシングル実行タスクの形状を示す図である。(c)本発明の第1の実施形態のサブタスクの形状を示す図である。(d)本発明の第1の実施形態のサブタスクの依存関係を示す図である。 本発明の第1の実施形態の候補作成部の構成を示すブロック図である。 (a)本発明の第1の実施形態のタスク構成候補の形状を示す図である。(b)本発明の第1の実施形態のタスク構成候補の形状を示す図である。(c)本発明の第1の実施形態のタスク構成候補の形状を示す図である。 (a)本発明の第1の実施形態の代表化されたタスク構成候補の形状を示す図である。(b)本発明の第1の実施形態の代表化されたタスク構成候補の形状を示す図である。(c)本発明の第1の実施形態の代表化されたタスク構成候補の形状を示す図である。 本発明の第1の実施形態のタスク構成候補の実行時間およびオフセットを示すテーブルである。 (a)本発明の第1の実施形態のスケジューリングの結果を示す図である。(b)本発明の第1の実施形態のスケジューリングの結果を示す図である。(c)本発明の第1の実施形態のスケジューリングの結果を示す図である。(d)本発明の第1の実施形態のスケジューリングの結果を示す図である。(e)本発明の第1の実施形態のスケジューリングの結果を示す図である。(f)本発明の第1の実施形態のスケジューリングの結果を示す図である。(g)本発明の第1の実施形態のスケジューリングの結果を示す図である。(h)本発明の第1の実施形態のスケジューリングの結果を示す図である。(i)本発明の第1の実施形態のスケジューリングの結果を示す図である。 本発明の第1の実施形態の有効度スコアの算出結果を示すテーブルである。 本発明の第1の実施形態の候補決定部の構成を示すブロック図である。 本発明の第1の実施形態のスケジュール決定装置の動作を示すフローチャートである。 本発明の第1の実施形態の依存関係作成処理を示すフローチャートである。 本発明の第1の実施形態の候補作成処理を示すフローチャートである。 本発明の第1の実施形態の候補決定処理を示すフローチャートである。 本発明の第2の実施形態の候補作成処理を示すフローチャートである。 (a)本発明の第2の実施形態の並列実行タスクの形状を示す図である。(b)本発明の第2の実施形態のサブタスクの形状を示す図である。(c)本発明の第2の実施形態のサブタスクの依存関係を示す図である。 (a)本発明の第2の実施形態のタスク構成候補の形状を示す図である。(b)本発明の第2の実施形態のタスク構成候補の形状を示す図である。(c)本発明の第2の実施形態のタスク構成候補の形状を示す図である。(d)本発明の第2の実施形態のタスク構成候補の形状を示す図である。(e)本発明の第2の実施形態のタスク構成候補の形状を示す図である。(f)本発明の第2の実施形態のタスク構成候補の形状を示す図である。(g)本発明の第2の実施形態のタスク構成候補の形状を示す図である。(h)本発明の第2の実施形態のタスク構成候補の形状を示す図である。 (a)本発明の第2の実施形態のタスク構成候補の形状を示す図である。(b)本発明の第2の実施形態のタスク構成候補の形状を示す図である。(c)本発明の第2の実施形態のタスク構成候補の形状を示す図である。(d)本発明の第2の実施形態のタスク構成候補の形状を示す図である。(e)本発明の第2の実施形態のタスク構成候補の形状を示す図である。(f)本発明の第2の実施形態のタスク構成候補の形状を示す図である。(g)本発明の第2の実施形態のタスク構成候補の形状を示す図である。(h)本発明の第2の実施形態のタスク構成候補の形状を示す図である。 本発明の第2の実施形態のスケジューリングの結果を示す図である。 (a)本発明の第2の実施形態のタスク構成候補の形状を示す図である。(b)本発明の第2の実施形態のタスク構成候補の形状を示す図である。 本発明の第3の実施形態の候補作成部の構成を示すブロック図である。 (a)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(b)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(c)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(d)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(e)本発明の第3の実施形態のタスク構成候補の形状を示す図である。 本発明の第3の実施形態の候補作成処理を示すフローチャートである。 本発明の第3の実施形態のスケジュール決定装置の動作を示すフローチャートである。 本発明の第3の実施形態の候補の分類結果を示すテーブルである。 本発明の第3の実施形態の候補の分類結果を示すテーブルである。 本発明の第3の実施形態の候補の分類結果を示すテーブルである。 (a)本発明の第3の実施形態の並列実行タスクの形状を示す図である。(b)本発明の第3の実施形態のサブタスクの形状を示す図である。(c)本発明の第3の実施形態のサブタスクの依存関係を示す図である。 (a)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(b)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(c)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(d)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(e)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(f)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(g)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(h)本発明の第3の実施形態のタスク構成候補の形状を示す図である。 (a)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(b)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(c)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(d)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(e)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(f)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(g)本発明の第3の実施形態のタスク構成候補の形状を示す図である。(h)本発明の第3の実施形態のタスク構成候補の形状を示す図である。 本発明の第3の実施形態のスケジューリングの結果を示す図である。 本発明の第3の実施形態の候補の分類結果を示すテーブルである。 本発明の第3の実施形態の候補の分類結果を示すテーブルである。 本発明の第4の実施形態の並列実行装置の構成を示すブロック図である。
(第1の実施形態)
本発明を実施するための第1の形態について図面を参照して詳細に説明する。
図1は、本実施形態のスケジュール決定装置1の構成を示すブロック図である。スケジュール決定装置1は、周期の異なる複数のタスクをマルチコアで並列実行する、最適のスケジュールを求める装置である。同図を参照すると、スケジュール決定装置1は、依存関係取得部11、候補作成部13、スケジューリング実行部15、有効度スコア算出部17、および候補決定部19を有する。
依存関係取得部11は、所定の実行周期(第1の周期)のタスク(第1のタスク)を複数のサブタスクに分割し、これらのサブタスク間の実行順序の依存関係を求める。または、予め第1の周期のタスクを複数のサブタスクに分割したものを入力しサブタスク間の実行順序の依存関係を求めても良い。
候補作成部13は、依存関係を満たすように、サブタスクを、複数のコアで並列実行するスケジュールの候補(スケジューリング候補)を、複数個作成する。
スケジューリング実行部15は、候補ごとに、サブタスクの合間に、分割したタスク(第1のタスク)と別のタスク(第2のタスク)を仮想的に実行する。
有効度スコア算出部17は、実行した結果から、候補ごとに、その候補のタスク実行のスケジュールとしての有効性を示す有効度スコアを算出する。有効度スコアの算出方法については、後述する。
候補決定部19は、有効度スコアが最も高い候補を最適の候補に決定する。
図2は、依存関係取得部11の構成を示すブロック図である。同図を参照すると、依存関係取得部11は、タスク分割部111および依存グラフ作成部113を有する。
図3(a)、(b)、(c)、および(d)は、タスク分割および依存関係について説明するための図である。スケジュール決定装置1は、複数の異なるタスクを、スケジューリングの対象とする。例えば、本実施形態では、図3(a)に示す、80ミリ秒の周期で実行するTask0と、図3(b)に示す、200ミリ秒の周期で実行するTask1とについてスケジューリングを行う。また、同図(a)、(b)におけるバーの長さは、各タスクの最大実行時間を示しており、例えば、Task0、Task1の最大実行時間は、ともに80ミリ秒である。
タスク分割部111は、スケジューリング対象のタスクのうち、複数のコアで並列実行するタスク(以下「並列実行タスク」という)について、そのタスクを分割できる時点(分割点)を探索する。分割点の決定においては、タスク分割部111は、サブタスクに分割しても並列に実行できない性質のものについては一般には分割しないが、サブタスク間のデータの受け渡し量が少ないなど、依存が弱いものについては、分割する。但し、分割したタスク(以下、「サブタスク」という)ごとの最大実行時間などの時間情報を用いて最適化を行うので、タスクを構成するプログラムの分割は要しない。
ここで、タスク(サブタスク)ごとの最大実行時間は、特許文献1のp113〜115に記載の方法を使用するなどして求められる。
そして、タスク分割部111は、その分割点で並列実行タスクを複数のサブタスクに分割する。1つのコアで実行するタスク(以下「シングル実行タスク」という)については、タスク分割部111は分割しない。例えば、本実施形態では、Task0が並列実行タスクであり、Task1はシングル実行タスクである。このため、タスク分割部111は、Task0のみをサブタスクに分割する。
図3(c)は、タスク分割部111が分割した並列実行タスクを示す図である。例えば、Task0は、最大実行時間が20ミリ秒のTask0[0]と、最大実行時間が35ミリ秒のTask0[1]と、最大実行時間が25ミリ秒のTask0[2]とに分割される。
依存グラフ作成部113は、サブタスク間の実行順序の依存関係を求める。図3(d)は、依存グラフ作成部113により求められた依存関係を、図示したもの(依存グラフ)である。一般に単一のタスクを複数のサブタスクに分割した場合、それらのサブタスク間には実行順序に関する依存関係が生じる場合がある。例えば、本実施形態では、Task0[0]で計算した結果を、Task0[2]で参照するので、装置は、Task0[0]をTask0[2]より先に実行する必要がある。
図4は、候補作成部13の構成を示すブロック図である。同図を参照すると、候補作成部13は、タスク構成候補作成部131および代表化部133を有する。タスク候補作成部131は、依存関係を満たすように、全てのサブタスクを複数のコアで並列実行するスケジュールの候補(以下「タスク構成候補」という)を作成する。
例えば、本実施形態では、タスク構成候補作成部131は、2つのコア0、コア1で、Task0[0]がTask0[2]より先に実行されるように、Task0[0]、Task0[1]、およびTask0[2]を実行するスケジュール(タスク構成候補)を作成する。
図5(a)、(b)、および(c)は、作成されたタスク構成候補の一例である。同図(a)に示すタスク構成候補a1は、コア0で、Task0[1]、Task0[2]の順でサブタスクを実行し、コア1でTask0[0]を実行するスケジュールである。同図(b)に示すタスク構成候補a2は、コア0で、Task0[0]、Task0[1]の順でサブタスクを実行し、Task0[0]の実行後、コア1でTask0[2]を実行するスケジュールである。同図(c)に示すタスク構成候補a3は、コア0で、Task0[0]、Task0[2]の順でサブタスクを実行し、コア1でTask0[1]を実行するスケジュールである。
代表化部133は、図6(a)、(b)、および(c)に示すように、各タスク構成候補について代表化を行う。同図(a)、(b)、および(c)は、サブタスク構成候補a1、a2、およびa3を、代表化した候補の構成を示す図である。代表化とは、タスク構成候補について、これ以降の処理において不要となるサブタスクの構成を隠蔽することである。
具体的には、代表化部133は、図7に示すように、タスク構成候補ごとに、各コアの「実行時間」(代表値)およびオフセット(代表値)を記載したテーブルを作成する。「実行時間」は、コアごとの、サブタスクの処理に要する時間の最大値(最大実行時間)である。オフセットは、あるコアでサブタスクの実行が開始されたときから、他のコアでサブタスクの実行が開始されるまでの時間である。
例えば、タスク構成候補a1では、コア0において、Task0[1]、Task0[2]の順でサブタスクが実行され、コア0でTask0[1]が開始されたときと同時にTask0[0]が開始される。Task0[0]、Task0[1]、およびTask0[2]の最大実行時間は、それぞれ20ミリ秒、35ミリ秒、25ミリ秒なので、コア0の「実行時間」は、60ミリ秒、コア1の「実行時間」は20ミリ秒、オフセットは0ミリ秒となる。
タスク構成候補a2では、コア0において、Task0[0]、Task0[1]の順でサブタスクが実行され、コア0でTask0[0]が開始されたときから30ミリ秒後にTask0[2]が開始される。この場合、コア0の最大実行時間は、55ミリ秒、コア1の「実行時間」は25ミリ秒、オフセットは30ミリ秒となる。また、タスク構成候補a3では、コア0の「実行時間」は、45ミリ秒、コア1の「実行時間」は35ミリ秒、オフセットは0ミリ秒となる。
スケジューリング実行部15は、タスク構成候補ごとに、サブタスクと、シングル実行タスクとを、自動最適化システム上などで仮想的に実行し、それぞれのスケジューリング結果をスケジュール候補とする。スケジューリング実行部15は、実行周期の異なるタスクについては、それぞれの実行周期の最小公倍数の時間だけスケジュールを実行する。最小公倍数の時間より長い時間のスケジューリングを行っても、一般に最小公倍数以内の期間におけるスケジュールが繰り返されることになり、無駄が多い。また、最小公倍数の時間の時間だけ仮想的にスケジューリングを行うことにより、スケジュール決定装置1は、発生しうるスケジューリングの影響全てを網羅することができる。
例えば、本実施形態では、Task0の実行周期が80ミリ秒、Task1の実行周期が200ミリ秒であるから、少なくとも、それらの最小公倍数である400ミリ秒間のスケジュールを作成する。
図8(a)〜(j)は、仮想的に実行されたスケジューリング結果を示す図である。これらの図において、横軸方向のバーの長さがタスク(サブタスク)の実行時間を表わしている。
図8(a)は、タスク構成候補a1における、サブタスクの実行スケジュールを示す図である。コア0の実行時間は60ミリ秒(斜線部)、コア1の実行時間は20ミリ秒(斜線部)、オフセットは0ミリ秒であり、このスケジュールが80ミリ秒ごとに実行される。
図8(b)は、タスク構成候補a1実行時の、シングル実行タスク(Task1)の実行スケジュールを示す図である。同図(b)に示すように、サブタスクの合間のコア1が空いている期間に、そのコアでシングル実行タスクが実行される。
図8(c)は、タスク構成候補a1についての、サブタスクおよびシングル実行タスクのスケジュール結果を示す図である。
図8(d)は、タスク構成候補a2における、サブタスクの実行スケジュールを示す図である。同図(e)は、タスク構成候補a2実行時の、シングル実行タスク(Task1)の実行スケジュールを示す図である。同図(f)は、タスク構成候補a2についての、サブタスクおよびシングル実行タスクのスケジュール結果を示す図である。
図8(g)は、タスク構成候補a3における、サブタスクの実行スケジュールを示す図である。同図(h)は、タスク構成候補a3実行時の、シングル実行タスク(Task1)の実行スケジュールを示す図である。同図(i)は、タスク構成候補a3についての、サブタスクおよびシングル実行タスクのスケジュール結果を示す図である。
有効度スコア算出部17は、スケジューリング候補ごとに有効度スコアを算出する。有効度スコアは、開発対象のシステム要件に対して、そのスケジュール(スケジューリング候補)が適合している度合を示す値であり、例えば、下記(1)式により算出される。
(タスク構成候補の有効度スコア)=k1×(Task0の有効度スコア)+k2×(Task1の有効度スコア)・・・(1)
上記(1)において、k1、k2は、重みづけのための係数である。この(1)式における各タスクの有効度スコアは、下記(2)式により算出される。
(各タスクの有効度スコア)=k3×(余裕度平均)+k4×(中断時間平均)/(実行周期)+k5×(ジッタ平均)/(実行周期)・・・(2)
上記(2)式において、k3、k4、およびk5は、重みづけのための係数である。「余裕度平均」は、例えば、下記(3)式により各実行周期について算出された余裕度の平均値である。「中断時間平均」は、各実行周期においてタスクが中断した時間の平均値である。「ジッタ平均」は、各実行周期において、周期の開始時間から、タスクが開始されるまでの遅延時間の平均値である。
(余裕度)={(実行周期)―(タスク完了時間)}/(実行周期)・・・(3)
上記(3)式において、「タスク完了時間」は、周期の開始時期からタスクの全ての処理が完了する時期までの時間である。並列実行タスク(Task0)については、全てのサブタスクが完了する時期までの時間である。
図9に各タスク構成候補について算出された、余裕度平均、中断時間平均、ジッタ平均、および有効度スコアを示す。有効度スコアは、全ての重みづけ係数(k1〜k5)を1としたときの値である。同図を参照すると、タスク構成候補a1、a2、およびa3の有効度スコアとして「0.75」、「0.92」、および「1.05」が算出されている。
図10は、候補決定部19の構成を示すブロック図である。同図を参照すると、候補決定部19は、有効度スコア比較部191および保持部193を有する。有効度スコア比較部191は、各タスク構成候補の有効度スコアを比較する。保持部193は9、最も高い有効度スコアのタスク構成候補を保持する。スケジュール決定装置1は、保持部193に保持されたタスク構成候補を最適の候補として出力する。
図11〜図15を参照して、スケジュール決定装置の動作について説明する。図11は、スケジュール決定装置1の動作を示すフローチャートである。同図を参照すると、依存関係取得部11が、依存関係取得処理を実行し(ステップS1)、候補作成部13が、候補作成処理を実行する(ステップS3)。そして、スケジューリング実行部15が、代表化されたタスク構成候補ごとに、スケジューリングを実行する(ステップS4)。有効度スコア算出部17は、スケジュール候補ごとに、有効度スコアを算出する(ステップS5)。候補決定部19は候補決定処理を実行する(ステップS9)。ステップS9の後、スケジュール決定装置1は動作を終了する。
図12は、依存関係取得処理を示すフローチャートである。同図を参照すると、依存関係取得部11は、並列実行タスクを複数のサブタスクに分割し(ステップS11)、依存グラフを作成することにより、サブタスク間の依存関係を求める(ステップS13)。ステップS13の後、依存関係取得部11は、依存関係取得処理を終了する。
図13は、候補作成処理を示すフローチャートである。同図を参照すると、候補作成部13は、依存関係を満たすように、タスク構成候補を作成し(ステップS31)、作成したタスク構成候補について代表化を行う(ステップS35)。ステップS35の後、候補作成部13は、候補作成処理を終了する。
図14は、候補決定処理を示すフローチャートである。同図を参照すると、候補決定部19は、いずれかのタスク構成候補を選択し、その候補が1回目に選択した候補であるか否かを判断する(ステップS91)。
1回目に選択した候補でなければ(ステップS91:NO)、候補決定部19は、選択した候補について、これまでの候補より高い有効度スコアが算出された候補であるか否かを判断する(ステップS93)。
これまでの候補より高い有効度スコアが算出された候補である場合(ステップS93:YES)、または1回目に選択した候補である場合(ステップS91:YES)、候補決定部19は、そのタスク構成候補のスケジュール構成と、算出された有効度スコアとを保持する(ステップS95)。
これまでの候補より高い有効度スコアが算出された候補でない場合(ステップS93:NO)、またはステップS95の後、候補決定部19は、全ての候補を選択して、有効度スコアを比較したか否かを判断する(ステップS97)。全ての候補について比較していなければ(ステップS97:NO)、候補決定部19は、ステップS91に戻る。全ての候補について比較したならば(ステップS97:YES)、候補決定部19は、候補決定処理を終了する。
なお、本実施形態では、スケジュール決定装置1は、1つの並列実行タスク(Task0)と、1つのシングル実行タスク(Task1)とを、スケジューリングの対象としているが、シングル実行タスクを含まない複数の並列実行タスクをスケジューリングの対象としてもよい。また、スケジュール決定装置1は、1つの並列実行タスクと複数のシングル実行タスクとをスケジューリングの対象とすることもできるし、複数の並列実行タスクと、1以上のシングル実行タスクとをスケジューリングの対象とすることもできる。
本実施形態では、スケジューリング決定装置1は、実行周期の異なるタスクをスケジューリングの対象としているが、実行周期が同一の複数のタスクについてスケジューリングを行ってもよい。
ここで、複数の並列実行タスクについて、スケジューリング候補を求める場合、あるタスクのサブタスクについての形状が同じであっても、他のタスクのサブタスクについての形状が異なるときは、別の候補とする。例えば、あるタスクのサブタスクの形状がA、Bで、別のタスクのサブタスクの形状がa、bである場合、スケジュール決定装置1は、Aおよびaの組み合わせと、Aおよびbの組み合わせとは別の候補として扱う。
また、本実施形態では、スケジュール決定装置1は、2つのコアで、タスクを並列実行するスケジュールを作成しているが、3つ以上のコアで並列実行するスケジュールを作成してもよいのは勿論である。
本実施形態では、並列実行タスクの分割をスケジュール決定装置自身が行う構成としているが、タスク分割は他の装置が行い、スケジュール決定装置1は、既に分割されたサブタスクをその装置から取得する構成としてもよい。
本実施形態では、スケジュール決定装置1は、図7に示したように、スケジューリングの結果を示すテーブルを作成しているが、タスク構成候補ごとの、各コアでのサブタスクの実行期間を示す情報が含まれるのであれば、テーブル以外の形式で、スケジューリングの結果を出力してもよい。
本実施形態では、テーブルにおいて、各コアの実行時間およびオフセットを記載しているが、それぞれのコアでのサブタスクの実行開始時間(代表値)と、実行終了時間(代表値)とを記載してもよい。
本実施形態では、スケジュール決定装置1は、上記(1)式、(2)式、および(3)式を使用して、有効度スコアを算出しているが、余裕度、中断時間、およびジッタのうち、少なくとも1以上の値に基づいて有効度スコアを算出できるのであれば、他の式を使用してもよい。
本実施形態では、スケジュール決定装置1は、有効度スコアが最大の候補を最適の候補に決定しているが、有効度スコアが所定の閾値以上を最適の候補とするなど、他の方法で、最適の候補を決定してもよい。
以上説明したように、本実施形態によれば、スケジュール決定装置1は、並列実行タスク(第1のタスク)から分割されたサブタスクを、依存関係を満たすように、複数のコア(処理装置)に配置して複数のタスク構成候補(サブタスク構成候補)を作成し、候補ごとに、シングル実行タスク(第2のタスク)を配置した場合におけるスケジューリング候補を作成し、各スケジューリング候補の有効度に基づいてスケジュールを決定する。サブタスクを配置した後に、その合間に第2のタスクを配置するので、第2のタスクにより並列に実行する第1のタスクが待たされて、スケジュール全体が実行不能となることが少なくなる。また、スケジュール決定装置は、スケジューリング候補ごとに有効度を算出するので、有効度に基づいて最適のスケジューリング候補を求めることにより、スケジュールを最適化できる。
候補作成部13は、コア(処理装置)ごとに、それぞれのサブタスクを実行する期間を定めたテーブルを前記候補として作成するので、作成したスケジュールを出力するとき、スケジュール構成を2次元形状にするなど、可視化しやすい。
スケジューリング実行部15は、各タスクの実行周期(第1の周期および第2の周期)の最小公倍数の期間だけスケジューリングするので、発生しうる、そのスケジューリングの影響全てを網羅することができ、スケジューリング処理に無駄がなくなる。
スケジュール決定装置1は、余裕度に基づいて有効度スコアを算出するので、デッドラインまでに余裕のあるスケジュールを作成できる。
スケジュール決定装置1は、タスクの中断時間に基づいて有効度スコアを算出するので、タスクがなるべく中断しないようにスケジュールを作成できる。
スケジュール決定装置1は、ジッタ(遅延時間)に基づいて有効度スコアを算出するので、遅延が少ないスケジュールを作成できる。
スケジュール決定装置1は、有効度スコアが最大の候補を最適の候補とするので、簡易な方法で1つの候補に決定できる。
(第2の実施形態)
本実施形態の第2の実施形態について、図15〜図20を参照して説明する。本実施形態のスケジュール決定装置は、候補作成処理をより効率的に行う以外は、第1の実施形態のスケジュール決定装置の構成と同様である。
図15は、本実施形態の候補作成処理を示すフローチャートである。同図を参照すると、候補作成部13は、タスク構成候補を作成した後(ステップS31)、シングルコアで実行するときの最大実行時間以上の最大実行時間となる候補を除外(破棄)する(ステップS32)。本実施形態では、タスクの最大実行時間をシングルコアで実行する場合よりも短くする目的で、並列化を行うためである。
そして、候補作成部13は、並列実行タスクが中断する候補を破棄する(ステップS33)。本実施形態では、サブタスク間の依存関係の制約で、並列実行タスク(Task0)中断中に、他のタスク(Task1)を実行することが困難であるためである。
候補作成部13は、コアを入れ替えると同じ構成となる候補も破棄する(ステップS34)。本実施形態では、コア0とコア1が同じ種類の処理装置であるからである。ステップS34の後は、スケジュール決定装置1はステップS35を実行する。
次に、図16〜図20を参照して、本実施形態のスケジュール決定装置1の動作例について説明する。図16(a)に示すように、最大実行時間が101マイクロ秒のTask2をスケジューリングの対象とする場合について考える。
図16(b)に示すように、スケジュール決定装置1は、このTask2を、20マイクロ秒、41マイクロ秒、22マイクロ秒、7マイクロ秒、および11マイクロ秒の複数のサブタスク(Task2[0]、Task2[1]、Task2[3]、およびTask2[4])に分割する。
スケジュール決定装置1は、図16(c)に示すように、サブタスク間の依存関係を求める。本実施形態では、Task2[0]の次に、Task2[1]、Task2[2]、およびTask2[3]を実行し、Task2[3]の次に、Task2[4]を実行する必要がある。
スケジュール決定装置1は、図17(a)〜(h)および図18(a)〜(h)に示すように、依存関係を満たしたタスク構成候補11〜26を作成する。そして、スケジュール決定装置1は、図19に示すように、スケジューリングの結果を示すテーブルを作成する。
図17(e)に示す候補15では、コア0でTask2[0]、Task2[1]、Task2[2]、Task2[3]の順でサブタスクが実行され、Task2[3]が完了したとき、コア1でTask2[4]が開始される。この結果、並列実行した場合のTask2の最大実行時間(101マイクロ秒)が、シングルコアで実行した場合の最大実行時間(101マイクロ秒)と変わらないので、スケジュール決定装置1は、この候補15を破棄する(ステップS32)。同様の理由で図18(h)に示す候補26も破棄される。
図17(g)に示す候補17では、コア0でTask2[0]が完了したとき、コア0でTask2[2]が、コア1でTask2[1]およびTask2[3]が開始される。そして、Task2[3]が完了したとき、コア0でTask2[4]が開始される。Task2[2]の最大実行時間(22マイクロ秒)は、Task2[1]の最大実行時間(41マイクロ秒)より短いので、コア0において、Task2が中断する。従って、スケジュール決定装置1は、この候補17を破棄する(ステップS33)。同様の理由で図18(b)および(d)に示す候補20および22も破棄される。
図20(a)および(b)は、コアを入れ替えると同じ構成になる候補の一例を示す図である。同図(a)に示す候補31では、コア0で、Task3[0]およびTask4[0]が、コア1でTask3[1]およびTask4[1]が、コア2でTask4[2]が実行される。同図(b)に示す候補32では、コア0で、Task3[1]およびTask4[1]が、コア1でTask3[0]およびTask4[0]が、コア2でTask4[2]が実行される。そして、これらのコア0、コア1での処理を入れ替えると、同じ構成となるので、スケジュール決定装置1は、候補31および候補32のうち、いずれかを破棄する(ステップS34)。
以上説明したように、本実施形態によれば、スケジュール決定装置1は、シングルコアで実行する場合の最大実行時間以上の候補を除外するので、並列化により実行時間が短くなるスケジュールのみを作成できる。
また、スケジュール決定装置1は、タスクが中断する候補を除外するので、並列実行タスク中断中に他のタスクが実行されることを防止できる。
スケジュール決定装置1は、コアを入れ替えると同じ形状になる候補を除外するので、同じ種類のコアを複数有するシステムについてのスケジュールを作成する場合、無駄な処理を省くことができる。
(第3の実施形態)
本発明の第3の実施形態について、図21〜図33を参照して説明する。図21は、本実施形態の候補作成部13の構成を示すブロック図である。同図を参照すると、本実施形態のスケジュール決定装置1は、候補操作部13において、更に重ね合わせ代表化部135を有する以外は、第1の実施形態のスケジュール決定装置1と同様の構成である。
タスク構成候補作成部131は、依存関係を満たすように、タスク構成候補を作成し、タスクが途中で中断する候補は除外する。代表化部133は、各タスク構成候補について代表化を行う。重ね合わせの方法の詳細については、後述する。
重ね合わせ代表化部135は、タスク構成候補を所定の基準で複数のグループに分類し、各グループに属する候補を重ね合わせる。そして、重ね合わせ代表化部135は、重ね合わせた候補について代表化を行う。
グループの分類は、例えば、スケジュール決定装置1は、あるコアの最大実行時間に応じた順番で、タスク構成候補を整列し、各グループに属する候補の数がほぼ等しくなるように分類する方法を使用する。
又は、スケジュール決定装置1は、あるコアの最大実行時間に応じた順番で、タスク構成候補を整列し、グループがカバーする候補の、そのコアについての最大実行時間がほぼ均等になるように、分類する方法を使用する。
或いは、スケジュール決定装置1は、あるコアでの最大実行時間に応じた順番で、タスク構成候補を整列し、隣接する候補間の最大実行時間の差分を算出する。そして、スケジュール決定装置1は、区切りが所定値以上大きくなる箇所で区切ることにより、複数のグループに分類する方法を使用する。
乃至は、スケジュール決定装置1は、グループ内のオフセットが所定範囲内になるように、候補を分類する方法を使用する。スケジュール決定装置1は、候補数、最大実行時間の範囲、差分、およびオフセットを使用する方法のうち、いずれか2つ以上の方法を組み合わせて、候補を分類することもできる。
スケジューリング実行部15は、重ね合わせた候補について、スケジュールを実行し、有効度スコア算出部17は、重ね合わせた各スケジュール候補について有効度スコアを算出する。そして、スケジューリング実行部15は、有効度スコアの最も高い重ね合わせ候補に属するタスク構成候補それぞれについてスケジューリングを実行し、有効度スコア算出部17は、各スケジューリング候補について有効度スコアを算出する。
図22を参照して、重ね合わせの方法について説明する。図22(a)〜(e)は、重ね合わせ方法を説明するための図である。
重ね合わせの方法について詳細に説明する。重ね合わせ代表化部135は、グループ内のタスク構成候補のうち、いずれか2つのタスク構成候補を選択する。そして、重ね合わせ代表化部135は、それらのタスク構成候補を比較し、一方のタスク構成候補の実行期間のうち、他方の候補の実行期間と一致しない期間を、その他方のタスク構成候補に追加する(重ね合わせる)。重ね合わせ代表化部135は、一致しない期間を追加したタスク構成候補と、比較していない他の全てのタスク構成候補とを比較し、一致しない期間があれば、更に追加していく。
例えば、図22(a)、(b)、(d)に示すサブタスク構成候補14、15、および21を重ね合わせる場合について考える。重ね合わせ代表化部135は、まず、同図22(a)に示すサブタスク構成候補14と、同図(a)に示すサブタスク構成候補15とを比較する。重ね合わせ代表化部135は、同図(c)に示すように、サブタスク構成候補15の実行期間のうち、候補14と一致していない期間を、サブタスク構成候補14に追加する(重ね合わせる)。同図(c)において斜線部分は、追加した部分である。
次いで、重ね合わせ代表化部135は、重ね合わせたサブタスク構成候補と、図22(d)に示すサブタスク構成候補21とを比較する。重ね合わせ代表化部135は、同図(e)に示すように、サブタスク構成15の実行期間のうち、重ね合わせた候補と一致していない期間を、重ね合わせたサブタスク構成候補に追加する。同図(e)において斜線部分は、追加した部分である。
図23は、本実施形態の候補作成処理を示すフローチャートである。同図を参照すると、タスク構成候補作成部131は、タスク構成候補を作成し(ステップS31)、並列実行タスクが中断する候補を破棄する(ステップS33)。代表化部133は、タスク構成候補について代表化を行う(ステップS35)。重ね合わせ部135は、所定の基準でタスク構成候補を複数のグループに分類し、各グループに属する候補を重ね合わせる。そして重ね合わせた候補ついて代表化を行い、重ね合わせ候補とする(ステップS37)。ステップS35の後、候補作成部13は、候補作成処理を終了する。
図24は、本実施形態のスケジュール決定装置の動作を示すフローチャートである。同図を参照すると、ステップS3の後、スケジューリング実行部15は、重ね合わせた候補について、スケジュールを実行し(ステップ4a)、有効度スコア算出部17は、重ね合わせた各スケジュール候補について有効度スコアを算出する(ステップS5a)。そして、スケジューリング実行部15は、有効度スコアの最も高い重ね合わせ候補に属するタスク構成候補それぞれについてスケジューリングを実行し(ステップS6)、有効度スコア算出部17は、各スケジューリング候補について有効度スコアを算出する(ステップS7)。
図25〜図27を参照して、本実施形態のスケジュール決定装置1の動作結果の第1の例について説明する。
図25は、グループに属する候補数が均等となるようにタスク構成候補を分類した結果の一例を示す図である。同図は、図19に示したスケジュール結果から、タスクが途中で中断される候補のみを除外したものである。同図を参照すると、重ね合わせ代表化部135は、スケジューリングの結果をコア0での最大実行時間に応じた順番で整列している。そして、重ね合わせ代表化部135は、各グループに属する候補数が均等になるように、候補を分類する。例えば、各グループの候補数が3つになるように分類する。この結果、候補14、15、および21は、同じグループ(A)に属することになる。
図26は、グループに属する候補の実行時間の範囲が所定値内となるようにタスク構成候補を分類した結果の一例を示す図である。同図を参照すると、重ね合わせ代表化部135は、コア0の最大実行時間が、100マイクロ秒未満、75マイクロ秒以上のグループ(A)、75マイクロ秒未満、60マイクロ秒以上のグループ(B)、60マイクロ秒未満、40マイクロ秒以上のグループ(C)、40マイクロ秒未満のグループ(D)に各候補を分類している。
図27は、整列後、隣接する候補の最大実行時間の差分が所定値以上となる箇所で区切った結果の一例を示す図である。同図を参照すると、重ね合わせ代表化部135は、隣接する候補の差分が10マイクロ秒以上となる箇所で区切って、各候補を分類している。
図28〜図33を参照して、本実施形態のスケジュール決定装置1の動作結果の第2の例について説明する。
図28(a)に示すように、最大実行時間が101マイクロ秒のTask5をスケジューリングの対象とする場合について考える。同図(b)に示すように、スケジュール決定装置1は、このTask5を、20マイクロ秒、41マイクロ秒、22マイクロ秒、7マイクロ秒、および11マイクロ秒の複数のサブタスク(Task5[0]、Task5[1]、Task2[3]、およびTask5[4])に分割する。
そして、スケジュール決定装置1は、図28(c)に示すように、サブタスク間の依存関係を求める。本実施形態では、Task5[0]の次に、Task2[1]およびTask2[2]を実行し、Task2[2]の次にTask2[3]およびTask2[4]を実行する必要がある。
スケジュール決定装置1は、図29(a)〜(h)および図30(a)〜(h)に示すように、依存関係を満たしたタスク構成候補41〜56を作成する。
そして、スケジュール決定装置1は、図31に示すように、スケジューリングの結果を示すテーブルを作成する。本実施形態では、途中でタスクが中断する候補(48、52、および53)は除外される。
図32および図33は、スケジュール決定装置1がオフセットおよび実行時間の範囲を使用して候補を分類した結果を示す図である。図32を参照すると、スケジュール決定装置1は、オフセットが20の候補(A、B)と、オフセットが83の候補(C)は、異なるグループに分類する。そして、スケジュール決定装置1は、図33に示すように、オフセットが20の候補を、コア0の実行時間が50マイクロ秒以上のグループ(A)と、50マイクロ秒未満のグループ(B)とに分ける。
または、スケジュール決定装置1は、図33に示すように、コア0での実行時間が60マイクロ秒以上のグループ(A)と、60マイクロ秒未満、40マイクロ秒以上のグループ(B)と、40マイクロ秒未満のグループ(C)とに分類する。
なお、図11〜図15、図22、および図23に示したフローチャートの全部または一部は、コンピュータプログラムの実行により実現することもできる。
以上説明したように、本実施形態によれば、タスク構成候補をまとめた重ね合わせ候補を用いて大まかな絞り込みを行い、その中で最適の重ね合わせ候補に属するタスク構成候補ごとに有効度スコアを算出するので、少ない探索量でスケジュールの最適化ができ、高度な自動最適化システムを実現することが可能となる。
スケジュール決定装置1は、候補数、実行時間、差分、およびオフセットのいずれか1以上を使用して候補を分類するので、スケジュール決定装置1は、簡易な方法で、最適化の効率を上げることができる。
(第4の実施形態)
本発明の第4の実施形態について、図34を参照して説明する。同図は、本実施形態の並列実行装置2の構成を示すブロック図である。同図を参照すると、並列実行装置2は、並列実行部21を更に有する以外は、第1の実施形態のスケジュール決定装置1と同様の構成である。
並列実行部21は、候補決定部19で決定されたスケジュール候補を使用して、実行対象のタスクを複数のコア(不図示)で並列実行する。
なお、本実施形態では、依存関係取得部11、候補作成部13、スケジューリング実行部15、有効度スコア算出部17、および候補決定部19の構成は、第1の実施形態の依存関係取得部11等と同様の構成としているが、これらは第2または第3の実施形態の依存関係取得部11等と同様の構成としてもよい。
以上説明したように、本実施形態によれば、並列実行装置2は、最適のスケジュールでタスクを並列実行できるので、効率的にタスクを処理できる。
この出願は、2008年11月14日に出願された日本出願特願2008−292119を基礎として優先権の利益を主張するものであり、その開示の全てを引用によってここに取り込む。
1 スケジュール決定装置
2 並列実行装置
11 依存関係取得部
13 候補作成器
15 スケジューリング実行部
17 スコア算出部
19 候補決定部
21 並列実行部
111 タスク分割部
113 依存グラフ作成部
131 タスク構成候補作成部
133 代表化部
135 重ね合わせ部
191 有効度スコア比較部
193 保持部
a1、a2、a3 タスク構成候補
S1〜S9、S11、S13、S31〜S37、S91〜S97、S4a、S5a、 ステップ

Claims (5)

  1. 第1のタスクが分割された複数のサブタスクが満たすべき実行順序の依存関係を取得する依存関係取得手段と、
    前記依存関係取得手段により取得された前記依存関係を満たし、かつ、前記複数のサブタスクを複数の処理装置で実行する複数のサブタスク構成候補を作成する候補作成手段と、
    前記候補作成手段により作成された前記サブタスク構成候補のそれぞれに、更に少なくとも1つの第2のタスクを配置することにより、複数のスケジュール候補を作成するスケジューリング手段と、
    前記スケジューリング手段により作成された前記複数のスケジュール候補のそれぞれについて、前記第1のタスクの有効度と前記第2のタスクの有効度とのそれぞれから導出される、前記第1のタスク及び前記第2のタスクの実行に対する有効性を示す有効度を算出する有効度算出手段と、
    前記有効度算出手段により算出された前記有効度に基づいて、前記複数のスケジュール候補の中から、前記第1のタスク及び前記第2のタスクの実行に用いるスケジュール候補を決定する候補決定手段と、
    前記候補作成手段により作成された前記複数のサブタスク構成候補を複数のグループに分類し、該グループに属する第1及び第2のサブタスク構成候補を選択し、前記第1のタスク構成候補の実行期間のうち前記第2のタスク構成候補の実行期間と一致しない期間を、前記第2のタスク構成候補に追加する処理を行う重ね合わせ手段と、
    を有するスケジュール決定装置。
  2. 前記有効度算出手段は、前記重ね合わせ手段により前記処理が行われた前記グループに対応するスケジュール候補ごとに、有効度を更に算出し、算出した該有効度に基づいて、いずれか1つのグループを選択し、選択した該グループに属するサブタスク構成候補に対応するスケジュール候補ごとに、有効度を算出する、請求項1に記載のスケジュール決定装置。
  3. 前記重ね合わせ手段は、各グループに属する前記サブタスク構成候補の数の差が所定値以下になるように、前記複数の候補を分類する、請求項に記載のスケジュール決定装置。
  4. 前記重ね合わせ手段は、それぞれのサブタスク構成候補において所定の処理装置に配置されたサブタスクの実行時間の合計値を算出し、各グループに属する、それぞれのサブタスク構成候補について算出された該合計値がグループごとに予め定められた範囲内になるように、前記複数の候補を分類する、請求項又はに記載のスケジュール決定装置。
  5. 前記重ね合わせ手段は、第1の処理装置でサブタスクの実行が開始された時刻から第2の処理装置でサブタスクの実行が開始されるまでの時間であるオフセットが所定値以上異なるサブタスク構成候補が異なるグループに属するように、前記複数の候補を分類する、請求項乃至のいずれか1項に記載のスケジュール決定装置。
JP2010537726A 2008-11-14 2009-08-20 スケジュール決定装置 Active JP5464146B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010537726A JP5464146B2 (ja) 2008-11-14 2009-08-20 スケジュール決定装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2008292119 2008-11-14
JP2008292119 2008-11-14
PCT/JP2009/064541 WO2010055719A1 (ja) 2008-11-14 2009-08-20 スケジュール決定装置、並列実行装置、スケジュール決定方法、及びプログラム
JP2010537726A JP5464146B2 (ja) 2008-11-14 2009-08-20 スケジュール決定装置

Publications (2)

Publication Number Publication Date
JPWO2010055719A1 JPWO2010055719A1 (ja) 2012-04-12
JP5464146B2 true JP5464146B2 (ja) 2014-04-09

Family

ID=42169859

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010537726A Active JP5464146B2 (ja) 2008-11-14 2009-08-20 スケジュール決定装置

Country Status (3)

Country Link
US (1) US8881158B2 (ja)
JP (1) JP5464146B2 (ja)
WO (1) WO2010055719A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150040663A (ko) * 2013-10-07 2015-04-15 삼성전자주식회사 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8250576B2 (en) * 2009-09-30 2012-08-21 Microsoft Corporation Structured task hierarchy for a parallel runtime
JP5441626B2 (ja) * 2009-11-06 2014-03-12 日立オートモティブシステムズ株式会社 車載用マルチアプリ実行装置
US8826234B2 (en) * 2009-12-23 2014-09-02 Intel Corporation Relational modeling for performance analysis of multi-core processors
WO2012001777A1 (ja) * 2010-06-29 2012-01-05 富士通株式会社 マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム
US9384053B2 (en) * 2010-10-28 2016-07-05 Nec Corporation Task allocation optimization system, task allocation optimization method, and non-transitory computer readable medium storing task allocation optimization program
WO2013010159A1 (en) * 2011-07-14 2013-01-17 Siemens Corporation Reducing the scan cycle time of control applications through multi-core execution of user programs
US8949853B2 (en) * 2011-08-04 2015-02-03 Microsoft Corporation Using stages to handle dependencies in parallel tasks
US9158610B2 (en) 2011-08-04 2015-10-13 Microsoft Technology Licensing, Llc. Fault tolerance for tasks using stages to manage dependencies
JP2013061779A (ja) * 2011-09-13 2013-04-04 Toyota Motor Corp パラメータ適合方法及びパラメータ適合システム
WO2013058396A1 (ja) * 2011-10-21 2013-04-25 日本電気株式会社 タスク配置装置及びタスク配置方法
WO2013094156A1 (ja) * 2011-12-19 2013-06-27 日本電気株式会社 タスク配置最適化システム、タスク配置最適化方法、及びタスク配置最適化プログラム
US20150082314A1 (en) * 2012-04-18 2015-03-19 Nec Corporation Task placement device, task placement method and computer program
US8904204B2 (en) * 2012-06-29 2014-12-02 International Business Machines Corporation Managing computing resources through aggregated core management
WO2014022203A1 (en) * 2012-08-02 2014-02-06 Siemens Corporation Pipelining for cyclic control systems
WO2014027444A1 (ja) * 2012-08-13 2014-02-20 日本電気株式会社 スケジューリング装置、及び、スケジューリング方法
US9734040B2 (en) 2013-05-21 2017-08-15 Microsoft Technology Licensing, Llc Animated highlights in a graph representing an application
US8990777B2 (en) 2013-05-21 2015-03-24 Concurix Corporation Interactive graph for navigating and monitoring execution of application code
US9280841B2 (en) 2013-07-24 2016-03-08 Microsoft Technology Licensing, Llc Event chain visualization of performance data
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
EP3069267A4 (en) 2013-11-13 2017-09-27 Microsoft Technology Licensing, LLC Software component recommendation based on multiple trace runs
JP6428476B2 (ja) * 2015-05-14 2018-11-28 株式会社デンソー 並列化コンパイル方法、及び並列化コンパイラ
EP3208712B1 (en) * 2016-02-22 2020-02-19 Karlsruher Institut für Technologie Computer system and method for parallel program code optimization and deployment
CN108780565B (zh) 2016-03-24 2022-08-02 富士胶片株式会社 图像处理装置、图像处理方法及存储介质
JP2018041287A (ja) * 2016-09-07 2018-03-15 富士通株式会社 スケジュール表示プログラム、スケジュール表示方法およびスケジュール表示装置
US10073715B2 (en) * 2016-12-19 2018-09-11 Intel Corporation Dynamic runtime task management
US11132631B2 (en) * 2017-05-26 2021-09-28 Oracle International Corporation Computerized system and method for resolving cross-vehicle dependencies for vehicle scheduling
JP7009971B2 (ja) * 2017-12-14 2022-01-26 日本電気株式会社 プロセススケジューリング装置およびプロセススケジューリング方法
LU101070B1 (en) * 2018-12-21 2020-06-24 Luxembourg Inst Science & Tech List Method for orchestrating distributed task completion in a communication network
CN110109748B (zh) * 2019-05-21 2020-03-17 星环信息科技(上海)有限公司 一种混合语言任务执行方法、装置及集群
US11449339B2 (en) * 2019-09-27 2022-09-20 Red Hat, Inc. Memory barrier elision for multi-threaded workloads
CN112415862B (zh) * 2020-11-20 2021-09-10 长江存储科技有限责任公司 一种数据处理系统及方法
JP2022105439A (ja) * 2021-01-04 2022-07-14 富士通株式会社 情報処理装置、スケジュール特定方法およびスケジュール特定プログラム
CN116991781B (zh) * 2023-09-25 2024-02-06 京东科技信息技术有限公司 一种请求处理装置、方法、芯片、存储介质及电子设备
CN117290113B (zh) * 2023-11-22 2024-02-13 太平金融科技服务(上海)有限公司 一种任务处理方法、装置、系统和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0954699A (ja) * 1995-08-11 1997-02-25 Fujitsu Ltd 計算機のプロセススケジューラ
JPH09218861A (ja) * 1996-02-08 1997-08-19 Fuji Xerox Co Ltd スケジューラ
JP2001195265A (ja) * 2000-01-06 2001-07-19 Nippon Avionics Co Ltd ジョブスケジューリング方法及び記録媒体

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4073303B2 (ja) * 2002-12-03 2008-04-09 富士通株式会社 プログラム分割方法とそれを実施するプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0954699A (ja) * 1995-08-11 1997-02-25 Fujitsu Ltd 計算機のプロセススケジューラ
JPH09218861A (ja) * 1996-02-08 1997-08-19 Fuji Xerox Co Ltd スケジューラ
JP2001195265A (ja) * 2000-01-06 2001-07-19 Nippon Avionics Co Ltd ジョブスケジューリング方法及び記録媒体

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNG199800377003; 長田徹也ほか: '複製タスクを許したマルチプロセッサスケジューリングのための遺伝的アルゴリズムの検討' 電子情報通信学会技術研究報告 Vol.96 No.348, 199611, 17-24頁, 社団法人電子情報通信学会 *
JPN6013028583; 長田徹也ほか: '複製タスクを許したマルチプロセッサスケジューリングのための遺伝的アルゴリズムの検討' 電子情報通信学会技術研究報告 Vol.96 No.348, 199611, 17-24頁, 社団法人電子情報通信学会 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150040663A (ko) * 2013-10-07 2015-04-15 삼성전자주식회사 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치
KR102161055B1 (ko) 2013-10-07 2020-09-29 삼성전자주식회사 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치

Also Published As

Publication number Publication date
JPWO2010055719A1 (ja) 2012-04-12
US20110209153A1 (en) 2011-08-25
WO2010055719A1 (ja) 2010-05-20
US8881158B2 (en) 2014-11-04

Similar Documents

Publication Publication Date Title
JP5464146B2 (ja) スケジュール決定装置
Chwa et al. Global edf schedulability analysis for synchronous parallel tasks on multicore platforms
JP4781089B2 (ja) タスク割り当て方法およびタスク割り当て装置
US8732714B2 (en) Method for reorganizing tasks for optimization of resources
Ananthanarayanan et al. Effective straggler mitigation: Attack of the clones
US8332854B2 (en) Virtualized thread scheduling for hardware thread optimization based on hardware resource parameter summaries of instruction blocks in execution groups
Chen et al. Partitioning and scheduling workflows across multiple sites with storage constraints
CN113568599B (zh) 用于处理计算作业的方法、电子设备和计算机程序产品
US7458065B2 (en) Selection of spawning pairs for a speculative multithreaded processor
EP2466460A1 (en) Compiling apparatus and method for a multicore device
Djigal et al. Task scheduling for heterogeneous computing using a predict cost matrix
JP5036523B2 (ja) プログラム並列化装置
US10366084B2 (en) Optimizing pipelining result sets with fault tolerance in distributed query execution
Fan Job scheduling in high performance computing
Yi et al. Fast training of deep learning models over multiple gpus
Ho et al. Simulating a Multi-core x8664 Architecture with Hardware ISA Extension Supporting a Data-Flow Execution Model
Amert et al. OpenVX and real-time certification: The troublesome history
CN110088730A (zh) 任务处理方法、装置、介质及其设备
CN115964164A (zh) 计算机实现的方法、硬件加速器以及存储介质
Andrei et al. An improved upper-bound algorithm for non-preemptive task scheduling
Wang et al. Cost-effective scheduling precedence constrained tasks in cloud computing
Pawiński et al. Cost-efficient project management based on critical chain method with partial availability of resources
Benini et al. A constraint programming approach for allocation and scheduling on the cell broadband engine
Bhatti et al. Scheduling of parallel tasks with proportionate priorities
Li et al. R-FirstFit: a reservation based first fit priority job scheduling strategy and its application for rendering

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130730

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131113

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20131209

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: 20131224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140106

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5464146

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350