JP6428476B2 - 並列化コンパイル方法、及び並列化コンパイラ - Google Patents

並列化コンパイル方法、及び並列化コンパイラ Download PDF

Info

Publication number
JP6428476B2
JP6428476B2 JP2015098913A JP2015098913A JP6428476B2 JP 6428476 B2 JP6428476 B2 JP 6428476B2 JP 2015098913 A JP2015098913 A JP 2015098913A JP 2015098913 A JP2015098913 A JP 2015098913A JP 6428476 B2 JP6428476 B2 JP 6428476B2
Authority
JP
Japan
Prior art keywords
processing
parallel
sequential
procedure
execution cycle
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
JP2015098913A
Other languages
English (en)
Other versions
JP2016218503A (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 JP2015098913A priority Critical patent/JP6428476B2/ja
Priority to DE102016208339.2A priority patent/DE102016208339A1/de
Publication of JP2016218503A publication Critical patent/JP2016218503A/ja
Application granted granted Critical
Publication of JP6428476B2 publication Critical patent/JP6428476B2/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/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)

Description

本発明は、シングルコアプロセッサ用に記述された逐次プログラムからマルチコアプロセッサ用に並列化した並列プログラムを生成する並列化コンパイル方法、及び並列化コンパイラに関する。
自動車における制御系,情報系の高度化,統合化のためには、それらを実現するためのプロセッサの高能力化が重要となる。例えば、安全,快適で燃費の良い自動車開発のために重要なエンジン制御系を高度化するためには、制御アルゴリズムの高度化や新たな制御機能の実現等、計算負荷の増大が避けられない。このような問題を解決する為には、リアルタイム制御を実現しているプロセッサの高速化が必須となる。
しかし、従来のようにプロセッサの動作周波数を向上させることは、消費電力が周波数の三乗に比例して増大するため、困難となっている。このため、1チップ上に低動作周波数のプロセッサコアを複数集積し、電力削減のために低周波数化・低電圧化したプロセッサコアを並列動作させることで、処理の高速化と低電力化を同時に実現可能なマルチコアプロセッサへの移行が急ピッチで行われている。
マルチコアプロセッサにて、シングルコアプロセッサよりも高速な処理を行うためには、シングルコアプロセッサ用の逐次プログラムの処理を分割し、プロセッサコア間の通信が最小になる形で各プロセッサコアに各処理を割り当てる必要がある。従来、このような逐次プログラムの並列化の作業は人手で行う必要があったが、このような作業は大変困難で長期間を要し、開発費の増加や並列化されたプログラムの信頼性等、多くの課題が生じている。
下記特許文献1では、開発期間や開発費を抑えつつ、信頼性が高く、高速な処理が可能な車載装置用の組込みシステム向けの並列化プログラムを作成することができる並列化コンパイル方法が提案されている。
特開2015−1807号公報
従来の技術では、逐次プログラムが複数の処理を有する場合、複数の処理全てを並列化し、複数のコアに割り当てる並列化プログラムを生成するものであった。この場合、複数のコアそれぞれの処理負荷を均一化するため、処理時間がコア数で按分され、例えば2つのコアの場合の処理時間は逐次プログラムの略半分程度になる。しかしながら、逐次プログラムに含まれる処理に実行時間の短いものが含まれる場合、その処理を並列化することによるコア間の通信処理時間といったオーバーヘッドにおける時間増大分が本来の処理実行時間に比して無視できないものになる場合がある。このような場合には、その実行時間の短い処理はそのまま逐次動作とし、他の処理を並列動作とするような並列化プログラムを生成することになる。
更に、逐次プログラムに含まれる処理の中には、機能安全に対応するために冗長化された特定のコアで実行させたい処理が含まれる場合がある。しかしながら、一般的にマルチコアプロセッサの全てのコアを冗長化することがないため、前述の処理は冗長化された特定のコアで実行させる必要があり、このような処理は逐次動作のままとしておくことが求められる。このように、並列化されず逐次動作のままの処理が並列化プログラムに含まれる場合、本来意図した処理負荷の均一化による性能向上が図れないという課題があった。
本発明はこのような課題に鑑みてなされたものであり、その目的は、逐次プログラムが複数の処理を有する場合に、一部の処理を逐次動作とし、残部の処理を並列動作とする場合に、性能向上効果を最適化することが可能な並列化コンパイル方法、及び並列化コンパイラを提供することにある。
上記課題を解決するために、本発明に係る並列化コンパイル方法は、シングルコアプロセッサで処理可能なように記述された逐次プログラムからマルチコアプロセッサ(21)で処理可能なように並列化した並列プログラムをコンピュータに生成させるための並列化コンパイル方法であって、前記逐次プログラムを構成する処理群を、前記マルチコアプロセッサを構成する単一コア上で逐次動作する逐次処理と、前記マルチコアプロセッサを構成する複数コア上で並列動作する並列処理とに分類する分類手順と、前記分類手順によって前記並列処理に分類された処理を、前記複数コアに対して前記逐次処理の実行時間の長さに基づいて割り当てる割当処理を実行する割当手順と、前記分類手順の分類結果及び前記割当手順の割当結果に基づいて前記並列プログラムを生成する生成手順と、を備える。前記割当手順では、前記単一コアと、前記単一コア以外の前記複数コアとで、前記逐次処理の実行時間の長さに1より小さい重み付け値を乗算した分だけ差をつけることで、前記割当処理を実行する。
また、本発明に係る並列化コンパイラは、シングルコアプロセッサで処理可能なように記述された逐次プログラムからマルチコアプロセッサ(21)で処理可能なように並列化した並列プログラムを生成する並列化コンパイラであって、前記並列化コンパイル方法の分類手順と、割当手順と、生成手順と、を実行可能なように構成されている。
これら本発明によれば、分類手順によって並列処理に分類された処理を複数コアに対して不均一に割り当てる不均一割当処理を実行するので、逐次処理を含めた場合の性能向上の最適化を図ることができる。
本発明によれば、逐次プログラムが複数の処理を有する場合に、一部の処理を逐次動作とし、残部の処理を並列動作とする場合に、性能向上効果を最適化することが可能な並列化コンパイル方法、及び並列化コンパイラを提供することができる。
図1は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。 図2は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。 図3は、本発明の実施形態に係る車載装置を示すブロック図である。 図4は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。 図5は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。 図6は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。 図7は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。 図8は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。 図9は、本発明の実施形態に係る並列化コンパイル方法を説明するための図である。
以下、添付図面を参照しながら本発明の実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
図1に示されるフローチャートを参照しながら本実施形態の並列コンパイル方法について説明する。
ステップS01では、自動並列化対象となる逐次プログラムが入力される。ステップS01に続くステップS02では、逐次プログラムを構成する各処理の実行時間や、実行周期が入力される。
ステップS02に続くステップS03は、本発明における分類手順に相当する処理である。ステップS03では、逐次プログラムを構成する各処理について、逐次処理とするか、並列処理とするかを分類する。より具体的には、複数の処理群からなるシングルコアで動作する逐次プログラムを入力として、各処理を逐次処理または並列処理のいずれかに分類する。例えば各処理の実行時間を判断値として、それが一定値以上であれば並列処理とし、一定値未満であれば逐次処理に分類する。
ステップS03に続くステップS04は、本発明における割当手順に相当する処理である。ステップS04では、逐次処理を実行するコアを決定する。逐次処理を実行するコアの選定にあたっては、ユーザ側からの指定に基づいてもよく、プログラムの構造解析等から自動的に選定してもよい。
ステップS04に続くステップS05では、不均一化指針を決定する。より詳細には後述するけれども、マルチコアプロセッサの各コアで実行される逐次処理の実行時間、実行周期、並列処理の実行周期を利用し、不均一な処理負荷で並列動作するようにプログラム生成指針を決定する。一例としては、並列処理の実行周期に対する逐次処理の実行周期の比を重み付け値とし(比が1を超える場合は1を重み付け値とする)、逐次処理の実行時間に重み付け値をかけた値だけ差をつけることを不均一化の指針とする。
ステップS05に続くステップS06は、本発明における生成手順に相当する処理である。ステップS05に続くステップS06では、ステップS03で並列処理に分類された各処理について、不均一化指針に基づく並列化処理を実行する(詳細は後述する)。ステップS06に続くステップS07では、並列化処理後の並列プログラムを出力する。
続いて、図2に示されるフローチャートを参照しながら、並列コンパイル方法のステップS06における不均一化指針に基づく並列化処理について説明する。
ステップS061では、並列処理の分割を実行する。並列処理の分割では、並列処理を細かな処理ブロックに分割をする。処理ブロックとは、並列化を行うための単位であり、例えば各種演算処理、代入処理、ループ処理、分岐処理、関数呼び出し等のプログラム言語のステートメント、またはこれらを複合的に組み合わせたものである。処理ブロックはプログラム言語の単一ステートメントで構成することもできるが、そのような細かい単位で並列化するとコア間の同期や通信のオーバーヘッドのほうが大きくなってしまう。従って、処理ブロックは複数のステートメントから構成されるほうが好ましいし、その基準として処理ブロックの実行時間を用いることができる。処理ブロックの実行時間は、並列処理が実行されるマルチコアプロセッサのアーキテクチャを解析して決定してもよいし、実際の動作結果からフィードバックして決定してもよい。
ステップS062では、依存関係解析を実行する。並列処理の分割ステップであるステップS061で得られたすべての処理ブロックに対して、処理ブロック間のデータの依存性と制御の依存性を解析する。処理ブロック間にデータの依存性があるとは、例えばある処理ブロックで更新したデータを、別の処理ブロックが参照している場合のことである。処理ブロック間に制御の依存性があるとは、例えばある処理ブロックで行われる条件判定の結果によって、別の処理ブロックが実行されるかどうかが決定される場合のことである。
ステップS063では、並列性を抽出する。依存関係解析ステップであるステップS062で解析した処理ブロック間のデータの依存性、および制御の依存性に基づき、処理ブロック単位での並列性を抽出する。この場合、データの依存性も制御の依存性もない処理ブロックは並列実行可能であるため、並列性があると判断する。
ステップS064では、不均一化指針に基づくスケジューリングを実行する。不均一化指針に基づくスケジューリングでは、並列性抽出ステップであるステップS063で抽出された並列性、および並列処理が実行されるマルチコアプロセッサが備えるコア数などの制約情報に基づき、処理ブロックが実行されるコアとその実行順序を決定する。その際に不均一化指針に従い、各コアの処理負荷が不均一になるように、処理ブロックが実行されるコアを決定する。処理負荷が不均一になるとは、各コアで実行される処理ブロックの合計実行時間がコアによって不均一であるということである。この不均一さを決定づけるために、各処理ブロックの実行時間を用いることができる。最終的に、決定された処理ブロックの実行コア、実効順序に従い、並列化プログラムが生成される。なお、「不均一化指針に基づいて並列化」することができれば、並列化の手法は上述したものに限られない。
続いて、図3を参照しながら、本実施形態の自動並列化コンパイル方法により生成された並列化プログラムにより動作する車載装置20の構成について説明する。無論、自動並列化コンパイル方法は、車載装置20に限らず、同様の構成を有する様々な電子装置を動作させる並列化プログラムを生成可能である。また、本実施形態の自動並列化コンパイル方法に基づく自動並列化コンパイラを提供することもできる。
車載装置20は、マルチコアプロセッサ21,通信部22,センサ部23,入出力ポート24等を備える。
マルチコアプロセッサ21は、ROM21aと、RAM21bと、複数のコア21c,21d,21e…等を有している。
ROM21aは、自動並列化コンパイル方法により生成された並列化プログラム21a−1(バイナリデータ)が保存されている。マルチコアプロセッサ21は、並列化プログラム21a−1に従い動作し、車載装置20を統括制御する。
RAM21bは、コア21c,21d,21e…等によりアクセスされる部位である。通信部22は、車内LAN等を介して接続された他のECUと通信を行う部位である。
センサ部23は、制御対象等の状態を検出するための各種センサから構成される部位である。入出力ポート24は、制御対象を制御するための各種信号の送受信を行う部位である。
続いて、本実施形態の自動並列化コンパイル方法により並列化プログラムを生成する処理の具体例について説明する。以下の説明において、「処理」という記載がなされるが、これは、各種演算や代入や分岐処理や関数コール等からなる一連の処理の記述を意味する。より具体的には、マルチコアプロセッサ21上で動作するOSが管理するタスク、あるいは割り込みハンドラである。
図4は、本実施形態に係る並列化コンパイル方法によって、シングルコア向けプログラムをマルチコア向けプログラムに変換する概念を示した図である。図4に示される例では、「時間同期処理A」をコア21c,21d,21eで処理するように並列化し、「時間同期処理B」をコア21c,21dで処理するように並列化している。また、「角度同期処理A」は逐次処理のままコア21cで処理し、「角度同期処理B」はコア21d,21eで処理するように並列化している。本実施形態では、この並列化の不均一処理を行うものであるので、図5以降では、コア21c,コア21dに処理コアを限定し、「処理A」「処理B」といった簡略表記を用いて説明する。
図5の(A)には、コア21cで処理する逐次プログラムを示しており、1システム周期において、処理Aと処理Bとを実行するように構成されている。図5の(B)に示す並列化では、処理Aも処理Bも均一に並列化している。逐次プログラムに対して図5の(B)に示す並列化では、性能向上効果は、図示される「性能向上効果(B)」となっている。
性能向上効果のみを考慮すれば、図5の(B)に示す並列化が適しているといえるが、処理Bが並列化に適さない処理である場合も想定される。例えば、処理Bが、短い実行時間の処理だったり、機能安全に対応するために、冗長化された特定のコアで実行させたい処理だったりする場合、これらの処理は逐次動作のままとしておくことが求められる。
そこで、図5の(C)に示されるような並列化手法が考えられる。図5の(C)に示される並列化手法は、処理Aを均一に並列化し、コア21cにおいて処理Bを逐次処理するように並列化プログラムを構成している。この場合の性能向上効果は、図示される「性能向上効果(C)」となっている。
「性能向上効果(B)」程ではないものの、「性能向上効果(C)」よりも効果の高い並列化手法が、図5の(D)に示す並列化手法である。図5の(D)に示される並列化手法は、処理Aを不均一に並列化し、コア21cにおいて処理Bを逐次処理するように並列化プログラムを構成している。より具体的には、処理Bを逐次処理する側のコア21cに割り当てる処理Aの一部が要する実行時間よりも、コア21dに割り当てる処理Aの一部が要する実行時間が長くなるように並列化している。この場合の性能向上効果は、図示される「性能向上効果(D)」となっており、「性能向上効果(C)」よりも性能向上効果が高められている。
図6に示されるように、逐次処理である処理Bの実行時間の長さに基づいて、不均一割当処理を実行することができる。より具体的には、逐次処理を実行する単一コアであるコア21cに割り当てられる処理Aの実行時間と、単一コア以外の複数コアであるコア21dに割り当てられる処理Aの実行時間とを、処理Bの実行時間だけコア21dに割り当てられる処理Aの実行時間を長くしている(図6の(A)参照)。このように並列化することで、図6の(B)に示されるように、コア21cとコア21dの実行時間が略同一なものとなる。
逐次処理である処理Bの実行時間の長さは、処理Bが動作するコア21cを含むマルチコアプロセッサ21のアーキテクチャを予め解析することで静的に決定することができる。より具体的には、コア21cが備えるアセンブリ言語の実行サイクル数の情報を用い、処理Bをアセンブリ言語で記述した時に実行時間の長さを決定することができる。さらに、コア21cからROM21aやRAM21bへのアクセスにかかる時間の情報を用い、より精度を高くして処理Bの実行時間を決定することができる。このようにすることで、処理Bの実行時間の長さを、コア21cを含むマルチコアプロセッサ21の構造等を反映させてより正確に決定することができる。本方法は、車載装置20が開発途中である等、処理Bを実際に動作させる環境を準備できない、あるいは準備するのが大変な場合に有効である。
逐次処理である処理Bの実行時間の長さは、処理Bの実際の動作結果からフィードバックして決定することができる。このようにすることで、実際の動作環境における変動要因を含んだ実行速度を反映させることができる。動作環境における変動要因とは、具体的に、処理B中に含まれる条件判定部分の判定結果次第で、実行される内容が変わることによる実行時間の変動、またはコア21c、コア21dが同時にROM21aやRAM21bにアクセスした場合に発生するアクセス調停に伴う実行時間の遅延などである。動作条件によらず平均的に性能向上効果を高めたい場合は、複数の動作条件下における処理Bの動作結果を平均化し、処理Bの実行時間の長さを決定するとよい。また、特定の動作条件において性能向上効果を最も高めたい場合、例えばマルチコアプロセッサ21全体の処理負荷が最も高くなる時に最大の性能向上効果を得たい場合は、その特定の動作条件下における処理Bの動作結果をフィードバックして処理Bの実行時間の長さを決定するとよい。 本方法は、並列化プログラム21a−1の処理負荷に対してマルチコアプロセッサ21の処理能力に余裕がない場合のように、手間をかけてでも性能向上効果を高めたい場合に有効である。
図6を参照しながら説明した並列化方法は、図7に示されるような実行周期の場合により適したものとなる。図7に示される実行周期は、処理Aの実行周期と処理Bの実行周期とが同調しており、同一の実行周期において、処理Aも処理Bも必ず実行される。従って、処理A及び処理B全体で実行時間の最小化を図る並列化方法が適したものとなる。
一方、図8に示されるように、逐次処理である処理Bが実行されるコア21cと、コア21dとで、処理Bの実行時間の長さに1より小さい重み付け値を乗算した分だけ差をつけるような不均一割当処理とすることもできる。図8に示される例では、重み付け値を0.5として、コア21cに割り当てられる処理Aの実行時間に対して、処理Bの実行時間の0.5倍の実行時間分だけコア21dに割り当てられる処理Aの実行時間を長くしている(図8の(A)参照)。このように並列化することで、図8の(B)に示されるように、コア21cの実行時間がコア21dの実行時間よりも長くなっている。
図8を参照しながら説明した並列化方法は、図9に示されるような実行周期の場合により適したものとなる。図9に示される実行周期は、処理Aの実行周期に対して処理Bの実行周期が倍である。重み付け値は0.5としているので、並列処理である処理Aの実行周期と逐次処理である処理Bの実行周期との比を用いて重み付け値が決定されている。処理Aを基準として見た場合、処理Bの実行は2回に1回となるので、図6を参照しながら説明した並列化方法では、処理Bを実行しない場合に処理Aの不均一時間差が全体の効率低下を招いてしまう。そこで、処理Bが実行される周期と、処理Bが実行されない周期とのバランスを取るために、図8に示したような並列化方法が用いられる。
並列処理である処理Aの実行周期及び逐次処理である処理Bの実行周期の指定を受け付け、この指定に基づいて静的に実行周期を決定することができる。ユーザは、並列処理である処理Aの実行周期及び逐次処理である処理Bの実行周期を入力することで、各実行周期に応じた並列化処理を実現することができる。
並列処理である処理Aの実行周期及び逐次処理である処理Bの実行周期を、処理A及び処理Bの実際の動作結果からフィードバックして決定することができる。並列処理である処理Aの実行周期及び逐次処理である処理Bの実行周期をフィードバックすることで、実際の実行周期に応じた並列化処理を実現することができる。
処理Bを逐次処理とするか否かは、ユーザの指定により特定されてもよい。ユーザが意図的に並列化処理を行わないとする場合の例としては、
・プログラムのデータ構造上は依存性がなく並列化可能だが、制御仕様上は逐次的に実行順番が規定されているときに、プログラムと制御仕様の対応を維持して理解しやすくしたい場合。
・機能安全対応のため冗長化されたコア(例えばロックステップコア)で実行しなければならない場合。
・特殊なCPUアーキテクチャを想定した制御である場合。例えばベクタ処理など、ヘテロジニアスアーキテクチャにおけるアクセラレータ側で動くソフトウェアである場合。
が挙げられる。
本実施形態の並列化手法は、OSによって動的に実行されるコアが決定されるのではなく、静的に実行されるコアが決定されるシステムを特に好適な適用システムとして考えられている。特に、リアルタイム性がより重視される制御系、特に走る・曲がる・止まるに関わる車載制御のプログラムに用いるのが好適である。
尚、逐次プログラムを入力して並列プログラムを生成することについて説明したけれども、マルチコアで動作する並列プログラムをさらに細分するように使ってもよい。
20:車載装置
21:マルチコアプロセッサ

Claims (8)

  1. シングルコアプロセッサで処理可能なように記述された逐次プログラムからマルチコアプロセッサ(21)で処理可能なように並列化した並列プログラムをコンピュータに生成させるための並列化コンパイル方法であって、
    前記逐次プログラムを構成する処理群を、前記マルチコアプロセッサを構成する単一コア上で逐次動作する逐次処理と、前記マルチコアプロセッサを構成する複数コア上で並列動作する並列処理とに分類する分類手順と、
    前記分類手順によって前記並列処理に分類された処理を、前記複数コアに対して前記逐次処理の実行時間の長さに基づいて割り当てる割当処理を実行する割当手順と、
    前記分類手順の分類結果及び前記割当手順の割当結果に基づいて前記並列プログラムを
    生成する生成手順と、を備え
    前記割当手順では、前記単一コアと、前記単一コア以外の前記複数コアとで、前記逐次処理の実行時間の長さに1より小さい重み付け値を乗算した分だけ差をつけることで、前記割当処理を実行する、ことを特徴とする並列化コンパイル方法。
  2. 前記割当手順では、前記並列処理の実行周期と前記逐次処理の実行周期との比を用いて前記重み付け値を決定する、ことを特徴とする請求項に記載の並列化コンパイル方法。
  3. 前記割当手順では、前記並列処理の実行周期及び前記逐次処理の実行周期の指定を受け付け、この指定に基づいて静的に前記実行周期を決定する、ことを特徴とする請求項に記載の並列化コンパイル方法。
  4. 前記割当手順では、前記並列処理の実行周期及び前記逐次処理の実行周期を、前記並列処理及び前記逐次処理の実際の動作結果からフィードバックして決定する、ことを特徴とする請求項に記載の並列化コンパイル方法。
  5. シングルコアプロセッサで処理可能なように記述された逐次プログラムからマルチコアプロセッサ(21)で処理可能なように並列化した並列プログラムをコンピュータに生成させるための並列化コンパイラであって、
    前記逐次プログラムを構成する処理群を、前記マルチコアプロセッサを構成する単一コア上で逐次動作する逐次処理と、前記マルチコアプロセッサを構成する複数コア上で並列動作する並列処理とに分類する分類手順と、
    前記分類手順によって前記並列処理に分類された処理を、前記複数コアに対して前記逐次処理の実行時間の長さに基づいて割り当てる割当処理を実行する割当手順と、
    前記分類手順の分類結果及び前記割当手順の割当結果に基づいて前記並列プログラムを生成する生成手順と、を前記コンピュータに実行可能にさせるように構成され、
    前記割当手順では、前記単一コアと、前記単一コア以外の前記複数コアとで、前記逐次処理の実行時間の長さに1より小さい重み付け値を乗算した分だけ差をつけることで、前記割当処理を実行する、ことを特徴とする並列化コンパイラ。
  6. 前記割当手順では、前記並列処理の実行周期と前記逐次処理の実行周期との比を用いて前記重み付け値を決定する、ことを特徴とする請求項に記載の並列化コンパイラ。
  7. 前記割当手順では、前記並列処理の実行周期及び前記逐次処理の実行周期の指定を受け付け、この指定に基づいて静的に前記実行周期を決定する、ことを特徴とする請求項に記載の並列化コンパイラ。
  8. 前記割当手順では、前記並列処理の実行周期及び前記逐次処理の実行周期を、前記並列処理及び前記逐次処理の実際の動作結果からフィードバックして決定する、ことを特徴とする請求項に記載の並列化コンパイラ。
JP2015098913A 2015-05-14 2015-05-14 並列化コンパイル方法、及び並列化コンパイラ Active JP6428476B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015098913A JP6428476B2 (ja) 2015-05-14 2015-05-14 並列化コンパイル方法、及び並列化コンパイラ
DE102016208339.2A DE102016208339A1 (de) 2015-05-14 2016-05-13 Parallelisierungskompilierverfahren, parallelisierungskompilierer und fahrzeuggebundene vorrichtung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015098913A JP6428476B2 (ja) 2015-05-14 2015-05-14 並列化コンパイル方法、及び並列化コンパイラ

Publications (2)

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

Family

ID=57208843

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015098913A Active JP6428476B2 (ja) 2015-05-14 2015-05-14 並列化コンパイル方法、及び並列化コンパイラ

Country Status (2)

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

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6891521B2 (ja) * 2017-02-08 2021-06-18 日本電気株式会社 情報処理装置、情報処理方法、プログラム
KR102485935B1 (ko) * 2018-02-23 2023-01-10 삼성전자주식회사 전자 장치 및 그의 동작 방법
JP7201381B2 (ja) 2018-10-05 2023-01-10 日立Astemo株式会社 電子制御装置、並列処理方法
JP6942287B2 (ja) * 2019-04-25 2021-09-29 三菱電機株式会社 追尾処理装置、追尾処理方法及び目標観測装置
JP7107275B2 (ja) * 2019-04-25 2022-07-27 株式会社デンソー 並列化方法、半導体制御装置、及び車載制御装置
JP2021012601A (ja) * 2019-07-08 2021-02-04 株式会社デンソー 並列化方法、半導体制御装置、車載制御装置
CN117008915B (zh) * 2023-07-05 2024-07-23 东信和平科技股份有限公司 基于寄存器数量控制的代码编译方法、装置、设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10143380A (ja) * 1996-11-07 1998-05-29 Hitachi Ltd マルチプロセッサシステム
JP5036523B2 (ja) * 2007-12-21 2012-09-26 三菱電機株式会社 プログラム並列化装置
US8881158B2 (en) * 2008-11-14 2014-11-04 Nec Corporation Schedule decision device, parallel execution device, schedule decision method, and program
JP5614699B2 (ja) * 2009-04-07 2014-10-29 日本電気株式会社 マルチコアシステムのためのタスク割り当て関連方法、その装置、そのシステム、及びそのプログラム
JP6018022B2 (ja) * 2013-06-14 2016-11-02 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Also Published As

Publication number Publication date
JP2016218503A (ja) 2016-12-22
DE102016208339A1 (de) 2016-11-17

Similar Documents

Publication Publication Date Title
JP6428476B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
US11023285B2 (en) Acceleration method for FPGA-based distributed stream processing system
EP3285170B1 (en) Application profiling job management system, program, and method
CN102360309B (zh) 片上多核异构系统的调度系统与调度执行方法
WO2016078008A1 (zh) 调度数据流任务的方法和装置
EP3092567B1 (en) System and method for isolating i/o execution via compiler and os support
KR20120068572A (ko) 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법
US20090172353A1 (en) System and method for architecture-adaptable automatic parallelization of computing code
KR101703328B1 (ko) 이종 멀티 프로세서 환경에서의 데이터 처리 최적화 장치 및 방법
JP6778130B2 (ja) 仮想計算機システムおよびそのリソース割当て方法
KR101697647B1 (ko) 스케줄링 정책 기반 코어 간 태스크 이주 관리 장치 및 방법
JP6107801B2 (ja) 情報処理装置、情報処理システム、タスク処理方法、及び、プログラム
Zhong et al. Model-based parallelizer for embedded control systems on single-isa heterogeneous multicore processors
JP6464982B2 (ja) 並列化方法、並列化ツール、車載装置
US12050894B2 (en) Offload server, offload control method, and offload program
Binet et al. Multicore in production: Advantages and limits of the multiprocess approach in the ATLAS experiment
Tariq et al. Execution time prediction model that considers dynamic allocation of spark executors
Canon et al. Online scheduling of task graphs on hybrid platforms
KR20200063962A (ko) 분산 처리 시스템 및 이의 동작 방법
Zahaf et al. Contention-aware GPU partitioning and task-to-partition allocation for real-time workloads
KR20210116356A (ko) 매트릭스 연산 방법 및 그 장치
Cojean et al. Resource aggregation for task-based Cholesky Factorization on top of heterogeneous machines
Kotthaus et al. Performance analysis for parallel R programs: towards efficient resource utilization
JP6933001B2 (ja) 並列化方法、並列化ツール
Dufaud et al. Design of data management for multi SPMD workflow programming model

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