JP4823075B2 - 最適化コードの自動発生システム - Google Patents
最適化コードの自動発生システム Download PDFInfo
- Publication number
- JP4823075B2 JP4823075B2 JP2006548350A JP2006548350A JP4823075B2 JP 4823075 B2 JP4823075 B2 JP 4823075B2 JP 2006548350 A JP2006548350 A JP 2006548350A JP 2006548350 A JP2006548350 A JP 2006548350A JP 4823075 B2 JP4823075 B2 JP 4823075B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- optimization
- kernel
- optimized
- benchmark
- 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
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/44—Encoding
- G06F8/443—Optimisation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- General Factory Administration (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
- Pinball Game Machines (AREA)
- Chair Legs, Seat Parts, And Backrests (AREA)
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
Description
1)中間コード生成:ソースコードから出発して、コンパイラはパターンを一致させてソース言語から独立した、一般に中間言語と呼ばれる抽象形態を生成する。この言語は対象機械から独立している。
2)高度最適化:このステージでは、一般に対象アーキテクチャから独立している種々の最適化を組み合わせる:定数の伝搬、力の低下、共通表現...。これらの最適化は一般に単一の計測技術(metrics)に対応する:命令の数を低減、コードの構造を単純化。
3)コード生成および低度の最適化:このステージの間に、対象機械に特異的な操作と最適化のすべてを行う:命令を生成および選択し、レジスタを割当て、命令を順序付ける等。
・科学計算:BLAS1、BLAS2、BLAS3、BLST、SPARSE BLAS、LINPACK、LAPACK、BLACS、PVM、MPI、など;
・シグナル処理:FFTPACK、VSIPI、など;および
・グラフィックス:DirectX、OpenGL。
・パフォーマンス試験(「ベンチマーク(benchmarks)」):これらは応用分野を多かれ少なかれ表し、種々の機械のパフォーマンスを比較することを可能にするコードである。
・シミュレータ:これらはアーキテクチャの挙動が最終レベルで理解されることを可能にする。残念ながら、それらは非常に高価であり、開発が難しく、非常に低速であり、対象プロセッサを必ずしも正確に表すものではない。
・演算モデル:アイデアとしては、機械のパフォーマンスを等式の形にすることである。一般に、それらの用途は極端に限定され、それらは非常に単純なコードの同じものの周りの種々の単純な変異体(バリアント)を検討するためにのみ有効である。
・プロフィルを監視および/または管理するツール:これらのツールは、プログラムの実行に関する異なる種類の情報を(特化されたハードウェアを有するコンピュータを用いることにより)回復する役割を持ち、ここでそのような情報はサイクルの数、ミスの数などに関係する。
・パフォーマンステストはほとんど発展しておらず、就中、それらは大き過ぎる商業上の利害関係の主題になっている。供給元がベンチマーク試験においてよく動作するようにコードを特異的に最適化することがしばしばなされているが、得られた結果の範囲と有効性が紛らわしくなる。
・シミュレータ:対象とするアーキテクチャが非常に複雑になった場合、シミュレータが与える結果を、コードを最適化するために利用することがますます困難になりつつある。
・演算モデル:これらはほとんど発展せず、上述の局所的用途以外にはそれらは使用できない。理由の1つは、良い演算モデル化ツールは挙動が「一様平均」であることに基づいており、実際には真実からかけ離れていることである。
・プロフィルを監視および/または管理するツール:これらは本質的に3つの欠点を有する:それらは全体的であり、作用の経時分布に関連しない情報を与え;それらは細かいレベルでコードと挙動とが相関することを可能にせず;そして、最後にそれらを有効利用することが(シミュレータを用いた場合と同様に)、特に対象アーキテクチャの複雑さの故に、非常に困難である。
a)書込パフォーマンスが読取パフォーマンスに比べて劣っている場合、書込の数を最小化する;
b)浮動小数点におけるローディングペアの使用の重要性;
c)ループがループ本体の複雑さの関数として展開される程度を調整する;
d)演算操作における操作待ち時間を用いる;
e)短いベクトルに対してマスキング技術を使用する;
f)メモリアクセス(読取、書込、プリローディング)用の局所サフィックスを用いる;
g)プリローディング距離を定義する;
h)程度4のベクトル化を実行してL2バンクの衝突の若干を回避する;
i)複数のバリアントを考慮に入れて他のL2バンクの衝突と、読取/書込キーにおける衝突とを回避する;
j)種々の最適化に関連するパフォーマンス改善を考慮に入れる;
k)誤った予測(短いベクトル)を最小化する分岐鎖を用いる;
l)メモリアクセスを統合する(ピクセルを一緒のグループにする);および
m)ピクセルにベクトル化処理をする。
a)読取値を再順序づけしてキャッシュ欠陥をまとめる;
b)書込値に対してのみプリローディングを用いる;
c)ループがループ本体の複雑さの関数として展開される程度を調整する;
d)演算操作における操作待ち時間を用いる;
e)メモリアクセス(読取、書込、プリローディング)用の局所サフィックスを用いる;
f)プリローディング距離を定義する;
g)複数バリアントを考慮に入れて読取/書込キーにおける衝突を避ける;および
h)種々の最適化に関連するパフォーマンス改善を考慮に入れる。
・CHAR1:最大量の実行時間を消費するコード部分を構成するループ型構造(または「入れ子ループ」)を示す。
・CHAR2:使用されるデータ構造はほとんど多次元表型であり、非常に規則的なパターン(行、列、ブロック、など)でアクセスされる。
・CHAR3:ループ(または入れ子ループ)は一般に独立の反復により構成され並行して実行することが可能である。
・CHAR4:ループ本体は一般に一連の演算式によって表現構成され、多量のデータにわたって一様(または準一様)である計算に対応する。
・CHAR1⇒最適化は2つの主な利点:反復可能性(および予測可能性)および表現の緻密さを示すループ型構造に集中する。
・CHAR2⇒実行時間の大きな部分(または実際キャッシュメモリの使用が増えると主要部分)を代表する表へのアクセスは、規則性があるので、容易に分析し最適化することができる。
・CHAR3⇒ループ内および入れ子ループ内の相互作用から独立しているので、表へのアクセスの関数として反復空間を通る(最適化)経路を、対象アーキテクチャに特異的な特性に依存するように、使用することが可能になる。表のN個の所与のエレメントにアクセスすることはN!(Nの階乗)通りの異なる仕方(順序)で実行することが可能である。
・CHAR4⇒ループ本体が演算式として単純な構造をしているので、演算式の3つの代表に基づいて系統だった階層的なアプローチを用いることが可能になる。
・アーキテクチャの強い点および弱い点を決定しておくこと;
・パフォーマンスおよびコード構造の相関のさせ方を知ること;および
・コードに関連する種々のパラメータの関数であってもよい、良好な最適化戦略を突き止めておくこと。
・レベル0ベンチマークシーケンス:このレベルでは、単一の個別操作がテストされる。すなわち、ループ本体は1つの操作l:すなわち、表からエレメントを読み取る、表にエレメントを書き込む、浮動少数点加算などを含む。これらの操作は高さ0のツリーにより表される単一の演算式により構成されるループ本体に対応する。
・レベル1ベンチマークシーケンス:このレベルでは、2つのレベル0操作が考慮されテストされる:表から読取り表へ書き込む、2つの異なる表から読み取る、表において読取および追加するなど。これらの操作は高さ1のツリーにより表される単一の演算式、または2つの演算式であってそれぞれ高さ0のツリーにより表されるもののいずれかにより構成されるループ本体に対応する。
・レベル2ベンチマークシーケンス:このレベルでは、2つのレベル1操作または3つのレベル0操作が考慮され、テストされる:3つの異なる表から読み取る、2つの表からコンポーネントごとに読み取る、結果を第3の表に書き込むなど。
・レベルKベンチマークシーケンス:レベルKは、先行するレベルから再帰すること(recurrence)により容易に定義することができる。
・静的パラメータ:これらのパラメータは静的に(すなわち、実行に先立って、かつ実行とは独立して)定義される。これらの静的パラメータはそれ自体2つの主要なサブクラスに細分割される:すなわち、高レベル静的パラメータ(ループ反復数、表アクセス間隔、オペランド型、...)、および低レベル静的パラメータ(特異的命令、命令順序づけなどの使用)。
・動的パラメータ:これらのパラメータはループを実行する間に定義される。例えば、それらは下記からなる:表オペランドの配置、表出発アドレスの相対的位置、...。
・アセンブラ命令を用いること:ソースレベルにおける単一操作は種々の命令シーケンスを用いて実装することが可能である。特に、この時点においてデータおよび命令のプリローディングを用いる種々の考え得る戦略を取り扱うことが必要である;
・ループ本体の構造:ループの本体を(異なる程度に)展開する;ループ本体の順序づけ命令(プリローディング距離、ベクトル化、キャッシュミスをまとめること、キー間の処理衝突);および
・反復の順序づけ:異なる深さのソフトウェア・パイプライン。
・1つ以上のベンチマークシーケンスとの相関:最も単純なカーネルについて、直接的対応がカーネルとベンチマークシーケンスの間に存在するが、より複雑なカーネルについては、カーネルは複数の参照ベンチマークシーケンスに分解されることが必要である。この相関および/または分解はソースレベルでカーネルループ本体の特性:表の数、表アクセス間隔などの関数として実行される。
・コード生成および/または命令の順序づけおよび/または命令の最適化:分析ステージの間に(対応するベンチマークシーケンスの関数として)検出された最適化技法はここでカーネル用のコードを直接用いて生成および/または最適化に提供される。任意の所与のカーネルについて、いくつかの可能なバージョンをパラメータの関数として生成することが可能である。
・レジスタ割当:用いられる最適化技術の多くはレジスタの利用可能性に対する圧力を顕著に増加させる。そのような状況下では、全ての利用可能なレジスタを割り当てる方法を組織することが適切である。
・実験および/または確認:生成され最適化されたカーネルを分析ステージのテストベンチを用いてテストする。このステージの終点において、カーネルのパフォーマンスの簡単なモデルが構築される。
・最適化可能なループの検出(モジュール20):これはカーネルに分解することが可能なソースコード中のループを認識することからなる。このステージは自動的並行処理化および/またはベクトル化に用いられる技法と非常によく似た技法を利用する。必要に応じ、ソースコードを再構築してループが最適化に最も適した形で表れるようにする。
・最適ループおよびカーネルへの分解の分析(モジュール22):これはカーネル最適化に用いられるものと近似した構造一致および分解技法に基づいており、ループは一連のカーネルに分解される。
・コードのアセンブルおよび投入(モジュール23):分解の目的に用いられる種々のカーネルはアセンブルされソースコードに再投入される。
・存在するコンパイル鎖におけるプリプロセッサにおいて、統合される、これは透明、すなわちコンパイラのコードにアクセスする必要なく行われるか、
・さもなければ直接コンパイラにおいて、統合され、これは当然コンパイラのコードに変更がなされることが必要である。
2 静的パラメータ
3 テスト発生器
4 バリアントデータベース
5 自動ツール(エキササイザ)
6 結果データベース
7 動的パラメータ
8 アナライザ
9 最適化ルールデータベース
10 アナライザモジュール
12 最適化器
13 戦略選択モジュール
16 最適化カーネルデータベース
17 (ユーザー)ソースコード
18 コード生成器(モジュール)
19 最適化コード
20 最適化ループ検出モジュール
23 事例分析・アセンブル・コード投入モジュール
51、52、53 入力
57 アナライザモジュール
55、57、59、62、63、64、93 移送手段
58 最適化ルールを受領する手段
67、75 出力
80 コード最適化・生成モジュール
81 コンパイラ
82 リンクエディタ
83 最適化バイナリコード
90 ハードウェア・プラットフォーム
91 プロセッサ
92 カーネルを受領する手段
181 コンパイラ181
182 インストールモジュール
CHAR1〜CHAR4 特性
Claims (26)
- ユーザーにより提供されたソースコード(17)に自動的に動作して、少なくとも1つのプロセッサ(91)を有し所定の適用分野おいて使用する所定のハードウェア・プラットフォーム(90)上で動作するのに適した最適化コード(19)を生成するシステムであって、前記システムは前記所定の適用分野について、前記プロセッサの挙動をパフォーマンスで表す、ベンチマークシーケンス(1)と呼ばれる記号コードシーケンスを受領する手段(51、52);前記所定のハードウェア・プラットフォーム(90)、そのプロセッサ(91)、および前記ベンチマークシーケンス(1)に基づいて定義された第1の静的パラメータ(2)を受領する手段(53);同じく前記所定のハードウェア・プラットフォーム(90)、そのプロセッサ(91)および前記ベンチマークシーケンス(1)から定義された動的パラメータ(7)を受領する手段(55);前記ベンチマークシーケンス(1)、前記静的パラメータ(2)および前記動的パラメータ(7)を用いて行われる試験およびパフォーマンスの測定から最適化ルールを作成する分析装置(10);第一に前記ベンチマークシーケンス(1)、および第二に前記ユーザーソースコード(17)を検査するための最適化ルール(9)を受領するコードを最適化・生成する装置(80)であって、最適化可能な複数のループを検出し、前記複数のループをカーネルに分解し、かつコードをアセンブルおよび投入して前記最適化コード(19)を引き渡す装置(80);およびコードを生成最適化する前記装置から来る情報を再投入し、かつ前記カーネルを前記ベンチマークシーケンス(1)に戻して関連づける手段(74)を備えたことを特徴とするシステム。
- 前記分析装置(10)は、第一に前記ベンチマークシーケンス受領手段(51)に、第二に前記静的パラメータ受領手段(53)に接続されたテスト発生器(3)であって、移送手段(61)により移送されてバリアントデータベース(4)に格納される多数のテストバリアントを自動的に生成するテスト発生器(3);第一に前記バリアントデータベース(4)に格納された前記テストバリアントを受領する移送手段(62)に、第二に前記動的パラメータを受領する手段(55)に接続された前記テストバリアントを前記動的パラメータ(7)の変化の範囲内で実行して移送手段(63)により移送されて結果データベース(6)に格納される結果を生成するエキササイザ(8);および前記移送手段(64)に接続されて前記結果データベース(6)に格納された前記結果を受領し、それらを分析し、かつそれらから、移送手段(57)により最適化ルールデータベース(9)に移送される最適化ルールを推論するアナライザ(8)を備えることを特徴とする、請求項1に記載のシステム。
- 前記アナライザ(8)は、最適パフォーマンスに対する任意の閾値を有するフィルタ手段を備え、前記バリアントが前記フィルタ基準を満足する限り、前記結果データベースのバリアントを前記パラメータ空間において最適であると判定するようにしたことを特徴とする、請求項2に記載のシステム。
- 前記アナライザ(8)は、さらに前記静的パラメータ(2)を変更する手段(54)および前記動的パラメータ(7)を変更する手段(56)を備えることを特徴とする、請求項3に記載のシステム。
- 前記コードを最適化および生成する装置(80)は、最適化コードを生成する装置(18)と最適化器(12)とを備え、前記最適化器は第一に前記オリジナルソースコード中に特定されたカーネルを受領する手段(92)に、第二に前記ベンチマークシーケンス(1)を受領する手段(52)に、および第三に前記最適化ルール(9)を受領する手段(58)に接続された戦略選択モジュール(13)であって、テストされたベンチマークシーケンスに対応するそれぞれのカーネルについてそれぞれあるパラメータの組合せの下で最適である複数のバージョン(15)を生成する戦略選択モジュールと、前記最適化ルール(9)を受領する手段(59)に、前記戦略選択モジュール(13)から来る情報を受領する手段(66)に、および前記複数のバージョンを受領する手段(68)に接続された組合せ・アセンブルモジュール(14)とを備え、移送手段(93)を介して、前記対応する最適化バージョン、それらの使用帯域、および必要に応じて前記実行されるべきテストを含む情報を引き渡してどのバージョンが最も適しているかを動的に決定するようにしたことを特徴とする、請求項1〜4のいずれか一項に記載のシステム。
- 前記システムは最適化カーネルデータベース(16)を備え、前記組合せ・アセンブルモジュール(14)は移送手段(79)により前記最適化カーネルデータベース(16)に接続されて前記最適化カーネルデータベースに情報を格納し、前記情報は前記最適化バージョン、それらの使用帯域、および必要に応じて実行されるべきテストを含む情報をどのバージョンがもっとも適しているかを動的に決定するようにしたことを特徴とする、請求項5に記載のシステム。
- 前記コード最適化・生成装置(80)は最適化器(12)と最適化コード生成装置(18)とを備え、前記最適化コード生成装置はユーザーソースコード(17)を受領する手段(71)に接続された最適化可能ループ検出手段(20)、それらをカーネルに分解するモジュール(22)、移送手段(92)を介して前記最適化器(12)に接続されて前記検出されたカーネルのアイデンティティー(識別情報)を伝送するようにした事例分析、アセンブルおよびコード投入モジュール、および前記対応する最適化カーネルを記載する情報を受領する移送手段(93)を備え、前記事例分析、アセンブルおよびコード投入モジュール(23)も最適化コード供給手段(73)に接続されていることを特徴とする、請求項1〜6のいずれか一項に記載のシステム。
- 前記事例分析、アセンブルおよびコード投入モジュール(23)も前記最適化カーネルデータベース(16)に接続され、最適化カーネルを記載する情報を、前記検索された最適化カーネルがそこに格納されているならば、前記最適化器(12)を呼び出すことなく、受領するようにしたことを特徴とする、請求項6または7に記載のシステム。
- 前記事例分析、アセンブルおよびコード投入モジュール(23)は、さらに、前記ベンチマークシーケンスに前記事例分析、アセンブルおよびコード投入モジュールにおいて発見されたカーネルを、前記最適化カーネルデータベースまたはベンチマークシーケンス(1)のいずれにおいても対応するアイデンティティー(識別情報)を持たずに追加する手段(74)を備えることを特徴とする、請求項8に記載のシステム。
- 前記システムはコンパイラ(81)とリンクエディタ(82)とを備え、再組織化されたソースコード(19)を前記コード最適化・生成装置(80)から受領し、前記ハードウェア・プラットフォーム(90)に適合された最適化バイナリコード(83)を生成することを特徴とする、請求項6、8および9のいずれか一項に記載のシステム。
- 前記システムは、前記最適化カーネル用の前記ソースコードを前記最適化カーネルデータベース(16)から前記コンパイラ(81)に移送する手段(85)を備えたことを特徴とする、請求項10に記載のシステム。
- 前記システムはコンパイラ(181)と、動的ライブラリを前記ハードウェア・プラットフォーム(90)上にインストールするインストールモジュール(182)とを備え、前記ライブラリは前記最適化カーネルの能力の全てを含むことを特徴とする、請求項10に記載のシステム。
- 前記所定の適用分野は科学計算であることを特徴とする、請求項1〜12のいずれか一項に記載のシステム。
- 前記所定の適用分野は信号処理であることを特徴とする、請求項1〜12のいずれか一項に記載のシステム。
- 前記所定の適用分野はグラフィックス処理であることを特徴とする、請求項1〜12のいずれか一項に記載のシステム。
- 前記ベンチマークシーケンス(1)は、ソース型言語で特定され、かつループ本体用のコードの複雑さの昇順により階層レベルで組織化された一組の単純かつ包括的ループ型コード断片を含むことを特徴とする、請求項1〜15のいずれか一項に記載のシステム。
- 前記ベンチマークシーケンスは、唯一の個別動作がテストされ、高さ0のツリーによって表される単一の演算式により構成されるループ本体に対応するレベル0のベンチマークシーケンスを含むことを特徴とする、請求項16に記載のシステム。
- 前記ベンチマークシーケンスは、レベル2のベンチマークシーケンスを含んでいてもよく、前記ベンチマークシーケンスに対しては、2つのレベル0の操作の組合せ;および高さ1のツリーによって表される単一の演算式により、またはそれぞれ高さ0のツリーによって表される2つの演算式により構成されるループ本体に対応するレベル1のベンチマークシーケンス操作が考えられ、かつテストされることを特徴とする、請求項17に記載のシステム。
- 前記ベンチマークシーケンス(1)は、レベル1のベンチマークシーケンスを含み、前記ベンチマークシーケンスに対して2つのレベル1の操作または3つのレベル0の操作が考えられ、かつテストされることを特徴とする、請求項18に記載のシステム。
- 前記静的パラメータ(2)は、特に各ベンチマークシーケンスのループ反復数、表アクセス間隔、およびオペランド型、使用命令の型、先行載荷(プリロード)戦略、および命令および反復の順序づけ戦略を含むことを特徴とする、請求項16〜19のいずれか一項に記載のシステム。
- 前記動的パラメータ(7)は、特にメモリ階層の種々のレベルにおける表オペランドの位置、表開始アドレスの相対的位置、および分岐履歴を含むことを特徴とする、請求項16〜20のいずれか一項に記載のシステム。
- 前記最適化カーネルデータベース(16)は、現実の有用な、複雑さの昇順に階層レベルに組織化されたコード断片に対応するループ型ソースコードシーケンスを含むことを特徴とする、請求項6、8および9のいずれか一項に記載のシステム。
- 前記所定のハードウェア・プラットフォーム(90)は、イタニウム(ItaniumTM)型の少なくとも1つのプロセッサを備えたことを特徴とする、請求項1〜12のいずれか一項に記載のシステム。
- 前記所定のハードウェア・プラットフォーム(90)は、IBM社から供給されたパワー(Power)またはパワーPC(Power PCTM)型の少なくとも1つのプロセッサを備えたことを特徴とする、請求項1〜12のいずれか一項に記載のシステム。
- 前記所定のハードウェア・プラットフォーム(90)は、イタニウム(Itanium TM )型の少なくとも1つのプロセッサを備えており、
前記最適化ルール(9)は下記のルールのうち、少なくとも幾つか:
a)書込パフォーマンスが読取パフォーマンスに比べて劣っている場合、書込の数を最小化する;
b)浮動小数点におけるローディングペアの使用の重要性;
c)ループがループ本体の複雑さの関数として展開される程度を調整する;
d)演算操作における操作待ち時間を用いる;
e)短いベクトルに対してマスキング技術を使用する;
f)メモリアクセス(読取、書込、プリローディング)用の局所さフィックスを用いる;
g)プリローディング距離を定義する;
h)程度4のベクトル化を実行してL2バンクの衝突の若干を回避する;
i)複数のバリアントを考慮に入れて他のL2バンクの衝突と、読取/書込キーにおける衝突とを回避する;
j)種々の最適化に関連するパフォーマンス改善を考慮に入れる;
k)誤った予測(短いベクトル)を最小化する分岐鎖を用いる;
l)メモリアクセスを統合する(ピクセルを一緒のグループにする);および
m)ピクセルにベクトル化処理をする
を含むことを特徴とする、請求項13〜15のいずれか一項に記載のシステム。 - 前記所定のハードウェア・プラットフォーム(90)は、IBM社から供給されたパワー(Power)またはパワーPC(Power PC TM )型の少なくとも1つのプロセッサを備えており、
前記最適化ルール(9)は下記のルールのうち、少なくとも幾つか:
a)読取値を再順序づけしてキャッシュ欠陥をまとめる;
b)書込値に対してのみプリローディングを用いる;
c)ループがループ本体の複雑さの関数として展開される程度を調整する;
d)演算操作における操作待ち時間を用いる;
e)メモリアクセス(読取、書込、プリローディング)用の局所サフィックスを用いる;
f)プリローディング距離を定義する;
g)複数バリアントを考慮に入れて読取/書込キーにおける衝突を避ける;および
h)種々の最適化に関連するパフォーマンス改善を考慮に入れる
を含むことを特徴とする、請求項13〜15のいずれか一項に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0400291 | 2004-01-14 | ||
FR0400291A FR2865047B1 (fr) | 2004-01-14 | 2004-01-14 | Systeme de generation automatique de codes optimises |
PCT/FR2005/000073 WO2005073851A2 (fr) | 2004-01-14 | 2005-01-13 | Systeme de generation automatique de codes optimises |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007518176A JP2007518176A (ja) | 2007-07-05 |
JP4823075B2 true JP4823075B2 (ja) | 2011-11-24 |
Family
ID=34684970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006548350A Expired - Fee Related JP4823075B2 (ja) | 2004-01-14 | 2005-01-13 | 最適化コードの自動発生システム |
Country Status (17)
Country | Link |
---|---|
US (1) | US7979852B2 (ja) |
EP (1) | EP1704476B8 (ja) |
JP (1) | JP4823075B2 (ja) |
CN (1) | CN100388203C (ja) |
AR (2) | AR047360A1 (ja) |
AT (1) | ATE428974T1 (ja) |
CA (1) | CA2553133A1 (ja) |
CY (1) | CY1109218T1 (ja) |
DE (1) | DE602005013908D1 (ja) |
DK (1) | DK1704476T3 (ja) |
ES (1) | ES2326126T3 (ja) |
FR (1) | FR2865047B1 (ja) |
PL (1) | PL1704476T3 (ja) |
PT (1) | PT1704476E (ja) |
TW (1) | TW200537379A (ja) |
UY (1) | UY28703A1 (ja) |
WO (1) | WO2005073851A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130132674A (ko) * | 2012-05-23 | 2013-12-05 | 김현수 | 명령어의 추상화를 이용한 명령어 집합 아키텍처 자동 맵핑 기법 |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7546588B2 (en) * | 2004-09-09 | 2009-06-09 | International Business Machines Corporation | Self-optimizable code with code path selection and efficient memory allocation |
JP2008523523A (ja) * | 2004-12-13 | 2008-07-03 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | プログラム内のループ用のコンパイル方法、コンパイル装置およびコンピュータシステム |
US9378002B2 (en) * | 2006-12-22 | 2016-06-28 | Core Wireless Licensing S.A.R.L. | System, method, apparatus and computer program product for providing memory footprint reduction |
US20080244607A1 (en) * | 2007-03-27 | 2008-10-02 | Vladislav Rysin | Economic allocation and management of resources via a virtual resource market |
US8689194B1 (en) | 2007-08-20 | 2014-04-01 | The Mathworks, Inc. | Optimization identification |
US8370823B2 (en) * | 2007-08-27 | 2013-02-05 | International Business Machines Corporation | Device, system, and method of computer program optimization |
JP4339907B2 (ja) * | 2007-10-24 | 2009-10-07 | 株式会社日立製作所 | マルチプロセッサ向け最適コード生成方法及びコンパイル装置 |
WO2009061432A1 (en) * | 2007-11-06 | 2009-05-14 | Credit Suisse Securities (Usa) Llc | Predicting and managing resource allocation according to service level agreements |
US8782627B2 (en) * | 2007-11-29 | 2014-07-15 | Microsoft Corporation | Path specializations for runtime code with phase behavior |
US20090193402A1 (en) * | 2008-01-28 | 2009-07-30 | Guy Bashkansky | Iterative Compilation Supporting Entity Instance-Specific Compiler Option Variations |
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 |
US8219358B2 (en) | 2008-05-09 | 2012-07-10 | Credit Suisse Securities (Usa) Llc | Platform matching systems and methods |
US8286198B2 (en) * | 2008-06-06 | 2012-10-09 | Apple Inc. | Application programming interfaces for data parallel computing on multiple processors |
WO2010118416A2 (en) * | 2009-04-10 | 2010-10-14 | Vision Genesis, Inc. | Software database system and process of building and operating the same |
CN101872301A (zh) * | 2009-04-24 | 2010-10-27 | 深圳富泰宏精密工业有限公司 | 测量程序优化系统及方法 |
US8972961B2 (en) * | 2010-05-19 | 2015-03-03 | International Business Machines Corporation | Instruction scheduling approach to improve processor performance |
US8819652B2 (en) * | 2010-07-30 | 2014-08-26 | General Electric Company | System and method for parametric system evaluation |
US20120124555A1 (en) * | 2010-11-11 | 2012-05-17 | Codekko Software, Inc. | Optimization of Compiled Control Objects |
US8572594B2 (en) | 2010-12-22 | 2013-10-29 | Microsoft Corporation | Invasion analysis to identify open types |
CN103493015A (zh) * | 2011-04-20 | 2014-01-01 | 飞思卡尔半导体公司 | 生成资源高效的计算机程序代码的方法和装置 |
US8423986B1 (en) * | 2011-10-12 | 2013-04-16 | Accenture Global Services Limited | Random utility generation technology |
US9185513B1 (en) * | 2011-12-02 | 2015-11-10 | Google Inc. | Method and system for compilation with profiling feedback from client |
US9613083B2 (en) | 2012-04-26 | 2017-04-04 | Hewlett Packard Enterprise Development Lp | Nesting level |
JP2013235386A (ja) * | 2012-05-08 | 2013-11-21 | Internatl Business Mach Corp <Ibm> | 最適化装置、最適化方法、及び最適化プログラム |
US9244677B2 (en) * | 2012-09-28 | 2016-01-26 | Intel Corporation | Loop vectorization methods and apparatus |
CN103901810B (zh) * | 2012-12-31 | 2017-04-12 | 施耐德电器工业公司 | 可编程控制器用户应用的优化系统及方法 |
US9268541B2 (en) | 2013-03-15 | 2016-02-23 | Intel Corporation | Methods and systems to vectorize scalar computer program loops having loop-carried dependences |
US9158511B2 (en) * | 2013-05-20 | 2015-10-13 | Advanced Micro Devices, Inc. | Scalable partial vectorization |
WO2014200501A1 (en) * | 2013-06-14 | 2014-12-18 | Intel Corporation | Compiler optimization for complex exponential calculations |
GB2521367A (en) | 2013-12-17 | 2015-06-24 | Ibm | Adaptable and extensible runtime and system for heterogeneous computer systems |
JP5988444B2 (ja) | 2014-02-14 | 2016-09-07 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 最適化したバイナリー・モジュールをテストする方法、並びに、当該最適化したバイナリー・モジュールをテストするためのコンピュータ及びそのコンピュータ・プログラム |
CN103760965B (zh) * | 2014-02-21 | 2016-08-17 | 中南大学 | 一种能量受限嵌入式系统的算法源程序节能优化方法 |
CN104239055A (zh) * | 2014-09-15 | 2014-12-24 | 大连楼兰科技股份有限公司 | 检测软件代码复杂度的方法 |
US9706013B2 (en) * | 2014-09-17 | 2017-07-11 | Oracle International Corporation | Mobile runtime conditional sections for surveys |
US9489181B2 (en) * | 2014-10-09 | 2016-11-08 | National Instruments Corporation | Correlation analysis of program structures |
CN105988855B (zh) * | 2015-02-16 | 2019-11-12 | 龙芯中科技术有限公司 | 即时编译参数优化方法及装置 |
EP3376373A1 (en) * | 2017-03-15 | 2018-09-19 | Siemens Aktiengesellschaft | A method for deployment and execution of a machine learning model on a field device |
JP7407192B2 (ja) * | 2018-08-09 | 2023-12-28 | イーエニエーエスセー テック インスティチュート デ エンゲンハリア デ システマス エ コンピュータドレス テクノロジア エ シエンシア | フィールド・プログラマブル・ゲート・アレイのためのコードを最適化する方法および装置 |
US10956137B2 (en) * | 2019-06-10 | 2021-03-23 | International Business Machines Corporation | Compiling source code using source code transformations selected using benchmark data |
KR102132933B1 (ko) * | 2019-09-09 | 2020-07-10 | 국방과학연구소 | 소프트웨어의 제어 흐름 보호장치 및 그 방법 |
CN110727437B (zh) * | 2019-09-10 | 2024-04-09 | 平安普惠企业管理有限公司 | 代码优化项获取方法、装置、存储介质及电子设备 |
US11720351B2 (en) * | 2020-03-17 | 2023-08-08 | Onspecta, Inc. | Microkernel-based software optimization of neural networks |
TWI755112B (zh) * | 2020-10-23 | 2022-02-11 | 財團法人工業技術研究院 | 電腦程式碼之優化方法、優化系統及應用其之電子裝置 |
CN113286148A (zh) * | 2020-11-25 | 2021-08-20 | 常熟友乐智能科技有限公司 | 一种基于大数据和物联网的视频设备优化方法、装置及服务器 |
CN117908902B (zh) * | 2024-03-12 | 2024-06-07 | 苏州元脑智能科技有限公司 | 性能优化方法、装置、计算机设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62219130A (ja) * | 1986-03-20 | 1987-09-26 | Fujitsu Ltd | プログラムの最適化方式 |
JPS62271024A (ja) * | 1986-05-20 | 1987-11-25 | Mitsubishi Electric Corp | 最適化処理方式 |
JPH02176938A (ja) * | 1988-12-28 | 1990-07-10 | Hitachi Ltd | 機械語命令最適化方式 |
JPH03157731A (ja) * | 1989-11-16 | 1991-07-05 | Hitachi Ltd | チユーニング支援システム |
JPH09319587A (ja) * | 1996-05-30 | 1997-12-12 | Nec Corp | 計測情報を使ったポストオプティマイズによるプログラムの生成方式 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4112090A1 (de) * | 1991-04-12 | 1992-10-15 | Siemens Ag | Verfahren zum maschinellen erstellen eines aus mehreren programmteilen bestehenden programmes |
US5815721A (en) * | 1996-04-25 | 1998-09-29 | Hewlett-Packard Company | Method and apparatus for optimizing complex control structures using abstract web patterns |
JP2000078262A (ja) * | 1998-08-31 | 2000-03-14 | Nippon Telegr & Teleph Corp <Ntt> | 携帯電話端末 |
US6895580B2 (en) * | 2001-09-20 | 2005-05-17 | International Business Machines Corporation | Expression reduction during compilation through routine cloning |
JP2003173262A (ja) * | 2001-12-06 | 2003-06-20 | Hitachi Ltd | プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体 |
US7975256B2 (en) * | 2004-06-30 | 2011-07-05 | International Business Machines Corporation | Optimizing application performance through data mining |
-
2004
- 2004-01-14 FR FR0400291A patent/FR2865047B1/fr not_active Expired - Fee Related
- 2004-12-28 UY UY28703A patent/UY28703A1/es not_active Application Discontinuation
-
2005
- 2005-01-03 AR ARP050100003A patent/AR047360A1/es unknown
- 2005-01-13 AT AT05717408T patent/ATE428974T1/de active
- 2005-01-13 EP EP05717408A patent/EP1704476B8/fr not_active Not-in-force
- 2005-01-13 PL PL05717408T patent/PL1704476T3/pl unknown
- 2005-01-13 US US10/585,797 patent/US7979852B2/en not_active Expired - Fee Related
- 2005-01-13 WO PCT/FR2005/000073 patent/WO2005073851A2/fr not_active Application Discontinuation
- 2005-01-13 CN CNB2005800025169A patent/CN100388203C/zh not_active Expired - Fee Related
- 2005-01-13 PT PT05717408T patent/PT1704476E/pt unknown
- 2005-01-13 CA CA002553133A patent/CA2553133A1/en not_active Abandoned
- 2005-01-13 DK DK05717408T patent/DK1704476T3/da active
- 2005-01-13 ES ES05717408T patent/ES2326126T3/es active Active
- 2005-01-13 DE DE602005013908T patent/DE602005013908D1/de active Active
- 2005-01-13 JP JP2006548350A patent/JP4823075B2/ja not_active Expired - Fee Related
- 2005-01-14 TW TW094101190A patent/TW200537379A/zh unknown
- 2005-03-30 AR ARP050101211A patent/AR049794A1/es active IP Right Grant
-
2009
- 2009-07-15 CY CY20091100758T patent/CY1109218T1/el unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62219130A (ja) * | 1986-03-20 | 1987-09-26 | Fujitsu Ltd | プログラムの最適化方式 |
JPS62271024A (ja) * | 1986-05-20 | 1987-11-25 | Mitsubishi Electric Corp | 最適化処理方式 |
JPH02176938A (ja) * | 1988-12-28 | 1990-07-10 | Hitachi Ltd | 機械語命令最適化方式 |
JPH03157731A (ja) * | 1989-11-16 | 1991-07-05 | Hitachi Ltd | チユーニング支援システム |
JPH09319587A (ja) * | 1996-05-30 | 1997-12-12 | Nec Corp | 計測情報を使ったポストオプティマイズによるプログラムの生成方式 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130132674A (ko) * | 2012-05-23 | 2013-12-05 | 김현수 | 명령어의 추상화를 이용한 명령어 집합 아키텍처 자동 맵핑 기법 |
KR101940265B1 (ko) * | 2012-05-23 | 2019-01-18 | 충남대학교산학협력단 | 명령어 집합 아키텍처 자동 맵핑 기법 |
Also Published As
Publication number | Publication date |
---|---|
FR2865047A1 (fr) | 2005-07-15 |
CN100388203C (zh) | 2008-05-14 |
TW200537379A (en) | 2005-11-16 |
PT1704476E (pt) | 2009-07-21 |
CY1109218T1 (el) | 2014-07-02 |
AR047360A1 (es) | 2006-01-18 |
AR049794A1 (es) | 2006-09-06 |
EP1704476A2 (fr) | 2006-09-27 |
EP1704476B1 (fr) | 2009-04-15 |
PL1704476T3 (pl) | 2010-01-29 |
UY28703A1 (es) | 2005-07-29 |
EP1704476B8 (fr) | 2009-09-23 |
US7979852B2 (en) | 2011-07-12 |
US20080034360A1 (en) | 2008-02-07 |
JP2007518176A (ja) | 2007-07-05 |
DE602005013908D1 (de) | 2009-05-28 |
DK1704476T3 (da) | 2009-08-17 |
WO2005073851A3 (fr) | 2006-05-04 |
ATE428974T1 (de) | 2009-05-15 |
CA2553133A1 (en) | 2005-08-11 |
WO2005073851A2 (fr) | 2005-08-11 |
ES2326126T3 (es) | 2009-10-01 |
FR2865047B1 (fr) | 2006-04-07 |
CN1930552A (zh) | 2007-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4823075B2 (ja) | 最適化コードの自動発生システム | |
US5805863A (en) | Memory pattern analysis tool for use in optimizing computer program code | |
Fauzia et al. | Characterizing and enhancing global memory data coalescing on GPUs | |
Healy et al. | Automatic detection and exploitation of branch constraints for timing analysis | |
White et al. | Timing analysis for data and wrap-around fill caches | |
Nilsen et al. | Worst-case execution time analysis on modern processors | |
Carrington et al. | An idiom-finding tool for increasing productivity of accelerators | |
Jung et al. | DeepCuts: a deep learning optimization framework for versatile GPU workloads | |
Rauchwerger | Run-time parallelization: Its time has come | |
Filipovič et al. | Using hardware performance counters to speed up autotuning convergence on GPUs | |
Falk et al. | Source code optimization techniques for data flow dominated embedded software | |
US9720663B2 (en) | Methods, systems and apparatus to optimize sparse matrix applications | |
Pan et al. | Rating compiler optimizations for automatic performance tuning | |
US8136103B2 (en) | Combining static and dynamic compilation to remove delinquent loads | |
Tournavitis | Profile-driven parallelisation of sequential programs | |
Blackmore et al. | Automatically tuning the gcc compiler to optimize the performance of applications running on embedded systems | |
Belaoucha et al. | FADAlib: an open source C++ library for fuzzy array dataflow analysis | |
Kumar et al. | Peruse and profit: Estimating the accelerability of loops | |
Chennupati et al. | Machine learning–enabled scalable performance prediction of scientific codes | |
Morelli et al. | Warping cache simulation of polyhedral programs | |
Besnard et al. | A framework for automatic and parameterizable memoization | |
Ierotheou et al. | Generating OpenMP code using an interactive parallelization environment | |
Chikin et al. | Memory-access-aware safety and profitability analysis for transformation of accelerator-bound OpenMP loops | |
Samadi et al. | Leveraging GPUs using cooperative loop speculation | |
Haine et al. | Exploring and evaluating array layout restructuring for SIMDization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20070518 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20070518 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080108 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110426 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110721 |
|
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: 20110816 |
|
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: 20110906 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140916 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |