JP2022175874A - プログラム実行装置、解析方法、実行方法 - Google Patents
プログラム実行装置、解析方法、実行方法 Download PDFInfo
- Publication number
- JP2022175874A JP2022175874A JP2021082635A JP2021082635A JP2022175874A JP 2022175874 A JP2022175874 A JP 2022175874A JP 2021082635 A JP2021082635 A JP 2021082635A JP 2021082635 A JP2021082635 A JP 2021082635A JP 2022175874 A JP2022175874 A JP 2022175874A
- Authority
- JP
- Japan
- Prior art keywords
- execution
- program
- parameter
- parameters
- execution pattern
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
- B60W40/00—Estimation or calculation of non-directly measurable driving parameters for road vehicle drive control systems not related to the control of a particular sub unit, e.g. by using mathematical models
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
- B60W60/00—Drive control systems specially adapted for autonomous road vehicles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Transportation (AREA)
- Mechanical Engineering (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Control Of Driving Devices And Active Controlling Of Vehicle (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【課題】プログラム実行時のパラメータに応じてプログラムの実行パターンを選択できる。【解決手段】プログラム実行装置は、プログラムに含まれるタスクを並列実行するプログラム実行装置であって、プログラムを実行する際のパラメータである実行時パラメータを取得する取得部と、実行時パラメータに対応する、タスクを実行するパターンである実行パターンの組み合わせの一覧である実行パターン情報を記憶する実行パターン情報記憶部と、実行パターン情報を参照し、取得部が取得した実行時パラメータに対応する実行パターンを選択し、選択した実行パターンにしたがってプログラムを実行する実行部と、を備える。【選択図】図1
Description
本発明は、プログラム実行装置、解析方法、および実行方法に関する。
演算部を複数備える演算装置は、プログラムを構成するタスクを並列に実行することでプログラムの実行時間を短縮できる。特許文献1には、1の実行条件及び前記実行条件下での処理を含むタスクを構成要素とするプログラムを記憶する記憶部と、前記プログラム中の前記タスクの前記実行条件の全ての条件下での処理時間を求めて前記処理時間の前記タスクごとの最長処理時間と最短処理時間との差の順に前記タスクを並べ、最も前記差が大きいタスクから所定数の前記タスクを変化タスクとし、前記変化タスク以外を固定タスクとして判別して前記記憶部に前記判別した結果を記憶する解析対象抽出部と、前記変化タスクに対しては、全ての実行条件ごとに当該変化タスクの処理時間を計算し、前記固定タスクに対しては、当該タスクの処理時間が最長となる実行条件での当該固定タスクの処理時間として計算して複数の演算処理装置を有する並列演算処理装置の並列化スケジュールの処理時間の計算を行うスケジューリング部と、前記並列化スケジュールの中で、最長処理時間が最短の前記並列化スケジュールを出力する出力部を備えた並列化スケジューリング装置が開示されている。
特許文献1に記載されている発明では、プログラムの実行時の条件が考慮されておらず画一的にプログラムが実行される。
本発明の第1の態様によるプログラム実行装置は、プログラムに含まれるタスクを並列実行するプログラム実行装置であって、前記プログラムを実行する際のパラメータである実行時パラメータを取得する取得部と、前記実行時パラメータに対応する、前記タスクを実行するパターンである実行パターンの組み合わせの一覧である実行パターン情報を記憶する実行パターン情報記憶部と、前記実行パターン情報を参照し、前記取得部が取得した前記実行時パラメータに対応する前記実行パターンを選択し、選択した前記実行パターンにしたがって前記プログラムを実行する実行部と、を備える。
本発明の第2の態様による解析方法は、プログラムを解析して依存関係を明らかにした複数のタスクに分割することと、キーパラメータと従属パラメータの組合せであるパラメータセットを複数含むパラメータ情報を読み込むことと、前記パラメータセットごとに、前記タスクのそれぞれの実行コストを算出することと、前記依存関係および前記実行コストに基づき、前記パラメータセットごとに前記タスクの実行パターンを算出することと、を含み、前記キーパラメータおよび前記従属パラメータは、前記プログラムに含まれる変数である。
本発明の第3の態様による実行方法は、プログラムに含まれるタスクを並列実行するプログラム実行装置が実行する実行方法であって、前記プログラムを実行する際のパラメータである実行時パラメータを取得することと、前記実行時パラメータに対応する、前記タスクを実行するパターンである実行パターンの組み合わせの一覧である実行パターン情報を読み取ることと、前記実行パターン情報を参照し、取得した前記実行時パラメータに対応する前記実行パターンを選択し、選択した前記実行パターンにしたがって前記プログラムを実行すること、とを含む。
本発明の第2の態様による解析方法は、プログラムを解析して依存関係を明らかにした複数のタスクに分割することと、キーパラメータと従属パラメータの組合せであるパラメータセットを複数含むパラメータ情報を読み込むことと、前記パラメータセットごとに、前記タスクのそれぞれの実行コストを算出することと、前記依存関係および前記実行コストに基づき、前記パラメータセットごとに前記タスクの実行パターンを算出することと、を含み、前記キーパラメータおよび前記従属パラメータは、前記プログラムに含まれる変数である。
本発明の第3の態様による実行方法は、プログラムに含まれるタスクを並列実行するプログラム実行装置が実行する実行方法であって、前記プログラムを実行する際のパラメータである実行時パラメータを取得することと、前記実行時パラメータに対応する、前記タスクを実行するパターンである実行パターンの組み合わせの一覧である実行パターン情報を読み取ることと、前記実行パターン情報を参照し、取得した前記実行時パラメータに対応する前記実行パターンを選択し、選択した前記実行パターンにしたがって前記プログラムを実行すること、とを含む。
本発明によれば、プログラム実行時のパラメータに応じてプログラムの実行パターンを選択できる。
―第1の実施の形態―
以下、図1~図16を参照して、プログラム実行装置の第1の実施の形態を説明する。本実施の形態では、画像処理プログラムが本システムの処理対象となる。なお本実施の形態では、プログラムのソースコードの例をC言語の文法で記載するが、どのようなプログラム言語を用いてもよい。
以下、図1~図16を参照して、プログラム実行装置の第1の実施の形態を説明する。本実施の形態では、画像処理プログラムが本システムの処理対象となる。なお本実施の形態では、プログラムのソースコードの例をC言語の文法で記載するが、どのようなプログラム言語を用いてもよい。
図1は、画像処理プログラムを実行する、プログラム実行システムS1の機能構成図である。プログラム実行システムS1には、解析装置2と、実行装置3と、が含まれる。実行装置3は自車両1に搭載され、自車両1には実行装置3の他にカメラ81も搭載される。カメラ81は、撮影して得られた画像(以下、「カメラ画像」と呼ぶ)を実行装置3に出力する。カメラ81は、自車両1の全周囲、すなわち360度を撮影できる。解析装置2は、タスク分割部21と、実行パターン生成部22と、コンパイラ26と、事前通信部28と、事前記憶部29とを備える。実行装置3は、入力部33と、環境情報取得部34と、実行部35と、実行通信部38と、実行記憶部39とを備える。
事前記憶部29には、パラメータ情報41と、実行コスト情報42と、実行パターン情報43と、ソースコード44と、画像処理プログラム45とが格納される。ただし解析装置2が後述する処理を実行する前に、事前記憶部29に格納されているのは、パラメータ情報41、およびソースコード44である。実行コスト情報42および実行パターン情報43は実行パターン生成部22により生成され、画像処理プログラム45はコンパイラ26により作成される。またソースコード44は、カメラ81が出力するカメラ画像から物体を認識するプログラムのソースコードである。
実行記憶部39には、画像処理プログラム45が格納される。事前記憶部29と実行記憶部39に格納される画像処理プログラム45は同一であり、解析装置2によって作成された画像処理プログラム45が実行装置3にコピーされる。このコピーには、事前通信部28および実行通信部38が用いられてもよいし、不図示の持ち運び可能な補助記憶装置を用いられてもよい。なお詳しくは後述するが、画像処理プログラム45にはパラメータ情報41が含まれている。
タスク分割部21は、ソースコード44を解析してマクロタスクグラフを作成する。実行パターン生成部22の処理は多岐にわたるので後に詳述する。コンパイラ26は、ソースコード44および後述するソースコードをコンパイルして画像処理プログラム45を生成する。事前通信部28は有線または無線により実行装置3と通信する通信モジュールである。事前記憶部29は、不揮発性の記憶装置である。
入力部33は、実行装置3を使用するユーザからの入力操作を受け付ける。入力部はたとえばボタンやタッチパネルであり、本実施の形態では自車両1の動作モードを指定する指示が指示される。自車両1の動作モードとは、たとえば高速道路を走行する高速走行モードや、所定の駐車位置に駐車する自動駐車モードなどである。環境情報取得部34は、カメラ81が撮影して得られた画像を取得するインタフェースである。実行部35は、2つの演算コアを有し、画像処理プログラム45を実行する。実行通信部38は、有線または無線により解析装置2と通信する通信モジュールである。実行記憶部39は、不揮発性の記憶装置である。
図2は、解析装置2および実行装置3のハードウエア構成を示す図であり、図2では解析装置2および実行装置3を代表するハードウエアを便宜的に「演算装置」と名付けている。演算装置9は、中央演算装置であるCPU91、読み出し専用の記憶装置であるROM92、および読み書き可能な記憶装置であるRAM93、通信装置94、および補助記憶装置95を備える。
CPU91がROM92に格納されるプログラムをRAM93に展開して実行することで後述する演算を行う。ただしこれらの演算は、CPU91、ROM92、およびRAM93の組み合わせの代わりに書き換え可能な論理回路であるFPGA(Field Programmable Gate Array)や特定用途向け集積回路であるASIC(Application Specific Integrated Circuit)により実現されてもよい。また演算装置9は、CPU91、ROM92、およびRAM93の組み合わせの代わりに、異なる構成の組み合わせ、たとえばCPU91、ROM92、RAM93とFPGAの組み合わせにより実現されてもよい。
通信装置94は、無線または有線により通信を行う通信モジュールである。通信装置94は、事前通信部28および実行通信部38を実現する。補助記憶装置95は不揮発性の記憶装置、たとえばハードディスクドライブやフラッシュメモリである。補助記憶装置95は、事前記憶部29および実行記憶部39を実現する。
図3は、パラメータ情報41の一例を示す図である。パラメータ情報41は複数のレコードから構成され、各レコードはセット名、キーパラメータ、および従属パラメータを含む。以下では、パラメータ情報41の各レコードを「パラメータセット」とも呼ぶ。そのためパラメータ情報41は、パラメータセットの情報を複数有するので、「パラメータセット情報」とも呼べる。セット名は、パラメータ情報41の各レコードを識別する識別子である。キーパラメータは、パラメータセットを選択する指針となるパラメータとパラメータ値の組合せである。従属パラメータは、計算を実行するコストの算出に用いられるパラメータとパラメータ値の組合せである。なお以下では、キーパラメータを「実行時パラメータ」と呼ぶことがある。
図3に示す例では、キーパラメータは「Mode」であることが示されている。また、このキーパラメータが「high_speed」の場合には1行目の「Set1」が選択され、「auto_park」の場合は2行目の「Set2」が選択されることが示されている。また、従属パラメータは「Set1」ではNが「2」、Vが「50」であり、「Set2」ではNが「8」、Vが「5」である。これらパラメータ情報41は、状況を想定して事前に作成される。具体例を説明する。
図4は、パラメータセットの想定例を説明する図であり、具体的には高速走行時と自動駐車時におけるカメラ映像を使った認識対象を示している。図4(a)は、高速走行時を示し、図4(b)は自動駐車時を示す。いずれの例でも認識処理を行う対象となる画像を撮影するカメラは、自車両1に搭載されている。まず高速走行時の例を説明する。
図4(a)では自車両1が高速で走行する前方に先行車両2aが存在し、自車両1の左に左側方区画線3aが、自車両1の右に右側方区画線3bが存在する。自車両1は高速に、たとえば時速「50」キロメートルで走行しているので速度「V」は「50」である。また、この状況では撮影画像から左右の区画線の最接近位置が認識できればよい。すなわちこの場合は、認識対象数Nが符号4aおよび4bの「2」個である。
図4(b)では自車両1が駐車枠に駐車を試みており、周囲には前方車両2cおよび後方車両2bが存在する。自車両は低速で、たとえば時速「5」キロメートルで走行しているので速度「V」は「5」である。また、自車両1が駐車する駐車枠の4隅と長辺の略中央(4d~4i)、前方車両2cの端部4j、および後方車両2bの端部4cの合計「8」が認識対象数「N」となる。このようにパラメータセットは、それぞれの状況を想定して従属パラメータがあらかじめ設定されている。
図5は、実行コスト情報42の一例を示す図である。実行コスト情報42には、タスクごと、およびパラメータセットごとの実行コストが示されている。図5に示す例では、実行コストは数値が大きいほどコストが高く、実行に長い時間を要することを意味する。
図6は、実行パターン情報43の一例を示す図である。実行パターン情報43には、パラメータセットごとのタスクの実行パターンが示されている。実行パターンとは、タスクの各コアへの割り振り、およびタスクの実行順序である。たとえばパラメータセット「Set1」は、コア1に「1,2,6,9,8,10」の順番にタスクを実行させ、コア2に「3,5,4,7」の順番にタスクを実行させることが示されている。なお図6に示すように、パラメータ情報41には記載がない、その他のケースにおける実行パターンも実行パターン情報43には含まれる。
図7、図10、図11は、解析装置2による処理を示すフローチャートである。以下に説明する各ステップの実行主体は、ステップS100およびステップS122を除いて実行パターン生成部22である。ステップS100では解析装置2のタスク分割部21は、ソースコード44を読み込んでタスク間の並列性を抽出したマクロタスクグラフを取得する。
図8はマクロタスクグラフを視覚的に示す図である。図8に示す例では、1~10の数字で示す各タスクの相関が示されており、タスク1の次にタスク2と3が並列実行できることが示されている。また、最後に示すタスク10はタスク7,8,9の全てが完了している場合に実行できることが示されている。
続くステップS101では実行パターン生成部22は、パラメータ情報41を読み込む。続くステップS102では、パラメータ情報41に記載されている全てのパラメータセットを対象にS102Eまでの処理を繰り返す。具体的には実行パターン生成部22は、パラメータ情報41に記載されている全てのパラメータセットを順番に処理対象とし、ステップS103~S106の処理を行う。
ステップS103では実行パターン生成部22は、処理対象のパラメータセットを用いて一時ソースコードを生成する。ここでは従属パラメータの値も用いられる。図9は、一時ソースコードの一例を示す図である。一時ソースコードは、ソースコード44と組み合わせて用いられるソースコードであり、変数に値が設定される。図9(a)に示す例は、「Set1」を用いる場合であり、図9(b)に示す例は、「Set2」を用いる場合である。いずれの場合も、キーパラメータおよび従属パラメータの値が変数として設定される。
続くステップS104では実行パターン生成部22は、ソースコード44およびステップS103において作成した一時ソースコードを用いて、処理対象のパラメータセットに対する各タスクのコストを算出し、実行コスト情報42に追記する。たとえば実行パターン生成部22は、一時ソースコードをソースコード44に統合してコンパイルおよびリンクを行い、生成したバイナリファイルを読み込んで実行し実行時間を計測する。実行パターン生成部22は必要に応じて処理対象のダミーデータを用意してもよく、実行時間の計測は1回だけでもよいし、複数回の平均値でもよい。
続くステップS105では実行パターン生成部22は、ステップS100において作成したマクロタスクグラフと、ステップS104において作成した実行コスト情報42とを用いて、処理対象のパラメータセットに対する実行パターンを作成する。具体的には実行パターン生成部22は、プログラムの実行時間が最短となるように、タスクを実行するコアおよび実行順番を決定する。
たとえば実行パターン生成部22は、依存関係にあるタスクの終了を待つための待ち時間の合計が最小になるように各タスクをコアへ割り当ててもよいし、ランダムに各タスクをコアに割り当てて実行時間が最小になる組合せを見つけてもよい。ステップS105の実行が完了すると実行パターン生成部22は、処理対象としていないパラメータセットが存在する場合は、処理対象のパラメータセットを変更してステップS103に戻り、全てのパラメータセットを処理対象とした場合はステップS106に進む。
ステップS106では実行パターン生成部22は、複数回実行したステップS105において作成したそれぞれの実行パターンを、実行パターン情報43として事前記憶部29に書き込む。続くステップS107では実行パターン生成部22は、実行パターン情報43のグループ化を行い、さらに続くステップS108では埋込処理を行い、図7に示す処理を終了する。ステップS107の詳細は図10を参照し、ステップS108の詳細は図11を参照して説明する。
図10は、図7のステップS107に示したグループ化処理の詳細を示すフローチャートである。図10ではまずステップS110において、実行パターン情報43から同一の実行パターンとなるパラメータセットを検索する。続くステップS111では実行パターン生成部22は、ステップS110において検索されたパラメータセットの組合せのそれぞれを対象にS111Eまでの処理を繰り返す。具体的には実行パターン生成部22は、検索された同一のパラメータセットを順番に処理対象とし、ステップS112の処理を行う。
ステップS112では実行パターン生成部22は、パラメータセットの集合和を新たなパラメータセットとして実行パターンをまとめる。たとえば図6に示す例において「Set1」と「Set2」におけるタスクのコアへの割り振り、および実行順序が同一であると仮定すると、キーパラメータを「Mode==high_speed OR Mode==auto_park」に変更し、2つのレコードを統合する。以上が図10に示す処理の説明である。
図11は、図7のステップS108に示した埋め込み処理の詳細を示すフローチャートである。まずステップS120では実行パターン生成部22は、各パターンにおける各コアの処理を関数化するソースコードを生成する。図12は、ステップS120における処理の一例を示すソースコードである。図12に示す例では、「pattern1_core1」という関数ではタスク1,2,6,9,8,10を順番に実行し、「pattern1_core2」という関数ではタスク3,5,4,7を順番に実行することが示されている。なお図12では、作図の都合により各タスクの処理をタスクの名称で表している。
続くステップS121では、動作パターンごとに実行する関数を設定するソースコードを生成する。図13はステップS121における処理の第1の例を示すソースコードであり、図14はステップS121における処理の第2の例を示すソースコードである。たとえば図13に記載されているように、switch文による制御を用いてキーパラメータの値に基づき整数値を取得し、その整数値をインデックスとして実行する関数を選択するソースコードを生成してもよい。また、図14に記載されているように、if文によりキーパラメータの値を特定して実行する関数を選択するソースコードを生成してもよい。図11に戻って説明を続ける。
続くステップS122では、ソースコード44およびステップS120およびS121において生成したソースコードを用いて画像処理プログラム45のビルドを行う。すなわち、ソースコード一式に対してコンパイルを行い、生成されたオブジェクトファイルに必要に応じてライブラリをリンクして画像処理プログラム45を生成して、図11に示す処理を終了する。すなわち画像処理プログラム45は、ソースコード44だけでなく、実行パターン情報43を用いて生成したソースコードも使って生成されているので、画像処理プログラム45には実行パターン情報43が含まれているとみなすことができる。
図15は、実行装置3の実行部35によるプログラム実行処理を示すフローチャートである。ステップS200では実行部35は、実行パターン情報43を取得する。ただし画像処理プログラム45には、実行パターン情報43が含まれているとみなすことができるので、実行部35が画像処理プログラム45を読み込むことで本ステップが実行されたとみなすことができる。続くステップS201では実行部35は、実行時パラメータを取得する。具体的には、ステップS200において読み込んだ実行パターン情報43におけるキーパラメータの値を取得する。本実施の形態では、入力部33に入力されるユーザによる自車両の動作モードの指定を読み込む。
続くステップS202では実行部35は、キーパラメータの値に基づき実行時パターンを選択する。たとえば図14の例では、変数「Mode」に代入されているキーパラメータの値に基づき、If文の分岐により関数を選択することで実行パターンを選択する。続くステップS203では実行部35は、ステップS202において選択した実行パターンで、物体認識処理のタスクを実行して図15に示す処理を終了する。
(動作例)
図16は、実行装置3による画像処理プログラム45の動作例を示す図である。図16の上部は高速走行の場合を示し、図16の下部は自動駐車の場合を示す。それぞれの場合において、実行パターンが固定のケースを上断に示し、実行パターンを状況により使い分けたケースを下断に示す。換言すると、本実施の形態における工夫を適用しない場合が上断であり、本実施の形態における工夫を適用する場合が下段である。いずれのグラフも横軸は時間である。
図16は、実行装置3による画像処理プログラム45の動作例を示す図である。図16の上部は高速走行の場合を示し、図16の下部は自動駐車の場合を示す。それぞれの場合において、実行パターンが固定のケースを上断に示し、実行パターンを状況により使い分けたケースを下断に示す。換言すると、本実施の形態における工夫を適用しない場合が上断であり、本実施の形態における工夫を適用する場合が下段である。いずれのグラフも横軸は時間である。
図16の上部および下部の上段は、実行パターンが同一なので、タスクのコアへの割り振り、およびタスクの実行順序は同一である。図16の上部および下部の下段は、動作モードにより実行パターンを切り替えているので、タスクのコアへの割り振り、およびタスクの実行順序が異なる。いずれの場合も、本発明を適用することによって処理時間を短縮できることが示されている。
なお、キーパラメータである動作モードに応じて実行パターンを切り替えてはいるが、解析装置2における各動作モードにおける各タスクの実行時間は、あらかじめ想定した従属パラメータを用いた予測にすぎない。そのため、実際の処理時間とは相違がある可能性は否定できず、いくらかの待ち時間が生じる可能性はある。しかし、図16の上部および下部の上段に示すように固定された実行パターンを用いる場合よりも、キーパラメータに応じた状況を想定して実行パターンを切り替えた方がプログラムの実行時間が短くなる蓋然性は非常に高く、処理時間を短縮する効果は得られる。
上述した第1の実施の形態によれば、次の作用効果が得られる。
(1)実行装置3は、画像処理プログラム45に含まれるタスクを並列実行する。実行装置3は、実行時パラメータである自車両1の動作モードを取得する取得部として機能する入力部33と、実行時パラメータに対応する、タスクを実行するパターンである実行パターンの組み合わせの一覧である実行パターン情報43を含む画像処理プログラム45を記憶する実行記憶部39と、実行パターン情報にしたがって、入力部33が取得した実行時パラメータに対応する実行パターンを選択し、選択した実行パターンにしたがってプログラムを実行する実行部35と、を備える。そのため、画像処理プログラム45を実行する際の実行時パラメータに応じてプログラムの実行パターンを選択できる。
(1)実行装置3は、画像処理プログラム45に含まれるタスクを並列実行する。実行装置3は、実行時パラメータである自車両1の動作モードを取得する取得部として機能する入力部33と、実行時パラメータに対応する、タスクを実行するパターンである実行パターンの組み合わせの一覧である実行パターン情報43を含む画像処理プログラム45を記憶する実行記憶部39と、実行パターン情報にしたがって、入力部33が取得した実行時パラメータに対応する実行パターンを選択し、選択した実行パターンにしたがってプログラムを実行する実行部35と、を備える。そのため、画像処理プログラム45を実行する際の実行時パラメータに応じてプログラムの実行パターンを選択できる。
(2)実行部35は、プログラムを実行するコアを複数備える。実行パターンとは、コアへのタスクの割り振り、およびタスクの実行順番である。そのため、実行時の状況にあわせてコアへのタスクの割り振りとタスクの実行順番を変更できる。
(3)実行装置3は自車両1に搭載される。実行時パラメータは車両の動作モードである。入力部33は、自車両1のユーザによる入力操作に基づき実行時パラメータを決定する。そのため、ユーザが指定する車両の動作モードに応じてプログラムのタスクの実行パターンを変更できる。
(4)解析装置2が実行する解析方法は、図7のステップS100に示したように、画像処理プログラム45のソースコードを解析して依存関係を明らかにした複数のタスクに分割することと、図7のステップS101に示したように、キーパラメータと従属パラメータの組合せであるパラメータセットを複数含むパラメータ情報を読み込むことと、ステップS104に示したように、パラメータセットごとに、タスクのそれぞれの実行コストを算出することと、ステップS105に示したように、依存関係および実行コストに基づき、パラメータセットごとにタスクの実行パターンを算出することと、を含む。キーパラメータおよび従属パラメータは、画像処理プログラム45のソースコードに含まれる変数である。
(5)解析装置2が実行する解析方法は、図11のステップS120、S122に示したように、算出したパラメータセットごとの実行パターンの情報をプログラムのソースコードと統合してコンパイルし、実行可能ファイルを生成することを含む。
(6)解析装置2が実行する解析方法は、図11のステップS120、S121、S122に示したように、算出したパラメータセットごとの実行パターンの情報と、プログラムのソースコードと、キーパラメータの情報と、を統合してコンパイルし、実行可能ファイルを生成することを含む。そのため、実行可能ファイルである画像処理プログラム45に必要な情報がすべて含まれており、ソースコードに統合されているので効率よく処理できる。
(7)キーパラメータはプログラムを実行する際の状況を判別するパラメータである。
従属パラメータは、キーパラメータにより判別される状況において測定される代表的なパラメータの値である。
従属パラメータは、キーパラメータにより判別される状況において測定される代表的なパラメータの値である。
(変形例1)
上述した第1の実施の形態では、実行パターン情報43は画像処理プログラム45のソースコードとして取り込まれ、いわばハードコーディングされた。しかし、実行パターンを変化させる対象のプログラムと実行パターン情報43とが個別に実行装置3に提供されてもよし、キーパラメータの情報だけが画像処理プログラム45とは個別に提供されてもよい。
上述した第1の実施の形態では、実行パターン情報43は画像処理プログラム45のソースコードとして取り込まれ、いわばハードコーディングされた。しかし、実行パターンを変化させる対象のプログラムと実行パターン情報43とが個別に実行装置3に提供されてもよし、キーパラメータの情報だけが画像処理プログラム45とは個別に提供されてもよい。
たとえば、実行パターンを変化させる対象のプログラムと実行パターン情報43とが個別に実行装置3に提供される場合には、次のような構成とすることができる。まず解析装置2は、実行時の引数により各コアで実行するタスクおよび順番を自由に変更できる画像処理プログラム45を生成する。そして解析装置2は、この画像処理プログラム45と、実行パターン情報43とを実行装置3に送付する。実行装置3は、実行パターン情報43およびキーパラメータの値を参照して実行パターンを決定し、決定した実行パターンにおける各コアに割り振るタスクとその順番を引数として画像処理プログラム45を実行する。
たとえばキーパラメータの情報だけが画像処理プログラム45とは個別に提供される場合には、次のような構成とすることができる。まず解析装置2は、実行パターンの情報を予め含めて引数に応じて実行パターンを切り替える画像処理プログラム45を生成し、画像処理プログラム45に含まれないキーパラメータの情報とともに実行装置3に送信する。実行装置は、画像処理プログラム45を実行する際には、まずキーパラメータの情報を用いて画像処理プログラム45に与える引数を決定し、決定した引数を与えて画像処理プログラム45を実行する。
本変形例によれば、多様な形態で実行パターン情報43を実行装置3に伝達し、実行パターンの切り替えに利用することができる。
(変形例2)
上述した第1の実施の形態では、実行装置3は2つの演算コアを有した。しかし実行装置3は3以上の演算コアを有してもよいし、演算コアの演算性能は非対称でもよい。また、図2に示したハードウエア構成例では、画像処理プログラム45を実行するハードウエアとしてCPUを示したが、コプロセッサ、アクセラレータ、FPGAなどを用いて画像処理プログラム45を実行してもよい。
上述した第1の実施の形態では、実行装置3は2つの演算コアを有した。しかし実行装置3は3以上の演算コアを有してもよいし、演算コアの演算性能は非対称でもよい。また、図2に示したハードウエア構成例では、画像処理プログラム45を実行するハードウエアとしてCPUを示したが、コプロセッサ、アクセラレータ、FPGAなどを用いて画像処理プログラム45を実行してもよい。
(変形例3)
上述した第1の実施の形態では、実行パターンは、コアへのタスクの割り振り、およびタスクの実行順番の両方を含んだ。しかし実行パターンは、コアへのタスクの割り振り、およびタスクの実行順番のいずれか一方でもよい。たとえば、実行パターンはコアへのタスクの割り振りだけを規定し、タスクの実行順番は実行時に決定させてもよい。
上述した第1の実施の形態では、実行パターンは、コアへのタスクの割り振り、およびタスクの実行順番の両方を含んだ。しかし実行パターンは、コアへのタスクの割り振り、およびタスクの実行順番のいずれか一方でもよい。たとえば、実行パターンはコアへのタスクの割り振りだけを規定し、タスクの実行順番は実行時に決定させてもよい。
―第2の実施の形態―
図17~図19を参照して、プログラム実行装置の第2の実施の形態を説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、レーダーの出力を処理するプログラムに本発明を適用する点で第1の実施の形態と異なる。
図17~図19を参照して、プログラム実行装置の第2の実施の形態を説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、レーダーの出力を処理するプログラムに本発明を適用する点で第1の実施の形態と異なる。
図17は、プログラム実行システムS2の機能構成図である。自車両1には、実行装置3の他に、降雨センサー82およびレーダー83が搭載される。降雨センサー82およびレーダー83は、センシング情報を実行装置3に出力する。降雨センサー82は、雨を検出するセンサーであり、降雨の確からしさ、または降雨量を数値で出力する。降雨センサー82は、降雨がより確かであるほど、または降雨量が多いほど小さい数値を出力する。レーダー83は、たとえばミリ波レーダーであり、自車両1の前方における所定の角度範囲における障害物の有無を検出する。またレーダー83は自己診断機能が備わっており、故障していると判断する場合はその旨を出力する。
事前記憶部29および実行記憶部39には、画像処理プログラム45の代わりにレーダー処理プログラム45Aが格納される。レーダー処理プログラム45Aは、レーダー83の出力を処理するプログラムである。また、事前記憶部29に格納されるソースコード44Aは、レーダー83の出力から障害物を検出するプログラムのソースコードである。またソースコード44Aには、複数のフィルタアルゴリズムが含まれる。
図18は、レーダー83の検出範囲を示す概念図である。図18(a)に示すように、晴天時にはレーダーは遠い距離まで障害物を検出できる。しかし、図18(b)に示すように、雨天時には雨によりレーダーが減衰して障害物を検出できる距離が原理的に短くなる。また雨天時にはノイズが増加するため、晴天時に比べて複雑なフィルタアルゴリズムを使用する必要がある。
そのため本実施の形態では、降雨時にはレーダーにより検出される障害物の距離が短くなり、検出される障害物の数も減少することを想定する。さらに本実施の形態では、降雨の有無およびレーダー83の故障の有無に応じてレーダー処理プログラム45Aのアルゴリズムを変更する。
図19は、本実施の形態におけるパラメータ情報41Aの一例を示す図である。図19に示すように、実行時パラメータとも呼ばれるキーパラメータは、降雨センサー82の出力、およびレーダー83の故障の有無である。たとえば、降雨センサー82の出力に関わらずレーダー83が故障している場合には「Set3」に該当する。またレーダー83が故障していない場合には、降雨センサー82の出力が「10」より大きければ「Set1」に該当し、「10」以下であれば「Set2」に該当する。
本実施の形態では実行パターン生成部22は、ソースコード44Aと、図19に示す各パラメータセットの従属パラメータとを用いて各タスクの実行コストを算出して実行コスト情報42Aを生成し、実行パターン情報43Aを生成する。さらに実行パターン生成部22は、第1の実施の形態で図11を参照して説明したようにソースコードを生成し、コンパイラ26にレーダー処理プログラム45Aをビルドさせる。各処理の詳細は第1の実施の形態と同様なので説明を省略する。
上述した第2の実施の形態によれば、次の作用効果が得られる。
(8)レーダー処理プログラム45Aはレーダーの出力を処理する。キーパラメータは、降雨の確からしさ、または降雨の程度である。そのため、降雨の状況に応じてレーダー処理プログラム45Aのタスクの実行パターンを変更できる。
(8)レーダー処理プログラム45Aはレーダーの出力を処理する。キーパラメータは、降雨の確からしさ、または降雨の程度である。そのため、降雨の状況に応じてレーダー処理プログラム45Aのタスクの実行パターンを変更できる。
(9)キーパラメータはプログラムを実行する際の状況を判別するパラメータである。従属パラメータは、キーパラメータにより判別される状況においてプログラムにおいて使用されるパラメータの値である。
―第3の実施の形態―
図20~図23を参照して、プログラム実行装置の第3の実施の形態を説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、センサフュージョンプログラムに本発明を適用する点で、第1の実施の形態と異なる。
図20~図23を参照して、プログラム実行装置の第3の実施の形態を説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、センサフュージョンプログラムに本発明を適用する点で、第1の実施の形態と異なる。
図20は、プログラム実行システムS3の機能構成図である。自車両1には、実行装置3の他に、レーダー83、環境光センサー84、および前方カメラ85が搭載される。レーダー83、環境光センサー84、および前方カメラ85は、センシング情報を実行装置3に出力する。レーダー83は、第2の実施の形態において説明したとおりである。環境光センサー84は、自車両1の周辺の明るさを測定する。前方カメラ85は、自車両1の前方を撮影して得られた画像(以下、「前方画像」と呼ぶ)を実行装置3に送信する。
図21は、前方画像の概略図である。図21の上部は昼間に得られる前方画像である昼間前方画像Dを示し、図21の下部は夜間に得られる前方画像である夜間前方画像Nを示す。昼間前方画像Dおよび夜間前方画像Nは、同じ位置で周囲の車両の位置も同一の状況で撮影しており、周囲の明るさのみが異なる。
夜間前方画像Nでは近い距離にある車両N31,N32および樹木N35しか確認できない。その一方で昼間前方画像Dでは、より遠方に存在する車両D33,D34、樹木D36、および信号機D37も確認できる。すなわち昼間前方画像Dと夜間前方画像Nとを比較すると、昼間前方画像Dは明るいため撮影される物体が多く撮影される。
図22は、レーダー83および前方カメラ85の測定範囲を示す図である。図22(a)は昼間の測定範囲を示し、図22(b)は夜間の測定範囲を示す。本実施例では、レーダー83よりも前方カメラ85の視野角が広い。図21において示したように、前方カメラ85の測定範囲は、夜間に比べて昼間の方が広い。このことが図22では符号50aと符号50bとして示されている。レーダー83の測定範囲は、昼間よりも夜間の方が広い。このことが図22では符号51aと符号51bとして示されている。
図23は、本実施の形態におけるパラメータ情報41Bの一例を示す図である。図23に示すように、キーパラメータは、明るさLiの値である。明るさLiは、環境稿センサー84の出力を用いてもよいし、前方画像の輝度の平均値などを用いてもよい。明るさLiが閾値「10」より大きい、たとえば昼間には「Set1」に該当し、明るさLiが閾値「10」以下である、たとえば夜間には「Set2」に該当する。
パラメータ情報41Bにおける従属パラメータは、センサフュージョンにおけるパラメータCaおよびパラメータRaである。パラメータCaは、前方カメラ85の測定結果である前方画像に含まれる被写体のうち、どの距離の被写体までをセンサフュージョンに利用するかを決定するパラメータである。パラメータRaは、レーダー83の測定データのうち、どの距離の情報までをセンサフュージョンに利用するかを決定するパラメータである。これらのパラメータの値は、キーパラメータの値に応じてセンサフュージョンプログラム45Bで利用される。
降雨センサー82の出力、およびレーダー83の故障の有無である。たとえば、降雨センサー82の出力に関わらずレーダー83が故障している場合には「Set3」に該当する。またレーダー83が故障していない場合には、降雨センサー82の出力が「10」より大きければ「Set1」に該当し、「10」以下であれば「Set2」に該当する。
上述した第3の実施の形態によれば、次の作用効果が得られる。
(10)センサフュージョンプログラム45Bは、カメラが撮影して得られる撮影画像を処理する。実行時パラメータは、カメラが撮影画像を取得した際の周囲の明るさである。そのため、周囲の明るさに応じてセンサフュージョンプログラム45Bのタスクの実行パターンを変更できる。
(11)周囲の明るさは、撮影画像の輝度、または環境光センサー84の出力である。そのため、環境光センサー84を用いて高精度に処理負荷なく明るさを判断することもできるし、環境光センサー84を用いることなく明るさを判断することもできる。
上述した各実施の形態および変形例において、機能ブロックの構成は一例に過ぎない。別々の機能ブロックとして示したいくつかの機能構成を一体に構成してもよいし、1つの機能ブロック図で表した構成を2以上の機能に分割してもよい。また各機能ブロックが有する機能の一部を他の機能ブロックが備える構成としてもよい。
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
1 自車両
2 解析装置
3 実行装置
21 タスク分割部
22 実行パターン生成部
26 コンパイラ
28 事前通信部
29 憶部
33 入力部
34 環境情報取得部
35 実行部
38 実行通信部
39 実行記憶部
41、41A、41B パラメータ情報
42 実行コスト情報
43 実行パターン情報
44 ソースコード
45 画像処理プログラム
81 カメラ
94 通信装置
95 補助記憶部
220 実行パターン情報
2 解析装置
3 実行装置
21 タスク分割部
22 実行パターン生成部
26 コンパイラ
28 事前通信部
29 憶部
33 入力部
34 環境情報取得部
35 実行部
38 実行通信部
39 実行記憶部
41、41A、41B パラメータ情報
42 実行コスト情報
43 実行パターン情報
44 ソースコード
45 画像処理プログラム
81 カメラ
94 通信装置
95 補助記憶部
220 実行パターン情報
Claims (13)
- プログラムに含まれるタスクを並列実行するプログラム実行装置であって、
前記プログラムを実行する際のパラメータである実行時パラメータを取得する取得部と、
前記実行時パラメータに対応する、前記タスクを実行するパターンである実行パターンの組み合わせの一覧である実行パターン情報を記憶する実行パターン情報記憶部と、
前記実行パターン情報を参照し、前記取得部が取得した前記実行時パラメータに対応する前記実行パターンを選択し、選択した前記実行パターンにしたがって前記プログラムを実行する実行部と、を備えるプログラム実行装置。 - 請求項1に記載のプログラム実行装置において、
前記実行部は、前記プログラムを実行するコアを複数備え、
前記実行パターンとは、前記コアへの前記タスクの割り振り、および前記タスクの実行順番である、プログラム実行装置。 - 請求項1に記載のプログラム実行装置において、
前記プログラム実行装置は車両に搭載され、
前記実行時パラメータは前記車両の動作モードであり、
前記取得部は、前記車両のユーザによる入力操作に基づき前記実行時パラメータを決定する、プログラム実行装置。 - 請求項1に記載のプログラム実行装置において、
前記プログラムはレーダーの出力を処理し、
前記実行時パラメータは、降雨の確からしさ、降雨の程度、または周囲の明るさである、プログラム実行装置。 - 請求項1に記載のプログラム実行装置において、
前記プログラムは、カメラが撮影して得られる撮影画像を処理し、
前記実行時パラメータは、前記カメラが前記撮影画像を取得した際の周囲の明るさである、プログラム実行装置。 - 請求項5に記載のプログラム実行装置において、
前記周囲の明るさは、前記撮影画像の輝度、または環境光センサーの出力である、プログラム実行装置。 - プログラムを解析して依存関係を明らかにした複数のタスクに分割することと、
キーパラメータと従属パラメータの組合せであるパラメータセットを複数含むパラメータ情報を読み込むことと、
前記パラメータセットごとに、前記タスクのそれぞれの実行コストを算出することと、
前記依存関係および前記実行コストに基づき、前記パラメータセットごとに前記タスクの実行パターンを算出することと、を含み、
前記キーパラメータおよび前記従属パラメータは、前記プログラムに含まれる変数である、解析方法。 - 請求項7に記載の解析方法において、
算出した前記パラメータセットごとの前記実行パターンの情報を前記プログラムのソースコードと統合してコンパイルし、実行可能ファイルを生成することをさらに含む、解析方法。 - 請求項7に記載の解析方法において、
算出した前記パラメータセットごとの前記実行パターンの情報と、前記プログラムのソースコードと、前記キーパラメータの情報と、を統合してコンパイルし、実行可能ファイルを生成することをさらに含む、解析方法。 - 請求項7に記載の解析方法において、
前記キーパラメータは前記プログラムを実行する際の状況を判別するパラメータであり、
前記従属パラメータは、前記キーパラメータにより判別される状況において測定される代表的なパラメータの値である、解析方法。 - 請求項7に記載の解析方法において、
前記キーパラメータは前記プログラムを実行する際の状況を判別するパラメータであり、
前記従属パラメータは、前記キーパラメータにより判別される状況において前記プログラムにおいて使用されるパラメータの値である、解析方法。 - 請求項7に記載の解析方法において、
前記プログラムの実行時間が最短になるように前記実行パターンが算出される、解析方法。 - プログラムに含まれるタスクを並列実行するプログラム実行装置が実行する実行方法であって、
前記プログラムを実行する際のパラメータである実行時パラメータを取得することと、
前記実行時パラメータに対応する、前記タスクを実行するパターンである実行パターンの組み合わせの一覧である実行パターン情報を読み取ることと、
前記実行パターン情報を参照し、取得した前記実行時パラメータに対応する前記実行パターンを選択し、選択した前記実行パターンにしたがって前記プログラムを実行すること、とを含む実行方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021082635A JP2022175874A (ja) | 2021-05-14 | 2021-05-14 | プログラム実行装置、解析方法、実行方法 |
PCT/JP2022/004769 WO2022239334A1 (ja) | 2021-05-14 | 2022-02-07 | プログラム実行装置、解析方法、実行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021082635A JP2022175874A (ja) | 2021-05-14 | 2021-05-14 | プログラム実行装置、解析方法、実行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022175874A true JP2022175874A (ja) | 2022-11-25 |
Family
ID=84029074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021082635A Pending JP2022175874A (ja) | 2021-05-14 | 2021-05-14 | プログラム実行装置、解析方法、実行方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2022175874A (ja) |
WO (1) | WO2022239334A1 (ja) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013199180A (ja) * | 2012-03-23 | 2013-10-03 | Autonetworks Technologies Ltd | 車載制御装置 |
US20150082314A1 (en) * | 2012-04-18 | 2015-03-19 | Nec Corporation | Task placement device, task placement method and computer program |
JP6427055B2 (ja) * | 2015-03-31 | 2018-11-21 | 株式会社デンソー | 並列化コンパイル方法、及び並列化コンパイラ |
JP6838217B2 (ja) * | 2016-10-19 | 2021-03-03 | 日立Astemo株式会社 | 車両制御装置 |
CN112567304B (zh) * | 2018-08-17 | 2023-09-19 | 三菱电机株式会社 | 数控装置 |
-
2021
- 2021-05-14 JP JP2021082635A patent/JP2022175874A/ja active Pending
-
2022
- 2022-02-07 WO PCT/JP2022/004769 patent/WO2022239334A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022239334A1 (ja) | 2022-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020090251A1 (ja) | 物体認識装置、物体認識方法および物体認識プログラム | |
US11756308B2 (en) | Neural network device and method using a neural network for sensor fusion | |
US20220169277A1 (en) | Mobile object control device and mobile object control method | |
CN117056153A (zh) | 校准和验证驾驶员辅助系统和/或自动驾驶系统的方法、系统和计算机程序产品 | |
Fang et al. | Real-time object detection and semantic segmentation hardware system with deep learning networks | |
CN114077785A (zh) | 车辆的仿真测试场景的构建方法和装置 | |
WO2022239334A1 (ja) | プログラム実行装置、解析方法、実行方法 | |
CN113853049A (zh) | 机器人辅助灯光控制方法、机器人及系统 | |
CN114781635A (zh) | 模型部署方法、装置、设备和介质 | |
CN113614809B (zh) | 车辆控制用运算装置、车辆控制装置及车辆控制用运算方法 | |
Nieto et al. | Optimising computer vision based ADAS: vehicle detection case study | |
JP7119839B2 (ja) | 物体検出装置、物体検出方法及び車両制御装置 | |
US20230386219A1 (en) | Reliability determination device and reliability determination method | |
CN112179359B (zh) | 一种地图匹配方法、装置、电子设备和存储介质 | |
CN116304992A (zh) | 传感器时差确定方法、装置、计算机设备和存储介质 | |
CN112824199A (zh) | 车辆及其控制方法 | |
CN116311114A (zh) | 一种可行驶区域生成方法、装置、电子设备及存储介质 | |
CN112506178B (zh) | 一种机器人控制方法、装置、终端和介质 | |
US20230037499A1 (en) | Model generation device, in-vehicle device, and model generation method | |
KR20230079999A (ko) | 교통 수신호 인식 시스템 및 방법 | |
CN112926476A (zh) | 车辆识别方法、装置及存储介质 | |
KR102682215B1 (ko) | 레이더 센서 포인트 클라우드 데이터를 이용한 물체 검출 기술 | |
CN116985830B (zh) | 车辆模式的运行方法、装置、车辆及存储介质 | |
CN116503606B (zh) | 基于子图特征融合的路面湿滑区域分割方法及装置 | |
CN114746924B (zh) | 驾驶辅助装置及驾驶辅助方法 |