【文献】
鈴木紀章,久村孝寛,中村祐一,グラフ後方依存への重み付けによるマルチコアタスク配置手法,電子情報通信学会技術研究報告,社団法人電子情報通信学会,2012年 2月24日,Vol.111,No.461,p.97−102,CPSY2011-86
【文献】
鈴木紀章,森 義和,岩熊憲二,枝廣正人,ハードリアルタイム処理向けマルチコアタスク配置の評価関数設計,電子情報通信学会技術研究報告,社団法人電子情報通信学会,2011年 3月11日,Vol.110,No.473,p.93−98
【文献】
山下良ほか3名,ヘテロジニアス計算機クラスタにおける省エネルギー化タスクスケジューリング手法,情報処理学会研究報告,一般社団法人情報処理学会,2011年 3月10日,Vol.2011-ARC-194, No.3,p.1-8
(58)【調査した分野】(Int.Cl.,DB名)
N(Nは1以上の整数)個のプロセッサコアに固定的に配置される対象となるタスクの集合であるタスクセットであって、前記各プロセッサコア上でのタスクのスケジューリングが実行時に動的に制御されるタスクセットについて、前記タスク間の依存関係を表す情報と、前記各タスクの実行に要する実行所要時間とを少なくとも含むタスクセットパラメータを取得するタスクセットパラメータ取得部と、
前記タスクセットの実行開始以降の前記各プロセッサコアにおけるタスクのスケジューリングが事前に想定可能なスケジューリング想定可能期間を検出するとともに、前記タスクセットに含まれるタスクのうち、前記スケジューリング想定可能期間内に実行されうるタスクについて、前記タスクセットパラメータに基づくスケジューリングを考慮してコア割当を決定することによりタスク配置を行う第一のタスク配置部と、
前記タスクセットに含まれるタスクのうち、前記第一のタスク配置部によって配置されたタスク以外のタスクについて、前記タスクセットパラメータに基づくコア割当を決定することによりタスク配置を行う第二のタスク配置部と、
を備えたタスク配置装置。
前記第一のタスク配置部は、前記スケジューリング想定可能期間において次に配置対象とするタスクである配置対象タスクについて、既に配置した前記各タスクのスケジューリングに基づき該配置対象タスクが実行可能となりうるタスク配置検討時刻と前記タスクセットパラメータとに基づいて、該配置対象タスクのコア割当およびスケジューリングを決定するとともに、決定したコア割当およびスケジューリングに基づいて、前記配置対象タスクおよび前記タスク配置検討時刻を更新することを特徴とする請求項1に記載のタスク配置装置。
前記第一のタスク配置部は、前記順序付けされた先頭のタスクから順に、前記タスクセットパラメータおよび既に配置した前記各タスクのスケジューリングに基づいて、前記配置対象タスクを各プロセッサコアに配置した場合の仮のスケジューリングをそれぞれ算出し、算出した仮のスケジューリングに基づいて前記配置対象タスクのコア割当およびスケジューリングを決定することを特徴とする請求項3に記載のタスク配置装置。
前記第一のタスク配置部は、前記タスクセットの実行開始以降、並列度がNになるまでの期間を前記スケジューリング想定可能期間として検出することを特徴とする請求項1から請求項5のいずれか1項に記載のタスク配置装置。
前記第一のタスク配置部は、前記タスクセットの実行開始以降、並列度がN+1になるまでの期間を前記スケジューリング想定可能期間として検出することを特徴とする請求項1から請求項5のいずれか1項に記載のタスク配置装置。
N(Nは1以上の整数)個のプロセッサコアに固定的に配置される対象となるタスクの集合であるタスクセットであって、前記各プロセッサコア上でのタスクのスケジューリングが実行時に動的に制御されるタスクセットについて、前記タスク間の依存関係を表す情報と、前記各タスクの実行に要する実行所要時間とを少なくとも含むタスクセットパラメータを取得し、
前記タスクセットの実行開始以降の前記各プロセッサコアにおけるタスクのスケジューリングが事前に想定可能なスケジューリング想定可能期間を検出するとともに、前記タスクセットに含まれるタスクのうち、前記スケジューリング想定可能期間内に実行されうるタスクについて、前記タスクセットパラメータに基づくスケジューリングを考慮してコア割当を決定する第一のタスク配置を行い、
前記タスクセットに含まれるタスクのうち、前記第一のタスク配置において配置されたタスク以外のタスクについて、前記タスクセットパラメータに基づくコア割当を決定する第二のタスク配置を行う、タスク配置方法。
前記第一のタスク配置を行う際に、前記スケジューリング想定可能期間において次に配置対象とするタスクである配置対象タスクについて、既に配置した前記各タスクのスケジューリングに基づき該配置対象タスクが実行可能となりうるタスク配置検討時刻と前記タスクセットパラメータとに基づいて、該配置対象タスクのコア割当およびスケジューリングを決定するとともに、決定したコア割当およびスケジューリングに基づいて、前記配置対象タスクおよび前記タスク配置検討時刻を更新することを特徴とする請求項8に記載のタスク配置方法。
N(Nは1以上の整数)個のプロセッサコアに固定的に配置される対象となるタスクの集合であるタスクセットであって、前記各プロセッサコア上でのタスクのスケジューリングが実行時に動的に制御されるタスクセットについて、前記タスク間の依存関係を表す情報と、前記各タスクの実行に要する実行所要時間とを少なくとも含むタスクセットパラメータを取得するタスクセットパラメータ取得ステップと、
前記タスクセットの実行開始以降の前記各プロセッサコアにおけるタスクのスケジューリングが事前に想定可能なスケジューリング想定可能期間を検出するとともに、前記タスクセットに含まれるタスクのうち、前記スケジューリング想定可能期間内に実行されうるタスクについて、前記タスクセットパラメータに基づくスケジューリングを考慮してコア割当を決定する第一のタスク配置ステップと、
前記タスクセットに含まれるタスクのうち、前記第一のタスク配置において配置されたタスク以外のタスクについて、前記タスクセットパラメータに基づくコア割当を決定する第二のタスク配置ステップと、
をコンピュータ装置に実行させるコンピュータ・プログラム。
【発明を実施するための形態】
【0022】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。ここで、以下に述べる本発明の各実施の形態としてのタスク配置装置は、各タスクが特定のコアで実行される機能分散型のAMP方式のマルチコアシステム向けにタスク配置を決定する装置である。また、本発明の各実施の形態において対象とするAMP方式のマルチコアシステムは、各コアに配置されたタスクについて、いつ、どのタスクを実行するかというスケジューリングを動的に行うものである。このようなスケジューリングは、例えば、各コア上で動作するRTOS等によって行われる。前述のように、AMP方式のマルチコアシステムは、タスクがどのコアに配置されるかによって性能が異なる。以下では、本発明の各実施の形態としてのタスク配置装置により、マルチコアシステムの性能をより高めるタスク配置が可能となることについて説明を行う。なお、以降、本発明の各実施の形態において対象とするAMP方式のマルチコアシステムを、単にマルチコアシステムとも記載する。
【0023】
(第1の実施の形態)
本発明の第1の実施の形態としてのタスク配置装置1のハードウェア構成を
図1に示す。
図1において、タスク配置装置1は、CPU(Central Processing Unit)1001と、RAM(Random Access Memory)1002と、ROM(Read Only Memory)1003と、ハードディスク等の記憶装置1004とを備えたコンピュータ装置によって構成されている。
【0024】
ROM1003および記憶装置1004には、コンピュータ装置を本実施の形態のタスク配置装置1として機能させるためのコンピュータ・プログラムおよび各種データが記憶されている。
【0025】
CPU1001は、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行する。
【0026】
次に、タスク配置装置1の機能ブロック構成を
図2に示す。
図2において、タスク配置装置1は、第一のタスク配置部11と、第二のタスク配置部12と、タスクセットパラメータ取得部13とを備える。ここで、第一のタスク配置部11と、第二のタスク配置部12と、タスクセットパラメータ取得部13とは、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001によって構成される。なお、タスク配置装置1の各機能ブロックを構成するハードウェア構成は、上述の構成に限定されない。
【0027】
タスクセットパラメータ取得部13は、対象のタスクセットに含まれるタスク間の依存関係を表す情報と、各タスクの実行に要する実行所要時間とを少なくとも含むタスクセットパラメータを取得する。対象のタスクセットは、N(Nは1以上の整数)個のコアに固定的に配置される対象となるタスクの集合である。また、対象のタスクセットは、各コア上でのタスクのスケジューリングが実行時に動的に制御されうるものである。例えば、タスクセットパラメータ取得部13は、記憶装置1004に保持されたタスクセットパラメータを取得してRAM1002に保持してもよい。タスクセットパラメータ取得部13によって取得されたタスクセットパラメータは、後述の第一のタスク配置部11および第二のタスク配置部12によって参照される。
【0028】
第一のタスク配置部11は、タスクセットに含まれるタスクのうち、スケジューリング想定可能期間内に実行されうるタスクについて、タスクセットパラメータに基づくスケジューリングを考慮してコア割当を決定する。ここで、スケジューリング想定可能期間とは、タスクセットの実行開始以降の各コアにおいて、タスクの実行時のスケジューリングが事前に想定可能な期間である。
【0029】
具体的には、第一のタスク配置部11は、タスクセットのうち、最初に実行可能なタスクから順に、コア割当およびスケジューリングを決定していってもよい。そして、第一のタスク配置部11は、配置処理の開始以降、スケジューリング想定可能期間であることを示す所定の条件が満たされている間、次に実行されうるタスクについて、コア割当およびスケジューリングを決定していく。
【0030】
例えば、スケジューリング想定可能期間とは、タスクセットの実行開始以降から、並列度がNとなるまでの期間であってもよい。ここで、並列度とは、タスクセット実行中のある時点において同時に実行されるタスク数をいうものとする。並列度がN以下の場合、タスクの実行順序決定には、タスク間の依存関係が支配的である。そこで、各コアのタスクスケジューリングが動的に制御されるマルチコアシステムにおいて、タスク配置装置1が対象とするタスクセット以外のタスクが同時に実行されないと仮定すれば、並列度がN以下であれば、スケジューリングは一意に定まると考えてよい。
【0031】
また、スケジューリング想定可能期間とは、タスクセットの実行開始以降から、依存関係の枝分かれ数の合計がNを超えない間の期間であってもよい。この場合、第一のタスク配置部11は、依存関係の枝分かれ数の合計を計測しながらタスク配置処理を行うことにより、枝分かれ数の合計がNを超えた時点でタスク配置処理を終了してもよい。あるいは、第一のタスク配置部11は、依存関係の枝別れ数の合計がNとなるまでのタスクの個数Mをあらかじめ記憶しておき、M個のタスクについてタスク配置処理を終えると、タスク配置処理を終了するようにしてもよい。
【0032】
第二のタスク配置部12は、タスクセットに含まれるタスクのうち、第一のタスク配置部11によって配置されたタスク以外のタスクについて、タスクセットパラメータに基づくコア割当を決定することによりタスク配置を行う。
【0033】
なお、第二のタスク配置部12は、タスクセットパラメータに基づくコア割当を決定する公知の技術を採用することにより、タスク配置を行えばよい。ここで、タスクセットを構成するタスクのうち、第一のタスク配置部11によって配置されたタスク以外のタスク群は、実際に実行される際にはスケジューリングが変動し得る。そこで、第二のタスク配置部12は、タスク配置の際に、必ずしもスケジューリングを考慮する必要がない。したがって、第二のタスク配置部12は、実行時にスケジューリングが変動することを前提としたタスク配置を行うことが望ましい。例えば、第二のタスク配置部12は、各コア上でのタスクスケジューリングが実行時に変動しても不変的に当てはまる指標に基づきタスク配置を行うことが望ましい。具体的には、第二のタスク配置部12は、コア間依存の最小化によるタスク配置の技術を採用してもよい。
【0034】
以上のように構成されたタスク配置装置1の動作について、
図3を参照して説明する。
【0035】
まず、タスクセットパラメータ取得部13は、対象アプリケーションを構成するタスクの集合であるタスクセットについて、タスクセットパラメータを取得する(ステップS1)。
【0036】
次に、第一のタスク配置部11は、ステップS1で取得されたタスクセットパラメータに基づいて、配置対象となる配置対象タスクを選択する(ステップS2)。例えば、このステップを初回に実行する場合、第一のタスク配置部11は、依存元のタスクがないタスクのいずれかを選択すればよい。また、このステップを2回目以降に実行する場合、第一のタスク配置部11は、既に配置したいずれかのタスクの実行完了により依存待ちが解消されるいずれかのタスクを選択すればよい。
【0037】
次に、第一のタスク配置部11は、既に配置したタスクのコア割当およびスケジューリングに基づいて、配置対象のタスクのコア割当およびスケジューリングを決定する(ステップS3)。
【0038】
次に、第一のタスク配置部11は、配置対象タスクの次に実行されうるタスクが、スケジューリング想定可能期間内に実行されうるか否かを判断する(ステップS4)。例えば、第一のタスク配置部11は、配置対象タスクのスケジューリングを決定したことにより、配置対象タスクの実行期間中の並列度がN未満であるか否かを判断してもよい。あるいは、第一のタスク配置部11は、最初に配置したタスクから今回配置したタスクまでの依存関係の枝分かれ数の合計がN未満であるか否かを判断してもよい。
【0039】
ここで、スケジューリング想定可能期間内に含まれると判断した場合、第一のタスク配置部11は、ステップS2からの処理を繰り返す。
【0040】
一方、スケジューリング想定可能期間内に含まれないと判断した場合、第一のタスク配置部11はタスク配置処理を終了する。
【0041】
次に、第二のタスク配置部12は、第一のタスク配置部11によって配置されなかった残りのタスク群について、タスクセットパラメータを参照することにより、コア割当を決定する(ステップS5)。前述のように、例えば、第二のタスク配置部12は、残りのタスク群について、コア間依存を最小化するタスク配置を行ってもよい。
【0042】
次に、第二のタスク配置部12は、第一のタスク配置部11によって決定された各タスクのコア割当と、第二のタスク配置部12よって決定された各タスクのコア割当とを、タスク配置結果として出力する(ステップS6)。
【0043】
以上で、タスク配置装置1は動作を終了する。
【0044】
なお、ここで示した処理手順は一例であり、タスク配置装置1は、上述の各ステップの一部の順序を、本発明の趣旨を逸脱しない範囲で、適宜入れ替えて実行してもよい。また、タスク配置装置1は、上述の各ステップの一部を、本発明の趣旨を逸脱しない範囲で、適宜並列実行してもよい。
【0045】
次に、本発明の第1の実施の形態の効果について述べる。
【0046】
本発明の第1の実施の形態としてのタスク配置装置は、AMP方式かつタスクスケジューリングが動的に変動するマルチコアシステム向けに、コアアイドル時間を削減して対象システムの性能を向上させることができる。
【0047】
その理由は、第一のタスク配置部が、実行時のタスクスケジューリングが想定可能なスケジューリング想定可能期間に実行されうるタスク群について、スケジューリングを考慮してコア割当を決定するタスク配置を行い、第二のタスク配置部が、残りのタスク群について、コア割当を決定するからである。
【0048】
これにより、本実施の形態としてのタスク配置装置は、N個のコアから構成されるマルチコアシステム向けに、実行開始時以降のできるだけ早い段階でN個のコアによってN個のタスクが同時実行されるタスク配置を得ることができる。さらに、本実施の形態としてのタスク配置装置は、実行時のタスクスケジューリングが想定できない残りのタスク群については、各コア上でのタスクスケジューリングに変動があることを前提として良好な実行結果が得られるタスク配置技術を採用することが可能である。このため、本実施の形態としてのタスク配置装置は、実行開始から早い段階で複数コアを充分に活用する配置を行うことができる。その結果、本実施の形態としてのタスク配置装置は、コアアイドル時間を削減し、対象システムの性能を向上させるタスク配置を出力することができる。
【0049】
(第2の実施の形態)
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第1の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【0050】
本発明の第2の実施の形態としてのタスク配置装置2の機能ブロック構成を、
図4に示す。
図4において、タスク配置装置2は、本発明の第1の実施の形態としてのタスク配置装置1に対して、第一のタスク配置部11に替えて第一のタスク配置部21を備える点が異なる。また、第一のタスク配置部21は、配置対象タスク保持部22と、タスク配置検討時刻保持部23と、制御部24と、スケジューリング情報保持部25と、配置結果保持部26と、を備える。
【0051】
配置対象タスク保持部22は、次に配置対象とするタスクである配置対象タスクを表す情報を保持する。配置対象タスク保持部22に保持される配置対象タスクは、後述の制御部24によって更新される。
【0052】
タスク配置検討時刻保持部23は、配置対象タスクの配置が実行可能となりうる時刻を、タスクセット実行開始時刻を基準として表したタスク配置検討時刻を保持する。ここで、タスクセット実行開始時刻とは、タスクセットの実行を開始しうる時刻である。タスクセット実行開始時刻は0で表されてもよい。タスク配置検討時刻保持部23に保持されるタスク配置検討時刻は、既に配置された各タスクのスケジューリングに基づいて、後述の制御部24によって更新される。
【0053】
制御部24は、スケジューリング想定可能期間として、タスクセットの実行開始時期から、並列度がNになるまでの期間において実行されうるタスクについて、スケジューリングを考慮してコア割当を行う。具体的には、制御部24は、タスク配置検討時刻およびタスクセットパラメータに基づいて、配置対象タスクのコア割当と、実行開始時刻および実行終了時刻を含むスケジューリング情報とを決定する。また、制御部24は、配置対象タスクについて決定したコア割当およびスケジューリング情報に基づいて、配置対象タスク保持部22に保持される配置対象タスク、および、タスク配置検討時刻保持部23に保持されるタスク配置検討時刻を更新する。
【0054】
スケジューリング情報保持部25は、タスク配置が行われた各タスクについて、スケジューリング情報(実行開始時刻および実行終了時刻)を保持する。
【0055】
配置結果保持部26は、タスク配置が行われた各タスクについて、決定されたコア割当である配置結果を保持する。
【0056】
以上のように構成されたタスク配置装置2の動作について、
図5を参照して説明する。
【0057】
まず、タスクセットパラメータ取得部13は、対象アプリケーションを構成するタスクの集合であるタスクセットについて、タスクセットパラメータを取得する(ステップS1)。
【0058】
次に、制御部24は、タスク配置検討時刻を設定し、タスク配置検討時刻保持部23に保持させる(ステップS21)。
【0059】
例えば、このステップを初回に実行する場合、制御部24は、タスク配置検討時刻として、タスクセット実行開始時刻を設定すればよい。また、このステップを2回目以降に実行する場合、制御部24は、次に実行可能となるタスクが変化する最も早い時刻を、タスク配置検討時刻として設定してもよい。例えば、制御部24は、スケジューリング情報保持部25を参照することにより、既にコア割当およびスケジューリングが行われたタスクのうち、現在のタスク配置検討時刻以降で最も早く実行が終了するタスクの実行終了時刻を、タスク配置検討時刻として設定してもよい。
【0060】
次に、制御部24は、ステップS21で設定されたタスク配置検討時刻においてタスク配置の検討が可能なタスクのいずれかを、配置対象タスクとして選択する。そして、制御部24は、選択した配置対象タスクを示す情報を、配置対象タスク保持部22に保持させる(ステップS22)。
【0061】
例えば、このステップを初回に実行する場合、制御部24は、タスクセットの先頭タスクを配置対象タスクとして選択する。ここで、先頭タスクとは、タスクセットにおいて依存元のないタスクであってもよい。また、このステップを2回目以降に実行する場合、制御部24は、既に配置したいずれかのタスクの実行終了によって依存待ち状態が解消されて実行可能となるタスクを配置対象タスクとして選択する。なお、タスク配置検討時刻においてタスク配置の検討が可能な複数のタスクがある場合、制御部24は、該当するタスクのうちいずれかを配置対象タスクとして選択すればよい。
【0062】
次に、制御部24は、ステップS22で選択された配置対象タスクのコア割当を決定する(ステップS23)。例えば、制御部24は、タスク配置検討時刻において、いずれのタスクも配置されていないコアのうち、最もコア番号の小さいものに配置対象タスクを配置してもよい。
【0063】
次に、制御部24は、ステップS22で選択された配置対象タスクのスケジューリング情報を決定し、スケジューリング情報保持部25に保持させる(ステップS24)。具体的には、制御部24は、配置対象タスクの実行開始時刻および実行終了時刻を決定する。
【0064】
例えば、配置対象タスクの依存元タスクが、ステップS23で決定された配置対象タスクのコア割当と同一のコアに配置されている場合、制御部24は、タスク配置検討時刻を、配置対象タスクの実行開始時刻として決定可能である。このようにして決定される配置対象タスクの実行開始時刻は、依存元のタスクの実行終了時刻となることが多い。これは、依存元のタスクの実行完了をもって、配置対象タスクの依存待ちが解消され、実行可能となるためである。
【0065】
また、例えば、配置対象タスクの依存元タスクが、ステップS23で決定された配置対象タスクのコア割当とは異なるコアに配置されている場合を考える。このとき、コア間の通信オーバヘッドを0とみなすことにすると、制御部24は、同一のコアに配置されている場合と同様に、タスク配置検討時刻を、配置対象タスクの実行開始時刻として決定可能である。あるいは、制御部24は、タスク配置検討時刻に、コア間の通信オーバヘッドを加味して、配置対象タスクの実行開始時刻を決定してもよい。
【0066】
また、例えば、制御部24は、配置対象タスクの実行終了時刻として、実行開始時刻に対して実行所要時間を加算した時刻を決定すればよい。
【0067】
次に、制御部24は、並列度がNになったか否かを判断する(ステップS25)。すなわち、制御部24は、今回配置した配置対象タスクの実行期間中に、いずれのタスクも実行していないコアが残っていないかを判断する。これにより、制御部24は、次の配置対象タスクがスケジューリング想定可能期間に実行されうるものであるか否かを判断している。
【0068】
ステップS25において、並列度がNになっていないと判断した場合、制御部24は、現在のタスク配置検討時刻においてタスク配置を検討可能な他のタスクがあるか否かを判断する(ステップS26)。
【0069】
ステップS26において、このタスク配置検討時刻でタスク配置を検討可能な他のタスクがあると判断した場合、制御部24は、タスク配置検討時刻を更新せずに、配置対象タスクを更新するステップS22からの処理を繰り返す。
【0070】
一方、ステップS26において、このタスク配置検討時刻でタスク配置を検討可能な他のタスクはもうないと判断した場合、制御部24は、タスク配置検討時刻を更新するステップS21からの処理を繰り返す。
【0071】
一方、ステップS25において、並列度がNになったと判断した場合、制御部24は、第一のタスク配置部21によるタスク配置を終了する。そして、第二のタスク配置部12は、本発明の第1の実施の形態におけるステップS5〜S6と同様に、第一のタスク配置部21によって配置されなかった残りのタスク群についてタスク配置を行い、タスクセットに含まれる各タスクのコア割当を出力する。
【0072】
以上で、タスク配置装置2は、動作を終了する。
【0073】
なお、ここで示した処理手順は一例であり、タスク配置装置2は、上述の各ステップの一部の順序を、本発明の趣旨を逸脱しない範囲で、適宜入れ替えて実行してもよい。また、タスク配置装置2は、上述の各ステップの一部を、本発明の趣旨を逸脱しない範囲で、適宜並列実行してもよい。
【0074】
次に、タスク配置装置2の動作の具体例について、
図6および
図7を参照して説明する。ここでは、A〜Jのタスクを含むタスクセットを、コア番号が割り当てられた3つのコア(コア0〜コア2)に配置することを想定して説明を行う。
図6および
図7において、A〜Jは、タスクセットに属するタスクをそれぞれ表し、A〜Jの文字を囲む矩形の横幅は、各タスクの実行所要時間を表す。また、破線の矢印は、矢印の根元のタスクの実行が完了した後、矢印の先のタスクの起動が可能になるというタスク間の依存関係を表している。なお、この具体例の説明において、タスク配置装置2は、配置対象タスクを複数のコアに配置可能であり、いずれのコアに配置対象タスクのコア割当を行っても影響がない場合には、コア番号が小さいコアに対して配置対象タスクのコア割当を行うものとする。また、タスク配置装置2は、タスク配置検討時刻において実行可能となりうる複数のタスクがあり、いずれのタスクのタスク配置を先に行っても影響ない場合には、アルファベットが若いものから順に配置対象タスクとして選択するものとする。
【0075】
図6は、タスクセットに含まれるA〜Jのタスク間の依存関係を示している。例えば、タスクBおよびタスクCは、それぞれタスクAに依存がある。その他のタスク間にも、破線矢印で表される依存関係がある。なお、タスクG、タスクH、タスクI、タスクJに依存するそれ以降のタスクについては、図示を省略している。
【0076】
次に、
図6に示したタスクセットに対するタスク配置装置2の動作について、
図7を用いて説明する。
【0077】
<タスクAの配置処理>
まず、
図7Aを用いて、タスクAの配置処理について説明する。
【0078】
ここでは、まず、制御部24は、タスク配置検討時刻を、タスクセット実行開始時刻である0に設定する(ステップS21)。
【0079】
そして、制御部24は、タスク配置検討時刻0で実行可能なタスクAを、配置対象タスクとする(ステップS22)。
【0080】
次に、制御部24は、タスクAを割り当て可能なコア0〜コア2のうち、コア番号が小さいコア0をタスクAに割り当てる(ステップS23)。
【0081】
次に、制御部24は、タスクAの実行開始時刻としてタスク配置検討時刻の0を設定する。また、制御部24は、タスクAの実行終了時刻として、タスクAの実行開始時刻に、タスクAの実行所要時間を加えた時刻を設定する(ステップS24)。
【0082】
次に、制御部24は、並列度は1であり、N=3になっていないと判断する(ステップS25でNo)。
【0083】
次に、制御部24は、このタスク配置検討時刻0で実行可能な他のタスクがないと判断する(ステップS26でNo)。
【0084】
<タスクBの配置処理>
次に、
図7Bを用いて、タスクBの配置処理について説明する。
【0085】
ここでは、まず、制御部24は、タスク配置検討時刻を、タスクAの実行終了時刻に設定する(ステップS21)。
【0086】
次に、制御部24は、タスク配置検討時刻において実行可能となりうるタスクBおよびタスクCのうち、アルファベットの若いほうのタスクBを配置対象タスクとする(ステップS22)。
【0087】
次に、制御部24は、タスクBを割り当て可能なコア0〜コア2のうち、コア番号が小さいコア0をタスクBに割り当てる(ステップS23)。
【0088】
次に、制御部24は、タスクBの実行開始時刻として、タスク配置検討時刻であるタスクAの実行終了時刻を設定する。また、制御部24は、タスクBの実行終了時刻として、タスクBの実行開始時刻に、タスクBの実行所要時間を加えた時刻を設定する(ステップS24)。
【0089】
次に、制御部24は、並列度は1であり、N=3になっていないと判断する(ステップS25でNo)。
【0090】
次に、制御部24は、このタスク配置検討時刻で実行可能な他のタスクとして、タスクCがあると判断する(ステップS26でYes)。
【0091】
<タスクCの配置処理>
次に、
図7Cを用いて、タスクCの配置処理について説明する。なお、タスク配置検討時刻は、タスクAの実行終了時刻に設定されたままである。
【0092】
ここでは、まず、制御部24は、タスク配置検討時刻において実行可能となりうるタスクCを配置対象タスクとする(ステップS22)。
【0093】
次に、制御部24は、コア0には既にタスクBが配置されていることから、タスクCを割り当て可能なコア1〜コア2のうち、コア番号が小さいコア1をタスクCに割り当てる(ステップS23)。
【0094】
次に、制御部24は、タスクCの実行開始時刻として、タスク配置検討時刻であるタスクAの実行終了時刻を設定する。また、制御部24は、タスクCの実行終了時刻として、タスクCの実行開始時刻に、タスクCの実行所要時間を加えた時刻を設定する(ステップS24)。
【0095】
次に、制御部24は、並列度は2であり、N=3になっていないと判断する(ステップS25でNo)。
【0096】
次に、制御部24は、このタスク配置検討時刻で実行可能な他のタスクがないと判断する(ステップS26でNo)。
【0097】
<タスクFの配置処理>
次に、
図7Dを用いて、タスクFの配置処理について説明する。
【0098】
ここでは、まず、制御部24は、次に実行可能なタスクが変化する最も早い時刻は、タスクCの実行終了時刻であると判断する。そこで、制御部24は、タスク配置検討時刻を、タスクCの実行終了時刻に設定する(ステップS21)。
【0099】
次に、制御部24は、タスク配置検討時刻において実行可能となりうるタスクFを配置対象タスクとする(ステップS22)。
【0100】
次に、制御部24は、コア0では、タスク配置検討時刻において配置されたタスクBの実行が終了していないと判断する。そこで、制御部24は、タスクFを割り当て可能なコア1〜コア2のうち、コア番号が小さいコア1をタスクFに割り当てる(ステップS23)。
【0101】
次に、制御部24は、タスクFの実行開始時刻として、タスク配置検討時刻であるタスクCの実行終了時刻を設定する。また、制御部24は、タスクFの実行終了時刻として、タスクFの実行開始時刻に、タスクFの実行所要時間を加えた時刻を設定する(ステップS24)。
【0102】
次に、制御部24は、並列度は2であり、N=3になっていないと判断する(ステップS25でNo)。
【0103】
次に、制御部24は、このタスク配置検討時刻で実行可能な他のタスクがないと判断する(ステップS26でNo)。
【0104】
<タスクDの配置処理>
次に、
図7eを用いて、タスクDの配置処理について説明する。
【0105】
ここでは、まず、制御部24は、次に実行可能なタスクが変化する最も早い時刻は、タスクBの実行終了時刻であると判断する。そこで、制御部24は、タスク配置検討時刻を、タスクBの実行終了時刻に設定する(ステップS21)。
【0106】
次に、制御部24は、タスク配置検討時刻において実行可能となりうるタスクDおよびタスクEのうち、アルファベットの若いほうのタスクDを配置対象タスクとする(ステップS22)。
【0107】
次に、制御部24は、コア1では、タスク配置検討時刻において配置されたタスクFの実行が終了していないと判断する。そこで、制御部24は、タスクDを割り当て可能なコア0およびコア2のうち、コア番号が小さいコア0をタスクDに割り当てる(ステップS23)。
【0108】
次に、制御部24は、タスクDの実行開始時刻として、タスク配置検討時刻であるタスクBの実行終了時刻を設定する。また、制御部24は、タスクDの実行終了時刻として、タスクDの実行開始時刻に、タスクDの実行所要時間を加えた時刻を設定する(ステップS24)。
【0109】
次に、制御部24は、並列度は2であり、N=3になっていないと判断する(ステップS25でNo)。
【0110】
次に、制御部24は、このタスク配置検討時刻で実行可能な他のタスクとして、タスクEがあると判断する(ステップS26でYes)。
【0111】
<タスクEの配置処理>
次に、
図7Fを用いて、タスクEの配置処理について説明する。なお、タスク配置検討時刻は、タスクBの実行終了時刻に設定されたままである。
【0112】
ここでは、まず、制御部24は、タスク配置検討時刻において実行可能となりうるタスクEを配置対象タスクとする(ステップS22)。
【0113】
次に、制御部24は、コア0には既にタスクDが配置されていると判断する。また、制御部24は、コア1では、タスク配置検討時刻において配置されたタスクFの実行が終了していないと判断する。そこで、制御部24は、コア2をタスクEに割り当てる(ステップS23)。
【0114】
次に、制御部24は、タスクEの実行開始時刻として、タスク配置検討時刻であるタスクBの実行終了時刻を設定する。また、制御部24は、タスクEの実行終了時刻として、タスクEの実行開始時刻に、タスクEの実行所要時間を加えた時刻を設定する(ステップS24)。
【0115】
次に、制御部24は、並列度が3となり、N=3に等しくなったと判断する(ステップS25でYes)。すなわち、3個のコア上で3個のタスクが同時実行される配置となったため、第一のタスク配置部21は、配置処理を終了する。これにより、実行開始から早い段階で3つのコアを活用する配置が得られ、
図7Gに示す配置となった。
【0116】
以降、第二のタスク配置部12は、
図6に示したタスクG、タスクH、タスクI、タスクJを含む残りのタスク群について、コア割当を決定することによりタスク配置を行う。前述のように、第二のタスク配置部12は、スケジューリング決定を必須としない配置手法を用いることが可能である。
【0117】
なお、この具体例では、依存関係がある2つのタスクが別コアに配置された場合と、同一コアに配置された場合との実行開始時刻に差がないものとして説明を行った。コア間通信のオーバヘッドを考慮する場合、第一のタスク配置部21は、配置対象タスクの実行開始時刻として、タスク配置検討時刻にコア間通信のオーバヘッドを加味した時刻を設定すればよい。
【0118】
次に、本発明の第2の実施の形態の効果について述べる。
【0119】
本発明の第2の実施の形態としてのタスク配置装置は、AMP方式かつタスクスケジューリングが動的に変動するマルチコアシステム向けに、コアアイドル時間を削減して対象システムの性能をさらに向上させることができる。
【0120】
その理由は、第一のタスク配置部が、タスクセットの実行開始時期から並列度がNになるまでをスケジューリング想定可能期間として、スケジューリング想定可能期間内に実行されうるタスク群について、既に配置したタスクのスケジューリングを考慮してコア割当およびスケジューリングを決定するタスク配置を行い、第二のタスク配置部が、残りのタスク群について、コア割当を決定するからである。
【0121】
これにより、本実施の形態としてのタスク配置装置は、タスクセットの実行開始以降、並列度がNとなるまでのスケジューリング想定可能期間内においては、配置対象タスクが、既に配置されたタスクと同時実行可能であれば、できる限り同時実行されるようコアを割り当てることができる。このように、本実施の形態としてのタスク配置装置は、既に配置したタスクのスケジューリングに基づいて配置対象タスクに適切なコア割当を決定する。これにより、本実施の形態としてのタスク配置装置は、N個のコアから構成されるマルチコアシステム向けに、タスクセットの開始時刻以降、N個のコアによりN個のタスクが同時実行されるまでの期間を可能な限り短縮したタスク配置を得ることが可能になる。このため、本実施の形態としてのタスク配置装置は、AMP方式のマルチコアシステム向けに、実行開始から早い段階で複数コアを活用する配置を行うことにより、コアアイドル時間を削減し、対象システムの性能を向上させることとなる。
【0122】
(第3の実施の形態)
次に、本発明の第3の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第2の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【0123】
まず、本発明の第3の実施の形態としてのタスク配置装置3の機能ブロック構成を、
図8に示す。
図8において、タスク配置装置3は、本発明の第2の実施の形態としてのタスク配置装置2に対して、第一のタスク配置部21に替えて、第一のタスク配置部31を備える点が異なる。また、第一のタスク配置部31は、本発明の第2の実施の形態における第一のタスク配置部21に対して、制御部24に替えて制御部34を備える点が異なる。
【0124】
制御部34は、タスクセットの実行開始時期から、並列度がN+1になるまでの期間をスケジューリング想定可能期間とする点が、本発明の第2の実施の形態における制御部24に対して異なる。それ以外の点については、制御部34は、本発明の第2の実施の形態における制御部24と同様に構成される。
【0125】
以上のように構成されたタスク配置装置3は、
図5に示した本発明の第2の実施の形態としてのタスク配置装置2と略同様に動作するが、ステップS25における動作が異なる。
【0126】
ステップS25において、制御部34は、並列度がN+1となったか否かを判断する。
【0127】
以上で、タスク配置装置3の動作の説明を終了する。
【0128】
次に、タスク配置装置3の動作の具体例について、
図9を参照して説明する。ここでは、本発明の第2の実施の形態としてのタスク配置装置2の動作の具体例の説明において用いた
図6のタスクセットを用いて、タスク配置装置3の動作の具体例を説明する。
【0129】
まず、タスク配置装置3は、
図7A〜Fまで本発明の第2の実施の形態としてのタスク配置装置2と同様にタスク配置を行っていく。ただし、制御部34は、タスクEを配置対象タスクとしたフローのステップS25において、並列度は3であり、N+1=4になっていないと判断する(ステップS25でNo)。これにより、
図7Gに示したように、タスクA〜Fまでが配置された状態で、第一のタスク配置部31は、タスク配置処理を続ける。
【0130】
<タスクGの配置処理>
まず、
図9Aを用いて、タスクGの配置処理について説明する。
【0131】
ここでは、まず、制御部34は、次に実行可能なタスクが変化する最も早い時刻は、タスクDの実行終了時刻であると判断する。そこで、制御部34は、タスク配置検討時刻を、タスクDの実行終了時刻に設定する(ステップS21)。
【0132】
次に、制御部34は、タスク配置検討時刻において実行可能となりうるタスクGを配置対象タスクとする(ステップS22)。
【0133】
次に、制御部34は、コア1〜コア2では、タスク配置検討時刻において他のタスクの実行が終了していないと判断する。そこで、制御部34は、コア0をタスクGに割り当てる(ステップS23)。
【0134】
次に、制御部34は、タスクGの実行開始時刻として、タスク配置検討時刻であるタスクDの実行終了時刻を設定する。また、制御部34は、タスクGの実行終了時刻として、タスクGの実行開始時刻に、タスクGの実行所要時間を加えた時刻を設定する(ステップS24)。
【0135】
次に、制御部34は、並列度は3であり、N+1=4になっていないと判断する(ステップS25でNo)。
【0136】
次に、制御部34は、このタスク配置検討時刻で実行可能な他のタスクはないと判断する(ステップS26でNo)。
【0137】
<タスクJの配置処理>
次に、
図9Bを用いて、タスクJの配置処理について説明する。
【0138】
ここでは、まず、制御部34は、次に実行可能なタスクが変化する最も早い時刻は、タスクFの実行終了時刻であると判断する。そこで、制御部34は、タスク配置検討時刻を、タスクFの実行終了時刻に設定する(ステップS21)。
【0139】
次に、制御部34は、タスク配置検討時刻において実行可能となりうるタスクJを配置対象タスクとする(ステップS22)。
【0140】
次に、制御部34は、コア0およびコア2では、タスク配置検討時刻において他のタスクの実行が終了していないと判断する。そこで、制御部34は、コア1をタスクJに割り当てる(ステップS23)。
【0141】
次に、制御部34は、タスクJの実行開始時刻として、タスク配置検討時刻であるタスクFの実行終了時刻を設定する。また、制御部34は、タスクJの実行終了時刻として、タスクJの実行開始時刻に、タスクJの実行所要時間を加えた時刻を設定する(ステップS24)。
【0142】
次に、制御部34は、並列度は3であり、N+1=4になっていないと判断する(ステップS25でNo)。
【0143】
次に、制御部34は、このタスク配置検討時刻で実行可能な他のタスクはないと判断する(ステップS26でNo)。
【0144】
<タスクHの配置処理>
次に、
図9Cを用いて、タスクHの配置処理について説明する。
【0145】
ここでは、まず、制御部34は、次に実行可能なタスクが変化する最も早い時刻は、タスクEの実行終了時刻であると判断する。そこで、制御部34は、タスク配置検討時刻を、タスクEの実行終了時刻に設定する(ステップS21)。
【0146】
次に、制御部34は、タスク配置検討時刻において実行可能となりうるタスクHおよびタスクIのうち、アルファベットの若いほうのタスクHを配置対象タスクとする(ステップS22)。
【0147】
次に、制御部34は、コア0〜コア1では、タスク配置検討時刻において他のタスクの実行が終了していないと判断する。そこで、制御部34は、コア2をタスクHに割り当てる(ステップS23)。
【0148】
次に、制御部34は、タスクHの実行開始時刻として、タスク配置検討時刻であるタスクEの実行終了時刻を設定する。また、制御部34は、タスクHの実行終了時刻として、タスクHの実行開始時刻に、タスクHの実行所要時間を加えた時刻を設定する(ステップS24)。
【0149】
次に、制御部34は、コア0〜コア1に配置済みのタスクG、タスクJ、タスクHの他に、同時に実行可能なタスクIがあり、並列度は4であると算出する。そこで、制御部34は、並列度がN+1に等しくなったと判断する(ステップS25でYes)。すなわち、4個のタスクが同時実行可能であるにもかかわらず、3個のコア上で既に3個のタスクが実行されているため、残り1つのタスクが実行不可となる配置となった。そこで、第一のタスク配置部31は、配置処理を終了する。これにより、実行開始から早い段階で3つのコアを活用する配置が得られ、
図9Dに示す配置となった。
以降、第二のタスク配置部12は、
図6に示したタスクIを含む残りのタスク群について、コア割当を決定することによりタスク配置を行う。前述のように、第二のタスク配置部12は、スケジューリング決定を必須としない配置手法を用いることが可能である。
【0150】
なお、この具体例では、依存関係がある2つのタスクが別コアに配置された場合と、同一コアに配置された場合との実行開始時刻に差がないものとして説明を行った。コア間通信のオーバヘッドを考慮する場合、第一のタスク配置部31は、配置対象タスクの実行開始時刻として、タスク配置検討時刻にコア間通信のオーバヘッドを加味した時刻を設定すればよい。
【0151】
また、本実施の形態では、第一のタスク配置部31は、タスク配置処理(ステップS23〜S24)の後に、並列度がN+1となったか否かを判断する処理(ステップS25)を実行している。これとは別の構成として、第一のタスク配置部31は、タスク配置処理(ステップS23〜S24)の前に、並列度がN+1となったか否かを判断する処理(ステップS25)を実行してもよい。この場合、
図9を用いて説明した具体例の動作において、第一のタスク配置部31は、タスクHの配置処理の前の
図9Bの状態で、タスク配置処理を終了することになる。その場合、第二のタスク配置部12は、タスクH、タスクIを含む残りのタスク群について、コア割当を決定することによりタスク配置を行えばよい。
【0152】
次に、本発明の第3の実施の形態の効果について述べる。
【0153】
本発明の第3の実施の形態としてのタスク配置装置は、AMP方式かつタスクスケジューリングが動的に変動するマルチコアシステム向けに、コアアイドル時間を削減して対象システムの性能をさらに向上させることができる。
【0154】
その理由は、第一のタスク配置部が、タスクセットの実行開始以降、並列度がN+1になるまでをスケジューリング想定可能期間として、スケジューリング想定可能期間内に実行されうるタスク群について、既に配置したタスクのスケジューリングを考慮して配置対象タスクのコア割当およびスケジューリングを決定するタスク配置を行うからである。そして、第二のタスク配置部が、残りのタスク群については、スケジューリングを考慮する必要なく、コア割当を決定するからである。
【0155】
これにより、本実施の形態としてのタスク配置装置は、タスクセットの実行開始以降、並列度がN+1となるまでのスケジューリング想定可能期間内においては、配置対象タスクが、既に配置されたタスクと同時実行可能であれば、できる限り同時実行されるようコアを割り当てることができる。このように、本実施の形態としてのタスク配置装置は、既に配置したタスクのスケジューリングに基づいて配置対象タスクに適切なコア割当を決定することにより、N個のコアから構成されるマルチコアシステム向けに、タスクセットの開始時刻以降、N個のコアによりN個のタスクが同時に実行されるまでの期間を可能な限り短縮したタスク配置を得ることが可能になる。このため、本実施の形態としてのタスク配置装置は、AMP方式のマルチコアシステム向けに、実行開始から早い段階で複数コアを活用する配置を行うことにより、コアアイドル時間を削減し、対象システムの性能を向上させることとなる。
【0156】
(第4の実施の形態)
次に、本発明の第4の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第2の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【0157】
まず、本発明の第4の実施の形態としてのタスク配置装置4の機能ブロック構成を、
図10に示す。
図10において、タスク配置装置4は、本発明の第2の実施の形態としてのタスク配置装置2に対して、第一のタスク配置部21に替えて第一のタスク配置部41を備え、さらに、タスクソート実行部47を備える点が異なる。また、第一のタスク配置部41は、配置対象タスク保持部22と、制御部44と、スケジューリング情報保持部25と、配置結果保持部26とを有する。
【0158】
タスクソート実行部47は、タスクセットに含まれるタスクを、タスクセットパラメータに基づいてソートすることにより、各タスクに順序付けを行う。例えば、タスクソート実行部は、タスクセットパラメータに含まれるタスク間の依存関係に基づいて、どのタスクもその依存先のタスクより前になるよう並び替えるトポロジカルソートを行ってもよい。ここで、トポロジカルソートとは、無閉路有向グラフにおいて、どのノード(本発明におけるタスク)もその出力辺(本発明による依存)の先のノードより前になるよう各ノードを順序付けして並べるソート手法である。このソート手法では、ノードの並びが得られる。したがって、後述の制御部44は、その並び順に配置対象タスクを選択していけばよい。なお、トポロジカルソートを実現するアルゴリズムとしては、例えば、公知文献「Kahn, A. B. (1962), “Topological sorting of large networks”, Communications of the ACM 5 (11): 558-562」に記載のアルゴリズムや、深さ優先探索を用いるアルゴリズムが適用可能である。
【0159】
制御部44は、配置対象タスクとして、タスクソート実行部47によって順序付けされたタスクを先頭から順に選択する。また、制御部44は、配置対象タスクの各コアにおける仮のスケジューリング情報に基づいて、最終的なコア割当を決定する。具体的には、制御部44は、各コアにおいて、配置対象タスクを仮に配置した場合の仮のスケジューリング情報を算出する。そして、制御部44は、各コアにおける仮のスケジューリング情報に基づいて、配置対象タスクの最終的なコア割当を決定する。例えば、制御部44は、最も早い仮の実行開始時刻が算出されたコアに、配置対象タスクを割り当ててもよい。
【0160】
以上のように構成されたタスク配置装置4の動作について、
図11を参照して説明する。なお、ここでは、タスクソート実行部47は、トポロジカルソートを行うものとする。
【0161】
まず、タスクセットパラメータ取得部13は、対象アプリケーションを構成するタスクの集合であるタスクセットについて、タスクセットパラメータを取得する(ステップS1)。
【0162】
次に、タスクソート実行部47は、タスクセットに含まれるタスクを、タスクセットパラメータに基づいてトポロジカルソートする(ステップS31)。なお、タスクソート実行部47は、対象のタスクセットのデータが既にトポロジカルソートされた順序で並んでいることがわかっている場合には、この処理を省略可能である。
【0163】
次に、制御部44は、配置対象タスクを選択し、選択した配置対象タスクを示す情報を配置対象タスク保持部22に保持させる(ステップS32)。例えば、制御部44は、初回にこのステップを実行する場合、トポロジカルソートされた先頭タスクを配置対象タスクとして選択すればよい。また、制御部44は、2回目以降にこのステップを実行する場合、トポロジカルソートされたタスクの並びにおいて前回選択した配置対象タスクの次のタスクを新たな配置対象タスクとして選択すればよい。
【0164】
次に、制御部44は、配置対象タスクの各コアにおける仮のスケジューリング情報を算出する。そして、制御部44は、算出した仮のスケジューリング情報を、スケジューリング情報保持部25に保持させる(ステップS33)。具体的には、制御部44は、各コアにおいて、配置対象タスクを仮に配置した場合の仮の実行開始時刻と仮の実行終了時刻とを算出する。例えば、制御部44は、配置対象タスクの仮の実行開始時刻として、配置対象タスクの依存元タスクの実行終了時刻を採用してもよい。あるいは、制御部44は、配置対象タスクの依存元タスクが、配置対象タスクを仮に配置するコアとは別のコアに配置されている場合、依存元タスクの実行終了時刻に対してコア間依存によるオーバヘッドを加味した時刻を、仮の実行開始時刻としてもよい。また、制御部44は、各コアにおける仮の実行開始時刻に、配置対象タスクの実行所要時間を加算することにより、各コアにおける仮の実行終了時刻を算出すればよい。
【0165】
次に、制御部44は、ステップS33で算出した仮のスケジューリング情報に基づいて、配置対象タスクの最終的なコア割当を決定する(ステップS34)。例えば、制御部44は、最も早い仮の実行開始時刻が算出されたコアに、最終的なコア割当を決定してもよい。また、同一の実行開始時刻にスケジューリングされうる複数のコアがある場合には、制御部44は、最もコア番号の小さいものにコア割当を決定してもよい。
【0166】
なお、制御部44は、ステップS34において、配置対象タスクの最終的なコア割当を決定した後、ステップS33で算出した仮のスケジューリング情報のうち、決定されたコア以外の他のコアに関するものを破棄してもよい。
【0167】
次に、制御部44は、並列度がNになった否かを判断する(ステップS35)。つまり、制御部44は、いずれのタスクも実行していないコアが残っていないかを判断する。
【0168】
ステップS35において、並列度がNになっていない(すなわち、いずれのタスクも実行していないコアが残っている)と判断した場合、第一のタスク配置部41は、次の配置対象タスクを選択するステップS32からの処理を繰り返す。
【0169】
一方、ステップS35において、並列度がNになった(すなわち、いずれのタスクも実行していないコアが残っていない)と判断した場合、第一のタスク配置部41は、タスク配置を終了する。そして、第二のタスク配置部12は、本発明の第1の実施の形態におけるステップS5〜S6と同様に、第一のタスク配置部41によって配置されなかった残りのタスク群についてタスク配置を行い、タスクセットに含まれる各タスクのコア割当を出力する。
【0170】
以上で、タスク配置装置4は動作を終了する。
【0171】
なお、ここで示した処理手順は一例であり、タスク配置装置4は、上述の各ステップの一部の順序を、本発明の趣旨を逸脱しない範囲で、適宜入れ替えて実行してもよい。また、タスク配置装置4は、上述の各ステップの一部を、本発明の趣旨を逸脱しない範囲で、適宜並列実行してもよい。
【0172】
次に、タスク配置装置4の動作の具体例について、
図12を参照して説明する。ここでは、本発明の第2の実施の形態としてのタスク配置装置2の動作の具体例の説明において用いた
図6のタスクセットを用いて、タスク配置装置4の動作の具体例を説明する。
【0173】
まず、タスクソート実行部47は、
図6に示したタスクセットのタスクをトポロジカルソートすることにより、タスクA〜タスクJの順に順序付けされたタスクの並びを表す情報を出力する(ステップS31)。制御部44は、これにより、タスクA〜タスクJの順に配置対象タスクとして選択し(ステップS32)、タスク配置処理を行っていく。
【0174】
<タスクAの配置処理>
まず、
図12Aを用いて、タスクAの配置処理について説明する。
【0175】
ここでは、まず、制御部44は、タスクAの各コアにおける仮のスケジューリング情報を算出する。この場合、どのコアにおいても、タスクAの仮の実行開始時刻は、タスクセット実行開始時刻であり、仮の実行終了時刻は、タスクセット実行開始時刻にタスクAの実行所要時間を加えた時刻となる(ステップS33)。
【0176】
そこで、制御部44は、最もコア番号の小さいコア0に、タスクAを配置する(ステップS34)。ここで、制御部44は、コア1およびコア2について算出したタスクAの仮のスケジューリング情報を破棄してもよい。
【0177】
次に、制御部44は、並列度は1であり、N=3になっていないと判断する(ステップS35でNo)。
【0178】
<タスクBの配置処理>
次に、
図12Bを用いて、タスクBの配置処理について説明する。
【0179】
ここでは、まず、制御部44は、タスクBの各コアにおける仮のスケジューリング情報を算出する。この場合、タスクBはタスクAに依存しているため、どのコアにおいても、タスクBの仮の実行開始時刻は、タスクAの実行終了時刻であり、仮の実行終了時刻は、タスクBの仮の実行開始時刻にタスクBの実行所要時間を加えた時刻となる(ステップS33)。
【0180】
そこで、制御部44は、最もコア番号の小さいコア0に、タスクBを配置する(ステップS34)。ここで、制御部44は、コア1およびコア2について算出したタスクBの仮のスケジューリング情報を破棄してもよい。
【0181】
次に、制御部44は、並列度は1であり、N=3になっていないと判断する(ステップS35でNo)。
【0182】
<タスクCの配置処理>
次に、
図12Cを用いて、タスクCの配置処理について説明する。
【0183】
ここでは、まず、制御部44は、タスクCの各コアにおける仮のスケジューリング情報を算出する。この場合、タスクCはタスクAに依存しているが、コア0においては、タスクAの実行終了時刻にはタスクBが既に配置されている。このため、コア0におけるタスクCの仮の実行開始時刻は、タスクBの実行終了時刻となる。また、コア1〜コア2においては、タスクAの実行終了時刻に他のタスクが配置されていないため、タスクCの仮の実行開始時刻は、タスクAの実行終了時刻となる。また各コアにおけるタスクCの仮の実行終了時刻は、各タスクにおけるタスクCの仮の実行開始時刻にタスクCの実行所要時間をそれぞれ加えた時刻となる(ステップS33)。
【0184】
次に、制御部44は、最も早い仮の実行開始時刻が算出されたコア1〜コア2のうち、コア番号の小さいコア1に、タスクCを配置する(ステップS34)。ここで、制御部44は、コア0およびコア2について算出したタスクCの仮のスケジューリング情報を破棄してもよい。
【0185】
次に、制御部44は、並列度は2であり、N=3になっていないと判断する(ステップS35でNo)。
【0186】
<タスクDの配置処理>
次に、
図12Dを用いて、タスクDの配置処理について説明する。
【0187】
ここでは、まず、制御部44は、タスクDの各コアにおける仮のスケジューリング情報を算出する。この場合、タスクDはタスクBに依存しているため、どのコアにおいても、タスクDの仮の実行開始時刻は、タスクBの実行終了時刻であり、仮の実行終了時刻は、タスクBの仮の実行開始時刻にタスクBの実行所要時間を加えた時刻となる(ステップS33)。
【0188】
そこで、制御部44は、最もコア番号の小さいコア0に、タスクDを配置する(ステップS34)。ここで、制御部44は、コア1およびコア2について算出したタスクDの仮のスケジューリング情報を破棄してもよい。
【0189】
次に、制御部44は、並列度は1であり、N=3になっていないと判断する(ステップS35でNo)。
【0190】
<タスクEの配置処理>
次に、
図12eを用いて、タスクEの配置処理について説明する。
【0191】
ここでは、まず、制御部44は、タスクEの各コアにおける仮のスケジューリング情報を算出する。この場合、タスクEはタスクBに依存しているが、コア0においては、タスクBの実行終了時刻にはタスクDが既に配置されている。このため、コア0におけるタスクEの仮の実行開始時刻は、タスクDの実行終了時刻となる。また、コア1〜コア2においては、タスクBの実行終了時刻に他のタスクが配置されていないため、タスクEの仮の実行開始時刻は、タスクBの実行終了時刻となる。また各コアにおけるタスクEの仮の実行終了時刻は、各タスクにおけるタスクEの仮の実行開始時刻にタスクEの実行所要時間をそれぞれ加えた時刻となる(ステップS33)。
【0192】
次に、制御部44は、最も早い仮の実行開始時刻が算出されたコア1〜コア2のうち、コア番号の小さいコア1に、タスクEを配置する(ステップS34)。ここで、制御部44は、コア0およびコア2について算出したタスクEの仮のスケジューリング情報を破棄してもよい。
【0193】
次に、制御部44は、並列度は2であり、N=3になっていないと判断する(ステップS35でNo)。
【0194】
<タスクFの配置処理>
次に、
図12Fを用いて、タスクFの配置処理について説明する。
【0195】
ここでは、まず、制御部44は、タスクFの各コアにおける仮のスケジューリング情報を算出する。この場合、タスクFはタスクCに依存しているが、コア0においては、タスクCの実行終了時刻にはタスクBが既に配置され、続いてタスクDが配置されている。このため、コア0におけるタスクFの仮の実行開始時刻は、タスクDの実行終了時刻となる。また、コア1においては、タスクCの実行終了時刻に他のタスクが配置されていないものの、タスクCの実行終了時刻にタスクFの実行所要時間を加算した時刻以前にタスクEの実行が開始される配置が既に行われている。このため、コア1におけるタスクFの仮の実行開始時刻は、タスクEの実行終了時刻となる。また、コア2においては、タスクCの実行終了時刻に他のタスクが配置されていないため、タスクFの仮の実行開始時刻は、タスクCの実行終了時刻となる。また各コアにおけるタスクFの仮の実行終了時刻は、各タスクにおけるタスクFの仮の実行開始時刻にタスクFの実行所要時間をそれぞれ加えた時刻となる(ステップS33)。
【0196】
次に、制御部44は、最も早い仮の実行開始時刻が算出されたコア2に、タスクFを配置する(ステップS34)。ここで、制御部44は、コア0およびコア1について算出したタスクEの仮のスケジューリング情報を破棄してもよい。
【0197】
次に、制御部44は、並列度は3であり、N=3になったと判断する(ステップS35でYes)。
【0198】
これにより、実行開始から早い段階で3つのコアを活用する配置が得られ、
図12Gに示す配置となった。ここで、第一のタスク配置部41は、タスク配置処理を終了する。
【0199】
その後、第二のタスク配置部12は、
図6におけるタスクG、タスクH、タスクI、タスクJを含むタスクセットの残りのタスク群について、コア割当を決定することによりタスク配置を行う。なお、第二のタスク配置部12は、前述のように、スケジューリング決定を必須としない配置手法を用いることが可能である。
【0200】
なお、この具体例では、依存関係がある2つのタスクが別コアに配置された場合と、同一コアに配置された場合との実行開始時刻に差がないものとして説明を行った。コア間通信のオーバヘッドを考慮する場合、第一のタスク配置部41は、配置対象タスクの実行開始時刻として、コア間通信のオーバヘッドを加味した時刻を設定すればよい。
【0201】
また、制御部44は、ステップS35において、並列度がNとなった時点で第一のタスク配置部41におけるタスク配置処理を完了しているが、並列度がN+1となった時点でタスク配置処理を完了してもよい。
【0202】
また、本実施の形態において、対象とするタスクセットのタスクが既にトポロジカルソートされた場合に相当する順序になっていることがわかっている場合には、タスク配置装置は、タスクソート実行部を備えていなくてもよい。
【0203】
次に、本発明の第4の実施の形態の効果について述べる。
【0204】
本発明の第4の実施の形態としてのタスク配置装置は、AMP方式かつタスクスケジューリングが動的に変動するマルチコアシステム向けに、コアアイドル時間を削減して対象システムの性能をさらに向上させることができる。
【0205】
その理由は、タスクソート実行部が、タスクセットに含まれるタスクをタスクセットパラメータに基づいてあらかじめソートしておき、第一のタスク配置部が、ソートされたタスクを先頭から順に配置対象タスクとして選択していきながら、並列度がNになるまでをスケジューリング想定可能期間として、スケジューリング想定可能期間内に実行されうる配置対象タスクを各コアに配置した場合の仮のスケジューリングに基づいて、配置対象タスクのコア割当およびスケジューリングを決定するからである。そして、第二のタスク配置部が、残りのタスク群について、コア割当を決定するからである。
【0206】
これにより、本実施の形態としてのタスク配置装置は、タスクセットの実行開始以降、並列度がNとなるまでのスケジューリング想定可能期間内においては、タスクセットパラメータに基づきソートされた順のタスクについて、N個のコアのうち最も早くスケジューリングされうるコアを順次割り当てることができる。このように、本実施の形態としてのタスク配置装置は、配置対象タスクを各コアに配置した場合の仮の実行時刻に基づいて適切なコア割当を決定する。これにより、本実施の形態としてのタスク配置装置は、N個のコアから構成されるマルチコアシステム向けに、タスクセットの開始時刻以降、N個のコアによりN個のタスクが同時に実行されるまでの期間を可能な限り早くしたタスク配置を得ることが可能になる。このため、本実施の形態としてのタスク配置装置は、AMP方式のマルチコアシステム向けに、実行開始から早い段階で複数コアを活用する配置を行うことにより、コアアイドル時間を削減し、対象システムの性能を向上させることとなる。
【0207】
なお、上述した本発明の各実施の形態としてのタスク配置装置は、対象とするマルチコアシステムで実行されるタスクの全てをまとめて配置対象としなくてもよい。例えば、各実施の形態のタスク配置装置は、対象とするマルチコアシステムで実行されるタスクのうち、依存関係で繋がっている一連のタスク群を配置対象のタスクセットとして抽出してもよい。
【0208】
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明したタスク配置装置の動作を、本発明のコンピュータ・プログラムとしてコンピュータ装置の記憶装置(記憶媒体)に格納しておき、係るコンピュータ・プログラムを当該CPUが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコード或いは記憶媒体によって構成される。
【0209】
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
【0210】
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
【0211】
また、上述した各実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
N(Nは1以上の整数)個のプロセッサコアに固定的に配置される対象となるタスクの集合であるタスクセットであって、前記各プロセッサコア上でのタスクのスケジューリングが実行時に動的に制御されるタスクセットについて、前記タスク間の依存関係を表す情報と、前記各タスクの実行に要する実行所要時間とを少なくとも含むタスクセットパラメータを取得するタスクセットパラメータ取得部と、
前記タスクセットの実行開始以降の前記各プロセッサコアにおけるタスクのスケジューリングが事前に想定可能なスケジューリング想定可能期間を検出するとともに、前記タスクセットに含まれるタスクのうち、前記スケジューリング想定可能期間内に実行されうるタスクについて、前記タスクセットパラメータに基づくスケジューリングを考慮してコア割当を決定することによりタスク配置を行う第一のタスク配置部と、
前記タスクセットに含まれるタスクのうち、前記第一のタスク配置部によって配置されたタスク以外のタスクについて、前記タスクセットパラメータに基づくコア割当を決定することによりタスク配置を行う第二のタスク配置部と、
を備えたタスク配置装置。
(付記2)
前記第一のタスク配置部は、前記スケジューリング想定可能期間において次に配置対象とするタスクである配置対象タスクについて、既に配置した前記各タスクのスケジューリングに基づき該配置対象タスクが実行可能となりうるタスク配置検討時刻と前記タスクセットパラメータとに基づいて、該配置対象タスクのコア割当およびスケジューリングを決定するとともに、決定したコア割当およびスケジューリングに基づいて、前記配置対象タスクおよび前記タスク配置検討時刻を更新することを特徴とする付記1に記載のタスク配置装置。
(付記3)
前記タスクセットに含まれるタスクを、前記タスクセットパラメータに基づいてソートすることにより前記各タスクに順序付けを行うタスクソート実行部をさらに備え、
前記第一のタスク配置部は、前記タスクセットに含まれるタスクのうち、前記タスクソート実行部によって順序付けされた先頭のタスクから順に、前記スケジューリング想定可能期間内に実行されうるタスクを前記配置対象タスクとして順次選択していくことにより、選択した配置対象タスクについて、前記タスクセットパラメータに基づいてコア割当およびスケジューリングを順次決定していくことを特徴とする付記1または付記2に記載のタスク配置装置。
(付記4)
前記第一のタスク配置部は、前記順序付けされた先頭のタスクから順に、前記タスクセットパラメータおよび既に配置した前記各タスクのスケジューリングに基づいて、前記配置対象タスクを各プロセッサコアに配置した場合の仮のスケジューリングをそれぞれ算出し、算出した仮のスケジューリングに基づいて前記配置対象タスクのコア割当およびスケジューリングを決定することを特徴とする付記3に記載のタスク配置装置。
(付記5)
前記タスクソート実行部は、トポロジカルソートを用いて前記各タスクに順序付けを行うことを特徴とする付記3または付記4に記載のタスク配置装置。
(付記6)
前記第一のタスク配置部は、前記タスクセットの実行開始以降、並列度がNになるまでの期間を前記スケジューリング想定可能期間として検出することを特徴とする付記1から付記5のいずれか1つに記載のタスク配置装置。
(付記7)
前記第一のタスク配置部は、前記タスクセットの実行開始以降、並列度がN+1になるまでの期間を前記スケジューリング想定可能期間として検出することを特徴とする付記1から付記5のいずれか1つに記載のタスク配置装置。
(付記8)
N(Nは1以上の整数)個のプロセッサコアに固定的に配置される対象となるタスクの集合であるタスクセットであって、前記各プロセッサコア上でのタスクのスケジューリングが実行時に動的に制御されるタスクセットについて、前記タスク間の依存関係を表す情報と、前記各タスクの実行に要する実行所要時間とを少なくとも含むタスクセットパラメータを取得し、
前記タスクセットの実行開始以降の前記各プロセッサコアにおけるタスクのスケジューリングが事前に想定可能なスケジューリング想定可能期間を検出するとともに、前記タスクセットに含まれるタスクのうち、前記スケジューリング想定可能期間内に実行されうるタスクについて、前記タスクセットパラメータに基づくスケジューリングを考慮してコア割当を決定する第一のタスク配置を行い、
前記タスクセットに含まれるタスクのうち、前記第一のタスク配置において配置されたタスク以外のタスクについて、前記タスクセットパラメータに基づくコア割当を決定する第二のタスク配置を行う、タスク配置方法。
(付記9)
前記第一のタスク配置を行う際に、前記スケジューリング想定可能期間において次に配置対象とするタスクである配置対象タスクについて、既に配置した前記各タスクのスケジューリングに基づき該配置対象タスクが実行可能となりうるタスク配置検討時刻と前記タスクセットパラメータとに基づいて、該配置対象タスクのコア割当およびスケジューリングを決定するとともに、決定したコア割当およびスケジューリングに基づいて、前記配置対象タスクおよび前記タスク配置検討時刻を更新することを特徴とする付記8に記載のタスク配置方法。
(付記10)
前記タスクセットに含まれるタスクを、前記タスクセットパラメータに基づいてソートすることにより前記各タスクに順序付けを行い、
前記第一のタスク配置を行う際に、前記タスクセットに含まれるタスクのうち、順序付けされた先頭のタスクから順に、前記スケジューリング想定可能期間内に実行されうるタスクを前記配置対象タスクとして順次選択していくことにより、選択した配置対象タスクについて、前記タスクセットパラメータに基づいてコア割当およびスケジューリングを順次決定していくことを特徴とする付記8または付記9に記載のタスク配置方法。
(付記11)
N(Nは1以上の整数)個のプロセッサコアに固定的に配置される対象となるタスクの集合であるタスクセットであって、前記各プロセッサコア上でのタスクのスケジューリングが実行時に動的に制御されるタスクセットについて、前記タスク間の依存関係を表す情報と、前記各タスクの実行に要する実行所要時間とを少なくとも含むタスクセットパラメータを取得するタスクセットパラメータ取得ステップと、
前記タスクセットの実行開始以降の前記各プロセッサコアにおけるタスクのスケジューリングが事前に想定可能なスケジューリング想定可能期間を検出するとともに、前記タスクセットに含まれるタスクのうち、前記スケジューリング想定可能期間内に実行されうるタスクについて、前記タスクセットパラメータに基づくスケジューリングを考慮してコア割当を決定する第一のタスク配置ステップと、
前記タスクセットに含まれるタスクのうち、前記第一のタスク配置において配置されたタスク以外のタスクについて、前記タスクセットパラメータに基づくコア割当を決定する第二のタスク配置ステップと、
をコンピュータ装置に実行させるコンピュータ・プログラム。
(付記12)
前記第一のタスク配置ステップにおいて、前記スケジューリング想定可能期間において次に配置対象とするタスクである配置対象タスクについて、既に配置した前記各タスクのスケジューリングに基づき該配置対象タスクが実行可能となりうるタスク配置検討時刻と前記タスクセットパラメータとに基づいて、該配置対象タスクのコア割当およびスケジューリングを決定するとともに、決定したコア割当およびスケジューリングに基づいて、前記配置対象タスクおよび前記タスク配置検討時刻を更新することを特徴とする付記11に記載のコンピュータ・プログラム。
(付記13)
前記タスクセットに含まれるタスクを、前記タスクセットパラメータに基づいてソートすることにより前記各タスクに順序付けを行うタスクソートステップを前記コンピュータ装置にさらに実行させ、
前記第一のタスク配置ステップにおいて、前記タスクセットに含まれるタスクのうち、順序付けされた先頭のタスクから順に、前記スケジューリング想定可能期間内に実行されうるタスクを前記配置対象タスクとして順次選択していくことにより、選択した配置対象タスクについて、前記タスクセットパラメータに基づいてコア割当およびスケジューリングを順次決定していくことを特徴とする付記11または付記12に記載のコンピュータ・プログラム。
【0212】
以上、実施形態(及び実施例)を参照して本願発明を説明したが、本願発明は上記実施形態(及び実施例)に限定されものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる
この出願は、2012年4月18日に出願された日本出願特願2012−094392を基礎とする優先権を主張し、その開示の全てをここに取り込む。
符号の説明
1、2、3、4 タスク配置装置
11、21、31、41 第一のタスク配置部
12 第二のタスク配置部
13 タスクセットパラメータ取得部
22 配置対象タスク保持部
23 タスク配置検討時刻保持部
24、34、44 制御部
25 スケジューリング情報保持部
26 配置結果保持部
47 タスクソート実行部
1001 CPU
1002 RAM
1003 ROM
1004 記憶装置