JP4784827B2 - ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ - Google Patents
ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ Download PDFInfo
- Publication number
- JP4784827B2 JP4784827B2 JP2006157308A JP2006157308A JP4784827B2 JP 4784827 B2 JP4784827 B2 JP 4784827B2 JP 2006157308 A JP2006157308 A JP 2006157308A JP 2006157308 A JP2006157308 A JP 2006157308A JP 4784827 B2 JP4784827 B2 JP 4784827B2
- Authority
- JP
- Japan
- Prior art keywords
- processor
- compiler
- program
- processing
- information
- 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.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 claims description 125
- 238000000034 method Methods 0.000 claims description 61
- 230000008569 process Effects 0.000 claims description 33
- 238000012546 transfer Methods 0.000 claims description 10
- 230000010365 information processing Effects 0.000 claims description 2
- 238000004148 unit process Methods 0.000 claims 1
- 235000019800 disodium phosphate Nutrition 0.000 description 24
- 238000004458 analytical method Methods 0.000 description 11
- 230000003068 static effect Effects 0.000 description 10
- 239000000284 extract Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 102100022692 Density-regulated protein Human genes 0.000 description 4
- 101001044612 Homo sapiens Density-regulated protein Proteins 0.000 description 4
- 101000909218 Homo sapiens Dynamin-1-like protein Proteins 0.000 description 4
- 101000841301 Homo sapiens Utrophin Proteins 0.000 description 4
- 238000005206 flow analysis Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 235000019580 granularity Nutrition 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000012447 hatching Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000007728 cost analysis Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Devices For Executing Special Programs (AREA)
- Multi Processors (AREA)
Description
そこで、ホモジニアスマルチプロセッサにおいては、プログラムの並列性を自動で抽出し、複数のPUに処理を分散し処理性能を向上させる自動並列化コンパイラが提案されている。つまり、入力プログラムを解析し、当該プログラム中から並列に動作可能な部分を抽出し、当該部分を複数のPUに割り当て同時に実行することを可能とする、自動並列化コンパイラの研究がすでに行われている。例えば、入力ソースプログラムを解析し、当該プログラムをサブルーチンやループなどさまざまな粒度のブロック(タスク)に分割し、当該複数タスク間の並列性を解析すると共に、タスクとそれらがアクセスするデータをキャッシュあるいはローカルメモリに適合するサイズに分割し、それらを各PUに対して当該タスクを最適割り当てすることによって、マルチプロセッサシステムを効率よく動かす目的プログラムを生成するコンパイル方式が、で特許文献1に開示されている。またマルチグレイン並列処理の機能をサポートするチップマルチプロセッサのアーキテクチャが、特許文献2で開示されている。
また、ヘテロジニアスマルチプロセッサ(HCMP)においては、その異種構成のプロセッサ群の性能を引き出すためのタスク割り当て手段として、画像処理など予め処理の手順が判明しているアプリケーションにおいて、各処理の特性に合わせてCPUやDSPなどの種類の異なる複数のプロセッサを組み合わせ、当該プロセッサ上での処理時間や消費電力情報を予め測定し与えておくことで、当該情報により動的に一連の処理を当該各プロセッサに割り当てる手法が、特許文献3で開示されている。
また、HCMPではプロセッサの種類前に専用の実行コードを生成する必要があるが、その生成手段として、例えば専用プロセッサがベクトル演算器である場合は、プログラムよりベクトル演算可能な部分(ループ)をデータ依存解析より抽出し、ベクトル演算命令を生成する自動ベクトルコンパイラが非特許文献2及び非特許文献3で開示されている。
<実施形態の全体構成>
本発明の実施形態として、まず本発明で提供する並列化コンパイル方式の適用対象となるヘテロジニアスマルチプロセッサシステム(以下、HCMP)1の構成を図1のブロック図を参照しながら説明する。HCMP1では、複数の異種のプロセッサユニット(PU)、共有メモリ(CSM)で構成する。当該各PUは、インタコネクション・ネットワーク(LBUS)に接続される。また、当該SMはLBUSに接続される。当該各PUは、当該PUのプロセッサコア、メモリ等の各部位に対し電源電圧及び動作クロックを供給する、電源電圧・クロック周波数制御回路が接続される。本実施形態ではPUの種類と個数を、2個の汎用処理プロセッサ(CPU)、1個の信号処理プロセッサ(DSP)、2個の動的再構成可能プロセッサ(DRP)で構成したが、PUの種類や数は本実施形態で示した限りではなく、さまざまな構成を取り得る。
HCMP1向けプログラム並列化並びに実行コード生成の処理の一例を示すフローチャートを図2aに図示する。入力されるプログラム200(以下、入力プログラム)は通常、逐次的に記述されるが、本フローチャートによりHCMP1が持つPUを最大限活用できるように、入力プログラム200のタスク分割と並列性解析、並びにスケジューリングが実施される。本発明では図2aで示したフローチャートによる処理手順を、グローバルコンパイラ2と呼ぶこととする。以下図2aに示すグローバルコンパイラ2の全体のフローチャートをまず簡単に説明し、次に各コンパイル段階におけるフローを詳細に説明する。なお、図2aに示す処理は、予め用意したコンピュータによって実行されるものである。
続いてHCMP1の構成情報の例を図4に示す。図2aに示したアーキテクチャ構成情報204には、図1に示したHCMP1の構成のアーキテクチャ情報を、グローバルコンパイラによる並列化に必要なパラメータ情報として予め入力する。アーキテクチャ構成情報204へ入力する通常パラメータ情報としては、PUの種類、数、PUの対バス動作速度比、各PUが持つメモリの種類、メモリサイズ、及びメモリアクセスレイテンシ、HCMP1が持つメモリ種類、サイズ、レイテンシ、等が定義される。例えば、図4の1行目、「pu 0 cpu clock=2 ldm=128KB,2cyc dsm=16KB,1cyc icache=8KB,2way」は、先頭よりその意味を説明すると、「PU」はパラメータの種別を示しここではプロセッサユニットに関する属性を表現する。「0」はPU番号をあらわし、「cpu」はプロセッサ種別としてCPUであることを示す。次に「clock=2」は当該PUのバスに対する速度比が2倍であることを、「ldm=128KB、2cyc」はローカル・データ・メモリ(LDM)を保持しそのサイズが128KB、アクセスレイテンシが2サイクルであることを表現する。
次に、各プロセッサ向けコード生成コンパイラ210と並列化コンパイラ211を連携させ、入力プログラム200をヘテロジニアスマルチプロセッサ(HCMP)1上で並列実行する実行コード206に変換する、グローバルコンパイラ2の処理フローを説明する。まず、入力プログラム200はHCMP1が持つプロセッサの種類毎に用意された複数の各種プロセッサ向けコード生成コンパイラACCPL210にて順次処理される。特にHCMP1が持つ専用プロセッサは通常のCPUとは命令セットが異なるため、並列化スケジューリング時に必要な処理コストを別途見積もる必要があり、またPUの種別によっては効率的に処理可能なプログラム構造が限られていることが多くあるため、HCMP1が持つプロセッサ種類毎に用意された各種プロセッサ向けのコード生成コンパイラACCPL210で処理を行うことで、次段の並列化コンパイラ211が必要とする情報を生成する。
各種専用プロセッサは、記述されたプログラムを各プロセッサ向けコード生成コンパイラ210にて各プロセッサ毎の実行コードに変換し、当該実行コードを処理するが、専用プロセッサによっては必ずしも実行コードに変換するコード生成コンパイラが用意されているとは限らない。例えば、信号処理プロセッサ(DSP)のようなプロセッサでは、通常のC言語の形で書かれたプログラムをDSP向け実行コードに変換することは難しい。
以上が、HCMP1向けグローバルコンパイラ2の処理フローとなる。次に、各種専用プロセッサ向けコンパイラACCPL210の処理手順を説明する。まず、並列化コンパイラPRLCPL211に入力するため、ACCPL210の出力プログラム201を生成する処理フローを図5aに図示する。
図3に示した、各種プロセッサ向けコード生成コンパイラ210に入力し、上述した処理手順にしたがって解析する入力プログラムについてまず説明する。図3の入力プログラム上では一部ユーザによる指示文が存在する。指示文は、「#pragma HCMP1」というキーワードで始まる行がそれである。300の「#pragma HCMP1 assign dsp」は、当該指示文の直後のサブルーチン「func3(d、e、f)」(301)はDSPに処理を割り当てることを指定している。つまり、前記サブルーチンはDSP上での処理が可能なことを示すとともに、DSPでの処理をユーザが指定している。なお、本指示があっても並列化コンパイラが、例えばDSPが他のタスクを処理中で通常CPUで処理したほうが、終了時間が早いと判定される場合は、結果的にCPUで処理されることもあり、必ずしも強制的に当該指示文による指定プロセッサで処理が行われるとは限らない。また、図3の302「#pragma HCMP1 assign drp process_a_01」及び303の「#pragma assign process_a_01」で囲まれた部分がDRPに処理を割り当てることを指定している。指示文の最後尾はユーザが指定する一意のIDとなっており、前例のようにループやサブルーチンに対する構造単位で指定する方式、並びにまた指示文で開始点と終了点を指定する方式がある。
次にグローバルコンパイラ2における並列化コンパイラ211の処理フローを説明する。図9に並列化コンパイラ211の処理フローを示す。
C言語やFortran等の高級言語で記述された逐次構造の入力プログラム201はまず、並列化コンパイラ211が当該プログラムの構造を解析することで、繰り返しブロック(RB:Repetition Block)、サブルーチン(SB:Sub Routine)、擬似代入文ブロック(BPA:Block of Pseudo Assignment statements)の3種類の粒度が大きなマクロタスク(MT)に分割、生成する(401)。RBはループブロックで各階層での最も外側のループであり、BPAはスケジューリングオーバーヘッドあるいは並列性を考慮し、代入文からなる複数の基本ブロックを融合あるいは分割したブロックである。図3の「#pragma HCMP1 assign ***」のように、専用プロセッサでの処理を指定されたブロックは、一つのマクロタスクとして扱うことになる。
続いて、並列化コンパイラ211は、分割生成された当該マクロタスク間の制御フロー及びデータ依存性を解析し、MTの実行順序関係を抽出する(402)。入力プログラムは逐次的に記述されているため、通常のコンパイラによる実行コードは、当該プログラムの構造と同様に逐次的な順序で実行されるが、MT間で見ると必ずしも記述された順序で実行する必要がないことが多い。つまり、MT間において制御またはデータ参照の依存性がない場合、特にマルチプロセッサシステムにおいては、複数のPUに複数のMTを配置して同時にまたは順序を変更して、全体の実行時間が短くなるようスケジューリングすることが重要となる。このようなスケジューリングを行うためには、MT間の並列性を解析する必要がある。そこでこれに向けた準備として、データ依存・制御フロー解析処理402により、MT間の実行順序関係を抽出する。
続いて並列化コンパイラ211は、マクロタスク内の中粒度レベルの並列性解析として、ループレベル並列化を行う(403)。ループレベル並列化403では、ループの繰り返し(イタレーション)単位間のデータ依存性を解析して、各イタレーションが独立に処理できるかを判断し、可能な場合は各イタレーションを複数のPUに割り当てて並列処理を行う。また、単一のループを複数のループに分割し並列性を高めたり、データのコピーや配列変数の拡張によりループ間のデータ依存性を削除することで並列したり、また複数のループを単一のループに融合することでループ制御に必要なオーバーヘッドを軽減したり、といった様々な手法によりループの並列化を実現する。
次に並列化コンパイラ211は、生成されたマクロタスクMTを各PUで実行した際に必要となる処理サイクルを、予め付加されたディレクティブ情報より求める。なお、CPUの処理サイクルに関しては、通常並列化コンパイラ内のCPU命令コストテーブルを参照することによってもとめる(404)。CPU処理コストの見積もり方法としては、例えばCPUなどに関しては乗算や加算など命令レベルで必要とするサイクル数をテーブル420に保持しておき、当該テーブル420を参照することでMTを当該PUで実行する際の逐次処理サイクル数を見積もることができる。
コンパイラ211はマクロタスクMTの処理コストが決定した後、データ依存・制御フロー解析処理402で抽出したMT間の制御フローとデータ依存性を同時に解析結果から、MT間の並列性、つまり各MTの実行を最も早く実行してよい条件(最早実行条件)を決定する(405)。この最早実行条件をグラフで可視的に示したものがマクロタスクグラフ(MTG)である。図3の入力プログラム200を解析して生成されたMTGを、図10に示す。なお、マクロタスク間並列性解析結果は、マクロタスクグラフテーブル421として外部記憶装置に保持され、後段のコンパイル処理で使用される。
以下、マクロタスクグラフMTGについて説明する。本グラフ中の各ノードはマクロタスクMTを示し、ノード間の実線はマクロタスク間のデータ依存関係を、ノード間の破線はマクロタスク間の制御依存関係を、ノード内の小円が条件分岐を表している。
例えば、MT1_1(501)からMT1_2(502)及びMT1_3(503)に対して実線が伸びているが、これはMT1_2及びMT1_3がMT1_1を実行した結果生じたデータを入力データとして用い処理を実行しているという依存関係があることを示している。そのため、実行順序として、MT1_2及びMT1_3はMT1_1タスク終了後、実行できることを示す。
次にコンパイラは、生成されたMTGテーブル421を参照し、HCMP1のPU資源を勘案した上で、マクロタスクグラフの形状や並列性に応じた、またはユーザからの指定に応じたプロセッサのグループ化を、汎用プロセッサCPUを対象に行う(406)。DSP、DRP等の専用プロセッサ群はグループには含めずに、各グループでの処理で必要なときに随時タスクが専用プロセッサ群に割り当てられる。
コンパイラ211は次にスケジューリング方法として、スタティックスケジュールかダイナミックスケジュールかを判断する(407)。夫々のスケジューリング方法の詳細は後述するが、以下簡単に説明する。まずもし、MTに条件分岐がなく最早実行条件が予め決定できるMTフローであれば、前者のスタティックスケジュールを適用し、コンパイラが予めMTのスケジューリングを行い、コンパイル時に同期コードをタスク間に挿入する。またもし、MTに条件分岐がある、またMTの処理時間が実行時に変動するなど、コンパイラ時に予測できないMTフローであれば、後者のダイナミックスケジュールを適用し、コンパイラは、分岐などの状況に応じた制御を実行時に行うスケジューリングプログラムを生成しCPUにて実行することで、実行時にタスクの割り当てを行う。
まず、スタティックスケジューリングの処理フローについて説明する。スタティックスケジューリングでは、コンパイル時にMTの割り当てと実行順序がすでに決定しているため、まずマクロタスクスケジューリング処理408により、マクロタスクテーブル421及びプロセッサグルーピングテーブル422情報を参照し、PU間における実行タスク間の同期や他タスクの起動等を行う制御情報を生成し、当該情報の挿入箇所を決定する。またさらに、タスクプログラムまたはタスクが必要とするデータを、他PUのLMや共有メモリSMより当該PUのローカルメモリLMにロードするといったデータ転送情報も併せて生成する。このような、データローカライゼーション手法により、ローカルメモリLMを有効に活用し、データの転送量を最小化する。以上の処理により生成されたスケジュール情報は、マクロタスクスケジュールテーブル423として、外部記憶装置に保持される。
次に、ダイナミックスケジューリングの処理フローについて説明する。ダイナミックスケジューリング時は、MT内の分岐条件等の不確定要素によりコンパイル時にスケジューリング内容を決定することができない。このためコンパイラは、MTの処理結果に基づきプログラム実行時に動的にスケジューリングを行うスケジューリングプログラムを生成する(410)。本プログラムは、処理結果に基づきMTの起動や同期、及び当該MTが必要とするデータのロードを行う。また、さらに図18で説明したタスク並列処理実行時のFV制御概念に基づき、PUの動作周波数・供給電圧を決定する動作モードを設定する。生成したスケジューリングプログラムは、電源・FV制御スケジュールテーブル424として、外部記憶装置に保持される。
コンパイラは以上の処理により、入力プログラムのPUへのスケジューリングを完了する。これまでの処理で生成したスケジューリング情報は外部記憶装置にテーブル(421〜424)として保持されている。コンパイラは、当該テーブル(421〜424)にアクセスし、タスクの実行順序やデータ転送情報、及びFV制御情報を読み込み、入力プログラムに対してスタティックスケジュール部には制御コード(スケジューリングコード)を、またダイナミックスケジュール部にはスケジューリングプログラムを付加する(411)。
本スケジューリング結果の例を図11に示す。図11は、MTのスケジューリング結果をPU毎に時間軸で示している。図中斜線のハッチングは、スタティックスケジューリングで埋め込まれた同期コードを示し、図中縦線のハッチングは、タスク割り当てようダイナミックスケジューラで生成されたスケジューリングコードを示す。本例ではCPU0がタスクの起動や同期、FV電力制御などの管理を行うため、最初にCPU0上にコンパイラが生成した制御コード550がロードされる。制御コードは初めにMT1_1をCPU0上で起動する。MT1_1処理終了後、コンパイラが生成した制御コード551を実行し、次に処理すべきタスクは、MT1_2及びMT1_3の下位層のMTGで指定されたMT1_2_1及びMT1_3_1であり、前者はCPU0にて、後者はDRP0にて実行される。
203、205、206 実行コード
204 アーキテクチャ構成情報
207、208コンパイル情報
231 実行プロファイル情報
210〜212、220 処理
230 各種プロセッサ向けライブラリ
231コスト情報
300〜303、310、311、320〜323 指示文
400 入力プログラム
401〜411 処理
412 出力コード
413 処理
420〜424 テーブル
500、510、520 マクロタスクグラフ
501〜503、511〜515、521〜525、551 マクロタスク
522 OR条件
550 タスク間同期制御コード
552 タスク同期制御用ダイナミックスケジューラコード
Claims (3)
- 複数種類のプロセッサユニットを複数個有するヘテロジニアスマルチプロセッサに実行させる出力コードを入力プログラムから生成するヘテロジニアスマルチプロセッサ向けグローバルコンパイラにおいて、
前記複数種類のプロセッサユニットは、汎用プロセッサユニットと専用プロセッサユニットを含んで構成され、
前記入力プログラムを、前記ヘテロジニアスマルチプロセッサが有する前記専用プロセッサユニットと汎用プロセッサユニットの種別毎に予め用意した前記各プロセッサユニット専用のコード生成コンパイラにて、前記入力プログラムを解析することで前記各プロセッサユニット毎に実行可能なプログラム部分の処理コストを算出し、当該プログラム部分の処理コストを各プロセッサユニット毎に対象プロセッサ情報として生成する第1の処理と、
前記入力プログラムの解析を行って、前記入力プログラムを複数の粒度のタスクに分割し、前記タスク間の制御依存性及びデータ依存性を解析することで前記タスク間の並列性を抽出し、前記対象プロセッサ情報の処理コストを用いて前記各タスクを割り当てるプロセッサユニットを決定する第2の処理と、
前記タスクを割り当てた前記プロセッサユニット毎の出力コードを出力する第3の処理と、
を計算機に実行させ、
前記第1の処理は、
前記専用プロセッサユニットと汎用プロセッサユニットの種別毎に前記入力プログラムの実行可能な部分を前記各プロセッサユニットで処理を行う実行時間を見積もった実行時間情報を前記処理コストとして生成する
ことを特徴とするヘテロジニアスマルチプロセッサ向けグローバルコンパイラ。 - 請求項1に記載のヘテロジニアスマルチプロセッサ向けグローバルコンパイラにおいて、
前記第1の処理は、
前記実行時間情報の実行時間に加え、前記各プロセッサユニット毎に必要となるデータの共有メモリとプロセッサユニット内のローカルメモリ間のデータ転送時間を算出し、データ時間転送時間情報を生成する処理を含むことを特徴とするヘテロジニアスマルチプロセッサ向けグローバルコンパイラ。 - 請求項1に記載のヘテロジニアスマルチプロセッサ向けグローバルコンパイラにおいて、
前記第1の処理は、
前記実行時間情報を生成する際に、
さらに前記対象となるプロセッサユニットのハードウェアアーキテクチャに基づき、プログラムロード時間、並びに前記プロセッサユニット内の演算器制御時間を算出し、プログラムロード時間情報並びに演算器制御時間情報を生成することを特徴とするヘテロジニアスマルチプロセッサ向けグローバルコンパイラ。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006157308A JP4784827B2 (ja) | 2006-06-06 | 2006-06-06 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
KR1020070019519A KR100878917B1 (ko) | 2006-06-06 | 2007-02-27 | 헤테로지니어스 멀티프로세서용 글로벌 컴파일러 |
CNA2007100848260A CN101086710A (zh) | 2006-06-06 | 2007-02-27 | 面向异种多处理器的全局编译程序 |
US11/716,563 US8051412B2 (en) | 2006-06-06 | 2007-03-12 | Global compiler for controlling heterogeneous multiprocessor |
EP07251186.8A EP1881405B1 (en) | 2006-06-06 | 2007-03-21 | Global compiler for controlling heterogeneous multiprocessor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006157308A JP4784827B2 (ja) | 2006-06-06 | 2006-06-06 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007328416A JP2007328416A (ja) | 2007-12-20 |
JP4784827B2 true JP4784827B2 (ja) | 2011-10-05 |
Family
ID=38779755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006157308A Expired - Fee Related JP4784827B2 (ja) | 2006-06-06 | 2006-06-06 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
Country Status (5)
Country | Link |
---|---|
US (1) | US8051412B2 (ja) |
EP (1) | EP1881405B1 (ja) |
JP (1) | JP4784827B2 (ja) |
KR (1) | KR100878917B1 (ja) |
CN (1) | CN101086710A (ja) |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8849968B2 (en) | 2005-06-20 | 2014-09-30 | Microsoft Corporation | Secure and stable hosting of third-party extensions to web services |
US8074231B2 (en) | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
US8032898B2 (en) | 2006-06-30 | 2011-10-04 | Microsoft Corporation | Kernel interface with categorized kernel objects |
JP5079342B2 (ja) | 2007-01-22 | 2012-11-21 | ルネサスエレクトロニクス株式会社 | マルチプロセッサ装置 |
US8291197B2 (en) | 2007-02-12 | 2012-10-16 | Oracle America, Inc. | Aggressive loop parallelization using speculative execution mechanisms |
DE102007009909B4 (de) * | 2007-02-28 | 2016-09-08 | Globalfoundries Inc. | Verfahren zum Validieren einer atomaren Transaktion in einer Multikernmikroprozessorumgebung |
US20080244507A1 (en) * | 2007-03-30 | 2008-10-02 | Microsoft Corporation | Homogeneous Programming For Heterogeneous Multiprocessor Systems |
US8789063B2 (en) | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
JP4339907B2 (ja) * | 2007-10-24 | 2009-10-07 | 株式会社日立製作所 | マルチプロセッサ向け最適コード生成方法及びコンパイル装置 |
JP2009146243A (ja) * | 2007-12-17 | 2009-07-02 | Hitachi Ltd | 基板バイアス制御を活用する電力性能最適化コンパイラ及びプロセッサシステム |
JP2009169862A (ja) * | 2008-01-18 | 2009-07-30 | Panasonic Corp | プログラム変換装置、方法、プログラムおよび記録媒体 |
FR2928753B1 (fr) * | 2008-03-14 | 2012-09-21 | Pierre Fiorini | Architecture de traitement informatique accelere. |
US9678775B1 (en) * | 2008-04-09 | 2017-06-13 | Nvidia Corporation | Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment |
US8776030B2 (en) * | 2008-04-09 | 2014-07-08 | Nvidia Corporation | Partitioning CUDA code for execution by a general purpose processor |
US8286198B2 (en) * | 2008-06-06 | 2012-10-09 | Apple Inc. | Application programming interfaces for data parallel computing on multiple processors |
US8645933B2 (en) * | 2008-08-01 | 2014-02-04 | Leon Schwartz | Method and apparatus for detection and optimization of presumably parallel program regions |
US8694975B2 (en) | 2008-09-09 | 2014-04-08 | Nec Corporation | Programming system in multi-core environment, and method and program of the same |
US7681182B1 (en) | 2008-11-06 | 2010-03-16 | International Business Machines Corporation | Including function call graphs (FCG) generated from trace analysis data within a searchable problem determination knowledge base |
US9189233B2 (en) | 2008-11-24 | 2015-11-17 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US9672019B2 (en) * | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US10621092B2 (en) | 2008-11-24 | 2020-04-14 | Intel Corporation | Merging level cache and data cache units having indicator bits related to speculative execution |
WO2010064260A1 (en) * | 2008-12-01 | 2010-06-10 | Kpit Cummins Infosystems Ltd. | Method and system for parallelization of sequencial computer program codes |
JP5545288B2 (ja) | 2009-02-18 | 2014-07-09 | 日本電気株式会社 | タスク割当装置、タスク割当方法、及び、タスク割当プログラム |
JP4621786B2 (ja) * | 2009-04-28 | 2011-01-26 | 株式会社東芝 | 情報処理装置、並列処理最適化方法およびプログラム |
JP5411587B2 (ja) | 2009-06-09 | 2014-02-12 | トヨタ自動車株式会社 | マルチスレッド実行装置、マルチスレッド実行方法 |
JP5353566B2 (ja) * | 2009-08-31 | 2013-11-27 | オムロン株式会社 | 画像処理装置および画像処理プログラム |
KR101645035B1 (ko) * | 2009-09-22 | 2016-08-16 | 삼성전자주식회사 | 병렬 프로그래밍 조절 장치 및 방법 |
US8230410B2 (en) * | 2009-10-26 | 2012-07-24 | International Business Machines Corporation | Utilizing a bidding model in a microparallel processor architecture to allocate additional registers and execution units for short to intermediate stretches of code identified as opportunities for microparallelization |
US8656375B2 (en) * | 2009-11-02 | 2014-02-18 | International Business Machines Corporation | Cross-logical entity accelerators |
JP4959774B2 (ja) * | 2009-11-30 | 2012-06-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | アプリケーション生成システム、方法及びプログラム |
WO2011158460A1 (ja) * | 2010-06-14 | 2011-12-22 | パナソニック株式会社 | マルチスレッド並列実行装置、放送ストリーム再生装置、放送ストリーム蓄積装置、蓄積ストリーム再生装置、蓄積ストリーム再符号化装置、集積回路、マルチスレッド並列実行方法、マルチスレッドコンパイラ |
US8863128B2 (en) * | 2010-09-30 | 2014-10-14 | Autodesk, Inc | System and method for optimizing the evaluation of task dependency graphs |
US8713518B2 (en) | 2010-11-10 | 2014-04-29 | SRC Computers, LLC | System and method for computational unification of heterogeneous implicit and explicit processing elements |
KR101703328B1 (ko) | 2010-11-23 | 2017-02-07 | 삼성전자 주식회사 | 이종 멀티 프로세서 환경에서의 데이터 처리 최적화 장치 및 방법 |
US20120179669A1 (en) * | 2011-01-06 | 2012-07-12 | Al-Omari Awny K | Systems and methods for searching a search space of a query |
WO2013009442A2 (en) | 2011-07-12 | 2013-01-17 | Rambus Inc. | Dynamically changing data access bandwidth by selectively enabling and disabling data links |
US11048410B2 (en) | 2011-08-24 | 2021-06-29 | Rambus Inc. | Distributed procedure execution and file systems on a memory interface |
WO2013028854A1 (en) | 2011-08-24 | 2013-02-28 | Rambus Inc. | Methods and systems for mapping a peripheral function onto a legacy memory interface |
US9098209B2 (en) | 2011-08-24 | 2015-08-04 | Rambus Inc. | Communication via a memory interface |
US9417855B2 (en) | 2011-09-30 | 2016-08-16 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
GB2511672B (en) | 2011-11-04 | 2020-04-15 | Univ Waseda | Processor system and accelerator |
FR2985824B1 (fr) * | 2012-01-17 | 2014-02-07 | Thales Sa | Procede d'optimisation de traitement parallele de donnees sur une plateforme materielle |
US9195443B2 (en) * | 2012-01-18 | 2015-11-24 | International Business Machines Corporation | Providing performance tuned versions of compiled code to a CPU in a system of heterogeneous cores |
KR20130115574A (ko) | 2012-04-12 | 2013-10-22 | 삼성전자주식회사 | 단말기에서 태스크 스케줄링을 수행하는 방법 및 장치 |
CN104662511A (zh) * | 2012-07-30 | 2015-05-27 | 惠普发展公司,有限责任合伙企业 | 用于可执行对象的编译*** |
CN102929723B (zh) * | 2012-11-06 | 2015-07-08 | 无锡江南计算技术研究所 | 基于异构众核处理器的并行程序段划分方法 |
US8775691B1 (en) | 2012-12-18 | 2014-07-08 | International Business Machines Corporation | Detecting firmware version for an input/output adapter |
US9465620B2 (en) * | 2012-12-20 | 2016-10-11 | Intel Corporation | Scalable compute fabric |
WO2014104912A1 (en) | 2012-12-26 | 2014-07-03 | Huawei Technologies Co., Ltd | Processing method for a multicore processor and milticore processor |
US9405551B2 (en) * | 2013-03-12 | 2016-08-02 | Intel Corporation | Creating an isolated execution environment in a co-designed processor |
US9880842B2 (en) | 2013-03-15 | 2018-01-30 | Intel Corporation | Using control flow data structures to direct and track instruction execution |
JP6018022B2 (ja) * | 2013-06-14 | 2016-11-02 | 株式会社デンソー | 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 |
CN104423994B (zh) * | 2013-09-03 | 2018-05-11 | 华为技术有限公司 | 一种代码生成方法、编译器、调度方法、装置及调度*** |
US9891936B2 (en) | 2013-09-27 | 2018-02-13 | Intel Corporation | Method and apparatus for page-level monitoring |
JP2015095163A (ja) * | 2013-11-13 | 2015-05-18 | オリンパス株式会社 | 演算装置および演算方法 |
US9563585B2 (en) * | 2014-02-19 | 2017-02-07 | Futurewei Technologies, Inc. | System and method for isolating I/O execution via compiler and OS support |
US9268597B2 (en) * | 2014-04-01 | 2016-02-23 | Google Inc. | Incremental parallel processing of data |
CN104144210A (zh) * | 2014-07-09 | 2014-11-12 | 中电科华云信息技术有限公司 | 数据服务自动构建的方法及*** |
KR102197874B1 (ko) | 2014-09-01 | 2021-01-05 | 삼성전자주식회사 | 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법 |
FR3035243B1 (fr) * | 2015-04-20 | 2018-06-29 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Placement d'une tache de calcul sur un processeur fonctionnellement asymetrique |
JP6500626B2 (ja) * | 2015-06-16 | 2019-04-17 | 富士通株式会社 | 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法 |
EP3208712B1 (en) * | 2016-02-22 | 2020-02-19 | Karlsruher Institut für Technologie | Computer system and method for parallel program code optimization and deployment |
JP6988040B2 (ja) | 2016-12-31 | 2022-01-05 | インテル・コーポレーション | ヘテロジニアスコンピューティングのためのシステム、方法及び装置 |
JP2018132981A (ja) * | 2017-02-16 | 2018-08-23 | 日本電気株式会社 | アクセラレータを有する情報処理装置および情報処理方法 |
JP6874706B2 (ja) | 2018-02-07 | 2021-05-19 | オムロン株式会社 | アプリケーションプログラムを生成する方法、装置、プログラム |
US11188348B2 (en) | 2018-08-31 | 2021-11-30 | International Business Machines Corporation | Hybrid computing device selection analysis |
CN110968320A (zh) * | 2018-09-30 | 2020-04-07 | 上海登临科技有限公司 | 针对异构硬件架构的联合编译方法和编译*** |
KR20200053318A (ko) | 2018-11-08 | 2020-05-18 | 삼성전자주식회사 | 인공 신경망의 연산 처리 그래프를 관리하는 시스템 및 이를 이용한 연산 처리 그래프를 관리하는 방법 |
CN109714249B (zh) * | 2018-12-28 | 2021-09-07 | 武汉斗鱼网络科技有限公司 | 一种小程序消息的推送方法及相关装置 |
EP3816793A1 (en) * | 2019-10-31 | 2021-05-05 | Siemens Aktiengesellschaft | Method, system and execution unit for deploying software components of a software |
WO2021107765A1 (en) * | 2019-11-29 | 2021-06-03 | Mimos Berhad | System and method for executing heterogeneous compilation |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01108638A (ja) * | 1987-10-21 | 1989-04-25 | Hitachi Ltd | 並列化コンパイル方式 |
JP3208870B2 (ja) * | 1992-10-30 | 2001-09-17 | 株式会社日立製作所 | データ分割パタンの評価方法 |
JPH0744508A (ja) * | 1993-08-03 | 1995-02-14 | Hitachi Ltd | プログラム分割方法 |
JP2634144B2 (ja) * | 1994-07-06 | 1997-07-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | プログラムの並列化実行方法及び並列化実行コンパイラ |
JPH08286896A (ja) * | 1995-04-14 | 1996-11-01 | Mitsubishi Electric Corp | ソフトウェア開発方法及びソフトウェア開発システム |
US5768594A (en) * | 1995-07-14 | 1998-06-16 | Lucent Technologies Inc. | Methods and means for scheduling parallel processors |
US5978583A (en) * | 1995-08-07 | 1999-11-02 | International Business Machines Corp. | Method for resource control in parallel environments using program organization and run-time support |
JPH11259437A (ja) * | 1998-03-12 | 1999-09-24 | Hitachi Ltd | 不要バリア命令の削減方式 |
SE9803901D0 (sv) * | 1998-11-16 | 1998-11-16 | Ericsson Telefon Ab L M | a device for a service network |
US6438747B1 (en) * | 1999-08-20 | 2002-08-20 | Hewlett-Packard Company | Programmatic iteration scheduling for parallel processors |
JP4784792B2 (ja) * | 1999-12-22 | 2011-10-05 | 学校法人早稲田大学 | マルチプロセッサ |
JP3664473B2 (ja) * | 2000-10-04 | 2005-06-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの最適化方法及びこれを用いたコンパイラ |
JP2003173262A (ja) * | 2001-12-06 | 2003-06-20 | Hitachi Ltd | プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体 |
JP4177681B2 (ja) | 2003-02-20 | 2008-11-05 | 学校法人早稲田大学 | コンパイル方法、コンパイラ、およびコンパイル装置 |
JP4090908B2 (ja) | 2003-02-21 | 2008-05-28 | シャープ株式会社 | 画像処理装置および画像形成装置 |
EP1623318B1 (en) | 2003-04-15 | 2010-02-24 | Koninklijke Philips Electronics N.V. | Processing system with instruction- and thread-level parallelism |
EP1639454A2 (de) * | 2003-06-24 | 2006-03-29 | Robert Bosch GmbH | Verfahren zur umschaltung zwischen wenigstens zwei betriebsmodi einer prozessoreinheit sowie entsprechende prozessoreinheit |
US7444632B2 (en) * | 2003-09-25 | 2008-10-28 | International Business Machines Corporation | Balancing computational load across a plurality of processors |
JP4934267B2 (ja) * | 2003-10-17 | 2012-05-16 | パナソニック株式会社 | コンパイラ装置 |
US7802110B2 (en) * | 2004-08-25 | 2010-09-21 | Microsoft Corporation | System and method for secure execution of program code |
JP4405365B2 (ja) * | 2004-10-27 | 2010-01-27 | パナソニック株式会社 | プログラム変換装置及び方法 |
US20060123401A1 (en) * | 2004-12-02 | 2006-06-08 | International Business Machines Corporation | Method and system for exploiting parallelism on a heterogeneous multiprocessor computer system |
JP4082706B2 (ja) * | 2005-04-12 | 2008-04-30 | 学校法人早稲田大学 | マルチプロセッサシステム及びマルチグレイン並列化コンパイラ |
JP3938387B2 (ja) * | 2005-08-10 | 2007-06-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ、制御方法、およびコンパイラ・プログラム |
US8104030B2 (en) * | 2005-12-21 | 2012-01-24 | International Business Machines Corporation | Mechanism to restrict parallelization of loops |
US8136102B2 (en) * | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for compiling an application for a parallel-processing computer system |
-
2006
- 2006-06-06 JP JP2006157308A patent/JP4784827B2/ja not_active Expired - Fee Related
-
2007
- 2007-02-27 KR KR1020070019519A patent/KR100878917B1/ko active IP Right Grant
- 2007-02-27 CN CNA2007100848260A patent/CN101086710A/zh active Pending
- 2007-03-12 US US11/716,563 patent/US8051412B2/en not_active Expired - Fee Related
- 2007-03-21 EP EP07251186.8A patent/EP1881405B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101086710A (zh) | 2007-12-12 |
EP1881405A3 (en) | 2009-08-05 |
JP2007328416A (ja) | 2007-12-20 |
EP1881405A2 (en) | 2008-01-23 |
KR20070116712A (ko) | 2007-12-11 |
US8051412B2 (en) | 2011-11-01 |
EP1881405B1 (en) | 2018-07-25 |
KR100878917B1 (ko) | 2009-01-15 |
US20070283337A1 (en) | 2007-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4784827B2 (ja) | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ | |
JP6018022B2 (ja) | 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 | |
JP4082706B2 (ja) | マルチプロセッサシステム及びマルチグレイン並列化コンパイラ | |
JP4936517B2 (ja) | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ | |
JP6319880B2 (ja) | 並列性の抽出方法及びプログラムの作成方法 | |
Cong et al. | Source-to-source optimization for HLS | |
JP6427054B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
WO2012052909A1 (en) | Method and apparatus for providing portability of partially accelerated signal processing applications | |
Hormati et al. | Macross: Macro-simdization of streaming applications | |
JP2007305148A (ja) | マルチプロセッサシステム | |
JP6488739B2 (ja) | 並列化コンパイル方法、及び、並列化コンパイラ | |
JP6427053B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
Mehrara et al. | Multicore compilation strategies and challenges | |
Ren | Algorithm level power efficiency optimization for CPU–GPU processing element in data intensive SIMD/SPMD computing | |
Ashraf et al. | AAP4All: An Adaptive Auto Parallelization of Serial Code for HPC Systems. | |
JP6488738B2 (ja) | 並列化コンパイル方法、及び、並列化コンパイラ | |
Chandraiah et al. | Code and data structure partitioning for parallel and flexible MPSoC specification using designer-controlled recoding | |
Leupers et al. | Cool mpsoc programming | |
Medeiros et al. | Transparent aging-aware thread throttling | |
Wada et al. | A parallelizing compiler cooperative heterogeneous multicore processor architecture | |
Agathos et al. | Compiler-assisted, adaptive runtime system for the support of OpenMP in embedded multicores | |
Wei et al. | Compilation System | |
Aguilar et al. | A toolflow for parallelization of embedded software in multicore DSP platforms | |
Stripf et al. | A flexible approach for compiling scilab to reconfigurable multi-core embedded systems | |
Zhong et al. | Accelerating Data Analytics Kernels with Heterogeneous Computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090520 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100525 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110322 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110523 |
|
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: 20110614 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110629 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4784827 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140722 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S201 | Request for registration of exclusive licence |
Free format text: JAPANESE INTERMEDIATE CODE: R314201 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S804 | Written request for registration of cancellation of exclusive licence |
Free format text: JAPANESE INTERMEDIATE CODE: R314803 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |