JP2017228029A - 並列化方法、並列化ツール、車載装置 - Google Patents

並列化方法、並列化ツール、車載装置 Download PDF

Info

Publication number
JP2017228029A
JP2017228029A JP2016122769A JP2016122769A JP2017228029A JP 2017228029 A JP2017228029 A JP 2017228029A JP 2016122769 A JP2016122769 A JP 2016122769A JP 2016122769 A JP2016122769 A JP 2016122769A JP 2017228029 A JP2017228029 A JP 2017228029A
Authority
JP
Japan
Prior art keywords
core
unit
processing units
microcomputer
processing
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
Application number
JP2016122769A
Other languages
English (en)
Inventor
憲一 峰田
Kenichi Mineda
憲一 峰田
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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2016122769A priority Critical patent/JP2017228029A/ja
Priority to US15/617,038 priority patent/US10540156B2/en
Priority to DE102017210126.1A priority patent/DE102017210126A1/de
Publication of JP2017228029A publication Critical patent/JP2017228029A/ja
Pending legal-status Critical Current

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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】マルチコアマイコンにおける実行時のオーバーヘッドを抑制可能な並列プログラムを作成できる並列化方法、並列化ツール、及び各処理単位を最適に実行できる車載装置を提供すること。
【解決手段】コンピュータ10は、シングルコアマイコン用に記述され複数のタスク31,32を含んでいるシングルプログラム30を解析して、複数のタスク31,32をそれぞれ並列化した並列プログラム21a1を生成するものである。コンピュータ10のMT群抽出部2dは、タスク31,32間で共通してアクセスされる共通リソースを解析し、共通リソースへのアクセスを示している複数のMTを抽出する。そして、コンピュータ10の配置制約決定部2eは、抽出された複数のMTを、マルチコアプロセッサにおける同じコアに配置する。
【選択図】図3

Description

本発明は、シングルコアマイコン用のシングルプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法、並列化ツール、及び生成された並列プログラムを実装した車載装置に関する。
従来、シングルコアマイコン用のシングルプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法の一例として特許文献1に開示された並列化コンパイル方法がある。
この並列化コンパイル方法では、シングルプログラムのソースコードを字句解析や構文解析を行って中間言語を生成し、この中間言語を用いて、複数のマクロタスク(以下、処理単位)のデータ依存関係の解析や最適化等を行う。また、並列化コンパイル方法では、各処理単位のデータ依存関係や処理単位毎の実行時間を基にスケジューリングを行って並列プログラムを生成する。
特開2015−1807号公報
ところで、一般的な組込み系では、RTOS(Real Time Operating System)により複数のタスクの実行を切換えながら実行される。この場合、上記のように並列プログラムを生成する際には、タスク毎に並列化することが考えられる。しかしながら、並列化する際に必要になる同期処理には、有限の処理時間が発生する。よって、並列化されたプログラムが比較的小さい場合、複数のコアで並行実行することによって効率化される処理時間よりも、同期処理により発生するオーバーヘッドの方が大きくなる。このため、全てのタスクが並列化する嬉しさがある訳ではない。つまり、処理時間が比較的短いタスクは、並列化できないとも言える。
また、このような処理時間の短いタスクは、並列化できないだけではなく、他のタスクとの干渉が起こるため、安易に同時に実行させることができなかった。この対策としては、該当処理にコア間排他処理を追加する方法が考えられる。しかしながら、コア間排他処理は、シングルコアにおいて用いられるコア内排他処理と比べてオーバーヘッドが大きく、性能低下の大きな要因となる。
本開示は、上記問題点に鑑みなされたものであり、マルチコアマイコンにおける実行時のオーバーヘッドを抑制可能な並列プログラムを作成できる並列化方法、並列化ツール、及び各処理単位を最適に実行できる車載装置を提供することを目的とする。
上記目的を達成するために本開示は、
シングルコアマイコン用に記述され複数のタスクを含んでいるシングルプログラムを解析して、シングルプログラムの各処理単位間における同じリソースへのアクセスを示している各データ依存関係を基に、複数のコアを有するマルチコアマイコン用に並列化可能な処理単位を並列化して、複数のタスクのそれぞれを並列化した並列プログラム(21a1)を生成する並列化方法であって、
タスク間で共通してアクセスされるリソースを解析し、このリソースへのアクセスを示している複数の処理単位を抽出する抽出手順(2d、4)と、
抽出手順で抽出された複数の処理単位を、マルチコアマイコンにおける同じコアに配置する配置手順(2e、4)と、を備えている。
このように、本開示は、共通してアクセスされるリソースを解析し、このリソースへのアクセスを示している複数の処理単位を抽出するため、異なるタスクに含まれている処理単位のうち、同じリソースにアクセスしている処理単位を抽出できる。そして、本開示は、抽出された複数の処理単位をマルチコアマイコンにおける同じコアに配置するため、コア間排他処理を減らす、又はなくすことができる。よって、本開示では、マルチコアマイコンにおける実行時のオーバーヘッドを抑制可能な並列プログラムを作成できる。
本開示の他の一つは、
シングルコアマイコン用に記述され複数のタスクを含んでいるシングルプログラムを解析して、シングルプログラムの各処理単位間における同じリソースへのアクセスを示している各データ依存関係を基に、マルチコアマイコン用に並列化可能な処理単位を並列化して、複数のタスクをそれぞれ並列化した並列プログラム(21a1)を生成する、コンピュータを含む並列化ツールであって、
タスク間で共通してアクセスされるリソースを解析し、リソースへのアクセスを示している複数の処理単位を抽出する抽出部(2d、4)と、
抽出部で抽出された複数の処理単位を、マルチコアマイコンにおける同じコアに配置する配置部(2e、4)と、を備えている。
このように、並列化ツールでは、上記並列化方法と同様に、マルチコアにおける実行時のオーバーヘッドを抑制可能な並列プログラムを生成できる。
本開示の他の一つは、
複数のコア(21c、21d)を有するマルチコアマイコン(21)と、コアが一つであるシングルコアマイコン用に記述され複数のタスクを含んでいるシングルプログラムにおける複数の処理単位からマルチコアマイコン用に並列化された並列プログラム(21a1)と、を備えた車載装置であって、
並列プログラムは、
シングルコアマイコン用に記述され複数のタスクを含んでいるシングルプログラムを解析して、シングルプログラムの各処理単位間における同じリソースへのアクセスを示している各データ依存関係を基に、マルチコアマイコン用に並列化可能な処理単位を並列化して、複数のタスクのそれぞれが並列化されており、
タスク間で共通してアクセスされるリソースを解析し、リソースへのアクセスを示している複数の処理単位が抽出され、
抽出された複数の処理単位が、マルチコアマイコンにおける同じコアに配置されており、
マルチコアマイコンは、各コアが自身に割り当てられた処理単位を実行する。
このように、車載装置は、マルチコアマイコンと、上記のように生成された並列プログラムとを備えている。そして、マルチコアマイコンは、各コアが並列プログラムを実行する。つまり、車載装置は、オーバーヘッドが抑制された並列プログラムを実行することになる。よって、車載装置は、各処理単位を最適に実行できる。
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
実施形態におけるコンピュータの概略構成を示すブロック図である。 実施形態における車載装置の概略構成を示すブロック図である。 実施形態におけるコンピュータの機能を示すブロック図である。 実施形態におけるコンピュータの処理を示すフローチャートである。 実施形態におけるシングルプログラムを示す図面である。 実施形態におけるタスク毎のMTの処理順序を示す図面である。 実施形態におけるタスク毎のデータ依存関係を示す図面である。 実施形態における第1タスクのスケジューリング結果を示す図面である。 実施形態における第2タスクのスケジューリング結果を示す図面である。 実施形態におけるマルチコアのタスク切替えと、各MTの配置結果とを示す図面である。 変形例におけるコンピュータの機能を示すブロック図である。 変形例におけるコンピュータの処理を示すフローチャートである。
以下において、図面を参照しながら、発明を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を参照し適用することができる。
本実施形態では、コアが一つであるシングルコアマイコン用のシングルプログラム30における複数の処理単位から第1コア21cと第2コア21dを有するマルチコアプロセッサ21用に並列化した並列プログラム21a1を生成するコンピュータ10を採用する。
また、本実施形態は、並列プログラム21a1を生成するための自動並列化コンパイラ1を採用する。さらに、本実施形態では、コンピュータ10で生成された並列プログラム21a1を備えた車載装置20を採用する。なお、プロセッサは、マイコンと言い換えることができる。よって、マルチコアプロセッサは、マルチコアマイコンと言い換えることができる。
自動並列化コンパイラ1は、並列プログラム21a1を生成するための手順を含んでいる。よって、自動並列化コンパイラ1は、並列化方法に相当する。また、自動並列化コンパイラ1は、並列化方法を含むプログラムである。さらに、コンピュータ10は、自動並列化コンパイラ1を実行することで、並列プログラム21a1を生成する。よって、コンピュータ10は、並列化ツールに相当する。
なお、シングルプログラム30は、複数のタスク31,32を含んでおり、組込み系RTOSによって、複数のタスク31,32の実行を切替えながら実行される。コンピュータ10は、シングルプログラム30における複数のタスク31,32のそれぞれを並列化した並列プログラム21a1を生成する。また、自動並列化コンパイラ1は、シングルプログラム30における複数のタスク31,32のそれぞれを並列化した並列プログラム21a1を生成するためのものである。
このように、並列プログラム21a1を生成する背景としては、プロセッサの発熱量増大や消費電力増加、クロック周波数の限界問題から、マルチコアプロセッサ21が主流になることなどがあげられる。そして、マルチコアプロセッサ21は、車載装置の分野においても適用が必要となっている。また、並列プログラム21a1としては、ソフトの開発期間や開発費を抑えつつ、信頼性が高く高速に処理の実行が可能なものが求められる。
なお、並列プログラム21a1を生成する際には、シングルプログラム30における複数の処理単位のデータ依存関係を解析して、複数の処理単位をマルチコアプロセッサ21の異なるコア21c、21dに割り振る(言い換えると、割り付ける、配置する)。この点に関しては、特開2015−1807号公報を参照されたい。なお、本実施形態では、一例として、C言語で記述されたシングルプログラム30を採用する。しかしながら、本発明は、これに限定されない。シングルプログラム30は、C言語とは異なるプログラミング言語で記述されていてもよい。
上記処理単位は、処理ブロックやマクロタスクなどと言い換えることができる。以下においては、処理単位をMTとも称する。本実施形態では、図5などに示すように、一例として、第11MT〜第13MT、及び第21MT〜第23MTを採用する。各MTは、第1コア21cや第2コア21dが実行可能な命令を少なくとも一つ含んでいる。
ここで、図5を用いて、本実施形態で採用するシングルプログラム30に関して説明する。図5の逐次Cソース30は、シングルプログラム30に相当する。また、図5には、シングルコアマイコンにおけるタスク切替え処理と、シングルコアにおけるMT処理順序を図示している。シングルプログラム30は、第1タスク31と第2タスク32とを含んでおり、各起床のタイミング等で第1タスク31と第2タスク32とが切替えられて実行される。なお、図5〜図10に関しては、第1タスク31のMTと、第2タスク32のMTをわかりやすくするためにハッチングを施している。
図6に示すように、第1タスク31には、第11MT〜第13MTが含まれている。第1タスク31における処理順序は、第11MT、第12MT、第13MTである。一方、第2タスク32には、第21MT〜第23MTが含まれている。第2タスク32における処理順序は、第21MT、第22MT、第23MTである。なお、第1タスク31は、第2タスク32よりも優先度が高いものとする。
複数のMTは、お互いにデータ依存関係があるMTが含まれている。本実施形態では、第11MTと第12MT、第11MTと第13MT、第13MTと第21MTのそれぞれがデータ依存関係がある。図7では、データ依存関係があるMTどうしを矢印で繋いで図示している。
このデータ依存関係は、二つのMTが同一のデータにアクセスする際の関係である。また、データ依存関係は、各MTにおける同じリソースへのアクセスを示す関係とも言える。よって、データ依存関係がある二つのMTは、共通のリソースへのアクセスを示すものである。複数のMTを含むシングルプログラム30には、複数のデータ依存関係が存在することになる。以下においては、複数のMTがアクセスを示している同じリソースを共通リソースとも称する。
また、データ依存関係は、第1〜第3ケースがある。第1ケースは、第1MTがデータを書込み(Write)、そのデータを第2MTが参照(Read)する関係である。また、第2ケースは、第1MTと第2MTが同一のデータを書込みする関係である。そして、第3ケースは、第1MTがデータを参照し、そのデータに第2MTを書込みする関係である。第1MTは、シングルプログラム30における実行順序が第2MTよりも先である。なお、この第1MTと第2MTは、データ依存関係を説明するために用いたMTである。
そして、シングルプログラム30は、同一のデータにアクセスする二つのMTが、異なるタスクに含まれていた場合、データへのアクセスによってタスク間で干渉が起こることを回避するために、コア内排他処理を含んでいる。よって、シングルコアマイコンは、コア内排他処理を行うことなる。
本実施形態では、図5に示すように、第1タスク31の第13MTと第2タスク32の第21MTでの干渉を回避するために、コア内排他処理を含んでいる例を採用している。コア内排他処理は、タスクの割り込み禁止と、タスクの割り込み許可とを行う処理である。例えば、第1タスク31が実行している際に、第2タスク32の割り込みを禁止し、第1タスク31の実行が終了すると、第2タスク32の割り込みを許可する。
なお、データ依存関係がある二つのMTが異なるコアに配置された並列プログラムは、コア間干渉を回避するために、コア間排他処理などを含むことが考えられる。しかしながら、コア間排他処理は、コア内排他処理と比べてオーバーヘッドが大きく、性能低下の大きな要因となる。
ここで、図1、図3を用いて、コンピュータ10の構成に関して説明する。コンピュータ10は、ディスプレイ11、HDD12、CPU13、ROM14、RAM15、入力装置16、読取部17などを備えて構成されている。また、コンピュータ10は、記憶媒体18に記憶された記憶内容を読み取り可能に構成されている。この記憶媒体18には、自動並列化コンパイラ1が記憶されている。よって、コンピュータ10は、記憶媒体18に記憶された自動並列化コンパイラ1を実行することで、並列プログラム21a1を生成する。
コンピュータ10及び記憶媒体18の構成は、特開2015−1807号公報に記載されたパーソナルコンピュータ100及び記憶媒体180を参照されたい。なお、自動並列化コンパイラ1は、特開2015−1807号公報に記載されたものに加えて、MT群抽出部2dや配置制約決定部2eなどを含んでいる。
また、コンピュータ10は、図3に示すように、機能ブロックとして、第1タスク31用の機能ブロックと、第2タスク32用の機能ブロックとを備えている。コンピュータ10は、第1タスク31用の機能ブロックで並列化後の第1タスク31aを生成するとともに、第2タスク32用の機能ブロックで並列化後の第2タスク32aを生成する。そして、コンピュータ10は、並列化後の第1タスク31aと並列化後の第2タスク32aとをソフト結合して、並列プログラム21a1を生成する。なお、並列プログラム21a1は、並列化Cソースとも言える。
なお、本実施形態では、コア依存情報41を取得可能なコンピュータ10を採用している。コア依存情報41は、コア配置情報に相当し、シングルプログラム30の各MTのうち、各コア21c、21dのいずれかが配置先として指定されているMTを示す情報である。なお、シングルプログラム30の各MTのうち配置先が指定されているMTは、指定されたコアに依存していると言える。
第1タスク31用の機能ブロックは、第1アクセス解析部1a、第1データ依存関係解析部1b、第1コア依存判断部1c、第1スケジューリング部1dなどを含んでいる。
第1アクセス解析部1aは、第1タスク31内の各MTのアクセスリソースを解析する。つまり、第1アクセス解析部1aは、第1タスク31内の各MTがアクセスするリソース(データ)を抽出する。第1データ依存関係解析部1bは、第1タスク31内の各MTのデータ依存関係を解析する。また、第1データ依存関係解析部1bは、データ依存関係を解析して、並列化可能なMTを抽出する。
第1コア依存判断部1cは、コア依存情報41に基づいて、第1タスク31内の各MTのうち配置先が指定されているMTと、そのMTの配置先とを判断する。第1スケジューリング部1dは、コア割り付けとスケジューリングを行う。第1スケジューリング部1dは、データ依存関係とコア依存情報41に基づいた判断結果とに基づいて、第1タスク31内の各MTを第1コア21cと第2コア21dのいずれかに配置するとともにスケジューリングを行う。そして、コンピュータ10は、最適な、並列化後の第1タスク31aを生成する。
第2タスク32用の機能ブロックは、第2アクセス解析部2a、第2データ依存関係解析部2b、第2コア依存判断部2c、MT群抽出部2d、配置制約決定部2e、第2スケジューリング部2fなどを含んでいる。
第2アクセス解析部2aは、第2タスク32内の各MTのアクセスリソースを解析する。つまり、第2アクセス解析部2aは、第2タスク32内の各MTがアクセスするリソースを抽出する。第2データ依存関係解析部2bは、第2タスク32内の各MTのデータ依存関係を解析する。また、第2データ依存関係解析部2bは、データ依存関係を解析して、並列化可能なMTを抽出する。第2コア依存判断部2cは、コア依存情報41に基づいて、第2タスク32内の各MTのうち配置先が指定されているMTと、そのMTの配置先とを判断する。
MT群抽出部2dは、タスクを跨いで共通リソースへのアクセスを示しているMT群を抽出する(抽出部)。つまり、MT群抽出部2dは、タスク間で共通してアクセスされるリソースを解析し、共通リソースへのアクセスを示している複数のMT、例えば二つのMTを抽出する。よって、抽出されたMTどうしは、共通リソースへのアクセスを示しており、且つ、異なるタスクに含まれている。
なお、コンピュータ10は、自動並列化コンパイラ1を実行することで、MT群抽出部2dの機能を実行するものである。よって、MT群抽出部2dは、抽出手順に相当するとみなせる。
配置制約決定部2eは、第1スケジューリング部1dの結果と、第2コア依存判断部2cの判断結果と、抽出したMT群とに基づいて、第2タスク32内の各MTにおける配置制約を決定する(配置部)。つまり、配置制約決定部2eは、第2タスク32内の各MTを、第1コア21c又は第2コア21dに配置する際の制約を決定する。詳述すると、配置制約決定部2eは、第1スケジューリング部1dの結果と、第2コア依存判断部2cの判断結果とを考慮して、MT群抽出部2dで抽出された複数のMTを、マルチコアプロセッサ21における同じコアに配置する。
なお、配置制約決定部2eは、コア依存情報41で指定されている配置先を優先して、MT群抽出部2dで抽出された複数のMTを、マルチコアプロセッサ21における同じコアに配置する。つまり、配置制約決定部2eは、コア依存情報41で指定されている配置先を変更しない範囲内で、MT群抽出部2dで抽出された複数のMTを、マルチコアプロセッサ21における同じコアに配置する。
ところで、コンピュータ10は、自動並列化コンパイラ1を実行することで、配置制約決定部2eの機能を実行するものである。よって、配置制約決定部2eは、配置手順に相当するとみなせる。
そして、第2スケジューリング部2fは、コア割り付けとスケジューリングを行う。第2スケジューリング部2fは、データ依存関係と配置制約に基づいて、第2タスク32内の各MTを第1コア21cと第2コア21dのいずれかに配置するとともにスケジューリングを行う。そして、コンピュータ10は、最適な、並列化後の第2タスク32aを生成する。
ここで、図4を用いて、コンピュータ10の処理動作に関して説明する。なお、以下に示す各ステップS10〜S16は、自動並列化コンパイラ1の手順に相当するとも言える。
ステップS10では、処理対象タスクを決定する。コンピュータ10は、各タスクを順次スキャンして処理対象タスクを決定する。
ステップS11では、リソースを抽出する。コンピュータ10は、処理対象タスク内の各MTがアクセスするリソースを抽出する。ステップS11は、第1アクセス解析部1aや第2アクセス解析部2aが実行する処理と言える。
ステップS12では、データ依存関係を解析する。コンピュータ10は、処理対象タスク内の各MT間のデータ依存関係を解析する。ステップS12は、第1データ依存関係解析部1bや第2データ依存関係解析部2bが実行する処理と言える。
ステップS13では、各MTのコア依存を判断する。コンピュータ10は、例えば機能安全上の理由で実行コアの指定がある等、コア依存情報41がある場合、これに従って、各MTのコア依存を判断する。ステップS13は、第1コア依存判断部1cや第2コア依存判断部2cが実行する処理と言える。
ステップS14では、各MTの配置制約を決定する。コンピュータ10は、タスクを跨いで共通リソースへのアクセスを示しているMT群を抽出し、各MTのコア依存がある場合、コア依存情報41に違反しない範囲内で各MTの配置制約を決定する。つまり、コンピュータ10は、タスクを跨いで共通リソースへのアクセスを示している複数のMTを、コア依存情報41に違反することなく、同じコアに配置する。本実施形態では、第1タスク31の第13MTと、第2タスク32の第21MTとを第1コア21cに配置する。ステップS14は、MT群抽出部2dと配置制約決定部2eが実行する処理と言える。
ステップS15では、コア配置とスケジューリングを行う。コンピュータ10は、処理対象タスク内の各MTに関して、配置制約とデータ依存関係に従って、コア配置とスケジューリングを行う。ステップS15は、第1スケジューリング部1dや第2スケジューリング部2fが実行する処理と言える。
なお、コンピュータ10は、二つのタスク31,32のそれぞれを処理対象タスクとして、ステップS10〜S15を実施する。しかしながら、ステップS14に関しては、二つのタスクのうちの一方のタスクが処理対象である場合のみ実施すればよい。よって、コンピュータ10は、最初のタスクを処理実行タスクに決定した場合、ステップS14を実行しない。さらに、この場合、コンピュータ10は、ステップS15において、データ依存関係の解析結果、コア依存情報41に基づいた判断結果に従って、コア配置とスケジューリングを行う。そして、コンピュータ10は、次のタスクを処理実行タスクに決定した場合に、ステップS14を実行するとともに、ステップS15において、配置制約とデータ依存関係に従って、コア配置とスケジューリングを行う。
ステップS16では、全タスクについて、処理実施済みであるか否かを判定する。コンピュータ10は、全タスクのうちステップS10〜S15を実施していないタスクがある場合、処理実施済みでないと判定してステップS10へ戻る。コンピュータ10は、全タスクのうちステップS10〜S15を実施していないタスクがない場合、処理実施済みであると判定して図4の処理を終了する。このように、コンピュータ10は、全タスクのそれぞれを順番に対象として、ステップS10〜S15を実施する。また、コンピュータ10は、コア配置とスケジューリングをタスク毎に順番に行うと言える。
コンピュータ10は、このように処理を実行することで、図5に示すシングルプログラム30から、図10に示す並列プログラム21a1を生成する。コンピュータ10は、第1タスク31の各MTを対象としてスケジューリングすることで、図8に示すように、全MTを第1コア21cに配置した並列化後の第1タスク31aとする。
また、コンピュータ10は、第2タスク32の各MTを対象としてスケジューリングすることで、図9に示すように、各MTを第1コア21cと第2コア21dに配置した並列化後の第2タスク32aとする。このとき、コンピュータ10は、第13MTとデータ依存関係がある第21MTを、第13MTと同じ第1コア21cに配置する。
そして、コンピュータ10は、並列化後の第1タスク31aと第2タスク32aとをソフト結合することで、図10に示す並列プログラム21a1を生成することになる。また、コンピュータ10は、データ依存関係がある第1タスク31の第13MTと第2タスク32の第21MTとを、同じコアに配置している。このため、コンピュータ10は、タスクを跨いで干渉が起こることを回避するために、割込み禁止等のコア内排他処理により対策可能である。コア内排他処理は基本的には並列化前のプログラム設計時に追加され、含まれているが、必要に応じて解析結果を基にコア内排他処理を追加して並列プログラム21a1を生成するとも言える(配置部)。ここでは、図10の二点鎖線で示すように、コンピュータ10は、第1タスク31の第13MTと第2タスク32の第21MTとにコア内排他処理を追加している。なお、コア内排他処理は、シングルプログラム30にもともと含まれている。また、自動並列化コンパイラ1は、配置手順を含んでいると言える。
このように、コンピュータ10は、共通してアクセスされるリソースを解析し、この共通リソースへのアクセスを示している複数のMTを抽出するため、異なるタスクに含まれているMTのうち、共通リソースにアクセスしているMTを抽出できる。そして、コンピュータ10は、抽出された複数のMTをマルチコアプロセッサ21における同じコアに配置するため、コア間排他処理を減らす、又はなくすことができる。よって、コンピュータ10では、マルチコアプロセッサ21における実行時のオーバーヘッドを抑制可能な並列プログラム21a1を作成できる。また、これに伴って、コンピュータ10は、図10に示すように、コア間排他処理を含んだ並列プログラムよりも、新規の処理を追加実行する余裕が多い並列プログラム21a1を生成できる。
なお、コンピュータ10は、自動並列化コンパイラ1を実行することで並列プログラムを生成する。このため、自動並列化コンパイラ1は、コンピュータ10と同様の効果を奏することができる。
また、コンピュータ10は、第1コア依存判断部1c及び第2コア依存判断部2cを備えていなくても目的を達成できる。よって、コンピュータ10は、ステップS13を実施しなくてもよい。この場合、コンピュータ10は、ステップS14において、コア依存に関係なく、タスクを跨いで共通リソースへのアクセスを示している複数のMTを同じコアに配置する。
次に、車載装置20の構成に関して説明する。車載装置20は、図2に示すように、マルチコアプロセッサ21、通信部22、センサ部23、入出力ポート24を備えて構成されている。また、マルチコアプロセッサ21は、ROM21a、RAM21b、第1コア21c、第2コア21dを備えて構成されている。車載装置20は、例えば、自動車に搭載されたエンジン制御装置やハイブリッド制御装置などに適用できる。しかしながら、並列プログラム21a1は、これに限定されない。なお、コアは、プロセッサエレメントとも称することができる。
第1コア21cと第2コア21dは、並列プログラム21a1を実行することで、エンジン制御やハイブリッド制御などを行う。つまり、車載装置20は、第1コア21cと第2コア21dのそれぞれに割り当てられたMTを、第1コア21cと第2コア21dが実行することで、エンジン制御やハイブリッド制御などを行う。
このように、車載装置20は、マルチコアプロセッサ21と、上記のように生成された並列プログラム21a1とを備えている。そして、マルチコアプロセッサ21は、各コア21c、21dが並列プログラム21a1を実行する。つまり、車載装置20は、オーバーヘッドが抑制された並列プログラム21a1を実行することになる。よって、車載装置20は、各MTを最適に実行できる。
また、オーバーヘッドは、マルチコアプロセッサ21の性能低下の要因となりうる。よって、マルチコアプロセッサ21は、オーバーヘッドが抑制された並列プログラム21a1を実行するため、性能低下を抑制できるとも言える。
なお、RAM21b、通信部22、センサ部23、入出力ポート24は、特開2015−1807号公報に記載されたRAM420、通信部430、センサ部450、入出力ポート460を参照されたい。
コンピュータ10は、タスクを跨いで共通リソースへのアクセスを示している複数のMTを抽出した場合、この複数のMTを同じコアに配置できないこともありうる。この場合、コンピュータ10は、抽出した複数のMTを、異なるコアに配置する。つまり、コンピュータ10は、抽出した複数のMTを、第1コア21cと第2コア21dとにわけて配置する。そして、コンピュータ10は、第1コア21cと第2コア21dが複数のMTのそれぞれを実行して共通リソースに同時にアクセスすることを避けるために、コア間排他処理を追加して並列プログラム21a1を生成してもよい(追加部)。なお、コア間排他処理としては、例えばセマフォなどを採用できる。
よって、コンピュータ10は、コア間排他処理を含む並列プログラム21a1を生成すると言える。言い換えると、コンピュータ10は、抽出した複数のMTが配置された異なるコアによる、共通リソースへの競合(干渉)を抑制するための処理を追加して並列プログラム21a1を生成する。
このため、コンピュータ10は、タスクを跨いで共通リソースへのアクセスを示している複数のMTが配置された第1コア21cと第2コア21dによる共通リソースへの競合が抑制される並列プログラム21a1を生成できる。なお、自動並列化コンパイラ1は、コンピュータ10と同様の効果を奏することができる。また、追加部は、自動並列化コンパイラ1の追加手順と言える。
また、コンピュータ10は、タスクを跨いで共通リソースへのアクセスを示している複数のMTを第1コア21cと第2コア21dにわけて配置する場合、中断処理を追加して並列プログラム21a1を生成してもよい(追加部)。つまり、コンピュータ10は、第1コア21cと第2コア21dが複数のMTのそれぞれを実行して共通リソースに同時にアクセスすることを避けるために、複数のMTの一つが実行される際に他のMTの実行を中断させる中段処理を追加する。
よって、コンピュータ10は、中断処理を含む並列プログラム21a1を生成すると言える。言い換えると、コンピュータ10は、抽出した複数のMTが配置された異なるコアによる、共通リソースへの競合(干渉)を抑制するための処理を追加して並列プログラム21a1を生成する。
このため、コンピュータ10は、タスクを跨いで共通リソースへのアクセスを示している複数のMTが配置された第1コア21cと第2コア21dによる共通リソースへの競合が抑制される並列プログラム21a1を生成できる。なお、自動並列化コンパイラ1は、コンピュータ10と同様の効果を奏することができる。また、追加部は、自動並列化コンパイラ1の追加手順と言える。
なお、本実施形態は、三つ以上のタスクを含むシングルプログラム30であっても採用できる。この場合、コンピュータ10は、タスクの数に応じて、機能ブロックを有することになる。しかしながら、コンピュータ10は、MT群抽出部2dなどを含む機能ブロックに関しては一つ有していればよい。
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。以下に、本発明のその他の形態に関して説明する。
(変形例)
ここで、図11、図12を用いて、本発明の変形例に関して説明する。変形例のコンピュータ10aは、コア配置とスケジューリングを、全タスクを対象として一括で行う点がコンピュータ10と異なる。なお、変形例では、第1タスク33、第2タスク34、第3タスク35の三つのタスクを含んでいるシングルプログラム30を採用している。しかしながら、変形例では、二つのタスクを含むシングルプログラム30、又は四つ以上のタスクを含むシングルプログラム30であっても採用できる。
コンピュータ10aは、変形例の自動並列化コンパイラを実行することで、並列プログラムを生成する。図11に示すように、コンピュータ10は、第1タスク33用の機能ブロックとして第1アクセス解析部1aと第1データ依存関係解析部1b、第2タスク34用の機能ブロックとして第2アクセス解析部2aと第2データ依存関係解析部2bとを含んでいる。また、コンピュータ10は、第3タスク用の機能ブロックとして第3アクセス解析部3aと第3データ依存関係解析部3bを含んでいる。第3アクセス解析部3aは、第1アクセス解析部1aや第2アクセス解析部2aと同様である。第3データ依存関係解析部3bは、第1データ依存関係解析部1bや第2データ依存関係解析部2bと同様である。
さらに、コンピュータ10は、共通の機能ブロックとして、コア依存判断部3、配置制約決定部4、最適化部5を含んでいる。コア依存判断部3は、第1コア依存判断部1cや第2コア依存判断部2cと同様である。
配置制約決定部4は、MT群抽出部2dと配置制約決定部2eに相当する(配置部)。配置制約決定部4は、コア依存と各タスクのアクセスリソースで決まるコア配置制約を決定する。つまり、配置制約決定部4は、タスクを跨いで共通リソースへのアクセスを示しているMT群を抽出する。
そして、配置制約決定部4は、コア依存判断部3の判断結果と、抽出したMT群とに基づいて、各MTの配置制約を決定する。つまり、配置制約決定部4は、コア依存判断部3の判断結果とを考慮して、抽出された複数のMTを、マルチコアプロセッサ21における同じコアに配置する。また、配置制約決定部4は、コア依存判断部3で指定されている配置先を変更しない範囲内で、抽出された複数のMTを、マルチコアプロセッサ21における同じコアに配置する。
なお、配置制約決定部4は、コンピュータ10と同様に、抽出された複数のMTを、マルチコアプロセッサ21における同じコアに配置した場合、タスクを跨いで干渉が起こることを回避するために、コア内排他処理を追加してもよい(配置部)。以上のように、変形例における自動並列化コンパイラは、配置手順を含んでいると言える。
最適化部5は、仮コア配置、スケジューリング、最適化を行う機能ブロックである。最適化部5は、第1スケジューリング部1dや第2スケジューリング部2fに相当する。最適化部5は、コア配置制約がない各タスクのMTについて仮コア配置し、タスク毎にスケジューリングを行い、各タスクの処理バランスを最適化する。
ここで、図12を用いて、コンピュータ10aの処理動作に関して説明する。なお、以下に示す各ステップS20〜S29は、変形例における自動並列化コンパイラの手順に相当するとも言える。
ステップS20〜ステップS22は、ステップS10〜ステップS12と同様である。
ステップS23は、全タスクについて、ステップS20〜22の処理が実施済みであるか否かを判定する。コンピュータ10は、全タスクのうちステップS20〜S22を実施していないタスクがある場合、処理実施済みでないと判定してステップS20へ戻る。コンピュータ10は、全タスクのうちステップS20〜S22を実施していないタスクがない場合、処理実施済みであると判定してステップS24へ進む。
ステップS24では、各MTのコア依存を判断する。コンピュータ10aは、例えば機能安全上の理由で実行コアの指定がある等、コア依存情報41がある場合、これに従って、各MTのコア依存を判断する。ステップS24は、コア依存判断部3が実行する処理と言える。
ステップS25では、各MTのコア配置を決定する。コンピュータ10aは、既にあるコア依存に従って決まるMTについて、全タスクの各MTにおけるコア配置を決定する。さらに、コンピュータ10aは、各タスクで共通リソースにアクセスするMT群を同じコアに配置する。ステップS25は、配置制約決定部4が実行する処理と言える。
ステップS26では、配置が未決定の各MTをコアに仮配置する(仮コア配置)。コンピュータ10aは、ステップS25において、配置先のコアが決まっていないMTを、任意のコアに仮配置する。
ステップS27では、各MTの実行順序を決める(スケジューリング)。コンピュータ10aは、各タスク内における各MTの実行順序を決める。
ステップS28では、評価関数を演算する。コンピュータ10aは、各MTを仮配置した状態で評価関数を演算する。この評価関数は、コア配置が最適化否かを判断するための指標である。評価関数は、例えば、(各コアの処理時間の合計)/(各コアの処理時間の最大値)で表すことができる。つまり、評価関数=Σ({各タスクの実行頻度}×{各タスクの各コアの処理時間})/max({各タスクの実行頻度}×{各タスクの各コアの処理時間})で表すことができる。
ステップS29では、評価関数が最大であるか否かを判定する。つまり、コンピュータ10aは、評価関数を演算することで得られた値が最大であるか否かを判定すると言える。コンピュータ10aは、評価関数が最大と判断しなかった場合、各タスク内の処理バランスが最適化されていないとみなしてステップS26へ戻る。また、コンピュータ10aは、評価関数が最大と判断した場合、各タスク内の処理バランスが最適化されたとみなして図12の処理を終了する。つまり、処理バランスの最適化とは、評価関数を最大化するMTのコア配置と言える。例えば、全てのMTのコア配置の組合せの中で評価関数が最大のものを選択すればよい。ただし、実際には、MT数に対して解析規模が著しく増加することが考えられるため、効率よく探索するアルゴリズムがあると好ましい。しかしながら、ここでは、アルゴリズムによる効率化は必須ではない。
このように、コンピュータ10aは、ステップS26〜S29を繰り返し実施することで、各タスク内の処理バランス、言い換えると各MTのコア配置を最適化する。つまり、コンピュータ10aは、仮配置した各MTのコア配置を入れ替えながら、各タスク内の処理バランスを最適化する。このステップS26〜S29は、最適化部5が実行する処理と言える。
コンピュータ10aは、このように処理を実行することで、シングルプログラム30から、並列化後の第1タスク33aと第2タスク34aと第3タスク35aを生成する。そして、コンピュータ10aは、並列化後の第1タスク33a〜第3タスク35aをソフト結合することで、並列プログラム21a1を生成することになる。
コンピュータ10aは、コンピュータ10と同様の効果を奏することができる。また、変形例の自動並列化コンパイラは、コンピュータ10aと同様の効果を奏することができる。
コンピュータ10aは、コア依存判断部3を備えていなくても目的を達成できる。よって、コンピュータ10aは、ステップS24を実施しなくてもよい。この場合、コンピュータ10a(配置制約決定部4)は、ステップS25において、コア依存に関係なく、タスクを跨いで共通リソースへのアクセスを示している複数のMTを同じコアに配置する。
1…自動並列化コンパイラ、10…コンピュータ、11…ディスプレイ、12…HDD、13…CPU、14…ROM、15…RAM、16…入力装置、17…読取部、18…記憶媒体、20…車載装置、21…マルチコアプロセッサ、21a…ROM、21a1…並列プログラム、21b…RAM、21c…第1コア、21d…第2コア、22…通信部、23…センサ部、24…入出力ポート

Claims (11)

  1. シングルコアマイコン用に記述され複数のタスクを含んでいるシングルプログラムを解析して、前記シングルプログラムの各処理単位間における同じリソースへのアクセスを示している各データ依存関係を基に、複数のコアを有するマルチコアマイコン用に並列化可能な前記処理単位を並列化して、複数の前記タスクのそれぞれを並列化した並列プログラム(21a1)を生成する並列化方法であって、
    前記タスク間で共通してアクセスされる前記リソースを解析し、前記リソースへのアクセスを示している複数の前記処理単位を抽出する抽出手順(2d、4)と、
    前記抽出手順で抽出された複数の前記処理単位を、前記マルチコアマイコンにおける同じ前記コアに配置する配置手順(2e、4)と、を備えている並列化方法。
  2. 配置手順は、前記抽出手順で抽出され、前記マルチコアマイコンにおける同じ前記コアに配置した複数の前記処理単位にコア内排他処理を追加する請求項1に記載の並列化方法。
  3. 前記配置手順は、前記抽出手順で抽出された複数の前記処理単位を、前記マルチコアマイコンにおける同じ前記コアに配置できなった場合、前記抽出手順で抽出された複数の前記処理単位を、前記マルチコアマイコンにおける異なる前記コアに配置するものであり、
    さらに、前記配置手順によって、前記抽出手順で抽出された複数の前記処理単位が、前記マルチコアマイコンにおける異なる前記コアに配置された場合、異なる前記コアが複数の前記処理単位のそれぞれを実行して前記リソースに同時にアクセスすることを避けるために、コア間排他処理を追加する追加手順を備えている請求項1又は2に記載の並列化方法。
  4. 前記配置手順は、前記抽出手順で抽出された複数の前記処理単位を、前記マルチコアマイコンにおける同じ前記コアに配置できなった場合、前記抽出手順で抽出された複数の前記処理単位を、前記マルチコアマイコンにおける異なる前記コアに配置するものであり、
    さらに、前記配置手順によって、前記抽出手順で抽出された複数の前記処理単位が、前記マルチコアマイコンにおける異なる前記コアに配置された場合、異なる前記コアが複数の前記処理単位のそれぞれを実行して前記リソースに同時にアクセスすることを避けるために、複数の前記処理単位の一つが実行される際に他の前記処理単位の実行を中断させる中段処理を追加する追加手順を備えている請求項1又は2に記載の並列化方法。
  5. 前記シングルプログラムの各処理単位のうち、前記マルチコアマイコンの前記コアにおける配置先が指定されている前記処理単位を示すコア配置情報を取得するものであり、
    前記配置手順は、前記コア配置情報を優先して前記処理単位を指定された前記コアに配置し、且つ、前記抽出手順で抽出された複数の前記処理単位を、前記マルチコアマイコンにおける同じ前記コアに配置する請求項1乃至4のいずれか一項に記載の並列化方法。
  6. シングルコアマイコン用に記述され複数のタスクを含んでいるシングルプログラムを解析して、前記シングルプログラムの各処理単位間における同じリソースへのアクセスを示している各データ依存関係を基に、マルチコアマイコン用に並列化可能な前記処理単位を並列化して、複数の前記タスクをそれぞれ並列化した並列プログラム(21a1)を生成する、コンピュータを含む並列化ツールであって、
    前記タスク間で共通してアクセスされる前記リソースを解析し、前記リソースへのアクセスを示している複数の前記処理単位を抽出する抽出部(2d、4)と、
    前記抽出部で抽出された複数の前記処理単位を、前記マルチコアマイコンにおける同じコアに配置する配置部(2e、4)と、を備えている並列化ツール。
  7. 配置部は、前記抽出部で抽出され、前記マルチコアマイコンにおける同じ前記コアに配置した複数の前記処理単位にコア内排他処理を追加する請求項6に記載の並列化ツール。
  8. 前記配置部は、前記抽出部で抽出された複数の前記処理単位を、前記マルチコアマイコンにおける同じ前記コアに配置できなった場合、前記抽出部で抽出された複数の前記処理単位を、前記マルチコアマイコンにおける異なる前記コアに配置するものであり、
    さらに、前記配置部によって、前記抽出部で抽出された複数の前記処理単位が、前記マルチコアマイコンにおける異なる前記コアに配置された場合、異なる前記コアが複数の前記処理単位のそれぞれを実行して前記リソースに同時にアクセスすることを避けるために、コア間排他処理を追加する追加部を備えている請求項6又は7に記載の並列化ツール。
  9. 前記配置部は、前記抽出部で抽出された複数の前記処理単位を、前記マルチコアマイコンにおける同じ前記コアに配置できなった場合、前記抽出部で抽出された複数の前記処理単位を、前記マルチコアマイコンにおける異なる前記コアに配置するものであり、
    さらに、前記配置部によって、前記抽出部で抽出された複数の前記処理単位が、前記マルチコアマイコンにおける異なる前記コアに配置された場合、異なる前記コアが複数の前記処理単位のそれぞれを実行して前記リソースに同時にアクセスすることを避けるために、複数の前記処理単位の一つが実行される際に他の前記処理単位の実行を中断させる中段処理を追加する追加部を備えている請求項6又は7に記載の並列化ツール。
  10. 前記シングルプログラムの各処理単位のうち、前記マルチコアマイコンの前記コアにおける配置先が指定されている前記処理単位を示すコア配置情報を取得するものであり、
    前記配置部は、前記コア配置情報を優先して前記処理単位を指定された前記コアに配置し、且つ、前記抽出部で抽出された複数の前記処理単位を、前記マルチコアマイコンにおける同じ前記コアに配置する請求項6乃至9のいずれか一項に記載の並列化ツール。
  11. 複数のコア(21c、21d)を有するマルチコアマイコン(21)と、前記コアが一つであるシングルコアマイコン用に記述され複数のタスクを含んでいるシングルプログラムにおける複数の処理単位から前記マルチコアマイコン用に並列化された並列プログラム(21a1)と、を備えた車載装置であって、
    前記並列プログラムは、
    前記シングルコアマイコン用に記述され複数のタスクを含んでいるシングルプログラムを解析して、前記シングルプログラムの各処理単位間における同じリソースへのアクセスを示している各データ依存関係を基に、前記マルチコアマイコン用に並列化可能な前記処理単位を並列化して、複数の前記タスクのそれぞれが並列化されており、
    前記タスク間で共通してアクセスされる前記リソースを解析し、前記リソースへのアクセスを示している複数の前記処理単位が抽出され、
    抽出された複数の前記処理単位が、前記マルチコアマイコンにおける同じ前記コアに配置されており、
    前記マルチコアマイコンは、各コアが前記並列プログラムを実行する車載装置。
JP2016122769A 2016-06-21 2016-06-21 並列化方法、並列化ツール、車載装置 Pending JP2017228029A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016122769A JP2017228029A (ja) 2016-06-21 2016-06-21 並列化方法、並列化ツール、車載装置
US15/617,038 US10540156B2 (en) 2016-06-21 2017-06-08 Parallelization method, parallelization tool, and in-vehicle device
DE102017210126.1A DE102017210126A1 (de) 2016-06-21 2017-06-16 Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016122769A JP2017228029A (ja) 2016-06-21 2016-06-21 並列化方法、並列化ツール、車載装置

Publications (1)

Publication Number Publication Date
JP2017228029A true JP2017228029A (ja) 2017-12-28

Family

ID=60481314

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016122769A Pending JP2017228029A (ja) 2016-06-21 2016-06-21 並列化方法、並列化ツール、車載装置

Country Status (3)

Country Link
US (1) US10540156B2 (ja)
JP (1) JP2017228029A (ja)
DE (1) DE102017210126A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019215804A (ja) * 2018-06-14 2019-12-19 株式会社デンソー マルチコアマイコン及び並列化方法
JP2020181407A (ja) * 2019-04-25 2020-11-05 株式会社デンソー 並列化方法、半導体制御装置、及び車載制御装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置
US10671361B2 (en) * 2016-10-25 2020-06-02 Paypal, Inc. Automatically determining data dependencies to facilitate code execution
US11709648B2 (en) * 2019-12-19 2023-07-25 Tyxit Sa Distributed audio processing system for processing audio signals from multiple sources

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802338A (en) * 1996-10-01 1998-09-01 International Business Machines Corporation Method of self-parallelizing and self-parallelizing multiprocessor using the method
JPH11259437A (ja) * 1998-03-12 1999-09-24 Hitachi Ltd 不要バリア命令の削減方式
JP4042604B2 (ja) * 2003-03-31 2008-02-06 日本電気株式会社 プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
US7926046B2 (en) * 2005-12-13 2011-04-12 Soorgoli Ashok Halambi Compiler method for extracting and accelerator template program
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
EP2093667A4 (en) 2006-12-14 2012-03-28 Fujitsu Ltd COMPILATION METHOD AND COMPILER
JP5224498B2 (ja) * 2007-02-28 2013-07-03 学校法人早稲田大学 メモリ管理方法、情報処理装置、プログラムの作成方法及びプログラム
JP2009258962A (ja) 2008-04-16 2009-11-05 Hitachi Ltd プログラム変換方法、及び装置
US20120239910A1 (en) * 2008-08-15 2012-09-20 Apple Inc. Conditional extract instruction for processing vectors
US8417919B2 (en) * 2008-09-12 2013-04-09 Wisconsin Alumni Research Foundation Assigning different serialization identifier to operations on different data set for execution in respective processor in multi-processor system
JP5406363B2 (ja) * 2009-10-27 2014-02-05 株式会社日立製作所 プール領域の一部の領域を動的にデータ格納領域として割り当てる記憶制御装置及び記憶制御方法
US9830157B2 (en) * 2010-08-18 2017-11-28 Wisconsin Alumni Research Foundation System and method for selectively delaying execution of an operation based on a search for uncompleted predicate operations in processor-associated queues
US9152523B2 (en) * 2010-09-15 2015-10-06 Qualcomm Incorporated Batching and forking resource requests in a portable computing device
KR101738641B1 (ko) * 2010-12-17 2017-05-23 삼성전자주식회사 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법
WO2012112302A2 (en) * 2011-02-17 2012-08-23 Siemens Aktiengesellschaft Parallel processing in human-machine interface applications
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
JP5637182B2 (ja) 2012-07-02 2014-12-10 株式会社デンソー プログラム開発支援装置、及びプログラム開発支援ツール
US20150363230A1 (en) * 2013-01-23 2015-12-17 Waseda University Parallelism extraction method and method for making program
US10241793B2 (en) * 2013-03-15 2019-03-26 Analog Devices Global Paralleizing loops in the presence of possible memory aliases
JP6018022B2 (ja) * 2013-06-14 2016-11-02 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
JP6427054B2 (ja) * 2015-03-31 2018-11-21 株式会社デンソー 並列化コンパイル方法、及び並列化コンパイラ
JP6427055B2 (ja) * 2015-03-31 2018-11-21 株式会社デンソー 並列化コンパイル方法、及び並列化コンパイラ
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP6558310B2 (ja) * 2016-06-13 2019-08-14 株式会社デンソー 並列化方法、並列化ツール

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019215804A (ja) * 2018-06-14 2019-12-19 株式会社デンソー マルチコアマイコン及び並列化方法
JP7073933B2 (ja) 2018-06-14 2022-05-24 株式会社デンソー マルチコアマイコン及び並列化方法
JP2020181407A (ja) * 2019-04-25 2020-11-05 株式会社デンソー 並列化方法、半導体制御装置、及び車載制御装置
JP7107275B2 (ja) 2019-04-25 2022-07-27 株式会社デンソー 並列化方法、半導体制御装置、及び車載制御装置

Also Published As

Publication number Publication date
DE102017210126A1 (de) 2017-12-21
US20170364341A1 (en) 2017-12-21
US10540156B2 (en) 2020-01-21

Similar Documents

Publication Publication Date Title
JP6018022B2 (ja) 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
EP2950211B1 (en) Parallelism extraction method and method for making program
US11243816B2 (en) Program execution on heterogeneous platform
JP2017228029A (ja) 並列化方法、並列化ツール、車載装置
JP6427054B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
US8799881B2 (en) Program parallelization device and program product
KR20080093108A (ko) 프로그램 병렬 실행 시스템 및 방법
US10296316B2 (en) Parallelization method, parallelization tool, and in-vehicle apparatus
EP2361408A1 (en) Method and system for parallelization of sequencial computer program codes
JP6464982B2 (ja) 並列化方法、並列化ツール、車載装置
US20150331787A1 (en) Software verification
JP6427053B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
JP6427055B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
JP6488739B2 (ja) 並列化コンパイル方法、及び、並列化コンパイラ
JP2008305337A (ja) プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム
JP7095513B2 (ja) マルチコアマイコン、及び車載装置
JP6933001B2 (ja) 並列化方法、並列化ツール
JP6488738B2 (ja) 並列化コンパイル方法、及び、並列化コンパイラ
JP6428557B2 (ja) 並列化方法、並列化ツール
KR20150040663A (ko) 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치
JP6558310B2 (ja) 並列化方法、並列化ツール
JP2005352894A (ja) 性能解析プログラム及び性能解析プログラムの生成方法
JP6933063B2 (ja) 並列化方法、並列化ツール、車載装置
JP2018124710A (ja) 並列化方法、並列化ツール、及び車載制御装置
JP7059776B2 (ja) 並列化方法、並列化ツール、及びマルチコアマイコン

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180803

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190416

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190610

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190806