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

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

Info

Publication number
JP6481585B2
JP6481585B2 JP2015206200A JP2015206200A JP6481585B2 JP 6481585 B2 JP6481585 B2 JP 6481585B2 JP 2015206200 A JP2015206200 A JP 2015206200A JP 2015206200 A JP2015206200 A JP 2015206200A JP 6481585 B2 JP6481585 B2 JP 6481585B2
Authority
JP
Japan
Prior art keywords
processing
program
conditions
core
single program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015206200A
Other languages
English (en)
Other versions
JP2017078938A (ja
Inventor
憲一 峰田
憲一 峰田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2015206200A priority Critical patent/JP6481585B2/ja
Priority to US15/279,600 priority patent/US10255119B2/en
Priority to DE102016220340.1A priority patent/DE102016220340A1/de
Publication of JP2017078938A publication Critical patent/JP2017078938A/ja
Application granted granted Critical
Publication of JP6481585B2 publication Critical patent/JP6481585B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/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
    • G06F8/451Code distribution
    • 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

Landscapes

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

Description

本発明は、シングルコアマイコン用のプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法、並列化ツール、及び並列化方法で生成された並列プログラムを実装した車載装置に関する。
従来、シングルコアマイコン用のプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法の一例として特許文献1に開示された並列化コンパイル方法がある。
この並列化コンパイル方法では、シングルプロセッサシステムにより実行される組込みシステム用の逐次プログラムを複数のマクロタスク(以下、MT)に分割した後、制御依存性を有するMTを一つのMTに融合する。その後、並列化コンパイル方法では、データ依存性に基づき並列実行可能なMTを抽出するとともに、スタティックスケジューリングを行い、並列プログラムを生成する。
特開2015−1807号公報
ところで、従来技術ではないが、シングルプログラムには、複数種類のMTを含み、複数の条件の夫々によって実行する種類の組み合わせが異なるものがある。このようなシングルプログラムの一例としては、ある条件で第1種類のMTと第3種類のMTの実行を示し、他の条件で第1種類のMTと第2種類のMTの実行を示すなどである。つまり、このシングルプログラムは、種類の組み合わせが異なる複数の処理パターンを含んでおり、条件に応じた処理パターンに含まれる種類のMTが実行されるようになっている。また、このシングルプログラムでは、各処理パターンに全種類のMTが含まれているわけではない。
しかしながら、特許文献1に開示された方法では、条件による分岐処理がシングルプログラムにあった場合、分岐の仕方まで把握することができない。よって、特許文献1で生成された並列プログラムでは、マルチコアマイコンの各コアに実行された場合に、ある条件のときに実際は実行されないMTであるにもかかわらず、コアに割り振られることが考えられる。このため、特許文献1に開示された方法では、コアが自身に割り振られたMTを実行しないことになり、マルチコアマイコンによる効率が低下する並列プログラムを生成してしまうという問題がある。
本発明は、上記問題点に鑑みなされたものであり、マルチコアマイコンによる効率低下を抑制可能な並列プログラムを作成できる並列化方法、並列化ツール、及びマルチコアマイコンによる効率低下を抑制できる車載装置を提供することを目的とする。
上記目的を達成するために本発明は、
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理から、複数のコア(21c、21d)を有するマルチコアマイコン(21)用に並列化した並列プログラム(21a1)を生成する並列化方法であって、
シングルプログラムは、複数種類の処理を含み、複数の条件の夫々によって実行する処理における種類の組み合わせが異なるものであり、
シングルプログラムから、複数の条件の夫々における種類の組み合わせである処理パターンを抽出する抽出手順(10a)と、
抽出した処理パターン毎に、複数の処理を各コアに割り振って、並列プログラムを生成する生成手順(10c〜10f)と、を備えていることを特徴とする。
このように、本発明は、複数種類の処理を含み、複数の条件の夫々によって実行する種類の組み合わせが異なるシングルプログラムから並列プログラムを生成する方法である。そして、本発明は、このシングルプログラムから、複数の条件の夫々における種類の組み合わせである処理パターンを抽出する。これによって、本発明は、各条件で実行される処理を把握できる。さらに、本発明は、抽出した処理パターン毎に、複数の処理を各コアに割り振って並列プログラムを生成する。このため、この並列プログラムは、マルチコアマイコンで実行された場合に、ある条件のときに実際は実行されない処理であるにもかかわらず、コアに割り振られることを抑制できる。従って、本発明は、マルチコアマイコンによる効率低下を抑制可能な並列プログラムを作成できる。
また、本発明のさらなる特徴は、
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理から、複数のコア(21c、21d)を有するマルチコアマイコン(21)用に並列化した並列プログラム(21a1)を生成するコンピュータを含む並列化ツールであって、
シングルプログラムは、複数種類の処理を含み、複数の条件の夫々によって実行する処理における種類の組み合わせが異なるものであり、
シングルプログラムから、複数の条件の夫々における種類の組み合わせである処理パターンを抽出する抽出部(10a)と、
抽出した処理パターン毎に、複数の処理を各コアに割り振って、並列プログラムを生成する生成部(10c〜10f)と、を備える点にある。
これによって、上記と同様に、マルチコアマイコンによる効率低下を抑制可能な並列プログラムとすることができる。
また、本発明のさらなる特徴は、
複数のコア(21c、21d)を有するマルチコアマイコン(21)と、コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理からマルチコアマイコン用に並列化された並列プログラム(21a1)とを含む車載装置であって、
シングルプログラムは、複数種類の処理を含み、複数の条件の夫々によって実行する処理における種類の組み合わせが異なるものであり、
並列プログラムは、
シングルプログラムから、複数の条件の夫々における種類の組み合わせである処理パターンを抽出され、
抽出された処理パターン毎に、複数の処理を各コアに割り振って生成されており、
複数のコアが自身に割り振られた処理を実行する点にある。
本発明の並列プログラムは、上記のように、マルチコアマイコンによる効率低下を抑制可能に生成されている。そして、複数のコアは、自身に割り振られた処理を実行する。よって、本発明は、マルチコアマイコンによる効率低下を抑制できる。
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
第1実施形態におけるコンピュータの概略構成を示すブロック図である。 第1実施形態における車載装置の概略構成を示すブロック図である。 実施形態におけるシングルプログラムの概略構成を示すソースコードである。 実施形態における処理パターンを示す表である。 実施形態におけるコンピュータの機能を示すブロック図である。 実施形態における処理パターン毎の並列プログラムを示すソースコードである。 実施形態における第1処理パターンの並列プログラムを示すイメージ図である。 実施形態における並列プログラムを示すソースコードである。
以下において、図面を参照しながら、発明を実施するための形態を説明する。本実施形態では、コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理から第1コア21cと第2コア21dを有するマルチコアマイコン21用に並列化した並列プログラム21a1を生成する例を採用する。この処理は、処理ブロックやマクロタスクなどと言い換えることができる。また、マルチコアマイコンは、マルチコアプロセッサと言い換えることができる。
このように、シングルプログラムから並列プログラム21a1を生成する背景としては、マイコンの発熱量増大や消費電力増加、クロック周波数の限界問題から、マルチコアプロセッサ21が主流になることなどがあげられる。そして、マルチコアプロセッサ21は、車載装置の分野においても適用が必要となっている。また、並列プログラム21a1としては、ソフトの開発期間や開発費を抑えつつ、信頼性が高く高速に処理の実行が可能なものが求められる。
なお、並列プログラム21a1を生成する際には、シングルプログラムにおける複数の処理の依存関係を解析したり、スケジューリングをしたりして、複数の処理をマルチコアプロセッサ21の異なるコア21c、21d用に割り振る。この点に関しては、特開2015−1807号公報を参照されたい。
本実施形態では、シングルプログラムの一例として、図3に示すようなソースコードのものを採用する。シングルプログラムは、複数種類の処理を含み、複数の条件の夫々によって実行する処理における種類の組み合わせが異なるものである。詳述すると、シングルプログラムは、複数種類の処理として、複数の実行周期の処理を含むものであり、最も周期が短い第1実行周期の処理と、第1実行周期の整数倍の実行周期である処理とを含んでいる。つまり、シングルプログラムは、タスク内で処理を分周処理する構成を含んでいる。分周処理とは、実行周期が長くても成り立つ処理を2回に1回、3回に1回など、間引いて実行することである。本実施形態では、一例として、第1実行周期が1msで、整数倍の実行周期が2ms、4ms、8msである例を採用する。
また、シングルプログラムは、カウント値を取得するシングルコアマイコン用のプログラムであって、複数の条件としてのカウント値毎に実行する種類の組み合わせが異なる。つまり、シングルプログラムは、カウント値に応じた組み合わせに分岐する構成となっていると言える。シングルプログラムは、分周処理の分岐の方向が規則的であり、且つ、分岐の方向によって処理量が異なる。
本実施形態では、図4に示すように、カウント値が0〜7の夫々で実行する実行周期が異なるシングルプログラムを採用する。また、シングルプログラムは、複数の組み合わせとして、第1処理パターンPt0〜第8処理パターンPt7を含んでいる。
カウント値0では、1ms毎の処理と4ms毎の処理が実行される。よって、第1処理パターンPt0は、カウント値0で実行される1ms毎の処理と4ms毎の処理を含んでいる。カウント値1では、1ms毎の処理と2ms毎の処理が実行される。よって、第2処理パターンPt1は、カウント値1で実行される1ms毎の処理と2ms毎の処理を含んでいる。
カウント値2では、1ms毎の処理と8ms毎の処理が実行される。よって、第3処理パターンPt2は、カウント値2で実行される1ms毎の処理と8ms毎の処理を含んでいる。カウント値3では、1ms毎の処理と2ms毎の処理が実行される。よって、第4処理パターンPt3は、カウント値3で実行される1ms毎の処理と2ms毎の処理を含んでいる。
カウント値4では、1ms毎の処理と4ms毎の処理が実行される。よって、第5処理パターンPt4は、カウント値4で実行される1ms毎の処理と4ms毎の処理を含んでいる。カウント値5では、1ms毎の処理と2ms毎の処理が実行される。よって、第6処理パターンPt5は、カウント値5で実行される1ms毎の処理と2ms毎の処理を含んでいる。
カウント値6では、1ms毎の処理が実行される。よって、第7処理パターンPt6は、カウント値6で実行される1ms毎の処理を含んでいる。カウント値7では、1ms毎の処理と2ms毎の処理が実行される。よって、第7処理パターンPt6は、カウント値7で実行される1ms毎の処理と8ms毎の処理を含んでいる。
この複数の処理は、お互いに依存関係がある処理が含まれている。依存関係とは、例えば、ある処理が、自身よりも先に実行された処理で更新されたデータを参照するなどの関係である。つまり、複数の処理は、シングルプログラムにおける実行順序が先である先行処理と、先行処理の実行が完了した後に実行させる後行処理とを含んでいる。そして、後行処理は、先行処理の影響を受ける処理であり、例えば、先行処理で内容が更新される可能性があるデータなどを用いる処理である。
ここで、図1を用いて、コンピュータ10の構成に関して説明する。コンピュータ10は、並列化方法を実行する並列化ツールに相当し、並列プログラム21a1を生成する。コンピュータ10は、ディスプレイ11、HDD12、CPU13、ROM14、RAM15、入力装置16、読取部17などを備えて構成されている。また、コンピュータ10は、記憶媒体18に記憶された記憶内容を読み取り可能に構成されている。この記憶媒体18には、自動並列化コンパイラ1が記憶されている。また、コンピュータ10は、後程図5を用いて説明するが、各種機能を備えている。
なお、HDDは、hard disk driveの略称である。CPUは、Central Processing Unitの略称である。ROMは、Read Only Memoryの略称である。RAMは、Random Access Memoryの略称である。コンピュータ10及び記憶媒体18の構成は、特開2015−1807号公報に記載されたパーソナルコンピュータ100及び記憶媒体180を参照されたい。
自動並列化コンパイラ1は、並列プログラム21a1を生成するための手順を含んでいる。よって、自動並列化コンパイラ1は、並列化方法に相当する。つまり、自動並列化コンパイラ1は、並列化方法を含むプログラムである。自動並列化コンパイラ1は、特開2015−1807号公報に記載されたものに加えて、抽出手順と結合手順を含んでいる。さらに、自動並列化コンパイラ1は、処理パターンPt0〜Pt7毎に、並列プログラム21a1を生成する点が特開2015−1807号公報に記載されたものと異なる。抽出手順と結合手順は、後程説明する。
次に、車載装置20の構成に関して説明する。車載装置20は、図2に示すように、マルチコアプロセッサ21、通信部22、センサ部23、入出力ポート24を備えて構成されている。また、マルチコアプロセッサ21は、ROM21a、RAM21b、第1コア21c、第2コア21dを備えて構成されている。車載装置20は、例えば、自動車に搭載されたエンジン制御装置やハイブリッド制御装置などに適用できる。ここでは、一例として、車載装置20をエンジン制御装置に適用した例を採用する。この場合、並列プログラム21a1は、エンジン制御などの自動車制御プログラムと言える。しかしながら、並列プログラム21a1は、これに限定されない。なお、コアは、プロセッサエレメントPEとも称することができる。よって、後程説明する並列プログラム21a1中のPE0は、第1コア21cを示している。一方、PE1は第2コア21dを示している。
RAM21b、通信部22、センサ部23、入出力ポート24は、特開2015−1807号公報に記載されたRAM420、通信部430、センサ部450、入出力ポート460を参照されたい。
ROM21aには、自動並列化コンパイラ1を用いて生成された並列プログラム21a1が記憶されている。第1コア21cと第2コア21dは、並列プログラム21a1を実行することで、エンジン制御を行う。なお、第1コア21cと第2コア21dは、図示しないカウンタのカウント値を取得可能に構成されている。
次に、図5〜図6を用いて、コンピュータ10が自動並列化コンパイラ1を実行した際の処理動作に関して説明する。コンピュータ10は、自動並列化コンパイラ1を実行することで並列プログラム21a1を生成する。
図5は、コンピュータ10の処理を機能ブロックで表した図面である。コンピュータ10は、パターン抽出部10a、定義部10b、解析部10c、コア割付部10d、スケジューリング部10e、結合部10fを含んで構成されている。
パターン抽出部10aは、シングルプログラムから、複数の条件の夫々における種類の組み合わせである処理パターンPt0〜Pt7を抽出する(抽出部)。本実施形態のパターン抽出部10aは、シングルプログラムから、複数の条件の夫々における実行周期の組み合わせである処理パターンPt0〜Pt7を抽出する。また、パターン抽出部10aは、シングルプログラムから、複数の条件としてのカウント値の夫々における処理パターンPt0〜Pt7を抽出する。
つまり、パターン抽出部10aは、シングルプログラムから上記のような複数の処理パターンPt0〜Pt7を抽出する。このように、コンピュータ10は、自動並列化コンパイラ1を実行することで、シングルプログラムから複数の処理パターンPt0〜Pt7を抽出する。よって、自動並列化コンパイラ1は、シングルプログラムから、複数の条件の夫々における種類の組み合わせである処理パターンを抽出する抽出手順を含んでいると言える。このため、パターン抽出部10aは、抽出手順に相当するとみなせる。
定義部10bでは、シングルプログラムと、抽出された複数の処理パターンPt0〜Pt7とを用いて、並列化を行う範囲を定義する。つまり、定義部10bでは、シングルプログラムのソースコードにおいて各処理パターンPt0〜Pt7の該当する夫々の範囲を、並列化のための解析を行う範囲に定義する。よって、ここでは、8個の並列化のための解析を行う範囲が定義される。なお、定義部10bでは、シングルプログラムのソースコードから、複数の処理パターンPt0〜Pt7の夫々に該当するソースコードを選択するとも言える。また、定義部10bは、例えば、シングルプログラムと、複数の処理パターンPt0〜Pt7の情報が入力される。
解析部10cは、夫々の範囲を個別に対象として、シングルプログラムの依存関係を解析し、並列化可能な処理を抽出する(生成部)。言い換えると、解析部10cは、抽出した処理パターンPt0〜Pt7毎に、シングルプログラムの依存関係を解析し、並列化可能な処理を抽出する。つまり、解析部10cは、第1処理パターンPt0に対応する範囲を対象として並列化可能な処理を抽出するとともに、第2処理パターンPt1に対応する範囲から第8処理パターンPt7に対応する範囲の夫々を対象として、並列化可能な処理を抽出する。また、解析部10cは、夫々の範囲を個別に対象として、特開2015−1807号公報と同様に並列化可能な処理を抽出すると言える。
なお、解析部10cは、データ依存解析部とも言える。また、解析部10cは、夫々の範囲を個別に対象として、各処理の処理時間、すなわち、各処理の実行に要する時間を解析してもよい。
コア割付部10dは、夫々の範囲を個別に対象として、各処理を各コア21c、21dに割り付ける(生成部)。言い換えると、コア割付部10dは、抽出した処理パターンPt0〜Pt7毎に、各処理を各コア21c、21dに割り振る。また、コア割付部10dは、夫々の範囲を個別に対象として、特開2015−1807号公報と同様に各処理を割り振ると言える。
スケジューリング部10eは、夫々の範囲を個別に対象として、各処理のスケジューリングを行うことで、各処理を並び替えたりする(生成部)。言い換えると、スケジューリング部10eは、抽出した処理パターンPt0〜Pt7毎に、各処理のスケジューリングを行う。例えば、スケジューリング部10eは、夫々の範囲を個別に対象として、複数の処理をシングルプログラムにおける実行順に並べる。また、スケジューリング部10eは、夫々の範囲を個別に対象として、特開2015−1807号公報と同様にスケジューリングを行うと言える。
これによって、コンピュータ10は、結合前プログラム21a2を生成する。結合前プログラム21a2は、図6に示すように、複数のプレプログラムPg0〜Pg7を含んでいる。各プレプログラムPg0〜Pg7は、処理パターンPt0〜Pt7毎に並列化されたソースコードである。また、各プレプログラムPg0〜Pg7は、複数の処理パターンPt0〜Pt7の夫々に対応した並列プログラムとも言える。つまり、コンピュータ10は、処理パターンPt0〜Pt7の数だけプレプログラムPg0〜Pg7を生成することになる。
つまり、第1プレプログラムPg0は、第1処理パターンPt0に含まれる処理を対象として、上記のように依存関係の解析、各コア21c、21dへの割り振り、スケジューリングが行われたソースコードである。また、第1プレプログラムPg0は、第1コア21c用の第1ソースコードPt01と、第2コア21d用の第2ソースコードPt02とを含んでいると言える。
同様に、第2プレプログラムPg1は、第2処理パターンPt1に含まれる処理を対象としたソースコードである。第3プレプログラムPg2は、第3処理パターンPt2に含まれる処理を対象としたソースコードである。第4プレプログラムPg3は、第4処理パターンPt3に含まれる処理を対象としたソースコードである。第5プレプログラムPg4は、第5処理パターンPt4に含まれる処理を対象としたソースコードである。第6プレプログラムPg5は、第6処理パターンPt5に含まれる処理を対象としたソースコードである。第7プレプログラムPg6は、第7処理パターンPt6に含まれる処理を対象としたソースコードである。第8プレプログラムPg7は、第8処理パターンPt7に含まれる処理を対象としたソースコードである。
例えば、第1プレプログラムPg0は、第1処理パターンPt0に含まれる1ms毎の処理である第1処理MT1と第3処理MT3、及び4ms毎の処理である第2処理MT2と第4処理MT4が、各コア21c、21dに割り振られている。そして、第1プレプログラムPg0は、図6、図7に示すように、第1コア21cに第1処理MT1と第2処理MT2が割り振られており、第2コア21dに第3処理MT3と第4処理MT4が割り振られている。このように、第1プレプログラムPg0は、実際に実行される処理のみでスケジューリングされる。このため、第1プレプログラムPg0は、例えばマルチコアプロセッサ21で実行された場合、第1コア21cと第2コア21dとで処理を実行する負荷のバランスが崩れることを抑制できる。他のプレプログラムPg1〜Pg7に関しても同様である。
結合部10fは、各プレプログラムPg0〜Pg7を結合して、並列プログラム21a1を生成する(生成部)。つまり、結合部10fは、各プレプログラムPg0〜Pg7における第1コア21c用のソースコードを結合するとともに、各プレプログラムPg0〜Pg7における第2コア21d用のソースコードを結合する。これによって、結合部10fは、図8に示すような並列プログラム21a1を生成することになる。
並列プログラム21a1は、第1コア21c用のプログラムと、第2コア21d用のプログラムとを含んでいる。また、第1コア21c用のプログラムは、例えば第1ソースコードPt01などの、各プレプログラムPg0〜Pg7における第1コア21c用のソースコードを含んでいる。同様に、第2コア21d用のプログラムは、例えば第2ソースコードPt02などの、各プレプログラムPg0〜Pg7における第2コア21d用のソースコードを含んでいる。
なお、図8における符号Pt11は、第2プレプログラムPg1における第1コア21c用のソースコードである。符号Pt12は、第2プレプログラムPg1における第2コア21d用のソースコードである。符号Pt71は、第8プレプログラムPg7における第1コア21c用のソースコードである。符号Pt72は、第8プレプログラムPg7における第2コア21d用のソースコードである。
このように、コンピュータ10は、自動並列化コンパイラ1を実行することで、抽出した処理パターンPt0〜Pt7毎に、複数の処理を各コア21c、21dに割り振って、並列プログラム21a1を生成する。よって、自動並列化コンパイラ1は、抽出した処理パターンPt0〜Pt7毎に、複数の処理を各コア21c、21dに割り振って、並列プログラム21a1を生成する生成手順を含んでいると言える。このため、解析部10c、コア割付部10d、スケジューリング部10e、結合部10fは、生成手順に相当するとみなせる。
また、コンピュータ10は、自動並列化コンパイラ1を実行することで、各プレプログラムPg0〜Pg7を結合する。よって、自動並列化コンパイラ1は、各プレプログラムPg0〜Pg7を結合する結合手順を含んでいると言える。
以上のように、コンピュータ10は、複数の実行周期の処理を含み、複数のカウント値の夫々によって実行する実行周期の組み合わせが異なるシングルプログラムから並列プログラムを21a1生成する。そして、コンピュータ10は、このシングルプログラムから、複数のカウント値の夫々における実行周期の組み合わせである処理パターンPt0〜Pt7を抽出する。これによって、コンピュータ10は、各カウント値で実行される処理を把握できる。さらに、コンピュータ10は、抽出した処理パターンPt0〜Pt7毎に、複数の処理を各コア21c、21dに割り振って並列プログラム21a1を生成する。このため、この並列プログラム21a1は、マルチコアプロセッサ21で実行された場合に、あるカウント値のときに実際は実行されない処理であるにもかかわらず、各コア21c、21dに割り振られることを抑制できる。従って、コンピュータ10は、マルチコアプロセッサ21による効率低下を抑制可能な並列プログラム21a1を作成できる。さらに、コンピュータ10は、第1コア21cと第2コア21dとで処理を実行する負荷のバランスが崩れることを抑制できる。
なお、コンピュータ10は、自動並列化コンパイラ1を実行することで、このような効果を奏することができる。このため、自動並列化コンパイラ1は、同様の効果を奏することができる。
また、上記のように、車載装置20のROM21aには、自動並列化コンパイラ1を用いて生成された並列プログラム21a1、言い換えると、コンピュータ10によって生成された並列プログラム21a1が記憶されている。そして、車載装置20は、第1コア21cが並列プログラム21a1における第1コア21c用のプログラムを実行し、第2コア21dが並列プログラム21a1における第2コア21d用のプログラムを実行することで、エンジン制御を行う。このため、車載装置20は、マルチコアプロセッサ21による効率低下を抑制できる。
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
例えば、本発明は、作業者などが、特開2015−1807号公報に記載された並列化方法に加えて、抽出手順と生成手順を行うことで、並列プログラム21a1を生成してもよい。
また、シングルプログラムは、複数のセンサの検出結果である複数のセンサ値を取得するシングルコアマイコン用のプログラムであって、複数の条件としてのセンサ値毎に実行する種類の組み合わせが異なるものであってもよい。例えば、エンジンの回転数を検出する回転センサのセンサ値や、バッテリの電圧を検出する電圧センサのセンサ値などに応じて、処理の組み合わせが異なるように構成されたシングルプログラムを採用できる。なお、種類は、上記実施形態と同様に、実行周期を採用できる。この場合、コンピュータ10は、シングルプログラムから、複数の条件としてのセンサ値の夫々における処理パターンを抽出する。コンピュータ10は、このように動作しても、上記と同様の効果を奏することができる。また、自動並列化コンパイラ1は、コンピュータ10によって実行されるため、上記と同様の効果を奏することができる。
1 自動並列化コンパイラ、10 コンピュータ、10a パターン抽出部、10b 定義部、10c 解析部、10d コア割付部、10e スケジューリング部、10f 結合部、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 (15)

  1. コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理から、複数の前記コア(21c、21d)を有するマルチコアマイコン(21)用に並列化した並列プログラム(21a1)を生成する並列化方法であって、
    前記シングルプログラムは、複数種類の前記処理を含み、複数の条件の夫々によって実行する前記処理における前記種類の組み合わせが異なるものであり、
    前記シングルプログラムから、複数の前記条件の夫々における前記種類の組み合わせである処理パターンを抽出する抽出手順(10a)と、
    抽出した前記処理パターン毎に、複数の前記処理を各コアに割り振って、前記並列プログラムを生成する生成手順(10c〜10f)と、を備えている並列化方法。
  2. 前記シングルプログラムは、複数種類の前記処理として、複数の実行周期の前記処理を含むものであり、最も周期が短い第1実行周期である前記処理と、前記第1実行周期の整数倍の前記実行周期である前記処理とを含み、
    前記抽出手順は、前記シングルプログラムから、複数の前記条件の夫々における前記実行周期の組み合わせである前記処理パターンを抽出する請求項1に記載の並列化方法。
  3. 前記シングルプログラムは、カウント値を取得する前記シングルコアマイコン用のプログラムであって、複数の前記条件としての前記カウント値毎に実行する前記種類の組み合わせが異なり、
    前記抽出手順は、前記シングルプログラムから、複数の前記条件としてのカウント値の夫々における前記処理パターンを抽出する請求項1又は2に記載の並列化方法。
  4. 前記シングルプログラムは、センサの検出結果である複数のセンサ値を取得する前記シングルコアマイコン用のプログラムであって、複数の前記条件としての前記センサ値毎に実行する前記種類の組み合わせが異なり、
    前記抽出手順は、前記シングルプログラムから、複数の前記条件としての前記センサ値の夫々における前記処理パターンを抽出する請求項1又は2に記載の並列化方法。
  5. 前記生成手順は、抽出した前記処理パターン毎に、複数の前記処理の依存関係を解析し、且つ、複数の前記処理を前記シングルプログラムにおける実行順に並べる請求項1乃至4のいずれかに記載の並列化方法。
  6. コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理から、複数の前記コア(21c、21d)を有するマルチコアマイコン(21)用に並列化した並列プログラム(21a1)を生成するコンピュータを含む並列化ツールであって、
    前記シングルプログラムは、複数種類の前記処理を含み、複数の条件の夫々によって実行する前記処理における前記種類の組み合わせが異なるものであり、
    前記シングルプログラムから、複数の前記条件の夫々における前記種類の組み合わせである処理パターンを抽出する抽出部(10a)と、
    抽出した前記処理パターン毎に、複数の前記処理を各コアに割り振って、前記並列プログラムを生成する生成部(10c〜10f)と、を備えている並列化ツール。
  7. 前記シングルプログラムは、複数種類の前記処理として、複数の実行周期の前記処理を含むものであり、最も周期が短い第1実行周期の前記処理と、前記第1実行周期の整数倍の前記実行周期である前記処理とを含み、
    前記抽出部は、前記シングルプログラムから、複数の前記条件の夫々における前記実行周期の組み合わせである前記処理パターンを抽出する請求項6に記載の並列化ツール。
  8. 前記シングルプログラムは、カウント値を取得する前記シングルコアマイコン用のプログラムであって、複数の前記条件としての前記カウント値毎に実行する前記種類の組み合わせが異なり、
    前記抽出部は、前記シングルプログラムから、複数の前記条件としてのカウント値の夫々における前記処理パターンを抽出する請求項6又は7に記載の並列化ツール。
  9. 前記シングルプログラムは、センサの検出結果である複数のセンサ値を取得する前記シングルコアマイコン用のプログラムであって、複数の前記条件としての前記センサ値毎に実行する前記種類の組み合わせが異なり、
    前記抽出部は、前記シングルプログラムから、複数の前記条件としての前記センサ値の夫々における前記処理パターンを抽出する請求項6又は7に記載の並列化ツール。
  10. 前記生成部は、抽出した前記処理パターン毎に、複数の前記処理の依存関係を解析し、且つ、複数の前記処理を前記シングルプログラムにおける実行順に並べる請求項6乃至9のいずれかに記載の並列化ツール。
  11. 複数のコア(21c、21d)を有するマルチコアマイコン(21)と、前記コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理から前記マルチコアマイコン用に並列化された並列プログラム(21a1)とを含む車載装置であって、
    前記シングルプログラムは、複数種類の前記処理を含み、複数の条件の夫々によって実行する前記処理における前記種類の組み合わせが異なるものであり、
    前記並列プログラムは、
    前記シングルプログラムから、複数の前記条件の夫々における前記種類の組み合わせである処理パターンを抽出され、
    抽出された前記処理パターン毎に、複数の前記処理を各コアに割り振って生成されており、
    複数の前記コアは、自身に割り振られた前記処理を実行する車載装置。
  12. 前記シングルプログラムは、複数種類の前記処理として、複数の実行周期の前記処理を含むものであり、最も周期が短い第1実行周期の前記処理と、前記第1実行周期の整数倍の前記実行周期である前記処理とを含み、
    前記並列プログラムは、前記シングルプログラムから、複数の前記条件の夫々における前記実行周期の組み合わせである前記処理パターンが抽出されている請求項11に記載の車載装置。
  13. 前記シングルプログラムは、カウント値を取得する前記シングルコアマイコン用のプログラムであって、複数の前記条件としての前記カウント値毎に実行する前記種類の組み合わせが異なり、
    前記並列プログラムは、前記シングルプログラムから、複数の前記条件としてのカウント値の夫々における前記処理パターンが抽出されている請求項11又は12に記載の車載装置。
  14. 前記シングルプログラムは、センサの検出結果である複数のセンサ値を取得する前記シングルコアマイコン用のプログラムであって、複数の前記条件としての前記センサ値毎に実行する前記種類の組み合わせが異なり、
    前記並列プログラムは、前記シングルプログラムから、複数の前記条件としての前記センサ値の夫々における前記処理パターンが抽出されている請求項11又は12に記載の車載装置。
  15. 前記並列プログラムは、抽出した前記処理パターン毎に、複数の前記処理の依存関係を解析し、且つ、複数の前記処理を前記シングルプログラムにおける実行順に並べられている請求項11乃至14のいずれかに記載の車載装置。
JP2015206200A 2015-10-20 2015-10-20 並列化方法、並列化ツール、車載装置 Active JP6481585B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015206200A JP6481585B2 (ja) 2015-10-20 2015-10-20 並列化方法、並列化ツール、車載装置
US15/279,600 US10255119B2 (en) 2015-10-20 2016-09-29 Parallelization method, parallelization tool and vehicle-mounted device
DE102016220340.1A DE102016220340A1 (de) 2015-10-20 2016-10-18 Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015206200A JP6481585B2 (ja) 2015-10-20 2015-10-20 並列化方法、並列化ツール、車載装置

Publications (2)

Publication Number Publication Date
JP2017078938A JP2017078938A (ja) 2017-04-27
JP6481585B2 true JP6481585B2 (ja) 2019-03-13

Family

ID=58456714

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015206200A Active JP6481585B2 (ja) 2015-10-20 2015-10-20 並列化方法、並列化ツール、車載装置

Country Status (3)

Country Link
US (1) US10255119B2 (ja)
JP (1) JP6481585B2 (ja)
DE (1) DE102016220340A1 (ja)

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
CN113723618B (zh) * 2021-08-27 2022-11-08 南京星环智能科技有限公司 一种shap的优化方法、设备及介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07141300A (ja) * 1993-11-18 1995-06-02 Nippon Telegr & Teleph Corp <Ntt> マルチプロセッサを用いた周期処理方法
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
US9043795B2 (en) * 2008-12-11 2015-05-26 Qualcomm Incorporated Apparatus and methods for adaptive thread scheduling on asymmetric multiprocessor
US9367357B2 (en) * 2013-01-18 2016-06-14 Nec Corporation Simultaneous scheduling of processes and offloading computation on many-core coprocessors
JP6018022B2 (ja) 2013-06-14 2016-11-02 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
US10108445B2 (en) * 2014-09-22 2018-10-23 The Boeing Company Parallelization in virtual machine operation

Also Published As

Publication number Publication date
JP2017078938A (ja) 2017-04-27
DE102016220340A1 (de) 2017-04-20
US10255119B2 (en) 2019-04-09
US20170109216A1 (en) 2017-04-20

Similar Documents

Publication Publication Date Title
US8799880B2 (en) Parallelization of PLC programs for operation in multi-processor environments
JP4957729B2 (ja) プログラム並列化方法、プログラム並列化装置及びプログラム
Bonifaci et al. Feasibility analysis in the sporadic dag task model
US20110067015A1 (en) Program parallelization apparatus, program parallelization method, and program parallelization program
Goens et al. Tetris: a multi-application run-time system for predictable execution of static mappings
US20110099550A1 (en) Analysis and visualization of concurrent thread execution on processor cores.
JP6481585B2 (ja) 並列化方法、並列化ツール、車載装置
KR20120068572A (ko) 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법
CN108139898B (zh) 数据处理图编译
TW201519091A (zh) 用於任務排程之電腦系統,方法及電腦可讀取記錄媒體
US10296316B2 (en) Parallelization method, parallelization tool, and in-vehicle apparatus
US20170249239A1 (en) Analysis and visualization of application concurrency and processor resource utilization
Dinh et al. Blocking analysis for spin locks in real-time parallel tasks
WO2020121840A1 (ja) 演算制御装置
Cho et al. On-the-fly workload partitioning for integrated CPU/GPU architectures
JP2017073000A (ja) 並列化方法、並列化ツール、車載装置
Langer et al. A survey of parallel hard-real time scheduling on task models and scheduling approaches
US20150331787A1 (en) Software verification
JP2017228029A (ja) 並列化方法、並列化ツール、車載装置
JP6427055B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
Qamhieh et al. Stretching algorithm for global scheduling of real-time DAG tasks
JP6933001B2 (ja) 並列化方法、並列化ツール
Becker et al. Evaluating dynamic task scheduling in a task-based runtime system for heterogeneous architectures
KR20110080540A (ko) 컴퓨팅 시스템 및 방법
JP2019145065A (ja) 並列化方法、並列化ツール、マルチコアマイコン、及び車載装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181228

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190115

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190128

R151 Written notification of patent or utility model registration

Ref document number: 6481585

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250