JP6319880B2 - 並列性の抽出方法及びプログラムの作成方法 - Google Patents

並列性の抽出方法及びプログラムの作成方法 Download PDF

Info

Publication number
JP6319880B2
JP6319880B2 JP2014006009A JP2014006009A JP6319880B2 JP 6319880 B2 JP6319880 B2 JP 6319880B2 JP 2014006009 A JP2014006009 A JP 2014006009A JP 2014006009 A JP2014006009 A JP 2014006009A JP 6319880 B2 JP6319880 B2 JP 6319880B2
Authority
JP
Japan
Prior art keywords
parallelism
macro
program
subsequent
task
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
JP2014006009A
Other languages
English (en)
Other versions
JP2014160453A5 (ja
JP2014160453A (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.)
Waseda University
Original Assignee
Waseda University
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 Waseda University filed Critical Waseda University
Priority to JP2014006009A priority Critical patent/JP6319880B2/ja
Publication of JP2014160453A publication Critical patent/JP2014160453A/ja
Publication of JP2014160453A5 publication Critical patent/JP2014160453A5/ja
Application granted granted Critical
Publication of JP6319880B2 publication Critical patent/JP6319880B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

Description

本発明は、逐次処理の元プログラムに潜在する並列性を抽出する方法、及びその並列性の抽出方法を用いて複数のプロセッサコアによって構成されるマルチコアプロセッサ上で実行される並列化プログラムを作成する方法に関する。
複数のプロセッサコアを集積したマルチコアプロセッサが、各マイクロプロセッサメーカによって次々に発表されている。スーパーコンピュータ、サーバ、デスクトップコンピュータ及びPCサーバ分野の他、情報家電及び装置組み込みの分野(例えば、携帯電話機、ゲーム機、カーナビゲーションシステム、デジタルテレビ受像機、HDD/DVDレコーダ・プレーヤ等)においても、マイクロプロセッサのマルチコア化の動きが見られる。
また、より安全、快適、省エネを実現する次世代自動車の開発のため、エンジン制御のようなリアルタイム制御系、人認識・他車認識のような外界認識、運転に必要な情報の提示、音楽・映像等を提示する情報系、制御系と情報系を統合して、制御する統合制御系、それぞれの高度化が重要となっている。
これらの制御系、情報系、および統合制御系の高度化のためには、プロセッサの高能力化が重要となる。例えば、安全、快適、省エネな自動車開発のために重要なエンジン制御系を高度化するためには、制御アルゴリズムの高度化、新制御機能の実現など計算負荷の増大を避けられない。
特開2001−175619号公報
Seo, K.,etal, Coordinated implementation and processing of a unified chassis control algorithm with multi-central processing unit,J AUT01346,Vol. 224 (2009) Seo, K.,etal: An Investigation into Multi-Core Architecturesto Improve a Proccssing Performancc of the Unified Chassis Control Algorithms,S AE Int.J.Passeng.Cars-Elect1on.Electr.Syst.,Vol.3,pp.53-62 (2010) OSEK/VDX-Portal:http://portal.osek-vdx.org/ Kasahara,H .,etal: Automatic Coarse Grain Task Parallel Processing on SMP using Open MP, Proc. of The 13th International Workshop on Languages and Compilers for Parallel Computing(LCPC2000) (2000) Y. Yuyama, et al., A 45nm 37.3GOPS/W Heterogeneous Multi-Core SoC, ISSCC2010 H. Kasahara,etal, OSCAR FORTRAN COMPILER, 1991International Logic Programming Symposium, Workshop on Compilation of (simbolic) Languages for parallel Computers, Oct.31-Nov.1, 1991, San Diego, U.S.A.
このようなエンジン制御系の高度化の要求に伴う計算負荷の増大という問題を解決するためには、エンジン制御に用いられるプロセッサの高能力化が必須となる。
従来は、プロセッサの高能力化のためにプロセッサの動作周波数を上げることが必要である。しかし、消費電力は動作周波数の三乗に比例して増大するために消費電力の大幅な増加を招くこと、また、自動車における過酷な動作環境下でも安定動作を保証する必要があることなどのため、自動車などの装置に適用することは困難である。このため1チップ上に複数の低動作周波数プロセッサコアを集積し、低周波数化・低電圧化したプロセッサコアを並列動作させることにより、処理の高速化と低消費電力化とを同時に実現可能なマルチコアプロセッサへの移行が求められている。
このような要求に対し、自動車業界におけるマルチコアを利用した技術が提案されている。例えば、非特許文献1及び非特許文献2に記載されるように、統合シャシ制御(UCC)アルゴリズムを利用したマルチコアアーキテクチャでは、マルチコアプロセッサを用いた電子制御ユニットが提案されている。このマルチコアプロセッサは三つのプロセッサコアで構成され、電子制御ユニットを三つの機能に分割し、その各々を前記三つのプロセッサコアに割り当てることにより機能を分散している。この方法は、いわゆるAMP(Asymmetric Multicore Processing)と言われており、機能分散を実現することによってスループットを向上することが可能であるが、レイテンシの削減が困難である。また、機能毎の負荷バランスが均等でないとマルチコア資源を最大限に活用することができないという問題がある。
本発明では、自動車制御系の主要機能であるエンジン制御に対し、後述するように並列処理を適用し、レイテンシの削減すなわち高速化する方法を提案する。このようなマルチコア上で、エンジン制御等の計算を、従来の一つのプロセッサコア上での処理より高速に行うためには、計算を分割し、計算負荷を複数のプロセッサに適切に割り当てて、計算を実行する方法、すなわちSMP(Symmetric Multicore Processing)が重要となる。このようなSMPという計算実行方法は一般的に並列処理と呼ばれ、この並列処理のためのプログラムを並列化プログラムと称する。そして、1プロセッサ上で動作する逐次処理の元プログラムから並列化プログラムを作成あるいは生成することをプログラムの並列化と称する。
しかし、このプログラムの並列化を人手で行うことには、開発期間の増大、それに伴うソフトウェア開発費の増大、さらには並列化プログラムの信頼性の低下など、大きな問題があった。この問題を解決するために、並列化プログラムを逐次処理のプログラムから自動生成するためのソフトウェアに関する研究が行われてきた。
従来の並列化の方法として、発明者等が研究開発を行ってきたマルチグレイン並列処理を行うコンパイラ、通称OSCARコンパイラが知られている。以下にOSCARコンパイラの一般的な機能について説明する。コンパイラとは、一般的にはコンパイル対象のソースプログラムをいわゆる計算機が実行可能なプログラム(機械語のプログラム等)に変換するプログラムを指すが、以下に説明する並列化コンパイラ(OSCARコンパイラ)は逐次処理プログラムのソースコードから並列化プログラムのソースコード(場合によってはオブジェクトコード)を生成する機能を持つ。
まず、OSCARコンパイラの特徴であるマルチグレイン並列処理とは、元プログラムに存在する、ループやサブルーチン等の粗粒度タスク間の並列性を利用する粗粒度タスク並列処理、ループイタレーションレベルの並列性を利用する中粒度並列処理、基本ブロック内部のステートメントレベルの並列性を利用する近細粒度並列処理を階層的に組み合わせてプログラム全域にわたって行う並列処理である。その詳細は非特許文献4に詳述されているが、以下に図17のフローチャートを用いてその概要を説明する。
粗粒度並列処理では、コンパイラは、図17のフローチャートにおける1901の「軸解析・構文解析」のステップ、ステップ1902の「マクロタスク生成」のステップを経て、ソースとなる元プログラムを疑似代入文ブロック(BPA)、繰り返しブロック(RB)、サブルーチンブロック(SB)の三種類の粗粒度タスク(以下、「マクロタスク(MT)」と称する。)に分割する。MT生成後、コンパイラは、ステップ1903の「制御フロー解析」およびステップ1904の「データ依存解析」を経て、BPA、RB、SB、等のMT間の制御フロー及びデータ依存関係を表現したマクロフローグラフ(以下、「MFG」と略称)を生成する(ステップ1905)。さらに、ステップ1906の「データアクセス範囲解析」およびステップ1907の「最早実行可能条件解析」を経て、MFGからMT間の並列性を抽出した結果をマクロタスクグラフ(以下、「MTG」と略称)として表現する(ステップ1908)。その後コンパイラは、ステップ1907の「各種のリストラクチャリング」において、タスク融合(非特許文献6を参照)、キャッシュメモリの最適化、ローカルメモリ管理などのための各種のリストラクチャリングを行う。このリストラクチャリングのステップの処理の後、ステップ1902に処理を戻し、ステップ1902から1907までのステップにおいてプログラムの再解析を繰り返すが、再解析の必要がなくなれば、ステップ1910の「タスクスケジューリング」に進み、そのステップにおいてMTG上のMTを、少なくとも一つのプロセッサコア(PE)をグルーピングしたプロセッサグループ(PG)に割り当てるスケジューリング処理を行い、ステップ1911の「並列化プログラムの生成」において、前記スケジューリング処理の情報も含む並列化プログラムを生成する。
以上のようなコンパイラの並列化プログラム生成のための処理の過程で生成される前記のMFGの例を図18Aに示し、前記のMTGの例を図18Bに示す。MFGにおいてノードはMTを表し、実線エッジはデータ依存を、点線エッジは制御フローを表す。また、ノード内の小円は条件分岐を表す。MTGにおけるノードもMFGと同様にMTを表し、ノード内の小円はMT内の条件分岐を表す。また、実線エッジはデータ依存を表し、点線エッジは拡張された制御依存を表す。拡張された制御依存とは、通常の制御依存だけではなく、データ依存と制御依存を複合的に満足させるため、先行ノードが実行されることを確定する条件分岐を含む。また、エッジを束ねるアークには2つの意味があり、実線アークはアークによって束ねられたエッジがAND関係にあることを、点線アークは束ねられたエッジがOR関係にあることを表す。MTGにおいてエッジの矢印は省略したが、下向きである。また、矢印を持つエッジはオリジナルの制御フローを表す。
粗粒度タスク並列処理では、各階層で生成されたマクロタスクはPGに割り当てられて実行される。どのPGにマクロタスクを割り当てるかを決定するスケジューリング方法として、ダイナミックスケジューリングとスタティックスケジューリングとがあり、そのいずれを選択するかは、並列化コンパイラがMTGの形状、実行時非決定性などに基づいて決定する。
条件分岐などの実行時の不確定性が存在する場合には、ダイナミックスケジューリングが適しており、ダイナミックスケジューリングによって実行時にマクロタスクをPGに割り当てる。ダイナミックスケジューリングルーチンは、マクロタスクの終了又は分岐方向の決定に応じて、マクロタスク実行管理テーブルを操作し、各マクロタスクの最早実行可能条件を探索する。マクロタスクが実行可能であればレディキューにマクロタスクが投入される。レディキュー内のマクロタスクはその優先順位に従ってソートされ、レディキューの先頭のマクロタスクがアイドル状態のプロセッサコアに割り当てられる。また、ダイナミックスケジューリングコード生成時には、一つの専用のプロセッサがスケジューリングを行う集中スケジューリング方法と、スケジューリング機能を各プロセッサに分散した分散スケジューリング方法とを、使用するプロセッサ台数及びシステムの同期オーバーヘッドを考慮して、使い分けることができる。
一方、スタティックスケジューリングは、MTGがデータ依存エッジのみを持つ場合に適しており、自動並列化コンパイラがコンパイル時にマクロタスクのPGへの割り当てを決める方法である。スタティックスケジューリングでは、実行時スケジューリングオーバーへッドを低減し、データ転送及び同期のオーバーへッドを低減することが可能である。
並列化プログラムは、APIを用いて、並列化CあるいはFortran77によってsource−to−sourceで生成することも可能である。この場合には、様々なプラットフォームにおいて実行可能な形にするため、例えば、OSCAR API標準解釈系を用いて、API部分をランタイムライブラリコールに変換した後、各プロセッサ用のコードを逐次コンパイラでコンパイルし、バイナリコードを生成してもよい。
以上、図17のフローチャートを用いて説明した従来のOSCARコンパイラに、後述するような逐次処理のエンジン制御プログラムを元プログラムとして入力し、出力として得られる並列化プログラムを後述するマルチコアプロセッサRP−X(非特許文献5を参照)上で実行させてもコア数に見合った速度向上を実現することができなかった。そのため、発明者はその原因を詳細に分析した結果、元プログラムの特性に従来のOSCARコンパイラによる並列性の抽出方法が適応していないことが判明した。
その理由は以下のとおりである。前述したエンジン制御プログラムには条件分岐などが多いために、従来のOSCARコンパイラでは、条件分岐以降のマクロタスクの計算処理を複数個のプロセッサコアを含むマルチコアプロセッサ上で効率的に動作させるための並列化をスタティックスケジューリングによって行うことが困難であり、並列化プログラムの実行時にプロセッサコアの割り当てを行うダイナミックスケジューリングによらざるを得なかった。そのために、並列化プログラム実行時に分岐毎に別のプロセッサコアに処理を割り当てた場合、コア間で処理の同期のための制御オーバーヘッドが増加し、並列化による実行速度の向上が低かったことが判明した。
このため、本発明では、条件分岐を含むプログラムに潜在する並列性を抽出して、マルチコアプロセッサ上で実行するのに適する並列化プログラムを生成するための効果的な並列性の抽出方法を提案する。
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、元プログラムの並列性をコンピュータによって抽出する方法であって、前記方法は、前記元プログラムを、複数のマクロタスクに分割する処理と、前記複数のマクロタスクの最早実行可能条件を解析する処理と、前記最早実行可能条件の解析結果に基づいて、条件分岐の同一の分岐方向に制御依存する複数のマクロタスクである複数の後続マクロタスクの相互の間で並列実行可能な前記条件分岐を抽出する処理と、抽出された前記条件分岐を複製することにより前記条件分岐をそれぞれ含む複数のマクロタスクである複数の先行マクロタスクを生成する処理と、を含む。
本発明の代表的な実施の形態によれば、条件分岐を含む元プログラムでも、適切に並列化をすることができる。また、制御プログラムのようにリアルタイム性が必要なプログラムにおいても、適切に並列化をすることができる。
本発明の並列性の抽出方法の実施形態を用いた並列化コンパイラの処理フローである。 本発明の並列性の抽出方法の実施形態を用いた並列化コンパイラの処理ステップ2909の詳細フローである。 本発明の実施形態の並列化コンパイラを実行する計算機のブロック図である。 元プログラムであるエンジン制御プログラムの実行プロファイル結果を説明する図である。 Task15mainのMTGである。 Task15main内の各マクロタスクの実行コスト(単位:クロック)を説明する図である。 本発明の実施形態の条件分岐内の並列性を説明する図である。 本発明の実施形態の条件分岐の複製を説明する図である。 本発明の実施形態のインライン展開・条件分岐の複製後のMFGである。 本発明の実施形態のタスク融合を行った後のMTGである。 本発明の実施例に用いたTask15mainを元プログラムとして生成した並列化プログラムの性能評価に用いた組込用マルチコアプロセッサの構成を説明する図である。 本発明の実施形態の実行プロファイル結果である。 本発明の実施形態のシナリオ1の速度向上率を説明する図である。 本発明の実施形態のシナリオ2の速度向上率を説明する図である。 本発明の実施形態のシナリオ3の速度向上率を説明する図である。 本発明の実施形態の説明のために挙げた条件分岐複製前のMTGの例である。 本発明の実施形態の説明のために挙げた条件分岐複製後のMTGの例である。 従来の並列化コンパイラの処理フローである。 MFGの例を説明する図である。 MTGの例を説明する図である。
以下、本発明の実施形態について図面を用いて説明する。
本実施形態では、元プログラムとして、ループ処理がなく、条件分岐や代入文などの基本ブロックが連続していて従来の並列化方法では並列化が困難なエンジン制御プログラムにおける並列性の抽出方法およびその抽出方法を用いた並列化方法について説明する。なお、本発明は、本実施形態で説明するエンジン制御プログラムだけでなく、条件分岐や代入文などの基本ブロックが連続しているなどの特徴を有する他の(制御)プログラムの並列化にも適用することができる。
[コンパイル処理]
図1Aは、本発明の実施形態の並列性の抽出方法を用いた並列化コンパイラ(以下「本発明の実施形態のコンパイラ」と略称)が実行する処理のフローチャートである。
ここでは、条件分岐の多い逐次処理の元プログラムから高性能の並列化プログラムを生成する本発明の実施形態のコンパイラが、計算機上で実行する並列化プログラム生成までの処理、なかんずく並列性の抽出処理について説明する。図1Aに示す並列化コンパイラは、従来のOSCARコンパイラに比して、ステップ1907のリストラクチャリング機能に以下に説明する並列性の抽出のための条件分岐の複製を追加したことに特徴がある。従って、以下の説明において、ステップ1901から1908までおよびステップ1910、1911における処理は従来の並列化コンパイラに実装されている。また、本発明の並列性の抽出方法を用いた並列化コンパイラ(以下「本発明のコンパイラ」と略称)のステップ2909を「条件分岐の複製を含むリストラクチャリング」と称することとするが、ステップ2909は、従来の並列化コンパイラのステップ1907の「各種のリストラクチャリング」に本発明の特徴である条件分岐の複製の機能を追加したものである。以下にその具体的な内容および効果について説明する。
まず、並列化コンパイラは、ソースプログラムの字句を解析し、プログラムの構文を解析する(ステップ1901)。なお、本実施形態では、コンパイラがプログラムを解析しているが、簡単なプログラム等の場合はプログラマ(人)がプログラムを解析してもよい。また、ソースプログラムの作成時に、コンパイラに必要なプログラムの情報を作成してもよい。
次に、並列化コンパイラは、構文の解析結果に基づいて、プログラムの階層的マクロタスクによる表現を生成する(ステップ1902)。ここでは、粗粒度タスク(マクロタスク)を生成する。なお、生成されたマクロタスクがループイタレーションレベルの並列処理や逐次処理が可能な場合、ローカルメモリ等のメモリサイズを考慮して、異なる複数のマクロタスクに分割する(ループ整合分割)。
その後、生成されたマクロタスク間の制御依存関係(制御フロー)を解析し(ステップ1903)、マクロタスク間のデータ依存を解析し(ステップ1904)、その結果に基づきMFGを生成する(ステップ1905)。次に、そのMFGを基にして各マクロタスクによってアクセスされるデータの範囲を解析する(ステップ1906)。
その後、以上に述べたプログラムの解析結果を使用して、プログラムが最も早く実行できる最早実行条件を解析し(ステップ1907)、最早実行条件の解析結果を使用して、並列処理区間やマクロタスクを割り当てるプロセッサ数を決定し、MTGを生成する(ステップ1908)。
その後、同一の条件で実行が決定される複数のマクロタスクのうち、前記実行される複数のマクロタスクの相互の間で並列実行可能な(例えば、データ依存がない)条件分岐を抽出し、抽出された条件分岐を複製する(ステップ2909の「条件分岐の複製を含むリストラクチャリング」)。複製された条件分岐の中に、さらに複製すべき条件分岐があれば、複製後のプログラムを再度解析するためにステップ1902に処理を戻し、ステップ1902から1908までを実行した上で、ステップ2909を実行する。なお、ステップ2909は、条件分岐の複製及び他のリストラクチャリングがなくなるまで繰り返し実行される。
その後、各マクロタスクの実行順序を決定するタスクスケジューリングを実行する(1910)。ここで実行されるタスクスケジューリングは、メモリ管理・タスクスケジューリング、データ転送スケジューリング、及び低消費電力スケジューリングを含む。
メモリ管理・タスクスケジューリングとは、マルチコアプロセッサ中の各プロセッサコアのローカルメモリを介した効率的なデータの授受を実行するためのスケジューリングである。データ転送スケジューリングとは、プレロードやポストストアのように、各プロセッサコアにおけるデータ転送、及びマルチコアプロセッサ全体におけるデータ転送の最適化を実現するためのスケジューリングである。低消費電力スケジューリングとは、マルチコアプロセッサ中の汎用プロセッサ(CPU)、アクセラレータ(ACC)、データ転送ユニット(DTU)などが待ち状態になる場合に、待ち時間に応じてクロック周波数を低周波数に変化させたり、電源を遮断させたりする電力制御を実現するためのスケジューリングである。
その後、ステップ1910におけるタスクスケジューリングに基づいて、マルチコアプロセッサにおいて実行可能な並列化プログラムを生成する(ステップ1911)。この並列化プログラムは、マルチコアプロセッサの構成に基づいて生成されるため、汎用プロセッサ(CPU)用のマクロタスク、ACC用のマクロタスク、DTU用のマクロタスクの命令文を含む。ここで生成される並列化プログラムでは、互いに依存のある汎用プロセッサ(CPU)用のマクロタスク、ACC用のマクロタスク、及びDTU用のマクロタスクの命令文には、フラグセット文、フラグチェック文が挿入される。これらACC用のマクロタスク、DTU用のマクロタスクの命令文、及びフラグ領域は分散共有メモリ(URAM)、ローカルメモリ(ILM、DLM)、オンチップ集中共有メモリ、オフチップ集中共有メモリのうちの少なくとも一つのメモリに配置される。
図2は、本発明の実施形態のコンパイラの処理を実行する計算機100の物理的な構成を示すブロック図である。
計算機100は、プロセッサ(CPU)101、メモリ102、不揮発性の記憶装置(HDD)103、及び通信インターフェース106を有する計算機である。
プロセッサ101は、メモリ102に格納されたプログラムを実行する。
メモリ102は、例えば、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶装置であり、オペレーティングシステム(OS)及びアプリケーションプログラムを格納する。プロセッサ101が、オペレーティングシステムを実行することによって、計算機100の基本機能が実現され、アプリケーションプログラムを実行することによって、並列化コンパイラの機能が実装される。
記憶装置103は、例えば、磁気記憶装置、フラッシュメモリ等の大容量かつ不揮発性の記憶装置であり、プロセッサ101によって実行されるコンパイラ及び元プログラムを格納する。すなわち、プロセッサ101が実行するコンパイラは、記憶装置103から読み出されて、メモリ102にロードされて、プロセッサ101によって実行される。
通信インターフェース106は、計算機100と他の計算機との通信を制御する。
計算機100は、入力インターフェース104及び出力インターフェース105を有してもよい。入力インターフェース104は、入力機器であるキーボード107及びマウス108からの入力を受ける。出力インターフェース105は、出力装置であるディスプレイ装置109に接続されており、ディスプレイ装置109に演算結果を表示するための信号を出力する。
計算機100は、論理的又は物理的に構成された一つ又は複数の計算機上で稼働するシステムである。並列化コンパイラは、一つの計算機上で動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
プロセッサ101によって実行されるプログラムは、リムーバブルメディア(CD−ROM、フラッシュメモリなど)又はネットワークを介して各サーバに提供され、非一時的記憶媒体である記憶装置103に格納される。このため、各サーバは、リムーバブルメディアを読み込むインターフェースを備えるとよい。
[逐次処理のエンジン制御プログラムの概要]
次に、本実施例における元プログラムを含むエンジン制御プログラムの概要を示す。
本実施例におけるエンジン制御プログラムは、C言語で記述されており、自動車向けリアルタイムOSであるOSEK/VDX上(例えば、非特許文献3参照)で動作する。
プログラムの動作を以下に示す。
以下の説明において、エンジン制御プログラムにおける「タスク」は自動車制御用プログラムで使われる用語であり、前述した並列化コンパイラに入力する元プログラムに相当する。
前記エンジン制御プログラムが従来の単一コアプロセッサ上で実行される場合は、まず、C言語のmain関数からOSEK/VDXが提供するAPIであるStartOS関数をコールすることによってOSを起動する。
その後、エントリタスクから周期的に実行されるタスクの実行を予約する。本エンジン制御プログラムでは、タスクはTask2−Task39の合計38個が定義されており、周期タスクであるTask22−Task39の実行が予約される。なお、Task2−Task21は周期タスクから間接的に呼び出されるタスクである。
その後、OS内のタイマにより、周期タスクが周期的に実行される。
図3に実行プロファイルの結果を示す。なお、本結果は実際にエンジン制御プログラムを動作させている車載向けマイコンを用いて、測定した結果である。図3において、横軸はタスク番号、縦軸は各タスクの実行時間がプログラム全体実行時間に占める割合を示している。図3より、Task20、Task21、Task15の順番で処理時間が大きいことがわかる。このうち、Task20、Task21はアイドルタスク(演算処理を行わない時間待ちのためだけに用意されているタスク)であるため、本実施例では実質的に処理量が一番大きいTask15に着目し、Task15を元プログラムとしてその並列性を抽出し、並列化プログラムを生成する。
[エンジン制御プログラムからの並列性の抽出との並列化手法]
次に、前記エンジン制御プログラム中のTask15からの並列性の注出方法と並列化方法について以下に説明する。また、生成される並列化プログラムを図10に示すマルチコアプロセッサRP−X上で動作させ、性能評価を行うことを前提に本発明のコンパイラによる並列化処理を行う。
まず、Task15の並列性を解析する。この並列性解析における1901から1908までのコンパイラの処理ステップは、図17に示す従来のOSCARコンパイラの処理ステップと変わることはない。Task15にはエントリ関数があり、これをTask15mainと称する。当該エンジン制御プログラムは、Task15計算部本体とテストドライバからなり、テストドライバはシナリオ1、シナリオ2、シナリオ3からなる三つの実行シナリオでTask15を実行する。以下の説明では、Task15mainを元プログラムとして焦点を当て、その並列性の抽出方法について説明する。
図4に、図1Aに示した本発明の実施形態のコンパイラが実行する処理のフローチャートにおけるステップ1907の「最早実行可能条件解析」を経て生成されたTask15mainのMTGを示す。図4のMTGにおいて、sb2やsb4などのように四角で囲んだマクロタスクはサブルーチンブロック、bb3やbb5などのように二重四角で囲んだマクロタスクはベーシックブロックを示す。図5に各タスクの実行シナリオ別のマクロタスクの実行コスト(時間)を示す。図5における実行コストの単位はクロック(clock)である。
図5に示すマクロタスクの実行コストは、RP−X上で648MHzにて計測したもので、コンパイラによるTask15mainの並列化処理におけるステップ1907の「最早実行可能時間解析」などに必要なデータとしてコンパイラに予め入力される。なお、RP−Xは、組込用マルチコアプロセッサであり、その構成は図10を用いて後に説明する。
Task15mainのMTG生成後、コンパイラは図1Aのステップ2909に示す、本発明の並列性抽出方法の特徴である「条件分岐の複製を含むリストラクチャリング」のステップに入る。このステップは、すでに述べたように、図17に示す従来の並列化コンパイラのステップ1907の「各種のリストラクチャリング」の機能に本発明の条件分岐の複製の機能を追加したものである。以下の説明では単に「リストラクチャリング」と呼ぶこともある。ステップ2909における処理をさらに細かく展開した処理フローである図1Bを用いて詳細を説明する。なお、図1Bにおいて、19071から19074までのステップと19076、19077のステップは、図17に示す従来の並列化コンパイラのステップ1907に含まれており、ステップ29095は本発明の特徴である条件分岐の複製のステップである。
図4より、この階層では、sb1、bb3、sb4をそれぞれ並列に実行可能であるため、並列度は3であるが、図5より、sb4の実行時間の占める割合が、シナリオ1で94.3%、シナリオ2で92.6%と相対的に大きい。このため、これらのシナリオではsb4の内部を並列化することが重要である。シナリオ3では、sb4が29%、sb7が68.9%となるため、sb4及びsb7の内部をそれぞれ並列化することが重要である。いずれにしても、sb4及びsb7を含むパスがクリティカルパスとなる。このようにクリティカルパスを見出す処理が図1Bのステップ19071のクリティカルパスの抽出である。
また、プログラムの構造に、大きなループ処理がなく、条件分岐及び代入文が連続する場合、すでに述べたように、従来の並列性の抽出方法を用いる並列化コンパイラではダイナミックスケジューリングに依らざるを得ない。しかし、図5よりわかるように、実行時間が非常に短いため、並列化した際の同期処理オーバーヘッドや、ダイナミックスケジューリングのスケジューリングオーバーヘッドが相対的に大きくなる問題点がある。
そこで、当該プログラムを並列化するために、代入文の並列性や関数間の並列性を利用する粗粒度並列化と、スタティックスケジューリングとを適用することが重要となる。
次に、並列性向上のために行った逐次処理の元プログラムへのリストラクチャリングの次のステップ19072のインライン展開について述べる。
まず、図4のsb4及びsb7が内包する並列性を有効活用するため、sb4及びsb7の内部関数のMTG及びRP−Xのプロファイル情報に基づいて、並列性があり、かつ相対的に実行コストが大きい関数を選択し、その関数をTask15mainの階層までインライン展開をしていく。これにより、Task15mainの階層における並列性が向上する。
インライン展開した後のMTGにおいて並列処理時間を短縮するために、MTG上の最長の処理時間を示すパス(クリティカルパス)上にある条件分岐を抽出し(ステップ19073)、抽出した条件分岐のうち条件分岐に後続する複数のマクロタスク間の並列性(すなわち、当該マクロタスク間でデータ依存がないこと)を抽出する(ステップ19074)。その抽出した並列性に基づき、条件分岐を複製する(ステップ29095)。
この実施例で取り上げた元プログラムの例では、sb7は条件分岐内に存在するため、sb7をインライン展開しても、それらは一つの条件分岐内に収まってしまい、一つのマクロタスクとしてプロセッサに割り当てられる。そこで、条件分岐内の並列性を抽出するために、コンパイラが条件分岐を複製する。例えば、図6に示す条件分岐があり、条件分岐内の3個の関数が並列化可能だとし、条件式(condition)が条件分岐内で変更されない場合を考える。
図6に示す状態では、この条件分岐を一つのプロセッサに割り当てることになり、func1−func3の並列性を活かすことができない。そこで、図7のようにプログラムを書き換える。この処理によって、各条件分岐が合計3つのマクロタスクに複製され、各マクロタスクを別々のプロセッサに割り当てることが可能となる。以上の条件分岐の複製のための一連の処理はステップ29095において行われる。また、この処理の結果、MTG上で他のパスがクリティカルパスになることがある。その場合には、処理をステップ1902に戻し、ステップ1902から1908までの処理を経て、ステップ2909において新たなクリティカルパスに対して条件分岐の複製を適用する。これらの処理は条件分岐の複製と後述するタスク融合が必要な限り行う。これにより、条件分岐内の並列性を抽出することが可能となり、Task15mainの階層における並列性を向上することができる。
図8に、インライン展開や条件分岐の複製を行い、並列性を向上した後にステップ1905を経て生成されたTask15mainのMFGを示す。図8のMFGは、ステップ2909においてインライン展開を行ったまま条件分岐の複製を行った後にステップ1905にて生成されたものなので、粒度の小さなマクロタスクが多数存在する。
そのため、ステップ1908において、図8のMFGからMTGを生成した後に、本実施例では、ステップ2909の中のステップ19076において実行コストが小さい複数のタスクを一つの粗粒度タスク(マクロタスク)として融合するタスク融合を行った。このタスク融合により生成されたMTGを図9に示す。図9において、タスク融合を行ったブロックはloopと表示される。図9からわかるように、並列性が損なわれない範囲で条件分岐や代入文をタスク融合することによって、一つ一つのマクロタスクを、プログラムの制御オーバーヘッドが相対的に小さくなるような処理コストを持った粒度とすることができる。また、このような処理を経て、データ依存のみの2並列程度の並列性を抽出することができる。これにより、制御フローを全てデータ依存の形に集約することができ、低オーバーヘッドなスタティックスケジューリングの適用が可能となる。なお、実行コストに基づくタスク融合の処理機能(ステップ19076)は、すでに述べたように本発明の特徴ではなく、従来のOSCARコンパイラにも実装されている(非特許文献6を参照)。
以上、条件分岐の複製を含むリストラクチャリングによる並列性の抽出と並列化プログラムの作成を本発明のコンパイラにより実行した場合のフローを説明してきたが、その中で実行された条件分岐の複製について、その具体例を用いて以下に簡単に説明する。
図15は、条件分岐の複製のステップ29095をより具体的に説明するために用意した条件分岐の複製前のMTGの一例であり、図16は、図15のMTGに条件分岐の複製の処理を施した後のMTGである。
図15に示す条件分岐の複製前のMTGによると、Sb2(func2)はsb6(func5)及びsb7(func6)にデータ依存するが、sb5(func4)にデータ依存しない。従って、図15のMTGに表された条件分岐を複製して2つの条件分岐を生成し、その一方にsb2を含むパスが含まれ、もう一方の条件分岐にはsb2と並列実行可能なsb5が含まれるようにすることができる。
このように、図16に示す条件分岐の複製後のMTGによると、sb2(func2)とデータ依存のないsb5(func4)とが分かれ、並列実行可能となるので、その各々を2つのプロセッサコアに割り当てることができる。なお、条件分岐を複製したため、一部のサブブロック番号が変更されている。
分岐複製前 sb6(func5) → 分岐複製後 sb9
分岐複製前 sb7(func6) → 分岐複製後 sb13
分岐複製前 sb10(func3) → 分岐複製後 sb16
[性能評価]
本項では、実施形態の説明のために挙げた自動車エンジン制御プログラムを本発明の並列性の抽出方法を用いて並列化したプログラムを組込用マルチコアプロセッサRP−X上で実行させ、その並列処理性能を評価する。
まず、これまでの説明で述べた方法で並列化したエンジン制御プログラムの性能評価を行った組込用マルチコアプロセッサRP−Xの構成について説明する。
図10に示すように、RP−Xは、45nm LowPowerテクノロジ、15コアのマルチコアプロセッサで、汎用プロセッサコアとして動作周波数を648MHz、324MHz、162MHz、81MHzと変更して動作するSH−4Aコアを8個、アクセラレータコアとして324MHzで動作するFE−GAを4個、その他ハードウェアIPを搭載している。
各汎用プロセッサコア内メモリは、命令キャッシュ(32KB)、データキャッシュ(32KB)、ローカルメモリ(ILM、DLM:16KB)、分散共有メモリ(URAM:64KB)及びデータ転送ユニットを有する。また、アクセラレータコアはコントローラなしアクセラレータであり、オンチップバス(SHwy#1)に接続されている。
現在のエンジン制御系で2コアのマルチコアが検討されているため、本実施例では、汎用プロセッサコアとして2個のSH−4Aコアを計算資源として用いた。また、汎用コアの動作周波数を648MHzから324MHz、162MHz、81MHzと変化させた時のバスの動作周波数は324MHzに固定し、性能を評価した。これはバスの動作周波数を固定し、汎用コアの動作周波数を下げることによって、メモリアクセスレイテンシを相対的に低くするためであり、メモリアクセスレイテンシが小さい車載向けマイコンの環境に近付けるためである。
次に、組込用マルチコアプロセッサRP−X上での並列処理性能評価条件を説明する。
図11にRP−X上648MHz実行時のTask15mainの実行プロファイル結果を示す。なお、単位はclockである。RP−X上で性能評価を行うにあたっては、各シナリオ毎にコンパイラに本プロファイル情報を与え、スタティックスケジューリングを行うことで、負荷を分散する。図11より、各シナリオで実行コストが異なる。これは、各シナリオにおいて処理を高速化するためには、負荷分散が重要なためである。
また通常、グローバル変数はオフチップ共有メモリに配置する。この場合、キャッシュヒットの際には1サイクルでデータを読み出せるが、キャッシュミスの際には、データの読み出しに55サイクルを必要とする。エンジン制御プログラムのようなマイクロ秒オーダーで動作するプログラムにおいて、このペナルティは非常に大きい。そこで、メモリアクセスレイテンシが小さいローカルメモリにグローバル変数を配置することが重要となる。しかし、全てのグローバル変数をローカルメモリに配置すると、メモリ容量を超えるため、メモリ容量内に収めるために、初期値無しのグローバル変数(約7.5kbyte)のみをローカルメモリに配置する。また、プロセッサコア間の同期を担う同期変数を、オフチップ共有メモリに配置すると、メモリアクセスレイテンシのペナルティが大きいため、レイテンシが小さい分散共有メモリに配置する。これにより、高速化が可能となる。
メモリ配置による性能差を比較するため、グローバル変数全てを共有メモリに配置した場合と、グローバル変数の一部をローカルメモリに配置し、プロセッサコア間の同期を担う同期変数を分散共有メモリに配置した場合の性能を評価する。
次に、組込用マルチコアRP−X上での並列処理性能評価結果を説明する。
図12にシナリオ1を1CPU、2CPU、メモリ配置を工夫した2CPUで実行した場合の速度向上率を示す。図12において、横軸は動作周波数、縦軸は1CPU実行時に対する速度向上率である。具体的な実行時間は表1に示すとおりである。81MHzで1.57倍、162MHzで1.55倍、324MHzで1.53倍、648MHzで1.48倍に速度が向上した。メモリ配置を工夫した場合、81MHzで1.60倍、162MHzで1.71倍、324MHzで1.69倍、648MHzで1.62倍に速度が向上した。メモリ配置を工夫することによって、2%から11%の性能が改善した。
図13にシナリオ2を1CPU、2CPU、メモリ配置を工夫した2CPUで実行した場合の速度向上率を示す。図13において、横軸は動作周波数、縦軸は1CPU実行時に対する速度向上率である。具体的な実行時間は表2に示すとおりである。81MHzで1.38倍、162MHzで1.46倍、324MHzで1.40倍、648MHzで1.17倍の速度向上が得られた。メモリ配置を工夫した場合、81MHzで1.54倍、162MHzで1.58倍、324MHzで1.45倍、648MHzで1.25倍に速度が向上した。メモリ配置を工夫することによって、3%から11%の性能が改善した。
図14にシナリオ3を1CPU、2CPU、メモリ配置を工夫した2CPUで実行した場合の速度向上率を示す。図14において、横軸は動作周波数、縦軸は1CPU実行時に対する速度向上率である。具体的な実行時間は表3に示す通りである。81MHzで1.51倍、162MHzで1.46倍、324MHzで1.41倍、648MHzで1.42倍の速度向上が得られた。メモリ配置を工夫した場合、81MHzで1.53倍、162MHzで1.50倍、324MHzで1.46倍、648MHzで1.43倍に速度が向上した。メモリ配置を工夫することによって、1%から3%の性能が改善した。
先に述べた本発明の実施例では、逐次処理の自動車エンジン制御プログラムを並列化してマルチコアプロセッサ上で実行させる場合を例に挙げて、本発明の特徴である並列性の抽出方法とその方法を用いたプログラムの並列化方法を説明した。また、本発明を適用した並列化コンパイラを用いて、逐次処理の元プログラムの並列性を抽出するために行った、相対的に実行コストが大きい関数のインライン展開と条件分岐の複製を含む並列性の抽出、およびスタティックスケジューリング適用のためのタスク融合を行った後、すなわち逐次処理の元プログラムのリストラクチャリングを行った後、並列化プログラムを生成し、組込用マルチコアプロセッサ上で並列処理性能の評価を行った。その結果、マルチコア上で従来並列化に成功した例がない、極めて並列化が困難であった自動車エンジン制御プログラムにおいて、2プロセッサコアを用いた場合、1プロセッサコアを使用した場合と比較して、シナリオ1における162MHzの場合、1.71倍の性能向上が得られた。
本実施例では、コンパイラによる並列化を利用し、高速化を実現でき、自動車エンジン制御プログラムの自動並列化及び高速化が可能であることが確認できた。このように、本発明の方法を用いることにより、自動車エンジン制御プログラム又は一般的な制御用プログラムのような、条件分岐や代入文の多いプログラムにおいても、並列処理による高速化が可能となる。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
特許請求の範囲に記載した以外の本発明の観点の代表的なものとして、次のものがあげられる。
(1)複数のプロセッサコアを含むマルチコアプロセッサの制御方法であって、
前記複数のプロセッサコアによって実行されるプログラムは、1以上の条件分岐の集合を含み、
前記方法は、
2以上の前記プロセッサコアの各々が、少なくとも一つの前記複数の条件分岐の集合を実行し、
前記2以上のプロセッサコアの各々が、前記実行した条件分岐の集合の同一条件を満たした後に実行されるべき1以上のマクロタスクを実行するように、前記マルチコアプロセッサを制御する方法。
(2)複数のプロセッサコアを含むマルチコアプロセッサ上で実行可能プログラムを元プログラムからコンピュータによって作成する方法であって、
同一の条件で実行が決定される複数のマクロタスクのうち、前記実行される複数のマクロタスクの相互の間でデータ依存がない条件分岐の集合を前記元プログラムから抽出し、
前記抽出された条件分岐の集合を複製し、
前記複製された条件分岐の集合を、2以上の前記プロセッサコアの各々が実行するように割り当てることによって実行可能プログラムを作成する方法。
(3)複数のプロセッサコアを含むマルチコアプロセッサの制御方法であって、
前記複数のプロセッサコアによって実行されるプログラムは、1以上の条件分岐の集合を含み、
前記方法は、
1以上の前記プロセッサコアの各々が、少なくとも一つの前記1以上の条件分岐の集合を実行し、
前記1以上のプロセッサコアの各々が、前記実行した条件分岐の集合の同一条件を満たした後に実行されるべき1以上のマクロタスクを実行するように、前記マルチコアプロセッサを制御する方法。
(4)前記条件分岐の集合は、一つの条件判断の結果による分岐、あるいは一つの条件判断の結果によるさらなる条件分岐を1又は複数含むことを特徴とする(3)に記載の制御方法。
(5)複数のプロセッサコアを含むマルチコアプロセッサ上で実行可能プログラムを元プログラムからコンピュータによって作成する方法であって、
同一の条件で実行が決定される複数のマクロタスクのうち、前記実行される複数のマクロタスクの相互の間でデータ依存がない条件分岐の集合を前記元プログラムから抽出し、
前記抽出された条件分岐の集合を複製し、
前記複製された条件分岐の集合を、1以上の前記プロセッサコアの各々が実行するように割り当てることによって実行可能プログラムを作成する方法。
(6)前記条件分岐の集合は、一つの条件判断の結果による分岐、あるいは一つの条件判断の結果によるさらなる条件分岐を1又は複数含むことを特徴とする(5)に記載のプログラムの作成方法。
100 計算機
101 プロセッサ(CPU)
102 メモリ
103 記憶装置(HDD)
106 通信インターフェース

Claims (9)

  1. 元プログラムの並列性をコンピュータによって抽出する方法であって、
    前記方法は、
    前記元プログラムを、複数のマクロタスクに分割する処理と、
    前記複数のマクロタスクの最早実行可能条件を解析する処理と、
    前記最早実行可能条件の解析結果に基づいて、条件分岐の同一の分岐方向に制御依存する複数のマクロタスクである複数の後続マクロタスクの相互の間で並列実行可能な前記条件分岐を抽出する処理と、
    抽出された前記条件分岐を複製することにより前記条件分岐をそれぞれ含む複数のマクロタスクである複数の先行マクロタスクを生成する処理と、を含むことを特徴とする並列性の抽出方法。
  2. 請求項1に記載の並列性の抽出方法であって、
    前記条件分岐として、前記複数の後続マクロタスクの相互の間でデータ依存がない条件分岐を抽出することを特徴とする並列性の抽出方法。
  3. 請求項1又は2に記載の並列性の抽出方法であって、
    前記元プログラムから分割された前記複数のマクロタスクを並列に実行するための複数のパスのうち、実行時間が最も長いパスに含まれる条件分岐を複製することを特徴とする並列性の抽出方法。
  4. 請求項1〜3のうちいずれか1項記載の並列性の抽出方法であって、
    前記元プログラムから分割された前記複数のマクロタスクを並列に実行するための複数のパスのうち、実行時間が最も長いパスに含まれる条件分岐を複製することによって生成された複数の先行マクロタスクに繋がるパスの中で実行時間が最も長いパスに含まれる条件分岐をさらに複製することを特徴とする並列性の抽出方法。
  5. 請求項1〜4のうちいずれか1項記載の並列性の抽出方法であって、
    前記複数の後続マクロタスクのうちの第1後続マクロタスクを前記複数の先行マクロタスクのうちの1つの第先行マクロタスクに後続させ、
    前記複数の後続マクロタスクのうちの前記第1後続マクロタスクと異なる第2後続マクロタスクを前記複数の先行マクロタスクのうちの前記第1先行マクロタスクとは異なる第2先行マクロタスクに後続させることを特徴とする並列性の抽出方法。
  6. 請求項1〜うちいずれか1項記載の並列性の抽出方法であって、
    前記複数の後続マクロタスクとは異なる一のマクロタスクにデータ依存し、かつ、前記複数の後続マクロタスクに含まれる第3後続マクロタスクと、前記一のマクロタスクにデータ依存せず、かつ、前記複数の後続マクロタスクに含まれる第4後続マクロタスクとが存在する場合、前記第4後続マクロタスクを、前記一のマクロタスク及び前記第3後続マクロタスクが含まれるパスとは異なるパスに含まれるように、前記複数の先行マクロタスクに前記複数の後続マクロタスクを後続させることを特徴する並列性の抽出方法。
  7. 請求項1〜うちいずれか1項記載の並列性の抽出方法であって、
    記条件分岐は、実行時の不確定性を有することを特徴とする並列性の抽出方法。
  8. 請求項1〜うちいずれか1項記載の並列性の抽出方法であって、
    記条件分岐は、ループ制御文とは異なることを特徴とする並列性の抽出方法。
  9. 元プログラムからコンピュータによって複数のプロセッサコアを含むマルチコアプロセッサ上で実行可能なプログラムを作成する方法であって、
    請求項1〜うちいずれか1項記載並列性の抽出方法を用いて生成された複数の条件分岐をそれぞれ含む複数の先行マクロタスクを、前記複数のプロセッサコアの各々が実行するように割り当て、
    前記複数の条件分岐のそれぞれを含む先行マクロタスクを実行するプロセッサコアが、それぞれ、前記複数の後続マクロタスクの各々を実行するように割り当てることによって、前記実行可能なプログラム作成する方法。
JP2014006009A 2013-01-23 2014-01-16 並列性の抽出方法及びプログラムの作成方法 Active JP6319880B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014006009A JP6319880B2 (ja) 2013-01-23 2014-01-16 並列性の抽出方法及びプログラムの作成方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013010194 2013-01-23
JP2013010194 2013-01-23
JP2014006009A JP6319880B2 (ja) 2013-01-23 2014-01-16 並列性の抽出方法及びプログラムの作成方法

Publications (3)

Publication Number Publication Date
JP2014160453A JP2014160453A (ja) 2014-09-04
JP2014160453A5 JP2014160453A5 (ja) 2017-11-24
JP6319880B2 true JP6319880B2 (ja) 2018-05-09

Family

ID=51227405

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014006009A Active JP6319880B2 (ja) 2013-01-23 2014-01-16 並列性の抽出方法及びプログラムの作成方法

Country Status (4)

Country Link
US (1) US20150363230A1 (ja)
EP (1) EP2950211B1 (ja)
JP (1) JP6319880B2 (ja)
WO (1) WO2014115613A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101504877B1 (ko) 2014-10-23 2015-03-30 (주)누스코 매니 코어를 이용한 프로그램 처리 장치 및 방법
WO2016094291A1 (en) 2014-12-08 2016-06-16 Umbra Technologies Ltd. System and method for content retrieval from remote network regions
JP2018508067A (ja) * 2015-01-06 2018-03-22 アンブラ テクノロジーズ リミテッドUmbra Technologies Ltd. ニュートラルなアプリケーションプログラミングインタフェースについてのシステム及び方法
EP3251301A4 (en) 2015-01-28 2018-10-10 Umbra Technologies Ltd. System and method for a global virtual network
JP6427054B2 (ja) * 2015-03-31 2018-11-21 株式会社デンソー 並列化コンパイル方法、及び並列化コンパイラ
JP2018515974A (ja) 2015-04-07 2018-06-14 アンブラ テクノロジーズ リミテッドUmbra Technologies Ltd. グローバル仮想ネットワーク(gvn)において仮想インタフェースとアドバンストスマートルーティングとを提供するためのシステム及び方法
JP6413922B2 (ja) 2015-05-18 2018-10-31 株式会社デンソー ソフトウェア分割方法、ソフトウェア分割装置および車載装置
WO2016198961A2 (en) 2015-06-11 2016-12-15 Umbra Technologies Ltd. System and method for network tapestry multiprotocol integration
JP6500626B2 (ja) * 2015-06-16 2019-04-17 富士通株式会社 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置
US11360945B2 (en) 2015-12-11 2022-06-14 Umbra Technologies Ltd. System and method for information slingshot over a network tapestry and granularity of a tick
CN109416680B (zh) 2016-04-26 2023-02-17 安博科技有限公司 吊索路由逻辑与负载均衡
DE102017209697A1 (de) * 2016-06-13 2017-12-14 Denso Corporation Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung
JP2017228029A (ja) * 2016-06-21 2017-12-28 株式会社デンソー 並列化方法、並列化ツール、車載装置
US10671361B2 (en) * 2016-10-25 2020-06-02 Paypal, Inc. Automatically determining data dependencies to facilitate code execution
JP6600888B2 (ja) * 2016-12-28 2019-11-06 学校法人早稲田大学 並列化コンパイラ、並列化コンパイル装置、及び並列プログラムの生成方法
EP3343351B1 (en) * 2016-12-28 2023-04-26 Waseda University Parallel program generating method and parallelization compiling apparatus
JP6891521B2 (ja) * 2017-02-08 2021-06-18 日本電気株式会社 情報処理装置、情報処理方法、プログラム
US11412242B2 (en) * 2018-08-08 2022-08-09 Lg Electronics Inc. Image encoding/decoding method and device therefor
US11093223B2 (en) * 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods
US11392384B2 (en) 2020-09-04 2022-07-19 Alibaba Group Holding Limited Methods of breaking down coarse-grained tasks for fine-grained task re-scheduling

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2794523B2 (ja) * 1993-11-26 1998-09-10 日本アイ・ビー・エム株式会社 アレイ関数をもつプログラミング言語におけるインライン展開方法
US6505296B2 (en) * 1997-10-13 2003-01-07 Hewlett-Packard Company Emulated branch effected by trampoline mechanism
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
JP4784792B2 (ja) 1999-12-22 2011-10-05 学校法人早稲田大学 マルチプロセッサ
JP3664473B2 (ja) * 2000-10-04 2005-06-29 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの最適化方法及びこれを用いたコンパイラ
JP4783005B2 (ja) * 2004-11-25 2011-09-28 パナソニック株式会社 プログラム変換装置、プログラム変換実行装置およびプログラム変換方法、プログラム変換実行方法。
JP4082706B2 (ja) * 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
US9384003B2 (en) * 2007-10-23 2016-07-05 Texas Instruments Incorporated Determining whether a branch instruction is predicted based on a capture range of a second instruction
JP4339907B2 (ja) * 2007-10-24 2009-10-07 株式会社日立製作所 マルチプロセッサ向け最適コード生成方法及びコンパイル装置
KR101522444B1 (ko) * 2008-10-24 2015-05-21 인터내셔널 비지네스 머신즈 코포레이션 소스 코드 처리 방법, 시스템, 및 프로그램
JP2012103923A (ja) * 2010-11-10 2012-05-31 Renesas Electronics Corp コンパイラ装置、コンパイル方法及びコンパイラプログラム
WO2013010159A1 (en) * 2011-07-14 2013-01-17 Siemens Corporation Reducing the scan cycle time of control applications through multi-core execution of user programs

Also Published As

Publication number Publication date
EP2950211B1 (en) 2021-07-07
EP2950211A4 (en) 2016-11-16
WO2014115613A1 (ja) 2014-07-31
US20150363230A1 (en) 2015-12-17
EP2950211A1 (en) 2015-12-02
JP2014160453A (ja) 2014-09-04

Similar Documents

Publication Publication Date Title
JP6319880B2 (ja) 並列性の抽出方法及びプログラムの作成方法
JP6018022B2 (ja) 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
JP4936517B2 (ja) ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
Hormati et al. Sponge: portable stream programming on graphics engines
Stratton et al. Efficient compilation of fine-grained SPMD-threaded programs for multicore CPUs
KR101839544B1 (ko) 이종 코어의 자동 부하 균형
US8528001B2 (en) Controlling and dynamically varying automatic parallelization
Bai et al. Heap data management for limited local memory (llm) multi-core processors
JP6427054B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
Cong et al. Source-to-source optimization for HLS
EP2710467A1 (en) Automatic kernel migration for heterogeneous cores
JP2007328416A (ja) ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
US8387033B2 (en) System and method for the distribution of a program among cooperating processing elements
US20100251223A1 (en) System and method for the distribution of a program among cooperating processing elements
Ventroux et al. SESAM/Par4All: a tool for joint exploration of MPSoC architectures and dynamic dataflow code generation
JP6427053B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
JP6488739B2 (ja) 並列化コンパイル方法、及び、並列化コンパイラ
Khasanov et al. Implicit data-parallelism in Kahn process networks: Bridging the MacQueen Gap
Huynh et al. Mapping streaming applications onto GPU systems
US20090133022A1 (en) Multiprocessing apparatus, system and method
US20220100512A1 (en) Deterministic replay of a multi-threaded trace on a multi-threaded processor
JP6488738B2 (ja) 並列化コンパイル方法、及び、並列化コンパイラ
Cartwright et al. Automating the design of mlut mpsopc fpgas in the cloud
Cartwright et al. Creating hw/sw co-designed mpsopc's from high level programming models
Oden et al. Implementation and Evaluation of CUDA-Unified Memory in Numba

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20160419

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20160419

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20160905

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20161025

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170912

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171006

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171024

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20171215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180222

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180402

R150 Certificate of patent or registration of utility model

Ref document number: 6319880

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250