JP2016218503A - Parallelizing compile method, parallelizing compiler, and car onboard device - Google Patents

Parallelizing compile method, parallelizing compiler, and car onboard device Download PDF

Info

Publication number
JP2016218503A
JP2016218503A JP2015098913A JP2015098913A JP2016218503A JP 2016218503 A JP2016218503 A JP 2016218503A JP 2015098913 A JP2015098913 A JP 2015098913A JP 2015098913 A JP2015098913 A JP 2015098913A JP 2016218503 A JP2016218503 A JP 2016218503A
Authority
JP
Japan
Prior art keywords
processing
parallel
sequential
procedure
allocation
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.)
Granted
Application number
JP2015098913A
Other languages
Japanese (ja)
Other versions
JP6428476B2 (en
Inventor
祐 中川
Yu Nakagawa
祐 中川
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 JP2015098913A priority Critical patent/JP6428476B2/en
Priority to DE102016208339.2A priority patent/DE102016208339A1/en
Publication of JP2016218503A publication Critical patent/JP2016218503A/en
Application granted granted Critical
Publication of JP6428476B2 publication Critical patent/JP6428476B2/en
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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Abstract

PROBLEM TO BE SOLVED: To provide a parallelizing compile method with which it is possible to optimize performance improvement effects when a sequential program has a plurality of processes, in which some of the processes is made a sequential operation and the rest is made a parallel operation.SOLUTION: The parallelizing compile method comprises: a classification procedure for classifying a process group constituting a sequential program into a sequential process that runs sequentially on a single core constituting a multi-core processor and parallel processes that run in parallel on a plurality of cores constituting the multi-core processor; an assignment procedure for executing an uneven assignment process that assigns the processes classified into parallel processes by the classification procedure unevenly to the plurality of cores; and a generation procedure for generating parallel programs on the basis of the classification result of the classification procedure and the assignment result of the assignment procedure.SELECTED DRAWING: Figure 1

Description

本発明は、シングルコアプロセッサ用に記述された逐次プログラムからマルチコアプロセッサ用に並列化した並列プログラムを生成する並列化コンパイル方法、並列化コンパイラ、及び車載装置に関する。   The present invention relates to a parallel compilation method, a parallel compiler, and an in-vehicle device that generate a parallel program parallelized for a multicore processor from a sequential program described for a single core processor.

自動車における制御系,情報系の高度化,統合化のためには、それらを実現するためのプロセッサの高能力化が重要となる。例えば、安全,快適で燃費の良い自動車開発のために重要なエンジン制御系を高度化するためには、制御アルゴリズムの高度化や新たな制御機能の実現等、計算負荷の増大が避けられない。このような問題を解決する為には、リアルタイム制御を実現しているプロセッサの高速化が必須となる。   For the advancement and integration of control systems and information systems in automobiles, it is important to increase the capacity of processors to realize them. For example, in order to upgrade the engine control system, which is important for the development of safe, comfortable and fuel-efficient vehicles, it is inevitable that the calculation load will increase due to the advancement of control algorithms and the realization of new control functions. In order to solve such a problem, it is essential to increase the speed of a processor that realizes real-time control.

しかし、従来のようにプロセッサの動作周波数を向上させることは、消費電力が周波数の三乗に比例して増大するため、困難となっている。このため、1チップ上に低動作周波数のプロセッサコアを複数集積し、電力削減のために低周波数化・低電圧化したプロセッサコアを並列動作させることで、処理の高速化と低電力化を同時に実現可能なマルチコアプロセッサへの移行が急ピッチで行われている。   However, it is difficult to improve the operating frequency of the processor as in the prior art because power consumption increases in proportion to the cube of the frequency. For this reason, multiple processor cores with low operating frequencies are integrated on a single chip, and processor cores with low frequency and low voltage are operated in parallel to reduce power consumption, thereby simultaneously increasing processing speed and reducing power consumption. The transition to a feasible multi-core processor is taking place at a rapid pace.

マルチコアプロセッサにて、シングルコアプロセッサよりも高速な処理を行うためには、シングルコアプロセッサ用の逐次プログラムの処理を分割し、プロセッサコア間の通信が最小になる形で各プロセッサコアに各処理を割り当てる必要がある。従来、このような逐次プログラムの並列化の作業は人手で行う必要があったが、このような作業は大変困難で長期間を要し、開発費の増加や並列化されたプログラムの信頼性等、多くの課題が生じている。   In order to perform processing at a higher speed than a single core processor in a multi-core processor, the processing of the sequential program for the single core processor is divided, and each processing is performed on each processor core in a form that minimizes communication between the processor cores. Must be assigned. Conventionally, it has been necessary to manually perform such parallelization of sequential programs, but such operations are very difficult and require a long period of time, increasing development costs, reliability of parallelized programs, etc. Many challenges have arisen.

下記特許文献1では、開発期間や開発費を抑えつつ、信頼性が高く、高速な処理が可能な車載装置用の組込みシステム向けの並列化プログラムを作成することができる並列化コンパイル方法が提案されている。   Patent Document 1 below proposes a parallel compilation method that can create a parallel program for an embedded system for an in-vehicle device that can perform high-speed processing with high reliability while suppressing the development period and development cost. ing.

特開2015−1807号公報Japanese Patent Laid-Open No. 2015-1807

従来の技術では、逐次プログラムが複数の処理を有する場合、複数の処理全てを並列化し、複数のコアに割り当てる並列化プログラムを生成するものであった。この場合、複数のコアそれぞれの処理負荷を均一化するため、処理時間がコア数で按分され、例えば2つのコアの場合の処理時間は逐次プログラムの略半分程度になる。しかしながら、逐次プログラムに含まれる処理に実行時間の短いものが含まれる場合、その処理を並列化することによるコア間の通信処理時間といったオーバーヘッドにおける時間増大分が本来の処理実行時間に比して無視できないものになる場合がある。このような場合には、その実行時間の短い処理はそのまま逐次動作とし、他の処理を並列動作とするような並列化プログラムを生成することになる。   In the conventional technique, when a sequential program has a plurality of processes, all the plurality of processes are parallelized and a parallelized program assigned to a plurality of cores is generated. In this case, in order to equalize the processing load of each of the plurality of cores, the processing time is apportioned by the number of cores. For example, the processing time in the case of two cores is approximately half that of the sequential program. However, if the processing included in the sequential program includes something with a short execution time, the time increase in overhead such as the communication processing time between cores by parallelizing the processing is ignored compared to the original processing execution time. It may become impossible. In such a case, a parallelized program is generated in which the processing with a short execution time is performed as it is and the other processing is performed in parallel.

更に、逐次プログラムに含まれる処理の中には、機能安全に対応するために冗長化された特定のコアで実行させたい処理が含まれる場合がある。しかしながら、一般的にマルチコアプロセッサの全てのコアを冗長化することがないため、前述の処理は冗長化された特定のコアで実行させる必要があり、このような処理は逐次動作のままとしておくことが求められる。このように、並列化されず逐次動作のままの処理が並列化プログラムに含まれる場合、本来意図した処理負荷の均一化による性能向上が図れないという課題があった。   Furthermore, the processing included in the sequential program may include processing that is desired to be executed by a specific core made redundant in order to cope with functional safety. However, in general, since all the cores of a multi-core processor are not made redundant, it is necessary to execute the above-described processing by a specific redundant core, and such processing should be left in sequential operation. Is required. As described above, when the parallelized program includes processes that are not parallelized but remain in sequential operation, there is a problem in that the performance cannot be improved by equalizing the originally intended processing load.

本発明はこのような課題に鑑みてなされたものであり、その目的は、逐次プログラムが複数の処理を有する場合に、一部の処理を逐次動作とし、残部の処理を並列動作とする場合に、性能向上効果を最適化することが可能な並列化コンパイル方法、並列化コンパイラ、及び車載装置に関する。   The present invention has been made in view of such a problem, and the purpose thereof is when a sequential program has a plurality of processes, a part of the processes is a sequential operation, and the remaining processes are a parallel operation. The present invention relates to a parallelization compiling method, a parallelizing compiler, and an in-vehicle device that can optimize the performance improvement effect.

上記課題を解決するために、本発明に係る並列化コンパイル方法は、シングルコアプロセッサで処理可能なように記述された逐次プログラムからマルチコアプロセッサ(21)で処理可能なように並列化した並列プログラムを生成する並列化コンパイル方法であって、前記逐次プログラムを構成する処理群を、前記マルチコアプロセッサを構成する単一コア上で逐次動作する逐次処理と、前記マルチコアプロセッサを構成する複数コア上で並列動作する並列処理とに分類する分類手順と、前記分類手順によって前記並列処理に分類された処理を前記複数コアに対して不均一に割り当てる不均一割当処理を実行する割当手順と、前記分類手順の分類結果及び前記割当手順の割当結果に基づいて前記並列プログラムを生成する生成手順と、を備える。   In order to solve the above-mentioned problem, a parallel compilation method according to the present invention includes a parallel program parallelized so that it can be processed by a multi-core processor (21) from a sequential program described so that it can be processed by a single-core processor. A parallelized compiling method to be generated, wherein a processing group constituting the sequential program is sequentially operated on a single core constituting the multi-core processor and parallel operation on a plurality of cores constituting the multi-core processor. A classification procedure for classifying the parallel processing to be performed, an allocation procedure for performing non-uniform allocation processing for non-uniformly allocating the processing classified as the parallel processing by the classification procedure to the plurality of cores, and classification of the classification procedure A generation procedure for generating the parallel program based on a result and an allocation result of the allocation procedure; .

また、本発明に係る並列化コンパイラは、シングルコアプロセッサで処理可能なように記述された逐次プログラムからマルチコアプロセッサ(21)で処理可能なように並列化した並列プログラムを生成する並列化コンパイラであって、前記並列化コンパイル方法の分類手順と、割当手順と、生成手順と、を実行可能なように構成されている。   The parallelizing compiler according to the present invention is a parallelizing compiler that generates a parallel program parallelized so that it can be processed by a multicore processor (21) from a sequential program described so that it can be processed by a single core processor. Thus, the classification procedure, the allocation procedure, and the generation procedure of the parallel compilation method can be executed.

また、本発明に係る車載装置は、シングルコアプロセッサで処理可能なように記述された逐次プログラムからマルチコアプロセッサ(21)で処理可能なように並列化した並列プログラムにより動作するマルチコアプロセッサを備える車載装置(20)であって、前記並列化コンパイル方法の分類手順と、割当手順と、生成手順と、を実行可能なように構成されている。   Moreover, the vehicle-mounted device according to the present invention includes a multi-core processor that operates by a parallel program that is parallelized so that it can be processed by a multi-core processor (21) from a sequential program described so as to be processed by a single-core processor. (20) It is configured to be able to execute a classification procedure, an allocation procedure, and a generation procedure of the parallel compilation method.

これら本発明によれば、分類手順によって並列処理に分類された処理を複数コアに対して不均一に割り当てる不均一割当処理を実行するので、逐次処理を含めた場合の性能向上の最適化を図ることができる。   According to these aspects of the present invention, the non-uniform allocation process that non-uniformly allocates the processes classified as the parallel process by the classification procedure to the plurality of cores is executed, so that the performance improvement when the sequential process is included is optimized. be able to.

本発明によれば、逐次プログラムが複数の処理を有する場合に、一部の処理を逐次動作とし、残部の処理を並列動作とする場合に、性能向上効果を最適化することが可能な並列化コンパイル方法、並列化コンパイラ、及び車載装置を提供することができる。   According to the present invention, when a sequential program has a plurality of processes, a parallel process capable of optimizing the performance improvement effect when a part of the processes is a sequential operation and the remaining processes are a parallel operation. A compiling method, a parallelizing compiler, and an in-vehicle device can be provided.

図1は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。FIG. 1 is a diagram for explaining a parallel compiling method according to an embodiment of the present invention. 図2は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。FIG. 2 is a diagram for explaining a parallel compilation method according to the embodiment of the present invention. 図3は、本発明の実施形態に係る車載装置を示すブロック図である。FIG. 3 is a block diagram showing the in-vehicle device according to the embodiment of the present invention. 図4は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。FIG. 4 is a diagram for explaining a parallel compilation method according to the embodiment of the present invention. 図5は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。FIG. 5 is a diagram for explaining a parallel compilation method according to the embodiment of the present invention. 図6は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。FIG. 6 is a diagram for explaining the parallel compilation method according to the embodiment of the present invention. 図7は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。FIG. 7 is a view for explaining a parallel compiling method according to the embodiment of the present invention. 図8は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。FIG. 8 is a diagram for explaining a parallel compiling method according to the embodiment of the present invention. 図9は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。FIG. 9 is a diagram for explaining a parallel compiling method according to the embodiment of the present invention.

以下、添付図面を参照しながら本発明の実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。   Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings. In order to facilitate the understanding of the description, the same constituent elements in the drawings will be denoted by the same reference numerals as much as possible, and redundant description will be omitted.

図1に示されるフローチャートを参照しながら本実施形態の並列コンパイル方法について説明する。   The parallel compilation method of this embodiment will be described with reference to the flowchart shown in FIG.

ステップS01では、自動並列化対象となる逐次プログラムが入力される。ステップS01に続くステップS02では、逐次プログラムを構成する各処理の実行時間や、実行周期が入力される。   In step S01, a sequential program to be automatically parallelized is input. In step S02 following step S01, the execution time and execution cycle of each process constituting the sequential program are input.

ステップS02に続くステップS03は、本発明における分類手順に相当する処理である。ステップS03では、逐次プログラムを構成する各処理について、逐次処理とするか、並列処理とするかを分類する。より具体的には、複数の処理群からなるシングルコアで動作する逐次プログラムを入力として、各処理を逐次処理または並列処理のいずれかに分類する。例えば各処理の実行時間を判断値として、それが一定値以上であれば並列処理とし、一定値未満であれば逐次処理に分類する。   Step S03 following step S02 is processing corresponding to the classification procedure in the present invention. In step S03, each process constituting the sequential program is classified as a sequential process or a parallel process. More specifically, a sequential program that operates on a single core composed of a plurality of processing groups is input, and each processing is classified as either sequential processing or parallel processing. For example, the execution time of each process is set as a judgment value, and if it is equal to or greater than a certain value, it is set as a parallel process, and if it is less than a certain value, it is classified as a sequential process.

ステップS03に続くステップS04は、本発明における割当手順に相当する処理である。ステップS04では、逐次処理を実行するコアを決定する。逐次処理を実行するコアの選定にあたっては、ユーザ側からの指定に基づいてもよく、プログラムの構造解析等から自動的に選定してもよい。   Step S04 following step S03 is processing corresponding to the allocation procedure in the present invention. In step S04, a core that executes sequential processing is determined. When selecting a core for executing sequential processing, it may be based on designation from the user side or may be automatically selected from structural analysis of the program.

ステップS04に続くステップS05では、不均一化指針を決定する。より詳細には後述するけれども、マルチコアプロセッサの各コアで実行される逐次処理の実行時間、実行周期、並列処理の実行周期を利用し、不均一な処理負荷で並列動作するようにプログラム生成指針を決定する。一例としては、並列処理の実行周期に対する逐次処理の実行周期の比を重み付け値とし(比が1を超える場合は1を重み付け値とする)、逐次処理の実行時間に重み付け値をかけた値だけ差をつけることを不均一化の指針とする。   In step S05 following step S04, a non-uniformization guideline is determined. As will be described in detail later, the program generation guideline is set so that parallel operation is performed with uneven processing load by using the execution time, execution cycle, and execution cycle of parallel processing executed in each core of the multi-core processor. decide. As an example, the ratio of the execution cycle of sequential processing to the execution cycle of parallel processing is set as a weight value (if the ratio exceeds 1, 1 is set as a weight value), and the value obtained by multiplying the execution time of sequential processing by the weight value Making a difference is a guideline for non-uniformity.

ステップS05に続くステップS06は、本発明における生成手順に相当する処理である。ステップS05に続くステップS06では、ステップS03で並列処理に分類された各処理について、不均一化指針に基づく並列化処理を実行する(詳細は後述する)。ステップS06に続くステップS07では、並列化処理後の並列プログラムを出力する。   Step S06 following step S05 is processing corresponding to the generation procedure in the present invention. In step S06 following step S05, parallel processing based on the non-uniformization guideline is executed for each processing classified as parallel processing in step S03 (details will be described later). In step S07 following step S06, the parallel program after parallelization processing is output.

続いて、図2に示されるフローチャートを参照しながら、並列コンパイル方法のステップS06における不均一化指針に基づく並列化処理について説明する。   Next, the parallel processing based on the non-uniformization guideline in step S06 of the parallel compilation method will be described with reference to the flowchart shown in FIG.

ステップS061では、並列処理の分割を実行する。並列処理の分割では、並列処理を細かな処理ブロックに分割をする。処理ブロックとは、並列化を行うための単位であり、例えば各種演算処理、代入処理、ループ処理、分岐処理、関数呼び出し等のプログラム言語のステートメント、またはこれらを複合的に組み合わせたものである。処理ブロックはプログラム言語の単一ステートメントで構成することもできるが、そのような細かい単位で並列化するとコア間の同期や通信のオーバーヘッドのほうが大きくなってしまう。従って、処理ブロックは複数のステートメントから構成されるほうが好ましいし、その基準として処理ブロックの実行時間を用いることができる。処理ブロックの実行時間は、並列処理が実行されるマルチコアプロセッサのアーキテクチャを解析して決定してもよいし、実際の動作結果からフィードバックして決定してもよい。   In step S061, parallel processing is divided. In the parallel processing division, the parallel processing is divided into fine processing blocks. The processing block is a unit for performing parallelization, and is, for example, various arithmetic processing, assignment processing, loop processing, branch processing, program language statements such as function calls, or a combination of these. A processing block can be composed of a single statement in a programming language, but if parallelized in such a fine unit, synchronization between cores and communication overhead become larger. Therefore, the processing block is preferably composed of a plurality of statements, and the execution time of the processing block can be used as the criterion. The execution time of the processing block may be determined by analyzing the architecture of a multi-core processor in which parallel processing is executed, or may be determined by feedback from an actual operation result.

ステップS062では、依存関係解析を実行する。並列処理の分割ステップであるステップS061で得られたすべての処理ブロックに対して、処理ブロック間のデータの依存性と制御の依存性を解析する。処理ブロック間にデータの依存性があるとは、例えばある処理ブロックで更新したデータを、別の処理ブロックが参照している場合のことである。処理ブロック間に制御の依存性があるとは、例えばある処理ブロックで行われる条件判定の結果によって、別の処理ブロックが実行されるかどうかが決定される場合のことである。   In step S062, dependency analysis is executed. For all the processing blocks obtained in step S061, which is a division step of parallel processing, the data dependency between the processing blocks and the control dependency are analyzed. The data dependence between processing blocks means, for example, a case where another processing block refers to data updated in a certain processing block. The term “dependence of control between processing blocks” refers to a case where, for example, whether or not another processing block is executed is determined based on a result of a condition determination performed in a certain processing block.

ステップS063では、並列性を抽出する。依存関係解析ステップであるステップS062で解析した処理ブロック間のデータの依存性、および制御の依存性に基づき、処理ブロック単位での並列性を抽出する。この場合、データの依存性も制御の依存性もない処理ブロックは並列実行可能であるため、並列性があると判断する。   In step S063, parallelism is extracted. Based on the data dependency between the processing blocks analyzed in step S062, which is the dependency relationship analysis step, and the control dependency, the parallelism in units of processing blocks is extracted. In this case, since processing blocks having neither data dependency nor control dependency can be executed in parallel, it is determined that there is parallelism.

ステップS064では、不均一化指針に基づくスケジューリングを実行する。不均一化指針に基づくスケジューリングでは、並列性抽出ステップであるステップS063で抽出された並列性、および並列処理が実行されるマルチコアプロセッサが備えるコア数などの制約情報に基づき、処理ブロックが実行されるコアとその実行順序を決定する。その際に不均一化指針に従い、各コアの処理負荷が不均一になるように、処理ブロックが実行されるコアを決定する。処理負荷が不均一になるとは、各コアで実行される処理ブロックの合計実行時間がコアによって不均一であるということである。この不均一さを決定づけるために、各処理ブロックの実行時間を用いることができる。最終的に、決定された処理ブロックの実行コア、実効順序に従い、並列化プログラムが生成される。なお、「不均一化指針に基づいて並列化」することができれば、並列化の手法は上述したものに限られない。   In step S064, scheduling based on the non-uniformization guideline is executed. In scheduling based on the non-uniformization guideline, processing blocks are executed based on parallelism extracted in step S063, which is a parallelism extraction step, and constraint information such as the number of cores included in a multicore processor on which parallel processing is executed. Determine cores and their execution order. At that time, in accordance with the non-uniformization guideline, the core on which the processing block is executed is determined so that the processing load of each core becomes non-uniform. The non-uniform processing load means that the total execution time of the processing blocks executed in each core is non-uniform depending on the core. To determine this non-uniformity, the execution time of each processing block can be used. Finally, a parallelized program is generated according to the execution core and effective order of the determined processing block. In addition, as long as “parallelization based on the non-uniformization guideline” can be performed, the parallelization method is not limited to that described above.

続いて、図3を参照しながら、本実施形態の自動並列化コンパイル方法により生成された並列化プログラムにより動作する車載装置20の構成について説明する。無論、自動並列化コンパイル方法は、車載装置20に限らず、同様の構成を有する様々な電子装置を動作させる並列化プログラムを生成可能である。また、本実施形態の自動並列化コンパイル方法に基づく自動並列化コンパイラを提供することもできる。   Next, the configuration of the in-vehicle device 20 that operates according to the parallelized program generated by the automatic parallelizing compiling method of the present embodiment will be described with reference to FIG. Of course, the automatic parallel compilation method is not limited to the in-vehicle device 20, and can generate parallel programs for operating various electronic devices having the same configuration. An automatic parallelizing compiler based on the automatic parallelizing compiling method of this embodiment can also be provided.

車載装置20は、マルチコアプロセッサ21,通信部22,センサ部23,入出力ポート24等を備える。   The in-vehicle device 20 includes a multi-core processor 21, a communication unit 22, a sensor unit 23, an input / output port 24, and the like.

マルチコアプロセッサ21は、ROM21aと、RAM21bと、複数のコア21c,21d,21e…等を有している。   The multi-core processor 21 includes a ROM 21a, a RAM 21b, a plurality of cores 21c, 21d, 21e,.

ROM21aは、自動並列化コンパイル方法により生成された並列化プログラム21a−1(バイナリデータ)が保存されている。マルチコアプロセッサ21は、並列化プログラム21a−1に従い動作し、車載装置20を統括制御する。   The ROM 21a stores a parallelized program 21a-1 (binary data) generated by the automatic parallel compilation method. The multi-core processor 21 operates according to the parallelized program 21a-1 and performs overall control of the in-vehicle device 20.

RAM21bは、コア21c,21d,21e…等によりアクセスされる部位である。通信部22は、車内LAN等を介して接続された他のECUと通信を行う部位である。   The RAM 21b is a part accessed by the cores 21c, 21d, 21e, etc. The communication unit 22 is a part that communicates with other ECUs connected via an in-vehicle LAN or the like.

センサ部23は、制御対象等の状態を検出するための各種センサから構成される部位である。入出力ポート24は、制御対象を制御するための各種信号の送受信を行う部位である。   The sensor unit 23 is a part composed of various sensors for detecting the state of a control target or the like. The input / output port 24 is a part that transmits and receives various signals for controlling the control target.

続いて、本実施形態の自動並列化コンパイル方法により並列化プログラムを生成する処理の具体例について説明する。以下の説明において、「処理」という記載がなされるが、これは、各種演算や代入や分岐処理や関数コール等からなる一連の処理の記述を意味する。より具体的には、マルチコアプロセッサ21上で動作するOSが管理するタスク、あるいは割り込みハンドラである。   Next, a specific example of processing for generating a parallelized program by the automatic parallelizing compilation method of this embodiment will be described. In the following description, “processing” is described, which means a description of a series of processes including various operations, assignments, branch processes, function calls, and the like. More specifically, it is a task managed by an OS operating on the multi-core processor 21 or an interrupt handler.

図4は、本実施形態に係る並列化コンパイル方法によって、シングルコア向けプログラムをマルチコア向けプログラムに変換する概念を示した図である。図4に示される例では、「時間同期処理A」をコア21c,21d,21eで処理するように並列化し、「時間同期処理B」をコア21c,21dで処理するように並列化している。また、「角度同期処理A」は逐次処理のままコア21cで処理し、「角度同期処理B」はコア21d,21eで処理するように並列化している。本実施形態では、この並列化の不均一処理を行うものであるので、図5以降では、コア21c,コア21dに処理コアを限定し、「処理A」「処理B」といった簡略表記を用いて説明する。   FIG. 4 is a diagram showing a concept of converting a single-core program into a multi-core program by the parallel compilation method according to the present embodiment. In the example shown in FIG. 4, “time synchronization processing A” is parallelized so as to be processed by the cores 21c, 21d, and 21e, and “time synchronization processing B” is parallelized so as to be processed by the cores 21c, 21d. Further, the “angle synchronization processing A” is processed in the core 21c while being sequentially processed, and the “angle synchronization processing B” is processed in parallel so as to be processed by the cores 21d and 21e. In the present embodiment, this non-uniform processing of parallelization is performed. Therefore, in FIG. 5 and subsequent figures, the processing cores are limited to the core 21c and the core 21d, and the simplified notation such as “processing A” and “processing B” is used. explain.

図5の(A)には、コア21cで処理する逐次プログラムを示しており、1システム周期において、処理Aと処理Bとを実行するように構成されている。図5の(B)に示す並列化では、処理Aも処理Bも均一に並列化している。逐次プログラムに対して図5の(B)に示す並列化では、性能向上効果は、図示される「性能向上効果(B)」となっている。   FIG. 5A shows a sequential program processed by the core 21c, and is configured to execute the process A and the process B in one system cycle. In the parallelization shown in FIG. 5B, the processing A and the processing B are evenly parallelized. In the parallelization shown in FIG. 5B for the sequential program, the performance improvement effect is the “performance improvement effect (B)” shown in the figure.

性能向上効果のみを考慮すれば、図5の(B)に示す並列化が適しているといえるが、処理Bが並列化に適さない処理である場合も想定される。例えば、処理Bが、短い実行時間の処理だったり、機能安全に対応するために、冗長化された特定のコアで実行させたい処理だったりする場合、これらの処理は逐次動作のままとしておくことが求められる。   Considering only the performance improvement effect, it can be said that the parallelization shown in FIG. 5B is suitable, but it is also assumed that the process B is a process not suitable for parallelization. For example, when the process B is a process with a short execution time or a process that is desired to be executed by a specific redundant core in order to cope with functional safety, these processes should be left in sequential operation. Is required.

そこで、図5の(C)に示されるような並列化手法が考えられる。図5の(C)に示される並列化手法は、処理Aを均一に並列化し、コア21cにおいて処理Bを逐次処理するように並列化プログラムを構成している。この場合の性能向上効果は、図示される「性能向上効果(C)」となっている。   Therefore, a parallelization technique as shown in FIG. In the parallelization technique shown in FIG. 5C, the parallelized program is configured so that the processing A is uniformly parallelized and the processing B is sequentially processed in the core 21c. The performance improvement effect in this case is the “performance improvement effect (C)” shown in the figure.

「性能向上効果(B)」程ではないものの、「性能向上効果(C)」よりも効果の高い並列化手法が、図5の(D)に示す並列化手法である。図5の(D)に示される並列化手法は、処理Aを不均一に並列化し、コア21cにおいて処理Bを逐次処理するように並列化プログラムを構成している。より具体的には、処理Bを逐次処理する側のコア21cに割り当てる処理Aの一部が要する実行時間よりも、コア21dに割り当てる処理Aの一部が要する実行時間が長くなるように並列化している。この場合の性能向上効果は、図示される「性能向上効果(D)」となっており、「性能向上効果(C)」よりも性能向上効果が高められている。   Although not as high as the “performance improvement effect (B)”, a parallelization method that is more effective than the “performance improvement effect (C)” is the parallelization method shown in FIG. In the parallelization technique shown in FIG. 5D, the parallelized program is configured so that the processing A is unevenly parallelized and the processing B is sequentially processed in the core 21c. More specifically, parallelization is performed so that the execution time required for a part of the process A assigned to the core 21d is longer than the execution time required for the part of the process A assigned to the core 21c on the side that sequentially processes the process B. ing. The performance improvement effect in this case is the “performance improvement effect (D)” shown in the figure, and the performance improvement effect is higher than the “performance improvement effect (C)”.

図6に示されるように、逐次処理である処理Bの実行時間の長さに基づいて、不均一割当処理を実行することができる。より具体的には、逐次処理を実行する単一コアであるコア21cに割り当てられる処理Aの実行時間と、単一コア以外の複数コアであるコア21dに割り当てられる処理Aの実行時間とを、処理Bの実行時間だけコア21dに割り当てられる処理Aの実行時間を長くしている(図6の(A)参照)。このように並列化することで、図6の(B)に示されるように、コア21cとコア21dの実行時間が略同一なものとなる。   As shown in FIG. 6, the non-uniform allocation process can be executed based on the length of execution time of process B, which is a sequential process. More specifically, the execution time of process A assigned to the core 21c, which is a single core that executes sequential processing, and the execution time of process A assigned to the core 21d, which is a plurality of cores other than a single core, are as follows: The execution time of the process A assigned to the core 21d is increased by the execution time of the process B (see (A) in FIG. 6). By paralleling in this way, the execution times of the core 21c and the core 21d become substantially the same as shown in FIG. 6B.

逐次処理である処理Bの実行時間の長さは、処理Bが動作するコア21cを含むマルチコアプロセッサ21のアーキテクチャを予め解析することで静的に決定することができる。より具体的には、コア21cが備えるアセンブリ言語の実行サイクル数の情報を用い、処理Bをアセンブリ言語で記述した時に実行時間の長さを決定することができる。さらに、コア21cからROM21aやRAM21bへのアクセスにかかる時間の情報を用い、より精度を高くして処理Bの実行時間を決定することができる。このようにすることで、処理Bの実行時間の長さを、コア21cを含むマルチコアプロセッサ21の構造等を反映させてより正確に決定することができる。本方法は、車載装置20が開発途中である等、処理Bを実際に動作させる環境を準備できない、あるいは準備するのが大変な場合に有効である。   The length of execution time of the process B which is a sequential process can be determined statically by analyzing in advance the architecture of the multi-core processor 21 including the core 21c in which the process B operates. More specifically, the length of execution time can be determined when processing B is described in assembly language using information on the number of execution cycles in assembly language included in the core 21c. Furthermore, it is possible to determine the execution time of the process B with higher accuracy by using information on the time taken to access the ROM 21a and the RAM 21b from the core 21c. By doing so, the length of the execution time of the process B can be more accurately determined by reflecting the structure of the multi-core processor 21 including the core 21c. This method is effective when it is difficult or difficult to prepare an environment for actually operating the process B, such as when the in-vehicle device 20 is under development.

逐次処理である処理Bの実行時間の長さは、処理Bの実際の動作結果からフィードバックして決定することができる。このようにすることで、実際の動作環境における変動要因を含んだ実行速度を反映させることができる。動作環境における変動要因とは、具体的に、処理B中に含まれる条件判定部分の判定結果次第で、実行される内容が変わることによる実行時間の変動、またはコア21c、コア21dが同時にROM21aやRAM21bにアクセスした場合に発生するアクセス調停に伴う実行時間の遅延などである。動作条件によらず平均的に性能向上効果を高めたい場合は、複数の動作条件下における処理Bの動作結果を平均化し、処理Bの実行時間の長さを決定するとよい。また、特定の動作条件において性能向上効果を最も高めたい場合、例えばマルチコアプロセッサ21全体の処理負荷が最も高くなる時に最大の性能向上効果を得たい場合は、その特定の動作条件下における処理Bの動作結果をフィードバックして処理Bの実行時間の長さを決定するとよい。 本方法は、並列化プログラム21a−1の処理負荷に対してマルチコアプロセッサ21の処理能力に余裕がない場合のように、手間をかけてでも性能向上効果を高めたい場合に有効である。   The length of execution time of the process B, which is a sequential process, can be determined by feedback from the actual operation result of the process B. In this way, it is possible to reflect the execution speed including the fluctuation factors in the actual operating environment. Specifically, the fluctuation factor in the operating environment depends on the determination result of the condition determination part included in the process B, the fluctuation of the execution time due to the change of the contents to be executed, or the core 21c and the core 21d are simultaneously read into the ROM 21a or For example, there is a delay in execution time accompanying access arbitration that occurs when the RAM 21b is accessed. When it is desired to improve the performance improvement effect on the average regardless of the operating conditions, the operation results of the process B under a plurality of operating conditions may be averaged to determine the length of execution time of the process B. Further, when it is desired to maximize the performance improvement effect under a specific operation condition, for example, when obtaining the maximum performance improvement effect when the processing load of the entire multi-core processor 21 is highest, the processing B under the specific operation condition It is preferable to determine the length of execution time of the process B by feeding back the operation result. This method is effective when it is desired to enhance the performance improvement effect even if it takes time and effort, such as when the processing capacity of the multi-core processor 21 is not sufficient for the processing load of the parallelized program 21a-1.

図6を参照しながら説明した並列化方法は、図7に示されるような実行周期の場合により適したものとなる。図7に示される実行周期は、処理Aの実行周期と処理Bの実行周期とが同調しており、同一の実行周期において、処理Aも処理Bも必ず実行される。従って、処理A及び処理B全体で実行時間の最小化を図る並列化方法が適したものとなる。   The parallelization method described with reference to FIG. 6 is more suitable for the execution cycle as shown in FIG. In the execution cycle shown in FIG. 7, the execution cycle of the process A and the execution cycle of the process B are synchronized, and the process A and the process B are always executed in the same execution cycle. Therefore, a parallel method for minimizing the execution time for the entire process A and process B is suitable.

一方、図8に示されるように、逐次処理である処理Bが実行されるコア21cと、コア21dとで、処理Bの実行時間の長さに1より小さい重み付け値を乗算した分だけ差をつけるような不均一割当処理とすることもできる。図8に示される例では、重み付け値を0.5として、コア21cに割り当てられる処理Aの実行時間に対して、処理Bの実行時間の0.5倍の実行時間分だけコア21dに割り当てられる処理Aの実行時間を長くしている(図8の(A)参照)。このように並列化することで、図8の(B)に示されるように、コア21cの実行時間がコア21dの実行時間よりも長くなっている。   On the other hand, as shown in FIG. 8, the difference between the core 21c in which the sequential process B is executed and the core 21d is multiplied by the weighting value smaller than 1 by the length of the execution time of the process B. It is also possible to perform non-uniform allocation processing. In the example shown in FIG. 8, the weighting value is set to 0.5, and the execution time of process A assigned to the core 21c is assigned to the core 21d by an execution time that is 0.5 times the execution time of process B. The execution time of process A is increased (see FIG. 8A). By paralleling in this way, as shown in FIG. 8B, the execution time of the core 21c is longer than the execution time of the core 21d.

図8を参照しながら説明した並列化方法は、図9に示されるような実行周期の場合により適したものとなる。図9に示される実行周期は、処理Aの実行周期に対して処理Bの実行周期が倍である。重み付け値は0.5としているので、並列処理である処理Aの実行周期と逐次処理である処理Bの実行周期との比を用いて重み付け値が決定されている。処理Aを基準として見た場合、処理Bの実行は2回に1回となるので、図6を参照しながら説明した並列化方法では、処理Bを実行しない場合に処理Aの不均一時間差が全体の効率低下を招いてしまう。そこで、処理Bが実行される周期と、処理Bが実行されない周期とのバランスを取るために、図8に示したような並列化方法が用いられる。   The parallelization method described with reference to FIG. 8 is more suitable for the execution cycle as shown in FIG. The execution cycle shown in FIG. 9 is twice the execution cycle of the process B with respect to the execution cycle of the process A. Since the weighting value is set to 0.5, the weighting value is determined using the ratio between the execution cycle of process A, which is parallel processing, and the execution cycle of process B, which is sequential processing. When processing A is used as a reference, processing B is executed once every two times. Therefore, in the parallelization method described with reference to FIG. The overall efficiency will be reduced. Therefore, in order to balance the cycle in which the process B is executed and the cycle in which the process B is not executed, a parallelization method as shown in FIG. 8 is used.

並列処理である処理Aの実行周期及び逐次処理である処理Bの実行周期の指定を受け付け、この指定に基づいて静的に実行周期を決定することができる。ユーザは、並列処理である処理Aの実行周期及び逐次処理である処理Bの実行周期を入力することで、各実行周期に応じた並列化処理を実現することができる。   It is possible to accept designation of the execution cycle of process A, which is parallel processing, and the execution cycle of process B, which is sequential processing, and to statically determine the execution cycle based on this designation. The user can realize parallel processing according to each execution cycle by inputting the execution cycle of process A, which is parallel processing, and the execution cycle of process B, which is sequential processing.

並列処理である処理Aの実行周期及び逐次処理である処理Bの実行周期を、処理A及び処理Bの実際の動作結果からフィードバックして決定することができる。並列処理である処理Aの実行周期及び逐次処理である処理Bの実行周期をフィードバックすることで、実際の実行周期に応じた並列化処理を実現することができる。   The execution cycle of process A, which is a parallel process, and the execution cycle of process B, which is a sequential process, can be determined by feedback from the actual operation results of process A and process B. By feeding back the execution cycle of the process A, which is a parallel process, and the execution cycle of the process B, which is a sequential process, it is possible to realize a parallel process according to the actual execution cycle.

処理Bを逐次処理とするか否かは、ユーザの指定により特定されてもよい。ユーザが意図的に並列化処理を行わないとする場合の例としては、
・プログラムのデータ構造上は依存性がなく並列化可能だが、制御仕様上は逐次的に実行順番が規定されているときに、プログラムと制御仕様の対応を維持して理解しやすくしたい場合。
・機能安全対応のため冗長化されたコア(例えばロックステップコア)で実行しなければならない場合。
・特殊なCPUアーキテクチャを想定した制御である場合。例えばベクタ処理など、ヘテロジニアスアーキテクチャにおけるアクセラレータ側で動くソフトウェアである場合。
が挙げられる。
Whether or not the process B is a sequential process may be specified by user designation. As an example when the user does not intentionally perform parallel processing,
・ When there is no dependency on the data structure of the program and parallelization is possible, but when the execution order is specified sequentially in the control specification, you want to maintain the correspondence between the program and the control specification and make it easier to understand.
When it is necessary to execute on a redundant core (for example, a lockstep core) for functional safety.
-When control is based on a special CPU architecture. For example, software that runs on the accelerator side of a heterogeneous architecture, such as vector processing.
Is mentioned.

本実施形態の並列化手法は、OSによって動的に実行されるコアが決定されるのではなく、静的に実行されるコアが決定されるシステムを特に好適な適用システムとして考えられている。特に、リアルタイム性がより重視される制御系、特に走る・曲がる・止まるに関わる車載制御のプログラムに用いるのが好適である。   In the parallelization method of the present embodiment, a system in which a core to be executed statically is determined instead of a core that is dynamically executed by the OS is considered as a particularly suitable application system. In particular, it is suitable for use in a control system in which real-time characteristics are more important, particularly in a vehicle-mounted control program related to running, turning, and stopping.

尚、逐次プログラムを入力して並列プログラムを生成することについて説明したけれども、マルチコアで動作する並列プログラムをさらに細分するように使ってもよい。   Although a description has been given of generating a parallel program by inputting a sequential program, a parallel program that operates on a multi-core may be used to be further subdivided.

20:車載装置
21:マルチコアプロセッサ
20: In-vehicle device 21: Multi-core processor

Claims (27)

シングルコアプロセッサで処理可能なように記述された逐次プログラムからマルチコアプロセッサ(21)で処理可能なように並列化した並列プログラムを生成する並列化コンパイル方法であって、
前記逐次プログラムを構成する処理群を、前記マルチコアプロセッサを構成する単一コア上で逐次動作する逐次処理と、前記マルチコアプロセッサを構成する複数コア上で並列動作する並列処理とに分類する分類手順と、
前記分類手順によって前記並列処理に分類された処理を前記複数コアに対して不均一に割り当てる不均一割当処理を実行する割当手順と、
前記分類手順の分類結果及び前記割当手順の割当結果に基づいて前記並列プログラムを生成する生成手順と、を備えることを特徴とする並列化コンパイル方法。
A parallel compilation method for generating a parallel program parallelized so as to be processed by a multi-core processor (21) from a sequential program described so as to be processed by a single core processor,
Classification procedure for classifying the processing group constituting the sequential program into sequential processing that sequentially operates on a single core that constitutes the multi-core processor and parallel processing that operates in parallel on a plurality of cores that constitute the multi-core processor; ,
An allocation procedure for performing a non-uniform allocation process that non-uniformly allocates the processing classified into the parallel processing by the classification procedure to the plurality of cores;
A parallel compilation method comprising: a generation procedure for generating the parallel program based on a classification result of the classification procedure and an allocation result of the allocation procedure.
前記割当手順では、前記逐次処理の実行時間の長さに基づいて、前記不均一割当処理を実行する、ことを特徴とする請求項1に記載の並列化コンパイル方法。   2. The parallel compilation method according to claim 1, wherein in the allocation procedure, the non-uniform allocation processing is executed based on a length of execution time of the sequential processing. 前記割当手順では、前記逐次処理の実行時間の長さを、前記マルチコアプロセッサのアーキテクチャを解析することで静的に決定する、ことを特徴とする請求項2に記載の並列化コンパイル方法。   3. The parallel compiling method according to claim 2, wherein, in the allocation procedure, the execution time length of the sequential processing is statically determined by analyzing an architecture of the multi-core processor. 前記割当手順では、前記逐次処理の実行時間の長さを、前記逐次処理の実際の動作結果からフィードバックして決定する、ことを特徴とする請求項2に記載の並列化コンパイル方法。   3. The parallelized compiling method according to claim 2, wherein in the allocation procedure, the length of execution time of the sequential processing is determined by feedback from an actual operation result of the sequential processing. 前記割当手順では、前記単一コアと、前記単一コア以外の前記複数コアとで、前記逐次処理の実行時間の長さ分だけ差をつけることで、前記不均一割当処理を実行する、ことを特徴とする請求項2から4のいずれか1項に記載の並列化コンパイル方法。   In the allocation procedure, the non-uniform allocation process is executed by making a difference by the length of the execution time of the sequential process between the single core and the multiple cores other than the single core. The parallel compilation method according to any one of claims 2 to 4, wherein: 前記割当手順では、前記単一コアと、前記単一コア以外の前記複数コアとで、前記逐次処理の実行時間の長さに1より小さい重み付け値を乗算した分だけ差をつけることで、前記不均一割当処理を実行する、ことを特徴とする請求項2から4のいずれか1項に記載の並列化コンパイル方法。   In the allocation procedure, the single core and the plurality of cores other than the single core are given a difference by multiplying the length of the execution time of the sequential processing by a weight value smaller than 1. The parallel compilation method according to claim 2, wherein non-uniform allocation processing is executed. 前記割当手順では、前記並列処理の実行周期と前記逐次処理の実行周期との比を用いて前記重み付け値を決定する、ことを特徴とする請求項6に記載の並列化コンパイル方法。   The parallelization compiling method according to claim 6, wherein in the allocation procedure, the weighting value is determined using a ratio between an execution cycle of the parallel processing and an execution cycle of the sequential processing. 前記割当手順では、前記並列処理の実行周期及び前記逐次処理の実行周期の指定を受け付け、この指定に基づいて静的に前記実行周期を決定する、ことを特徴とする請求項7に記載の並列化コンパイル方法。   8. The parallel processing according to claim 7, wherein in the allocation procedure, designation of an execution cycle of the parallel processing and an execution cycle of the sequential processing is received, and the execution cycle is statically determined based on the designation. Compilation method. 前記割当手順では、前記並列処理の実行周期及び前記逐次処理の実行周期を、前記並列処理及び前記逐次処理の実際の動作結果からフィードバックして決定する、ことを特徴とする請求項7に記載の並列化コンパイル方法。   8. The allocation procedure according to claim 7, wherein the execution cycle of the parallel processing and the execution cycle of the sequential processing are determined by feedback from actual operation results of the parallel processing and the sequential processing. Parallel compilation method. シングルコアプロセッサで処理可能なように記述された逐次プログラムからマルチコアプロセッサ(21)で処理可能なように並列化した並列プログラムを生成する並列化コンパイラであって、
前記逐次プログラムを構成する処理群を、前記マルチコアプロセッサを構成する単一コア上で逐次動作する逐次処理と、前記マルチコアプロセッサを構成する複数コア上で並列動作する並列処理とに分類する分類手順と、
前記分類手順によって前記並列処理に分類された処理を前記複数コアに対して不均一に割り当てる不均一割当処理を実行する割当手順と、
前記分類手順の分類結果及び前記割当手順の割当結果に基づいて前記並列プログラムを生成する生成手順と、を実行可能なように構成されていることを特徴とする並列化コンパイラ。
A parallelizing compiler that generates a parallel program parallelized so as to be processed by a multicore processor (21) from a sequential program described so as to be processed by a single core processor,
Classification procedure for classifying the processing group constituting the sequential program into sequential processing that sequentially operates on a single core that constitutes the multi-core processor and parallel processing that operates in parallel on a plurality of cores that constitute the multi-core processor; ,
An allocation procedure for performing a non-uniform allocation process that non-uniformly allocates the processing classified into the parallel processing by the classification procedure to the plurality of cores;
A parallelizing compiler configured to be able to execute a generation procedure for generating the parallel program based on a classification result of the classification procedure and an allocation result of the allocation procedure.
前記割当手順では、前記逐次処理の実行時間の長さに基づいて、前記不均一割当処理を実行する、ことを特徴とする請求項10に記載の並列化コンパイラ。   The parallelizing compiler according to claim 10, wherein in the allocation procedure, the non-uniform allocation processing is executed based on a length of execution time of the sequential processing. 前記割当手順では、前記逐次処理の実行時間の長さを、前記マルチコアプロセッサのアーキテクチャを解析することで静的に決定する、ことを特徴とする請求項11に記載の並列化コンパイラ。   12. The parallelizing compiler according to claim 11, wherein in the allocation procedure, the length of execution time of the sequential processing is statically determined by analyzing an architecture of the multi-core processor. 前記割当手順では、前記逐次処理の実行時間の長さを、前記逐次処理の実際の動作結果からフィードバックして決定する、ことを特徴とする請求項11に記載の並列化コンパイラ。   12. The parallelizing compiler according to claim 11, wherein in the allocation procedure, the length of execution time of the sequential processing is determined by feedback from an actual operation result of the sequential processing. 前記割当手順では、前記単一コアと、前記単一コア以外の前記複数コアとで、前記逐次処理の実行時間の長さ分だけ差をつけることで、前記不均一割当処理を実行する、ことを特徴とする請求項11から13のいずれか1項に記載の並列化コンパイラ。   In the allocation procedure, the non-uniform allocation process is executed by making a difference by the length of the execution time of the sequential process between the single core and the multiple cores other than the single core. The parallelizing compiler according to claim 11, wherein: 前記割当手順では、前記単一コアと、前記単一コア以外の前記複数コアとで、前記逐次処理の実行時間の長さに1より小さい重み付け値を乗算した分だけ差をつけることで、前記不均一割当処理を実行する、ことを特徴とする請求項11から13のいずれか1項に記載の並列化コンパイラ。   In the allocation procedure, the single core and the plurality of cores other than the single core are given a difference by multiplying the length of the execution time of the sequential processing by a weight value smaller than 1. 14. The parallelizing compiler according to claim 11, wherein non-uniform allocation processing is executed. 前記割当手順では、前記並列処理の実行周期と前記逐次処理の実行周期との比を用いて前記重み付け値を決定する、ことを特徴とする請求項15に記載の並列化コンパイラ。   The parallelizing compiler according to claim 15, wherein in the allocation procedure, the weighting value is determined using a ratio between an execution cycle of the parallel processing and an execution cycle of the sequential processing. 前記割当手順では、前記並列処理の実行周期及び前記逐次処理の実行周期の指定を受け付け、この指定に基づいて静的に前記実行周期を決定する、ことを特徴とする請求項16に記載の並列化コンパイラ。   The parallel processing according to claim 16, wherein in the allocation procedure, designation of an execution cycle of the parallel processing and an execution cycle of the sequential processing is received, and the execution cycle is statically determined based on the designation. Compiler. 前記割当手順では、前記並列処理の実行周期及び前記逐次処理の実行周期を、前記並列処理及び前記逐次処理の実際の動作結果からフィードバックして決定する、ことを特徴とする請求項16に記載の並列化コンパイラ。   17. The allocation procedure according to claim 16, wherein the execution cycle of the parallel processing and the execution cycle of the sequential processing are determined by feedback from actual operation results of the parallel processing and the sequential processing. Parallelizing compiler. シングルコアプロセッサで処理可能なように記述された逐次プログラムからマルチコアプロセッサ(21)で処理可能なように並列化した並列プログラムにより動作するマルチコアプロセッサを備える車載装置(20)であって、
前記逐次プログラムを構成する処理群を、前記マルチコアプロセッサを構成する単一コア上で逐次動作する逐次処理と、前記マルチコアプロセッサを構成する複数コア上で並列動作する並列処理とに分類する分類手順と、
前記分類手順によって前記並列処理に分類された処理を前記複数コアに対して不均一に割り当てる不均一割当処理を実行する割当手順と、
前記分類手順の分類結果及び前記割当手順の割当結果に基づいて前記並列プログラムを生成する生成手順と、を実行可能なように構成されていることを特徴とする車載装置。
An in-vehicle device (20) comprising a multi-core processor that operates by a parallel program that is parallelized so that it can be processed by a multi-core processor (21) from a sequential program that is described so that it can be processed by a single-core processor,
Classification procedure for classifying the processing group constituting the sequential program into sequential processing that sequentially operates on a single core that constitutes the multi-core processor and parallel processing that operates in parallel on a plurality of cores that constitute the multi-core processor; ,
An allocation procedure for performing a non-uniform allocation process that non-uniformly allocates the processing classified into the parallel processing by the classification procedure to the plurality of cores;
An in-vehicle device configured to execute a generation procedure for generating the parallel program based on a classification result of the classification procedure and an allocation result of the allocation procedure.
前記割当手順では、前記逐次処理の実行時間の長さに基づいて、前記不均一割当処理を実行する、ことを特徴とする請求項19に記載の車載装置。   The in-vehicle device according to claim 19, wherein in the allocation procedure, the non-uniform allocation processing is executed based on a length of execution time of the sequential processing. 前記割当手順では、前記逐次処理の実行時間の長さを、前記マルチコアプロセッサのアーキテクチャを解析することで静的に決定する、ことを特徴とする請求項20に記載の車載装置。   21. The in-vehicle apparatus according to claim 20, wherein in the allocation procedure, the length of execution time of the sequential processing is statically determined by analyzing an architecture of the multi-core processor. 前記割当手順では、前記逐次処理の実行時間の長さを、前記逐次処理の実際の動作結果からフィードバックして決定する、ことを特徴とする請求項20に記載の車載装置。   21. The in-vehicle apparatus according to claim 20, wherein, in the allocation procedure, the length of execution time of the sequential processing is determined by feedback from an actual operation result of the sequential processing. 前記割当手順では、前記単一コアと、前記単一コア以外の前記複数コアとで、前記逐次処理の実行時間の長さ分だけ差をつけることで、前記不均一割当処理を実行する、ことを特徴とする請求項20から22のいずれか1項に記載の車載装置。   In the allocation procedure, the non-uniform allocation process is executed by making a difference by the length of the execution time of the sequential process between the single core and the multiple cores other than the single core. The in-vehicle device according to any one of claims 20 to 22. 前記割当手順では、前記単一コアと、前記単一コア以外の前記複数コアとで、前記逐次処理の実行時間の長さに1より小さい重み付け値を乗算した分だけ差をつけることで、前記不均一割当処理を実行する、ことを特徴とする請求項20から22のいずれか1項に記載の車載装置。   In the allocation procedure, the single core and the plurality of cores other than the single core are given a difference by multiplying the length of the execution time of the sequential processing by a weight value smaller than 1. The in-vehicle device according to any one of claims 20 to 22, wherein non-uniform allocation processing is executed. 前記割当手順では、前記並列処理の実行周期と前記逐次処理の実行周期との比を用いて前記重み付け値を決定する、ことを特徴とする請求項24に記載の車載装置。   25. The in-vehicle apparatus according to claim 24, wherein, in the allocation procedure, the weighting value is determined using a ratio between an execution cycle of the parallel processing and an execution cycle of the sequential processing. 前記割当手順では、前記並列処理の実行周期及び前記逐次処理の実行周期の指定を受け付け、この指定に基づいて静的に前記実行周期を決定する、ことを特徴とする請求項25に記載の車載装置。   The in-vehicle system according to claim 25, wherein in the allocation procedure, designation of an execution cycle of the parallel processing and an execution cycle of the sequential processing is received, and the execution cycle is statically determined based on the designation. apparatus. 前記割当手順では、前記並列処理の実行周期及び前記逐次処理の実行周期を、前記並列処理及び前記逐次処理の実際の動作結果からフィードバックして決定する、ことを特徴とする請求項25に記載の車載装置。   26. The allocation procedure according to claim 25, wherein the execution cycle of the parallel processing and the execution cycle of the sequential processing are determined by feedback from actual operation results of the parallel processing and the sequential processing. In-vehicle device.
JP2015098913A 2015-05-14 2015-05-14 Parallelizing compilation method and parallelizing compiler Active JP6428476B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015098913A JP6428476B2 (en) 2015-05-14 2015-05-14 Parallelizing compilation method and parallelizing compiler
DE102016208339.2A DE102016208339A1 (en) 2015-05-14 2016-05-13 PARALLELIZING COMPILING METHOD, PARALLELIZING COMPILER AND VEHICLE-ASSOCIATED DEVICE

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015098913A JP6428476B2 (en) 2015-05-14 2015-05-14 Parallelizing compilation method and parallelizing compiler

Publications (2)

Publication Number Publication Date
JP2016218503A true JP2016218503A (en) 2016-12-22
JP6428476B2 JP6428476B2 (en) 2018-11-28

Family

ID=57208843

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015098913A Active JP6428476B2 (en) 2015-05-14 2015-05-14 Parallelizing compilation method and parallelizing compiler

Country Status (2)

Country Link
JP (1) JP6428476B2 (en)
DE (1) DE102016208339A1 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018128811A (en) * 2017-02-08 2018-08-16 日本電気株式会社 Information processor and information processing method and program
WO2019164205A1 (en) * 2018-02-23 2019-08-29 삼성전자 주식회사 Electronic device and operation method thereof
WO2020217420A1 (en) * 2019-04-25 2020-10-29 三菱電機株式会社 Tracking processing device, tracking processing method, and target observation device
JP2020181407A (en) * 2019-04-25 2020-11-05 株式会社デンソー Parallelization method, semiconductor control device, and on-vehicle control device
JP2021012601A (en) * 2019-07-08 2021-02-04 株式会社デンソー Parallelization method, semiconductor control device, and on-vehicle control device
CN117008915A (en) * 2023-07-05 2023-11-07 东信和平科技股份有限公司 Code compiling method, device and equipment based on register quantity control
US11845452B2 (en) 2018-10-05 2023-12-19 Hitachi Astemo, Ltd. Electronic control device and parallel processing method

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10143380A (en) * 1996-11-07 1998-05-29 Hitachi Ltd Multiprocessor system
JP2009151645A (en) * 2007-12-21 2009-07-09 Mitsubishi Electric Corp Parallel processor and program parallelizing device
WO2010055719A1 (en) * 2008-11-14 2010-05-20 日本電気株式会社 Schedule deciding apparatus, parallel execution apparatus, schedule deciding method, and program
JP2010244332A (en) * 2009-04-07 2010-10-28 Nec Corp Means of task assignment for multi-core system, method of the same, and program of the same
JP2015001807A (en) * 2013-06-14 2015-01-05 株式会社デンソー Parallelization compilation method, parallelization compiler, parallelization compilation device, and on-vehicle device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10143380A (en) * 1996-11-07 1998-05-29 Hitachi Ltd Multiprocessor system
JP2009151645A (en) * 2007-12-21 2009-07-09 Mitsubishi Electric Corp Parallel processor and program parallelizing device
WO2010055719A1 (en) * 2008-11-14 2010-05-20 日本電気株式会社 Schedule deciding apparatus, parallel execution apparatus, schedule deciding method, and program
JP2010244332A (en) * 2009-04-07 2010-10-28 Nec Corp Means of task assignment for multi-core system, method of the same, and program of the same
JP2015001807A (en) * 2013-06-14 2015-01-05 株式会社デンソー Parallelization compilation method, parallelization compiler, parallelization compilation device, and on-vehicle device

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018128811A (en) * 2017-02-08 2018-08-16 日本電気株式会社 Information processor and information processing method and program
WO2019164205A1 (en) * 2018-02-23 2019-08-29 삼성전자 주식회사 Electronic device and operation method thereof
KR20190101653A (en) * 2018-02-23 2019-09-02 삼성전자주식회사 Electronic device and operating method thereof
US11435985B2 (en) 2018-02-23 2022-09-06 Samsung Electronics Co., Ltd. Electronic device and operation method thereof
KR102485935B1 (en) * 2018-02-23 2023-01-10 삼성전자주식회사 Electronic device and operating method thereof
US11845452B2 (en) 2018-10-05 2023-12-19 Hitachi Astemo, Ltd. Electronic control device and parallel processing method
WO2020217420A1 (en) * 2019-04-25 2020-10-29 三菱電機株式会社 Tracking processing device, tracking processing method, and target observation device
JP2020181407A (en) * 2019-04-25 2020-11-05 株式会社デンソー Parallelization method, semiconductor control device, and on-vehicle control device
JPWO2020217420A1 (en) * 2019-04-25 2021-09-27 三菱電機株式会社 Tracking processing device, tracking processing method and target observation device
JP7107275B2 (en) 2019-04-25 2022-07-27 株式会社デンソー PARALLELIZATION METHOD, SEMICONDUCTOR CONTROL DEVICE, AND VEHICLE CONTROL DEVICE
JP2021012601A (en) * 2019-07-08 2021-02-04 株式会社デンソー Parallelization method, semiconductor control device, and on-vehicle control device
CN117008915A (en) * 2023-07-05 2023-11-07 东信和平科技股份有限公司 Code compiling method, device and equipment based on register quantity control

Also Published As

Publication number Publication date
DE102016208339A1 (en) 2016-11-17
JP6428476B2 (en) 2018-11-28

Similar Documents

Publication Publication Date Title
JP6428476B2 (en) Parallelizing compilation method and parallelizing compiler
US11023285B2 (en) Acceleration method for FPGA-based distributed stream processing system
KR101738641B1 (en) Apparatus and method for compilation of program on multi core system
CN102360309B (en) Scheduling system and scheduling execution method of multi-core heterogeneous system on chip
Jiménez et al. Predictive runtime code scheduling for heterogeneous architectures
EP3285170A1 (en) Application profiling job management system, program, and method
EP3092567B1 (en) System and method for isolating i/o execution via compiler and os support
US20100223213A1 (en) System and method for parallelization of machine learning computing code
US20090172353A1 (en) System and method for architecture-adaptable automatic parallelization of computing code
KR101703328B1 (en) Apparatus and method for optimizing data processing over the heterogeneous multi-processor environment
US9471387B2 (en) Scheduling in job execution
JP6107801B2 (en) Information processing apparatus, information processing system, task processing method, and program
JP6464982B2 (en) Parallelization method, parallelization tool, in-vehicle device
Zhong et al. Model-based parallelizer for embedded control systems on single-isa heterogeneous multicore processors
US11163594B2 (en) Rescheduling JIT compilation based on jobs of parallel distributed computing framework
JP6488739B2 (en) Parallelizing compilation method and parallelizing compiler
KR101770234B1 (en) Method and system for assigning a computational block of a software program to cores of a multi-processor system
Tariq et al. Execution time prediction model that considers dynamic allocation of spark executors
KR20200063962A (en) Distributed processing system and operating method thereof
CN114356550B (en) Automatic computing resource allocation method and system for three-level parallel middleware
Canon et al. Online scheduling of task graphs on hybrid platforms
Zahaf et al. Contention-aware GPU partitioning and task-to-partition allocation for real-time workloads
KR101568204B1 (en) Manicore system based cpu/gpu and method for determining the number of cores of a multicore cpu for cpu/gpu concurrent processing
Kotthaus et al. Performance analysis for parallel R programs: towards efficient resource utilization
JP6933001B2 (en) Parallelization method, parallelization tool

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170803

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180821

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: 20181002

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181015

R151 Written notification of patent or utility model registration

Ref document number: 6428476

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