(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025162423
(43)【公開日】2025-10-27
(54)【発明の名称】設計システム、設計/実行システム、設計方法、及び設計/実行方法
(51)【国際特許分類】
   G06F   9/38        20180101AFI20251020BHJP        
   G06F   9/52        20060101ALI20251020BHJP        
【FI】
G06F9/38 310J 
G06F9/52 150A 
【審査請求】未請求
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2024065715
(22)【出願日】2024-04-15
(71)【出願人】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入  健
(72)【発明者】
【氏名】草地  嵩
(72)【発明者】
【氏名】木村  充宏
(72)【発明者】
【氏名】時岡  大悟
【テーマコード(参考)】
5B013
【Fターム(参考)】
5B013AA18
5B013DD05
(57)【要約】
【課題】ビデオパイプラインの実行時にハードウェアアクセラレータの利用率を高めることができる設計システム等を提供する。
【解決手段】本開示の設計システムは、ビデオパイプライン(Video Pipeline)を設計するための設計システムであって、パイプライングラフ(Pipeline Graph)、パイプライングラフに含まれる複数のジョブに関するジョブ情報、パイプライングラフに含まれる複数のハードウェアアクセラレータに関するハードウェアアクセラレータ情報、及び最適化条件に基づいて、複数のジョブの複数のハードウェアアクセラレータへの割り当てと、複数のジョブの実行順序と、複数のジョブの各々の実行タイミングとの組み合わせの候補のリストを作成する最適化部と、最適化部で作成した組み合わせの候補のリストをユーザに対して出力する結果出力部と、を備える。
【選択図】
図1
 
【特許請求の範囲】
【請求項1】
  ビデオパイプライン(Video Pipeline)を設計するための設計システムであって、
  パイプライングラフ(Pipeline Graph)、前記パイプライングラフに含まれる複数のジョブに関するジョブ情報、前記パイプライングラフに含まれる複数のハードウェアアクセラレータに関するハードウェアアクセラレータ情報、及び最適化条件に基づいて、前記複数のジョブの前記複数のハードウェアアクセラレータへの割り当てと、前記複数のジョブの実行順序と、前記複数のジョブの各々の実行タイミングとの組み合わせの候補のリストを作成する最適化部と、
  前記最適化部で作成した前記組み合わせの候補のリストをユーザに対して出力する結果出力部と、
を備える、
  設計システム。
【請求項2】
  前記最適化条件は、前記組み合わせをどのように最適化するかを示す目的関数と、前記組み合わせにおける制約条件とを含む、
  請求項1に記載の設計システム。
【請求項3】
  前記目的関数は、前記複数のジョブのうち1つ以上のジョブが割り当てられる前記ハードウェアアクセラレータの数を最小化するための関数である、
  請求項2に記載の設計システム。
【請求項4】
  前記ビデオパイプラインは、カメラの画像処理に利用されるものであり、
  前記制約条件は、
  前記複数のジョブの各々が、対応するジョブが実行可能な前記複数のハードウェアアクセラレータのいずれか1つだけに割り当てられること、
  前記複数のハードウェアアクセラレータの各々で実行される1つ以上のジョブの実行時間の合計が前記カメラのフレームレートよりも短いこと、及び
  前記複数のジョブが前記複数のハードウェアアクセラレータに割り当てられ、前記複数のジョブの実行順序及び実行タイミングが決定されたとき、最初に実行される1つ以上のジョブの開始時刻から最後に終了する1つ以上のジョブの終了時刻までの時間間隔が遅延上限値よりも小さいこと、
  を含む、
  請求項2に記載の設計システム。
【請求項5】
  前記遅延上限値は、前記ユーザにより予め設定可能である、
  請求項4に記載の設計システム。
【請求項6】
  前記ユーザの入力情報に基づいて、前記パイプライングラフを作成するグラフエディタ部をさらに備え、
  前記グラフエディタ部は、前記作成したパイプライングラフを前記最適化部に出力する、
  請求項1に記載の設計システム。
【請求項7】
  前記結果出力部は、前記出力した組み合わせの候補のリストからの前記ユーザの選択を受け付ける、
  請求項1に記載の設計システム。
【請求項8】
  前記最適化部は、
  前記複数のジョブのうち1つ以上のジョブが割り当てられる前記ハードウェアアクセラレータの数を最小化させるように、前記組み合わせを最適化するHWA割当最適化部と、
  前記複数のジョブのすべての実行を完了するまでの時間を最短化させるように、前記組み合わせを最適化するスケジュール最適化部と、
  を含む、
  請求項1に記載の設計システム。
【請求項9】
  前記ハードウェアアクセラレータ情報は、前記ハードウェアアクセラレータの種類と、前記種類毎の前記ハードウェアアクセラレータの数とを含む、
  請求項1に記載の設計システム。
【請求項10】
  ビデオパイプライン(Video Pipeline)を設計して、実行するための設計/実行システムであって、
  パイプライングラフ(Pipeline Graph)、前記パイプライングラフに含まれる複数のジョブに関するジョブ情報、前記パイプライングラフに含まれる複数のハードウェアアクセラレータに関するハードウェアアクセラレータ情報、及び最適化条件に基づいて、前記複数のジョブの前記複数のハードウェアアクセラレータへの割り当てと、前記複数のジョブの実行順序と、前記複数のジョブの各々の実行タイミングとの組み合わせの候補のリストを作成し、優先度テーブルに基づいて、前記組み合わせの候補のリストから1つの組み合わせを選択する最適化部と、
  前記最適化部で選択した前記1つの組み合わせを外部に出力する結果出力部と、
  前記結果出力部から出力された前記1つの組み合わせに基づいて、前記ビデオパイプラインを実行するパイプライン実行部と、
を備える、
  設計/実行システム。
【請求項11】
  前記最適化部は、前記優先度テーブルに基づいて、前記組み合わせの候補のリストにおける前記組み合わせの候補を並べ替え、
  前記結果出力部は、前記最適化部により並び替えられた前記組み合わせの候補のリストをユーザ及び前記パイプライン実行部に対して出力する、
  請求項10に記載の設計/実行システム。
【請求項12】
  前記設計/実行システムは、車両に搭載されるものであり、
  前記パイプライン実行部は、
  前記1つの組み合わせに基づいて、前記ビデオパイプラインを実行する実行部と、
  前記実行部で実行される前記ビデオパイプラインに基づいて、前記車両に搭載される半導体装置を制御する半導体装置制御部と、
  前記車両の状態及び走行状況に関する情報を取得して、前記車両の状況を判断する状況判断部と、
  を含む、
  請求項10に記載の設計/実行システム。
【請求項13】
  前記状況判断部は、前記車両の現在の状況が予め設定した1つ以上の設定状況のいずれかであるか否かを判断し、
  前記状況判断部により、前記車両の現在の状況が前記1つ以上の設定状況のいずれかであると判断した場合には、前記実行部は、
    前記判断した設定状況に対応する前記組み合わせの候補のリストを前記最適化部から取得し、
    前記優先度テーブルにおける前記判断した設定状況に対応した設定基準にしたがって、前記取得した組み合わせの候補のリストから最適な組み合わせを選択し、
    前記最適な組み合わせに対応するビデオパイプラインと、実行中の前記ビデオパイプラインとを比較し、
    前記ビデオパイプライン同士が一致しない場合には、前記最適な組み合わせに対応するビデオパイプラインに変更して実行する、
  請求項12に記載の設計/実行システム。
【請求項14】
  前記実行部は、前記最適な組み合わせに対応するビデオパイプラインに変更して実行する場合には、前記半導体装置の設定値の変更を前記半導体装置制御部に指示する、
  請求項13に記載の設計/実行システム。
【請求項15】
  前記優先度テーブルには、前記ユーザにより設定可能な複数の要素に対する優先度の設定値が保持されており、
  前記複数の要素は、前記パイプライングラフの前記複数のジョブを実行した際の総実行時間、前記複数のジョブのいずれかを実行する前記ハードウェアアクセラレータの数、又は消費電力の少なくとも1つを含む、
  請求項14に記載の設計/実行システム。
【請求項16】
  前記最適化条件は、前記組み合わせをどのように最適化するかを示す目的関数と、前記組み合わせにおける制約条件とを含む、
  請求項10に記載の設計/実行システム。
【請求項17】
  前記目的関数は、前記複数のジョブのうち1つ以上のジョブが割り当てられる前記ハードウェアアクセラレータの数を最小化するための関数である、
  請求項16に記載の設計/実行システム。
【請求項18】
  ビデオパイプライン(Video Pipeline)を設計するための設計方法であって、
  パイプライングラフ(Pipeline Graph)を受け付け、
  前記パイプライングラフ、前記パイプライングラフに含まれる複数のジョブに関するジョブ情報、前記パイプライングラフに含まれる複数のハードウェアアクセラレータに関するハードウェアアクセラレータ情報、及び最適化条件に基づいて、前記複数のジョブの前記複数のハードウェアアクセラレータへの割り当てと、前記複数のジョブの実行順序と、前記複数のジョブの各々の実行タイミングとの組み合わせの候補のリストを作成し、
  前記作成した前記組み合わせの候補のリストをユーザに対して出力する、
  設計方法。
【請求項19】
  ビデオパイプライン(Video Pipeline)を設計して、実行するための設計/実行方法であって、
  パイプライングラフ(Pipeline Graph)を受け付け、
  前記パイプライングラフ、前記パイプライングラフに含まれる複数のジョブに関するジョブ情報、前記パイプライングラフに含まれる複数のハードウェアアクセラレータに関するハードウェアアクセラレータ情報、及び最適化条件に基づいて、前記複数のジョブの前記複数のハードウェアアクセラレータへの割り当てと、前記複数のジョブの実行順序と、前記複数のジョブの各々の実行タイミングとの組み合わせの候補のリストを作成し、優先度テーブルに基づいて、前記組み合わせの候補のリストから1つの組み合わせを選択し、
  前記選択した1つの組み合わせを外部に出力し、
  前記出力した1つの組み合わせに基づいて、前記ビデオパイプラインを実行する、
  設計/実行方法。
【発明の詳細な説明】
【技術分野】
【0001】
  本発明は、設計システム、設計/実行システム、設計方法、及び設計/実行方法に関する。
【背景技術】
【0002】
  複数のハードウェアアクセラレータ(HWA:Hardware Accelerator)を使用した画像処理機能が実用化されている。このような画像処理機能を実現するためには、ハードウェアアクセラレータの組み合わせや実行順序などを設計し、実行する仕組みが必要となる。この仕組みは、ビデオパイプライン(Video Pipeline)と呼ばれる。
【0003】
  この仕組みとして、例えば、非特許文献1には、多くの仕事をさまざまな制約のもとで繰り返し実行する場合に、時間などの目的関数に基づいて、最適な処理の実行順序や実行タイミングを決定する最適化問題を解く技術・手法が開示されている。
【先行技術文献】
【非特許文献】
【0004】
               【非特許文献1】Thomas Kampmeyer著  「Cyclic Scheduling Problems」  2006年
             
【発明の概要】
【発明が解決しようとする課題】
【0005】
  非特許文献1の手法では、それぞれが1つのジョブを示す複数のノードを実行順にエッジ(枝)で繋いだグラフ構造を入力データとして使用する。各ノードの実行順は、それらの先行関係(例えば、あるジョブが完了しないと他のジョブを実行することができない関係等)に依存する。最適化のパラメータとしては、先行関係に加えて、各ジョブを実行するリソース(ハードウェアアクセラレータ)の種類や数、各ジョブの処理時間(ジョブの実行時間ともいう)等が挙げられる。非特許文献1の手法では、これらのパラメータに基づいて、各ジョブの実行順序や実行タイミングを決定し、ジョブの実行スケジュールを得ることができる。
【0006】
  ビデオパイプラインに非特許文献1の手法を適用した場合には、各ハードウェアアクセラレータにジョブが割り当てられ、そのジョブの開始タイミングも決められることになる。この場合、複数のハードウェアアクセラレータを用いて、処理時間の最適化(最小化)を行うことができるものの、各ハードウェアアクセラレータでは、あるジョブの実行後から次のジョブの実行開始までの待ち時間が発生してしまう。すなわち、複数のハードウェアアクセラレータ全体の利用率(稼働率)が低下してしまうという問題があった。
【0007】
  このように、利用率が低い状態、すなわち、各ハードウェアアクセラレータの待ち時間が多い状態というのは、他のアプリケーションを動かす余裕があるにもかかわらず、ハードウェアアクセラレータが利用されていないという課題にも至る。
【0008】
  その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0009】
  一実施の形態によれば、本開示にかかる設計システムは、ビデオパイプライン(Video Pipeline)を設計するための設計システムである。この設計システムは、
  パイプライングラフ(Pipeline Graph)、前記パイプライングラフに含まれる複数のジョブに関するジョブ情報、前記パイプライングラフに含まれる複数のハードウェアアクセラレータに関するハードウェアアクセラレータ情報、及び最適化条件に基づいて、前記複数のジョブの前記複数のハードウェアアクセラレータへの割り当てと、前記複数のジョブの実行順序と、前記複数のジョブの各々の実行タイミングとの組み合わせの候補のリストを作成する最適化部と、
  前記最適化部で作成した前記組み合わせの候補のリストをユーザに対して出力する結果出力部と、
を備える。
【0010】
  一実施の形態によれば、本開示にかかる設計/実行システムは、ビデオパイプライン(Video Pipeline)を設計して、実行するための設計/実行システムである。この設計/実行システムは、
  パイプライングラフ(Pipeline Graph)、前記パイプライングラフに含まれる複数のジョブに関するジョブ情報、前記パイプライングラフに含まれる複数のハードウェアアクセラレータに関するハードウェアアクセラレータ情報、及び最適化条件に基づいて、前記複数のジョブの前記複数のハードウェアアクセラレータへの割り当てと、前記複数のジョブの実行順序と、前記複数のジョブの各々の実行タイミングとの組み合わせの候補のリストを作成し、優先度テーブルに基づいて、前記組み合わせの候補のリストから1つの組み合わせを選択する最適化部と、
  前記最適化部で選択した前記1つの組み合わせを外部に出力する結果出力部と、
  前記結果出力部から出力された前記1つの組み合わせに基づいて、前記ビデオパイプラインを実行するパイプライン実行部と、
を備える。
【0011】
  一実施の形態によれば、本開示にかかる設計方法は、ビデオパイプライン(Video Pipeline)を設計するための設計方法である。この設計方法では、
  パイプライングラフ(Pipeline Graph)を受け付け、
  前記パイプライングラフ、前記パイプライングラフに含まれる複数のジョブに関するジョブ情報、前記パイプライングラフに含まれる複数のハードウェアアクセラレータに関するハードウェアアクセラレータ情報、及び最適化条件に基づいて、前記複数のジョブの前記複数のハードウェアアクセラレータへの割り当てと、前記複数のジョブの実行順序と、前記複数のジョブの各々の実行タイミングとの組み合わせの候補のリストを作成し、
  前記作成した前記組み合わせの候補のリストをユーザに対して出力する。
【0012】
  一実施の形態によれば、本開示にかかる設計/実行方法は、ビデオパイプライン(Video Pipeline)を設計して、実行するための設計/実行方法である。この設計/実行方法では、
  パイプライングラフ(Pipeline Graph)を受け付け、
  前記パイプライングラフ(Pipeline Graph)、前記パイプライングラフに含まれる複数のジョブに関するジョブ情報、前記パイプライングラフに含まれる複数のハードウェアアクセラレータに関するハードウェアアクセラレータ情報、及び最適化条件に基づいて、前記複数のジョブの前記複数のハードウェアアクセラレータへの割り当てと、前記複数のジョブの実行順序と、前記複数のジョブの各々の実行タイミングとの組み合わせの候補のリストを作成し、優先度テーブルに基づいて、前記組み合わせの候補のリストから1つの組み合わせを選択し、
  前記選択した1つの組み合わせを外部に出力し、
  前記出力した1つの組み合わせに基づいて、前記ビデオパイプラインを実行する。
【発明の効果】
【0013】
  本開示によれば、ビデオパイプラインの実行時にハードウェアアクセラレータの利用率を高めることができる設計システム、設計/実行システム、設計方法、設計/実行方法、及びプログラムを提供することができる。
【図面の簡単な説明】
【0014】
            【
図1】
図1は、本開示の実施の形態1にかかる設計システムのブロック図である。
 
            【
図2】
図2は、
図1に示すグラフエディタ部により生成されるパイプライングラフの一例を示す図である。
 
            【
図3】
図3は、フレームの取り逃しが発生するハードウェアアクセラレータの割り当て例を示す図である。
 
            【
図4】
図4は、ハードウェアアクセラレータの割り当て方法による遅延の変化例を示す図である。
 
            【
図5】
図5は、
図1に示す設計システムにより実行される最適化処理の一例を示すフローチャートである。
 
            【
図6】
図6は、
図1に示す最適化部へ入力されるパタメータの一例を示す図である。
 
            【
図7】
図7は、制約条件C1を満たすような候補のリストの一例を示す図である。
 
            【
図8】
図8は、
図7に示すリストが制約条件C2を満たすか否かを示す図である。
 
            【
図9】
図9は、
図1に示す最適化部から出力される情報を示す図である。
 
            【
図10】
図10は、本開示の実施の形態2にかかる設計/実行システムのブロック図である。
 
            
            【
図12】
図12は、車載アプリケーションにおける車両の状況と優先度テーブルの設定例を示す表である。
 
            【
図13】
図13は、
図10に示す設計システムにより実行される最適化処理の一例を示すフローチャートである。
 
            
          
【発明を実施するための形態】
【0015】
  以下、図面を参照しつつ、実施の形態について説明する。なお、図面は簡略的なものであるので、この図面の記載を根拠として実施の形態の技術的範囲を狭く解釈してはならない。また、同一又は類似の要素には、同一の符号を付し、重複する説明は省略する。
【0016】
  以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明する。ただし、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【0017】
  さらに、以下の実施の形態において、その構成要素(動作ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
【0018】
  <本開示における課題の検討>
  本開示の設計システム及び設計/実行システムについての実施の形態を説明する前に、本開示が想定する課題について簡単に説明する。ここでは、必要に応じて、下記実施の形態1で説明する
図2も参照する。
 
【0019】
  本開示の設計システム及び設計/実行システムは、
図2に示すようなビデオパイプライン用のパイプライングラフの設計や実行に関するものであり、例えば、自動車等の車両の車載カメラ等、何らかの画像処理を必要とする撮像装置が取り込んだ画像データを処理するためのシステムである。
 
【0020】
  ここで、パイプライングラフは、複数のジョブ(Job)の各々がどのような制約(例えば、先行関係)を受け、どのような順序で実行されるかを示すグラフである。先行関係とは、あるジョブが他のジョブを実行するときに先んじて完了しなければならないという関係を示す。例えば、
図2の例では、先行関係として、ジョブJob2を完了しないと、ジョブJob3を実行することができないこと等を示している。
 
【0021】
  このようなビデオパイプラインの従来の最適化では、通常、非特許文献1の技術を利用して、複数のジョブの総実行時間を減らすような処理(実行時間の最小化)が想定されていた。この場合、各ジョブは、いずれかのハードウェアアクセラレータ上で実行される処理を示し、先行関係とは、ビデオパイプライン内で処理されている画像データの出力側と入力側の関係とみなすことができる。
【0022】
  このような従来の最適化では、ジョブの割り当て方法に応じて、各ハードウェアアクセラレータが待機している時間が発生し、この待機時間の削減を考慮した最適化を行うことができない。すなわち、ビデオパイプライン実行時におけるハードウェアアクセラレータの利用率が低いという問題があった。
【0023】
  特に、多くのアプリケーションを実行している車載のSoC(System on a Chip)のハードウェアアクセラレータの利用率が低い場合、すなわち、ハードウェアアクセラレータの待ち時間が多い場合には、他のアプリケーションを動かす余裕があるにもかかわらず、ハードウェアアクセラレータを有効に利用することができないという課題が発生する。
【0024】
  本開示の発明者は、ハードウェアアクセラレータ性能を最大限引き出すために、各ジョブに使用すべきハードウェアアクセラレータの変更を許容した最適化手法を検討した。そして、本開示の発明者は、ユーザが各ジョブに対してハードウェアアクセラレータのチャンネルを指定せずとも、最適なチャンネルの割り当てと、複数のジョブの実行順序及び実行タイミングとを決定するアルゴリズムにより、ハードウェアアクセラレータ全体の利用率を高めることができ、使用しないハードウェアアクセラレータを他のアプリケーションに割り当てることもできる本開示に至った。
【0025】
  (実施の形態1)
  以下、
図1~
図9を参照して、本開示の実施の形態1にかかる設計システムについて説明する。本実施の形態の設計システムは、ユーザにより設定された条件に基づいて、パイプライングラフを作成し、特に、ハードウェアアクセラレータの割り当ての最適化を行うものである。本開示では、設計システムは、車載カメラ(以下、カメラと略す場合もある)の画像処理に用いられるパイプライングラフを作成する場合について詳細に説明する。
 
【0026】
  また、この設計システムは、例えば、1つ以上のジョブが割り当てられるハードウェアアクセラレータの数が少ない順番で、ハードウェアアクセラレータの割り当て候補のリストをユーザに出力するものである。ここで、この割り当て候補のリストは、複数のジョブの複数のハードウェアアクセラレータへの割り当てと、複数のジョブの実行順序と、複数のジョブの各々の実行タイミングとの組み合わせの候補のリストである。ユーザは、このリストから1つの組み合わせを選択して設定することができる。
【0027】
  <設計システムの構成>
  まず、本実施の形態にかかる設計システムの構成を説明する。
図1は、本開示の実施の形態1にかかる設計システム1のブロック図である。
図1に示すように、設計システム1は、グラフエディタ部10と、最適化部20と、結果出力部30とを備える。
 
【0028】
  グラフエディタ部10は、ユーザの入力情報に基づいて、上述のようなパイプライングラフを作成するように構成される。ユーザは、グラフエディタ部10に対して、例えば、パイプライングラフにおける各ジョブの処理内容を定義するとともに、各ジョブの処理時間、各ジョブに使用すべきハードウェアアクセラレータの種類、及び、複数のジョブの先行関係を設定する。グラフエディタ部10は、これらの定義や設定に基づいて、パイプライングラフを作成し、作成したパイプライングラフを最適化部20に出力する。
【0029】
  なお、ユーザが各ジョブの処理時間を入力していない場合には、グラフエディタ部10は、その処理内容から処理時間を推定したり、あるいは、実行シミュレーションによる予測結果を利用したりしてもよい。
【0030】
  また、設計システム1は、グラフエディタ部10を設けなくてもよい。この場合、ユーザは、上記のような作業を図示しない外部装置に対して行い、設計システム1は、この外部装置からパイプライングラフを受け取ってもよい。
【0031】
  ここで、最適化部20の入力となるパイプライングラフについて説明する。
図2は、
図1に示すグラフエディタ部10により生成されるパイプライングラフの一例を示す図である。
図2において、各ひし形は、グラフ構造のノードであり、各ジョブを示している。また、ジョブ間の先行関係は、矢印により示している。
 
【0032】
  図2に示す例では、以下のように処理が行われる。ジョブJob1は、カメラのジョブであり、処理時間が30m秒である。ジョブJob1が完了すると、ジョブJob2とジョブJob4が実行可能になる。また、ジョブJob2及びジョブJob4は、ハードウェアアクセラレータHWA1の2つのチャンネルch0、ch1にそれぞれ割り当てられ、ジョブJob3及びジョブJob5は、ハードウェアアクセラレータHWA2の2つのチャンネルch0、ch1に割り当てられる。ジョブJob2が完了すると、ジョブJob3が実行可能となり、ジョブJob4が完了すると、ジョブJob5が実行可能となる。ジョブJob2、Job3の処理時間は、10+30=40m秒であり、ジョブJob4、Job5の処理時間は、20+20=40m秒であり、2系統は、同じ処理時間となる。最後に、ジョブJob3とジョブJob5の両方が完了すると、ジョブJob6が実行可能となり、ジョブJob6が完了すると、一連の処理が完了する。一連の処理の処理時間は、30+40+30=100m秒となる。
 
【0033】
  図1の説明に戻る。最適化部20は、HWA(ハードウェアアクセラレータ)割当最適化部21と、スケジュール最適化部22とを含む。なお、スケジュール最適化部22は、複数のジョブの総実行時間を減らす最適化処理を行うものであり、本開示に特有のものではない。そのため、その詳細な説明を省略する。すなわち、設計システム1は、スケジュール最適化部22を設けなくてもよい。以下、HWA割当最適化部21についての説明においても、最適化部20と称する場合もある。
 
【0034】
  最適化部20のHWA割当最適化部21には、グラフエディタ部10から受け取ったパイプライングラフと、パイプライングラフに含まれる複数のジョブに関するジョブ情報と、複数のハードウェアアクセラレータに関するハードウェアアクセラレータ情報と、最適化条件とが入力される。最適化部20は、これらに基づいて、複数のジョブの複数のハードウェアアクセラレータへの割り当てと、複数のジョブの実行順序と、複数のジョブの各々の実行タイミングとの組み合わせの候補のリストを作成(決定)するように構成される。
【0035】
  ここで、最適化条件は、上記組み合わせをどのように最適化するかを示す目的関数と、上記組み合わせにおける制約条件とを少なくとも含む。本例では、目的関数は、パイプライングラフにおいて、複数のジョブのうち1つ以上のジョブが割り当てられるハードウェアアクセラレータの数を最小化するための関数である。
【0036】
  また、制約条件は、3つの制約条件C1、C2、及びC3を含む。制約条件C1は、「すべてのジョブは、そのジョブを実行可能なハードウェアアクセラレータに1つだけ割り当てられる」という条件である。これは、ハードウェアアクセラレータで実行されるジョブは、特定のハードウェアアクセラレータでしか処理することができず、周期的に実行されるビデオパイプラインの1周期内において、ジョブは、1度しか実行されてはならないためである。
【0037】
  制約条件C2は、「あるハードウェアアクセラレータで実行されるジョブの実行時間の合計は入力となるカメラのフレームレートより短い」という条件である。ここで、各ハードウェアアクセラレータは、ジョブを1つずつしか実行することができず、複数のジョブが割り当てられている場合には、実行中のジョブを完了した後に、次のジョブを実行するものである。そのため、割り当てられた複数のジョブの実行時間の合計がカメラの入力間隔(フレームレート)よりも長い場合には、カメラから入力される画像を取り逃してしまう可能性があるためである。
【0038】
  ここで、
図3にフレームの取り逃しが発生する例を示す。
図3は、フレームの取り逃しが発生するハードウェアアクセラレータの割り当て例を示す図である。ここでは、2つのハードウェアアクセラレータHWA1、HWA2のチャンネルch0を用いて、ビデオパイプラインを実行している場合について示す。
 
【0039】
  図3(a)では、ハードウェアアクセラレータHWA1のチャンネルch0で実行される2つのジョブの実行時間の合計がカメラの入力間隔より長い。すると、ハードウェアアクセラレータHWA1は、4フレーム目(○のタイミング)でカメラから入力されたデータを取り逃してしまう。一方、
図3(b)では、ハードウェアアクセラレータHWA1のチャンネルch0で実行される2つのジョブの実行時間の合計がカメラの入力間隔より短い。そのため、ハードウェアアクセラレータHWA1は、カメラから入力されたデータを取り逃すことがない。
 
【0040】
  制約条件C3は、「各ジョブにハードウェアアクセラレータが割り当てられ、ジョブの実行順序・実行タイミングが決定されたとき、最初に実行される1つ以上のジョブの開始タイミングから最後に終了する1つ以上のジョブの終了時刻までの時間間隔は、遅延上限値より小さい」という条件である。なお、遅延上限値は、ユーザにより予め設定可能な値である。この時間間隔(以下、「遅延」とも称する)はリアルタイム性に直結するため、カメラの処理の安全面・機能面から、この遅延には上限値を定めることが必要である。
【0041】
  ここで、
図4にハードウェアアクセラレータの割り当て方法の変化による遅延の変化例を示す。
図4は、ハードウェアアクセラレータの割り当て方法による遅延の変化例を示す図である。ここでは、ハードウェアアクセラレータHWA1の2つのチャンネルch0、ch1と、ハードウェアアクセラレータHWA2のチャンネルch0とを用いて、ビデオパイプラインを実行している場合について示す。
 
【0042】
  図4(a)では、ハードウェアアクセラレータHWA1のチャンネルch1を使用しないように、複数のジョブが割り当てられている。ハードウェアアクセラレータHWA1のチャンネルch0に割り当てられたジョブと、ハードウェアアクセラレータHWA2のチャンネルch0に割り当てられたジョブとには、先行関係の制約がある。これにより、遅延が大きくなり、すべてのジョブの実行時間の合計が遅延上限値を超えてしまっている。
 
【0043】
  一方、
図4(b)の例では、
図4(a)でハードウェアアクセラレータHWA1のチャンネルch0に割り当てられた2つのジョブに先行関係の制約がないことを条件に、ハードウェアアクセラレータHWA1のチャンネルch0、ch1に2つのジョブを振り分ける。すると、ハードウェアアクセラレータHWA1のチャンネルch0に割り当てられた2つのジョブの実行タイミングが早くなる。これにより、遅延を小さくすることができ(本例では、遅延がない)、すべてのジョブを遅延上限値以内に実行可能なことが分かる。
 
【0044】
  結果出力部30は、最適化部20で作成した組み合わせの候補のリストを最適化部20から受け付け、この組み合わせの候補のリストを候補リストとしてユーザに対して出力するように構成される。結果出力部30は、候補リスト内において、各組み合わせの候補を実行したときの遅延や利用率に関する情報もユーザに対して出力するように構成される。なお、結果出力部30は、例えば、液晶ディスプレイなどの表示装置であればよい。
【0045】
  また、結果出力部30は、ユーザに対して出力した組み合わせの候補のリストから1つの候補を選択するためのユーザの選択を受け付けるように構成される。ユーザは、上記3つの制約条件C1、C2、及びC3を満たす1以上の候補を確認して、その中から1つの候補を選択すればよい。なお、結果出力部30は、ユーザにより選択された組み合わせに関する情報を図示しないビデオパイプライン実行装置等に出力すればよい。
【0046】
  <設計システムの動作>
  次に、本実施の形態にかかる設計システム1の動作について説明する。ここでは、グラフエディタ部10が
図2に示すパイプライングラフを作成した後、最適化部20がジョブ実行のスケジュールを最適化する最適化処理について説明する。なお、この最適化処理の後、結果出力部30は、候補リストをユーザに対して出力(提示)することとなる。
図5は、
図1に示す設計システム1により実行される最適化処理の一例を示すフローチャートである。
 
【0047】
  設計システム1が最適化処理を開始すると、最適化部20は、グラフエディタ部10により作成されたパイプライングラフと、最適化条件とを受け付ける(ステップS1)。上述のように、最適化条件には、ハードウェアアクセラレータに関する条件(以下、HWA条件ともいう)や遅延上限値が含まれる。なお、HWA条件は、このビデオパイプラインを実行するデバイス環境に基づき、ユーザがその実行環境に存在するハードウェアアクセラレータの最大数を含む。ステップS1の入力パラメータを
図6に示す。
図6は、
図1に示す最適化部20へ入力されるパタメータの一例を示す図である。本例では、HWA条件におけるハードウェアアクセラレータの最大数は、2台の4チャンネルとなる。
 
【0048】
  最適化部20は、ステップS1で受け付けた情報に基づいて、まず、条件1を満たすハードウェアアクセラレータ割り当てのすべての候補のリストを作成する(ステップS2)。最適化部20は、各ジョブをその各ジョブが割り当て可能なハードウェアアクセラレータに対して、HMA条件の最大数まで割り当てたときのすべての候補のリストを作成する。なお、同種のハードウェアアクセラレータは区別せず、すべてのジョブはいずれかのハードウェアアクセラレータに割り当てられるものとするが、ジョブが1つも割り当てられないハードウェアアクセラレータが存在してもよい。
【0049】
  ステップS2で作成された候補のリストを
図7に示す。
図7は、制約条件C1を満たすような候補のリストの一例を示す図である。ここでは、4つの候補である候補A、候補B、候補C、及び候補Dがリストアップされる。なお、ハードウェアアクセラレータやジョブの数が増えれば、候補の数も増えていく。そのため、この段階では、候補のリストを出力する必要はない。
 
【0050】
  次いで、最適化部20は、ステップS2で作成された候補のリストから制約条件C2を満たさない候補を除外する(ステップS3)。制約条件C2の確認を行う例を
図8に示す。
図8は、
図7に示すリストが制約条件C2を満たすか否かを示す図である。
図8から分かるように、候補Aと候補Bは、ハードウェアアクセラレータHWA2のチャンネルch0において、ジョブの実行時間の合計がカメラの入力間隔Tよりも長いので、制約条件C2を満たさない。これらの候補は、このタイミングで除外される。
 
【0051】
  次いで、最適化部20は、ステップS3で残った各候補に対して、非特許文献1の手法を用いて、周期の長さが最小となるジョブの実行順序や実行タイミングを決定する(ステップS4)。
【0052】
  次いで、最適化部20は、ステップS4で決定されたジョブの実行順序や実行タイミングに基づいて、各候補における遅延を演算する。そして、最適化部20は、各候補における遅延が遅延上限値よりも大きいか否かを判定する。最適化部20は、遅延が遅延上限値よりも大きい候補があれば、その候補は制約条件C3を満たしていないので、このタイミングでその候補を除外する(ステップS5)。なお、本例では、ステップS5では、いずれの候補も除外されない。
【0053】
  次いで、最適化部20は、ステップS5で残った候補のリストの各候補に対して、1つ以上のジョブが割り当てられるハードウェアアクセラレータの数を求めるとともに、遅延及び消費電力の推定・予測を行う(ステップS6)。これらのデータは、結果出力部30によりユーザに対して出力されればよい。
【0054】
  次いで、最適化部20は、ステップS6で求めたハードウェアアクセラレータの数に基づいて、その数が小さい順に、候補のリスト内の候補を並べ直す、すなわち、ハードウェアアクセラレータの数で組み合わせの候補をソートする(ステップS7)。
【0055】
  最後に、最適化部20は、ソートした候補のリストを結果出力部30に出力して(ステップS8)、この最適化処理を終了する。
【0056】
  最適化部20による以上の最適化処理の結果として、
図9に示す各制約条件を満たす候補のリストが得られる。
図9は、
図1に示す最適化部20から出力される情報を示す図である。結果出力部30は、
図9に示す情報を図示しない表示装置に表示させることにより、組み合わせの候補のリストをユーザに対して出力(提示)することとなる。
 
【0057】
  なお、
図9に示すように、組み合わせの候補のリストから1つを選択するユーザに対して、選択の判断を容易にするために、各種パラメータも表示される。各種パラメータとしては、例えば、遅延(すべてのジョブの実行が完了するまでの許容時間)、ハードウェアアクセラレータの利用率、消費電力などのパラメータと、各処理の実行順序や実行タイミングを示すグラフ等を含めばよい。
 
【0058】
  このように、本実施の形態の設計システム1では、最適化部20は、ユーザに代わり、複数のジョブの複数のハードウェアアクセラレータへの割り当てを決定する。これにより、ユーザは、パイプライングラフを作成するだけで、最も利用率の高くなるハードウェアアクセラレータの割り当ての候補を容易に得ることができる。また、本実施の形態の設計システム1は、利用率だけでなく、遅延などの他のパラメータに対する重みづけした候補をリストとして提示してもよい。さらに、本実施の形態の設計システム1は、ユーザが重み付けすべきパラメータを選択可能に構成してもよい。これにより、ユーザは、より容易にシステム要件に合わせた最適な候補を選択することができる。
【0059】
  以上説明したように、本実施の形態の設計システム1は、ビデオパイプライン(Video Pipeline)を設計するための設計システムであって、最適化部20と、結果出力部30とを少なくとも備える。そして、最適化部20は、パイプライングラフ、ジョブ情報、ハードウェアアクセラレータ情報、及び最適化条件に基づいて、複数のジョブの複数のハードウェアアクセラレータへの割り当てと、複数のジョブの実行順序と、各ジョブの実行タイミングとの組み合わせの候補のリストを作成するように構成される。また、結果出力部30は、最適化部20で作成した組み合わせの候補のリストをユーザに対して出力するように構成される。設計システム1をこのように構成したことにより、ユーザは、最適化条件を満たす複数のスケジュールの候補を確認することができ、所望に応じて、最適な候補を選択することができる。これにより、ビデオパイプラインの実行時にハードウェアアクセラレータの利用率を高めることができる。
【0060】
  ここで、最適化条件は、組み合わせをどのように最適化するかを示す目的関数と、組み合わせにおける制約条件とを含んでもよい。また、目的関数は、複数のジョブのうち1つ以上のジョブが割り当てられるハードウェアアクセラレータの数を最小化するための関数であればよい。設計システム1をこのように構成したことにより、ビデオパイプラインの実行時に使用しないハードウェアアクセラレータが存在することになり、この使用しないハードウェアアクセラレータを他のアプリケーションに割り当てることができる。
【0061】
  また、本実施の形態の設計方法は、ビデオパイプライン(Video Pipeline)を設計するための設計方法である。設計方法は、パイプライングラフを受け付け、パイプライングラフ、ジョブ情報、ハードウェアアクセラレータ情報、及び最適化条件に基づいて、複数のジョブの複数のハードウェアアクセラレータへの割り当てと、複数のジョブの実行順序と、各ジョブの実行タイミングとの組み合わせの候補のリストを作成し、作成した組み合わせの候補のリストをユーザに対して出力するように構成される。設計方法をこのように構成したことにより、上述の設計システム1と同様の効果を奏することができる。
【0062】
  (実施の形態2)
  次に、
図10~
図14を参照して、本開示の実施の形態2にかかる設計/実行システムについて説明する。本実施の形態の設計/実行システムは、実施の形態1にかかる設計システム1に類似する設計システムと、設計したビデオパイプラインを実行する実行システムとなるパイプライン実行部とを備えるものである。なお、本実施の形態の設計/実行システムは、例えば、自動車などの車両に搭載されるものである。
 
【0063】
  <設計/実行システムの構成>
  まず、本実施の形態にかかる設計/実行システムの構成を説明する。
図10は、本開示の実施の形態2にかかる設計/実行システム100のブロック図である。
図10に示すように、設計/実行システム100は、設計システム2と、パイプライン実行部50とを備える。
 
【0064】
  本実施の形態にかかる設計システム2は、最適化部20が候補選択部23をさらに含む点と、優先度テーブル40を設けた点とで、実施の形態1にかかる設計システム1とは異なる。すなわち、最適化部20は、HWA割当最適化部21と、スケジュール最適化部22と、候補選択部23とを含む。
【0065】
  実施の形態1と同様に、HWA割当最適化部21は、グラフエディタ部10で作成したパイプライングラフと、ユーザ入力情報とに基づいて、複数のジョブの複数のハードウェアアクセラレータへの割り当てと、複数のジョブの実行順序と、複数のジョブの各々の実行タイミングとの組み合わせの候補のリストを作成(決定)するように構成される。
【0066】
  HWA割当最適化部21は、作成した組み合わせの候補のリストを候補選択部23に出力する。候補選択部23は、優先度テーブル40に基づいて、組み合わせの候補のリストから1つの組み合わせを選択するように構成される。すなわち、候補選択部23は、HWA割当最適化部21により作成した組み合わせの候補のリストと、優先度テーブル40とを用いて、各設定値の優先度に基づくように、あるいは、外部からの指示に応じて、組み合わせの候補を自動的に並べ替え、最適な組み合わせの候補を選択する。候補選択部23は、自動的に並べ替えた組み合わせの候補のリストと、選択した1つの組み合わせとを結果出力部30とに出力する。
【0067】
  結果出力部30は、候補選択部23により選択された1つの組み合わせをパイプライン実行部50に出力するように構成される。また、結果出力部30は、優先度に応じて自動的に並べ替えられた組み合わせの候補のリストを候補リストとしてユーザ及びパイプライン実行部50に対して出力するように構成される。なお、パイプライン実行部50がこの候補リストから1つの組み合わせを選択して、設定する場合には、結果出力部30は、この候補リストをユーザに対して出力しなくてもよい。
【0068】
  優先度テーブル40は、ユーザにより作成されるものであり、図示しない記憶部等に記憶されている。優先度テーブル40には、ユーザにより設定可能な複数の要素に対する優先度の設定値が保持されている。なお、ユーザにより作成された優先度テーブル40は、パイプライン実行部50に出力されてもよい。この場合、パイプライン実行部50は、図示しない記憶部に優先度テーブル40を記憶すればよい。
【0069】
  図11は、優先度テーブル40の一例を示す図である。
図11に示すように、優先度テーブル40には、複数の要素として、実施の形態1で説明した遅延、消費電力、ハードウェアアクセラレータの数等の少なくとも1つが含まれる。また、優先度テーブル40には、複数の要素として、複数のジョブを実行した際の総実行時間が含まれてもよい。
 
【0070】
  遅延の優先度では、優先度が高いほど低遅延であることを意味する。消費電力の優先度では、優先度が高いほど消費電力を削減させることを意味する。ハードウェアアクセラレータの数の優先度は、優先度が高いほど使用するハードウェアアクセラレータの数を減らすことを意味する。
【0071】
  ここで、優先度に影響を与える車両の内外の状況の例を説明する。1つの目の状況は、車両のバッテリ残量が基準よりも少なくなることである。この状態は、もう間もなくバッテリが切れてしまい、車両を動かすことができなくなる状態である。例えば、高速道路上でバッテリ切れによる意図しない停車は危険であるため、安全な場所に退避できるまでの間、車体を動かせる状態にする必要がある。
【0072】
  2つ目の状況は、車両の走行中に物体の接近を検出することである。この状態は、車両をそのまま走行させると、当該物体と接触する可能性がある状態である。そして、センサの精度にもよるが、検知した物体との接触までの時間が短いと想定される。そのため、物体との接触回避や検出を行うアプリケーションは、より高いリアルタイム性が必要となる。
【0073】
  なお、このような車両の状況に関する優先度テーブル40を設定するためのパラメータは、設定状況パラメータとして、パイプライン実行部50の図示しない記憶部に予め記憶されている。設定状況パラメータは、バッテリに関するパラメータや、物体の接近に関するパラメータに限らず、車両の状態や走行状況に関するパラメータ等を多く含んでもよい。
【0074】
  次に、車載アプリケーションにおける優先度テーブル40の設定例を説明する。
図12は、車載アプリケーションにおける車両の状況と優先度テーブル40の設定例を示す表である。
図12に示す例では、車載アプリケーションの例として、前方衝突警告と、交通標識認識とを示す。なお、車両の通常走行時には、
図11に示す優先度テーブル40の設定1が設定されている。
 
【0075】
  例えば、バッテリ残量が基準よりも少なくなった場合には、前方衝突警告と交通標識認識の両方とも、
図11に示す優先度テーブル40の設定3に設定すればよい。また、車両の走行中に物体の接近を検知した場合には、前方衝突警告では、優先度テーブル40の設定2に設定すればよく、交通標識認識では、優先度テーブル40の設定4に設定すればよい。なお、このような設定の変更は、パイプライン実行部50側からの指示に応じて、行われる。あるいは、パイプライン実行部50は、記憶部に記憶した優先度テーブル40又は候補リストに基づいて、決定システム2を介すことなく、このような設定変更をしてもよい。
 
【0076】
  パイプライン実行部50は、
図10に示すように、実行部51と、SoC制御部52と、状況判断部53とを備える。実行部51は、設計システム2から出力された最適な1つの組み合わせに基づいて、ビデオパイプラインを実行するように構成される。SoC制御部52は、実行部51で実行されるビデオパイプラインに基づいて、車両に搭載される図示しない半導体装置を制御するように構成される。状況判断部53は、車両の状態及び走行状況に関する情報を取得して、車両の状況を判断するように構成される。
 
【0077】
  また、状況判断部53は、車両の現在の状況が予め設定した設定状況(優先度テーブル40に保持)のいずれかであるか否かを判断するように構成される。そして、状況判断部53がいずれかの設定状況であると判断した場合には、実行部51は、判断した設定状況に対応する組み合わせの候補のリストを最適化部20から取得するように構成される。実行部51は、優先度テーブル40における判断した設定状況に対応した設定基準にしたがって、取得した組み合わせの候補のリストから最適な組み合わせを選択するように構成される。そして、実行部51は、最適な組み合わせに対応するビデオパイプラインと、実行中のビデオパイプラインとを比較し、ビデオパイプライン同士が一致しない場合には、最適な組み合わせに対応するビデオパイプラインに変更して実行するように構成される。
【0078】
  また、最適な組み合わせに対応するビデオパイプラインに変更して実行する場合には、実行部51は、半導体装置の設定値の変更をSoC制御部52に指示するように構成される。SoC制御部52は、この指示に従って、半導体装置の設定値を変更すればよい。
【0079】
  <設計/実行システムの動作>
  次に、本実施の形態にかかる設計/実行システム100の動作について説明する。ここでは、設計システム2により実行される最適化処理と、車両の状況変化に応じたパイプライン実行部50の状態の遷移とについて詳細に説明する。
【0080】
  まず、設計システム2により実行される最適化処理について説明する。
図13は、
図10に示す設計システム2により実行される最適化処理の一例を示すフローチャートである。
図13に示すフローチャートでは、実施の形態1の
図5に示すフローチャートと同様のステップには、同じステップ番号を付しており、その説明を省略する。
 
【0081】
  ステップS5までの処理で組み合わせの候補から制約条件を満たらない候補を除外し、遅延等のデータを取得すると(ステップS6)、最適化部20は、残った組み合わせの候補のリストを作成する(ステップS11)。
【0082】
  そして、最適化部20は、優先度テーブル40を参照して、組み合わせの候補のリストから車両の現在の状態における最適な組み合わせの候補を選択し(ステップS12)、選択した最適な組み合わせの候補をパイプライン実行部50に出力して(ステップS13)、この最適化処理を終了する。
【0083】
  なお、最適化部20は、優先度テーブル40に応じて、リスト内の組み合わせの候補を並び替えて、並び替えた組み合わせの候補のリストを作成し、パイプライン実行部50に出力して、この最適化処理を終了してもよい。
【0084】
  次に、車両の状況変化に応じたパイプライン実行部50の状態の遷移について説明する。
図14は、
図10に示すパイプライン実行部50における状態の遷移を示す図である。パイプライン実行部50は、パイプラインの実行を開始すると、その実行中において、状況判断部53は、車両に設けられている各種センサの検出結果を監視し続けるものである。
 
【0085】
  車両の内外における状況変化を検知すると(ステップS21)、状況判断部53は、その状況変化後の状況を判断し(ステップS22)、その結果を実行部51に出力する。実行部51は、状況判断の結果として得られた車両内外の状況に応じて、組み合わせの候補(すなわち、複数のビデオパイプラインの候補)を設計システム2から取得する(ステップS23)。
【0086】
  そして、実行部51は、車両内外の状況に合致したビデオパイプラインの候補を選択し、それらの適用度(例えば、適用すべき度合いを示す値)を算出し(ステップS24)、算出結果と優先度テーブル40とに基づいて、最適なビデオパイプラインを選択する(ステップS25)。
【0087】
  次いで、実行部51は、現在設定されているビデオパイプラインと、選択したビデオパイプラインとを比較する(ステップS26)。ビデオパイプラインが一致した場合には、設定の変更が不要であるため、実行部51は、この一連の処理を終了する。一方、ビデオパイプラインが一致していない場合には、設定の変更が必要となり、実行部51は、ビデオパイプライン変更の準備をする(ステップS27)。
【0088】
  ビデオパイプライン変更の準備をすると、実行部51は、SoC制御部52に対して、図示しないSoCの設定値を変更するように指示を出す(ステップS28)。この指示を受けると、SoC制御部52は、各SoCの設定値を変更し、各SoCの設定が完了すると、実行部51に通知する(ステップS29)。そして、実行部51は、新たな設定されたビデオパイプラインを実行することとなる。
【0089】
  以上説明したように、本実施の形態の設計/実行システム100は、ビデオパイプライン(Video Pipeline)を設計して、実行するための設計/実行システムであって、最適化部20と、結果出力部30と、パイプライン実行部50とを少なくとも備える。そして、最適化部20は、パイプライングラフ、ジョブ情報、ハードウェアアクセラレータ情報、及び最適化条件に基づいて、複数のジョブの複数のハードウェアアクセラレータへの割り当てと、複数のジョブの実行順序と、各ジョブの実行タイミングとの組み合わせの候補を作成するように構成される。また、最適化部20は、優先度テーブル40に基づいて、組み合わせの候補のリストから1つの組み合わせを選択するように構成される。そして、結果出力部30は、最適化部20で選択した1つの組み合わせを外部に出力するように構成される。また、パイプライン実行部50は、結果出力部30から出力された1つの組み合わせに基づいて、ビデオパイプラインを実行するように構成される。設計/実行システム100をこのように構成したことにより、ユーザの選択を排除して、より適した組み合わせに対応するビデオパイプラインを選択して実行することができる。
【0090】
  本実施の形態の設計/実行システム100では、優先度テーブル40に1つ以上の設定状況が設定されていてもよく、状況判断部53は、車両の現在の状況が予め設定した1つ以上の設定状況のいずれかであるか否かを判断すればよい。そして、状況判断部53の判断結果に基づいて、実行部51は、判断結果に適した設定に基づくビデオパイプラインを実行すればよい。このように、優先度テーブル40内に複数の設定状況を準備することにより、ユーザの手を介すことなく、自動で現在置かれている状況に応じた適切な組み合わせを出力することができる。これにより、ユーザは、パイプライングラフと、優先度テーブル40とを作成するのみで、実行するビデオパイプラインが最適なものであるか否かを判断する必要がなくなる。
【0091】
  また、本実施の形態の設計/実行方法は、ビデオパイプライン(Video Pipeline)を設計して、実行するための設計/実行方法である。設計/実行方法は、パイプライングラフを受け付け、パイプライングラフ、ジョブ情報、ハードウェアアクセラレータ情報、及び最適化条件に基づいて、複数のジョブの複数のハードウェアアクセラレータへの割り当てと、複数のジョブの実行順序と、各ジョブの実行タイミングとの組み合わせの候補を作成し、優先度テーブル40に基づいて、前記組み合わせの候補から1つの組み合わせを選択し、選択した1つの組み合わせを外部に出力し、出力した1つの組み合わせに基づいて、ビデオパイプラインを実行するように構成される。設計/実行方法をこのように構成したことにより、上述の設計/実行システム100と同様の効果を奏することができる。
【0092】
  以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【0093】
  さらに、本開示は、CPUにコンピュータプログラムを実行させることにより、設計システム1又は2が行う処理の一部又は全部を、実現することが可能である。
【0094】
  上述したプログラムは、コンピュータに読み込まれた場合に、実施の形態で説明された1又はそれ以上の機能をコンピュータに行わせるための命令群(又はソフトウェアコード)を含む。プログラムは、非一時的なコンピュータ可読媒体又は実体のある記憶媒体に格納されてもよい。限定ではなく例として、コンピュータ可読媒体又は実体のある記憶媒体は、RAM(Random-Access Memory)、ROM(Read-Only Memory)、フラッシュメモリ、SSD(Solid-State Drive)又はその他のメモリ技術、CD-ROM、DVD(Digital Versatile Disc)、Blu-ray(登録商標)ディスク又はその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又はその他の磁気ストレージデバイスを含む。プログラムは、一時的なコンピュータ可読媒体又は通信媒体上で送信されてもよい。限定ではなく例として、一時的なコンピュータ可読媒体又は通信媒体は、電気的、光学的、音響的、またはその他の形式の伝搬信号を含む。
【符号の説明】
【0095】
1、2  設計システム
10  グラフエディタ部
20  最適化部
21  HWA割当最適化部
22  スケジュール最適化部
23  候補選択部
30  結果出力部
40  優先度テーブル
50  パイプライン実行部
51  実行部
52  SoC制御部(半導体装置制御部)
53  状況判断部