JPH06507990A - コンピュータのための最適化コンパイラ - Google Patents
コンピュータのための最適化コンパイラInfo
- Publication number
- JPH06507990A JPH06507990A JP5500496A JP50049693A JPH06507990A JP H06507990 A JPH06507990 A JP H06507990A JP 5500496 A JP5500496 A JP 5500496A JP 50049693 A JP50049693 A JP 50049693A JP H06507990 A JPH06507990 A JP H06507990A
- Authority
- JP
- Japan
- Prior art keywords
- wic
- statement
- code
- simulation
- block
- 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.)
- Pending
Links
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)
Abstract
(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。
Description
【発明の詳細な説明】
コンピュータのための最適化コンパイラ発明の分野
本発明はソースコートコンパイラに関し、より詳細には、ソースコードを中間コ
ードに変換し、緊急の際に、この中間コードを再構成して中間コードが目的コー
ドに変換される前にその性能を最適化するためのシステムに関する。
発明の背景
コンパイラは、ソースコートを機械(目的)コードに変換するための多重ルー・
チンを含むプログラムである。一般的に、コンパイラは高レベルソース言語(例
、C1フォートラン等)を取り、これを順次の中間フォーマットコートに翻訳す
る。
依存性解析(dependency analysis)が中間コードステート
メントについて実行される。この解析は、与えられた結果を生じるにはどのオペ
ランドが必要かを決定し、処理オペレーションの期間中の正しいシーケンスにお
いて且つ正しい時間においてこれらのオペランドが使用可能になるようにせしめ
る。これに続いて、コンパイラは中間コードステートメントをよりコンパクトな
フォーマットを特徴とする副中間フオームに変換する一般の最適化ルーチンを実
行する。例えば、”デッ)”(dead)”コードは除去され、共通副次式(C
Ommon 5ubexpressions)は消され、他の圧縮技術が実行さ
れる。これらの最適化処置は、コードがある手順にかけられ、次に最適化の効率
性を決定するための中間試験を何ら行うことなく次の最適化手順に進むという意
味において、基本的に開ループである。これに続いて、最適化されたコードステ
ートメントは機械言語(目的コート)に変換される。一般的に、斯がるコンパイ
ル済みコートは直接実行され、結果として生じるコードの効率を決定するために
パフォーマンス測定(performance measure)にはかけられ
ない。 要約すれば、コンパイテ最適化手順は、中間コードストリングの中の個
別ステートメントを選択し、これらのステートメントを最適化手順のリストを通
過せしめるという意味で、基本的に開ループである。一旦これらの手順が完成さ
れると、コードは目的コードに変換され、更なるパフォーマンス測定にはかけら
れない。最近、高度な並列式コンピュータの出現により、コンパイルタスクはよ
り複雑になっている。金玉コンパイラは、並列処理ハードウェアにより、はぼ無
競合条件で、メモリにおけるデータの効率的な記憶とメモリからのそのデータの
直後の可用性との両方を保証する必要がある。従ってコンパイラはベクトル/並
列コード構成の識別及び形成に関連するのと同程度の注意をもってメモリサブシ
ステムからの取り出しとデータ構造記憶の基本的問題を処理しなければならない
。
ベクトルプロセッサ及びシストリックアレイ(systolic array)
は、データがこれらのユニットの両端においで転送渋滞にまきこまれる場合は、
はとんど使い物にならない。はぼ無競合のアクセスを達成するために、中間コー
ドを最適化手順を通して実行して、その性能特徴が改良されたと希望”するのは
十分ではない。更に、複雑なソースコードリストを完全にコンパイル/最適化し
て、次に、所望性能レベルを達成するのに付加的なコード変換が必要か否かを決
定する前に、その結果生じる目的コードのパフォーマンスをパフォーマンス測定
に対して比較することを要求されることは不十分である。
コンパイテ最適化に関する先行技術は、ここ数年にわたって現れて来た以下の論
ステートメントによって特徴付けられている。シュネック他は”フォートランか
らフォートランへの最適化コンパイラ” (コンピュータジャーナル、第16巻
、16号、322−330頁、1972年)の中で、機械コードレベルではな(
ソースコードレベルにおけるプログラムパフォーマンスの改良を目的とする初期
のコンパイラについて記載している。1974年に、カック他は′通常フォート
ランプログラムにおける並列性の測定” (コンピュータ、1974年1月、3
7−46頁)の中で、一つのプログラムから出来るだけ多くの同時実施可能オペ
レーションを抽出する幾つかの初期の努力についで記載している。この処置の目
的は、そのオペレーションの特定のものを並列に実効せしめることによりフォー
トランプログラムのパフォーマンスを改良することであった。
順次マイクロコードを並列又は水平マイクロコードに変換するための最適化手順
がご トレーススケジューリング グローバルマイクロコード478490のた
めの技術”にフィッシャーによって述べられている。そのための高度に並列化さ
れたマルチプロセッサ及びコンパイル技術がフィッシャによって“VLIW機械
科学的コートをコンパイルするためのマルチプロセッサ” (コンピュータ、
1984年7月、45−53頁)に且つギュプタ他によって”再構成可能LIW
アーキテクチュアのためのコンパイル技術” (ザ、ジャーナルオブスーパーコ
ンピューティング、第3巻、271−304頁、1989年)に述べられている
。
フィッシャ及びギュプタ他は両者共、非常に長い命令ワードが用いられている高
度に並列化されたアーキテクチュアにおける最適化の諸問題を扱っている。ギュ
プタ他は、改良されたパフォーマンスを達成するために領域スケジューリング、
システムの再構成のための世代コード、及びメモリ割り当て技術等のコンパイル
技術について述べている。この点に関して、レフ他は”多次元シストリックアレ
イへのマツピングネスティングループアルゴリズム” (並列及び分布システム
についてのIEEE会報、第1巻、1号、1990年1月25日、64−76頁
)の中で、コンパイル手順の一部として、ループアルゴリズムが如何にしてシス
トリックVLSIアレイにマツピングされ得るかについて述べている。
上記に引用された先行技術は開ループ手順について述べている。詳細には、一旦
コードが”最適化”されると、目的コードに変換され、次に機械実施のために出
力される。
&盟91杓
ソースコードリストを目的コードリストにコンパイルする(compiling
)ための方法が記載されており、この方法は、ソースコートリストからソースコ
ードステートメント(statements)のブロックを抽出する段階、ブロ
ックにおける各ソースコードステートメントを目的の形のワイド中間コード(w
lc)ステートメントすなわちソースコードステートメントによって要求された
諸機能を実行するために一組の機械処置を確定するWICステートメントにマツ
ピングする段階、ブロックにおける各WICステートメントの初期近似シミュL
i−’iヨンヲ実行し、各WICステートメントのシミュレーション及びWIC
ステートメントのブロックからパフォーマンス結果(performancer
esults)を引き出す段階、パフォーマンス結果に依存して、コードのパフ
ォーマンスを改良することを試みてブロックにおけるWICステートメントを一
重のコード変換アルゴリズム及びヒユーリスティックの一つに従って修正する段
階、及びパフォーマンス結果が改良されているか否かを決定するために近似シミ
ュレーションを反復し、改良されている場合、決定点に達するまで、WICステ
ートメントの更なる修正を可能にするべくこれらのアルゴリズムの別のアルゴリ
ズムに進み、斯かる時間において、修正されたWICステートメントを目的コー
ドの形で生成する段階、を含んでいる。
図面の説明
図1は、演算部を構成する下部構造の構成における変化を可能にする先行技術の
演算部パイプライン組織及びスイッチングネットワークの部分ブロック図である
。
図2は、図1のシステムに用いられている”三重構造“処理下部構造のブロック
図である。
図3は、図1のシステムに用いられている”二重構造”処理下部構造のブロック
図である。
図4は、図1のシステムに用いられている”−重構造”処理下部構造のブロック
図である。
図5−8は、本発明の方法の高レベルフロー図を示す。
&咀の詳鯉を脱里
ここに開示されているコンパイラ発明の方法の詳細を説明するに先立ち、先ず、
特にこの方法を実施するに構成されたコンピュータの構造を検討することにする
。
記載されようとしているコンピュータの詳細がノーゼンチャック他による且つ本
出願と同じ譲り受け人に譲り受けられた米国特許第4.811.214号に記載
されている。この米国特許第4.811.214号の開示は本明細書に参照とし
て引用されている。
該米国特許第4.811.214号において、同時に作動する少数の強力なノー
トを用いている高度に並列化されたコンピュータが記載されている。任意の与え
られたノート(node)内では、コンピュータは、多くの機能ユニット(例、
浮動小数点演算プロセッサ、整数演算/論理プロセッサ、特殊目的プロセッサ等
)を用いており、これらの機能ユニットは、これらの機能ユニットの、全てでは
なくても、大部分が与えられたノートの各クロックサイクルの期間中に能動状態
になるように同期的な力学的に再構成可能なパイプラインに組織されている。
コンピュータの各ノートは、再構成可能演算/論理ユニット(ALU)、多面メ
モリ、及びメモリ平面と再構成可能ALUとの間のデータのルーティング(ro
uting)のためのメモリーALUネットワークスイッチを含む。図1におい
て、高レベルフロー図は特別に要求されたパイプライン処理構造を提供するため
に組織され得る複数の再構成可能下部構造と共に典型的なALUパイプラインス
イッチングネットワークを示している。各再構成可能パイプラインプロセッサは
、種々の階級の処理エレメント(又は下部構造)及びスイッチングネットワーク
11から構成されている。3つの永久的に配線された下部構造12.14、及び
16がALUパイプラインプロセッサにおいて各々特定の回数反復されており、
それらの相対的相互接続をスイッチングネットワーク11によって変化せしめる
ように構成されている。
下部構造12は、図2のブロック図レベルにおいて更に詳細に示されており、こ
れ以降、三重構造と呼ばれる。各三重構造は、3つのレジスタファイル2o、2
2、及び24.3つの浮動小数点ユニット26.2訳及び30.並びに一つの整
数論理ユニット32を含んでいる。この三重構造には4つの入力があり、その内
2つは各々レジスタファイル浮動小数点ユニット対(例、2o、26及び22.
28)についている。唯一っの出力34が存在する。この三重構造への入力はス
イッチ11を通過する(図1)が、メモリあるいは別の演算/論理構造の出力か
ら来得る。各三重構造からの出力はスイッチ11に至り、ここから別の演算、/
論理構造の入力にあるいはメモリに送られ得る。
他の処理下部構造が図3及び4に示されており、図3は二重下部構造36を示し
ており、図4は一重下部構造38を示している。上記の下部構造の各々は図2に
示されている三重構造の部分集合であり、一つ少ない入力を各々許容することが
分かる。
米国特許第4.811.214号に記載されているコンピュータは何方ものフィ
ールドを有する非常に長い命令ワード(VLIW)について作動する。各VLI
Wの緒フィールドの諸部分はコンピュータの各処置に対して構成されるように要
求されている処理構造を画定している。実際、VLIW命令のこれらの部分は所
要処理機能が行われるようにするためにシステムの再構成を形成する。
上記に述べたように、コンピュータはかなりの数の独立プロセッサを含んでおり
、これらの独立プロセッサの各々はサブルーチン全体あるいはサブルーチンの一
部分のどちらかを他のプロセッサと並列に扱う。その結果、VLIW構造と組合
わさった各コンピュータノードの高度に再構成可能な特性により、複雑な問題の
処理の取り扱いに高いフレキシビリティが得られることが分かる。しかしながら
、このフレキシビリティと共に、コストが、即ち、コンピュータがそのコードを
最小の消費時間で実施することを保証する難しさが出て来る。このシステムの目
的コードの構築は図5−8のフローチャートに広(示されている方法を実行する
コンパイラによって達成される。
ここで図5のフローチャートについて説明すると、コンパイラはソースコードリ
スト(ボックス50)及び特定のシステム並びに作動パラメータを画定するデー
タを入力として受ける。ボックス52に示されているように、システムアーキテ
クチュアパラメータは、コンパイラへの一つの入力を形成しており、各ノードに
対して、使用可能システム(available system)及びこれに関
する特定の規定を画定する。例えば、メモリはその組織(例えば、平面の数)、
それらが物理的かあるいは仮想的かということ、キャッシュの容量、キャッシュ
の組織及びその作動アルゴリズム、クロック当たりの読みだしの数、クロック当
たりの書き込みの数、並びにクロック当たりのアクセスの数について画定される
。
更に、各プロセッサは、そのために使用可能な一重構造、二重構造及び三重構造
の数(例えば、それぞれ4.8、及び4)、レジスタファイル及び各々における
レジスタの数、アクセスの種類、及びプロセッサに何らかの特殊な機能が配設さ
れているか否かを画定したであろう。明かに、付加的なアーキテクチュアパラメ
ータが配設されているが、上記は、当業者にシステム資産及びそれらの作動特徴
を画定する情報の種類の即座の理解を提供する。
他の規定の中で、中断が生じ且つ終了が命令される前に、最適化サブル −チン
が通過されるべき回数を示す最適化パラメータがコンパイラへの入力(ボックス
54)として配設されている。
このソースコートリストは、パーサ−と字句分析プログラムから構成されている
初期メモリマツプサブルーチン(ボックス56)にかけられる。これらのサブル
ーチンは、予備最適化記号−テーブル発生器と共に、入力メモリアレイのメモリ
記憶位置を割り当て、これらの記憶位置を規定するテーブルを構築する。より詳
細には、アレイ寸法を画定するソースコードステートメントが受けられると、大
きなアレイが、後続のメモリ参照競合を避けることを初期に試みて、様々な物理
的記憶位置(領域)に割り当てられる(分解される)。
これ以降、ソースコードリストはシストリックDoループステートメント(Sy
stolic do−1oop statements)だけでなく、スカラー
ステートメントのリストの両方を含むと仮定される。これ以降、”ブロック“の
用語は一重のスカラーステートメントあるいはDo小ループ例えば、シストリッ
クコードブロック)を含むステートメントのどちらかに言及し得る。公知のよう
に、各Do小ループ、−組のオペランドについて実行される反復性オペレーショ
ンを画定するベクトルプロセスである。このコンパイラは入来ソースコード入カ
流からDo小ループ抽出しくボックス58)、その中の各ソースコードステート
メントをワイド中間コード(WIC)ステートメントに変換する(ボックス60
)。このワイド中間コードは、フォーマットが順次コードについての通常の場合
よりも高いレベルの規定を表しているという意味でご従来の”ベクトル化コンパ
イラによって発生されたコードとは異なり、即座の局部依存性はWIC内で実施
されている。
各WICステートメントはソースコードステートメントによって要求された機能
を実行するために一組の機械処置を画定する。各WICステートメントは目的コ
ードの形にあり、ソースコードステートメントによって要求された処1を実質的
に画定する一連の記号、トークン(tokenL等を含んでいる。これは、特定
のリンキング情報に欠けているため、この段階ではコンピュータによって実施可
能ではない。 基本的に、WICのフォーマットは元のソースコードにおいて見
いだされた局部並列及びシストリック構造及び依存性を固有的に維持する。
オペランドフェッチ、複雑な中間オペレーション、及び結果記憶の間の本来の相
関関係はWICステートメント内に保存される。WICコードの唯一っのライン
はソースコードにおける対応ラインに直接関係する。後続の解析にかがる可能な
並列あるいはシストリック実施を抽出する負担が低減する。
WICは、通常単純な負荷、移動、作動、記憶シーケンスによって特徴つけられ
る偏在性順次内部コートフォーマット(ubiquitous 5equent
ial 1nternal code−formats)とは対照的である。
この後者のフォーマットは元のソースコードにおいて明確であった明白な並列コ
ートエレメントの多(を再構成しなければならない並列コート解析器に更なる負
担をかける。
このWICコートはソースプログラムによって指示された処置の全てを具象する
。加うるに、WICコートは記号−テーブル属性及び局部データ依存性を維持す
る。 WICステートメントの基本フォーマットの一例は、tjJ4 = (O
perlθ、 0per2)θ2(Oper3θ30per4)ここで、θは任
意高レベルオペレーション、例えば、=、X、十等を意味し、0perはメモリ
、レジスタ、あるいは先行の計算の結果からのオペランドを意味する。この例に
おいて、WICは、局部依存性(挿入的な順序付けに基ずく)を示し、ここで8
.及びθ3はθ2による後続の処理と並列に実施し得る。シストリック実施は、
その出力が後続のプロセッサ入力に直接供給される処理エレメントのアレイにエ
ンタするデータ流を考慮することにより作動的に画定される。かくして、データ
は、中間記憶の必要性なしにアセンブリラインの様式で処理される。 中間コー
トのフォーマットの一例を示すために、シストリックオペレーションがテストプ
ログラムから抽出され且つ以下のようにフォートランで表現されると考慮せよ。
z = constl零b(D(const2零a(i)+const3本c(
ij))上記のフォートランステートメントに対応するWICステートメントは
以下の通りである。
poo:=$8$1IR3本$1#5MAl+$!J#112S本$4#8MA
1 % calculatec2零a(i)+c3*c(iD
=−$13:12MAl−$7$11R3本$2#61AI−poo % ca
lculate z・〉%end d。
上記でWICを形成する依存性解析器(dependency analyze
r)は、ソースコートのフォーマットに密接に従う。WICは、特にコンパイラ
のこの実施に対して記号−テーブルニーモニック(mnemon i cs)
を用いる。多重独立メモリ平面のポテンシャルがトークンの構造に反映される。
データー構造記号テーブルトークンのフォーマットが表1に記載されている。
データー構造記号テーブルトークン $!xx#mp 5tor occ、 こ
こで
尺号 脱灰
$ データエレメント
! 分散/多重記憶表示子
xx 可変参照数
#mp メモリ平面数
s tor 以下によって与えられる変数の変位:MA メモリ基アレイ
MS、メモリ基スカラー
RA:レジスタ基スカラー
R3レジスタ基スカラー
occ 可変成員数
表1゜データ構造記号トークンのフォーマット上記の例に示されているように、
WICは、入れ子式内部依存性ノード(ループ内)から構成されている。(ルー
プへラダコードは簡潔性のために削除されている)。ここで、無端子内部ノード
p00はシストリック句を示している。句中断は、ソースに示されている挿入的
順序付けによって駆動される。==に境界を接するトークンは局部依存性ツリー
の根である。かくして、この例によって示されているように、WICはそれ自身
を比較的率直な後続の解析及び並列実施に適するようにせしめる中間及び最終結
果の本来の順序付けを与えらる。
引き継がれた属性はかなり細かく解析することが出来、限度内で、従来の順次中
間コードが、上で論じられたように、生じる。しかしながら、これは並列コード
解析器から増大した仕事を要求し、WIC解析器によって予想されるパフォーマ
ンスよりも低いパフォーマンスをもたらし得る。WIC順序付けは最適化器によ
って実行される付加的シストリック及び並列コード発生を有意に抑制するもので
はないことが、銘記されるべきである。
ここで図5に戻ると、各DO小ループICステートメントが構成された後(ボッ
クス60)、このステートメント内の内部依存性が見いだされ且つ記録される。
ボックス64.66、及び68から分かるように、スカラーソースコードステー
トメントのブロックに関して同様の処lが行われる。しかしながら、この例にお
いて、ブロック寸法は、連続するDOシル−間のコードのラインの数、あるいは
コードのラインの予め画定された最大数のどちらかの最小となる。
一旦、Do小ループびスカラーステートメントのブロックがWICステートメン
トに変換されると、これらのステートメントはリストに併合される(ボックス7
0)。すると、各WICステートメントが解析されて、それを機能せしめるには
どのアーキテクチュア資産が必要であるか決定される。次にこれらの資産は割り
当てられ(図6のボックス72) 、WICステートメントがアーキテクチュア
ユニットにマツピングされてこのステートメントを処理することの出来る必要な
シストリック又はスカラーアレイを生成する(ボックス74)。
この段階において、コンパイラは割り当てられたアーキテクチュア資産と組合わ
さって、WICステートメントを実行するために計算システムの構成を可能にす
るマツプを発生している。
しかしながら、WICステートメントをシミュレートするのに不十分な資産しか
得られない場合(決定ボックス73参照)、これらの使用可能資産を収容するた
めにWICステートメントを修正しなければならない(ボックス73)。これは
、ステートメント切り捨て、分割あるいはWICステートメントオペレーション
を後続の段階に分割して、各段階で要求される資産を減する他の特定の手順の形
を取り得る。
WICステートメントに対して十分な資産が見いだされた場合、資産のアレイが
アセンブルされ、このステートメントはその上にマツピングされる(ボックス7
5)。
ここでシミュレーションサブルーチン(ボックス76)がアクセスされ、アセン
ブルされたアーキテクチュアユニットの”近似”シミュレーションをマツピング
されたWICステートメントに従って実行する。このシミュレーション(及び後
続の最適化)の目的は、コンピュータのピーク理論速度の規定された分数におい
て、あるいはこれよりも高い速度で実行する目的コードを発生することにある。
これは、各WICステートメントが如何に効率的に実施するかについての近似的
な計量を得て、次にそのパフォーマンスを改良することを試みてWICステート
メントを修正することにより達成される。この結果を得るために各WICステー
トメントを完全にシミュレートすることは不必要であることが見いだされている
。
従って実際、各WICステートメントについて比較的粗いシミュレーションが実
行され、斯かるシミュレーションでもコンパイラはその実施効率の度合いを得る
ことが可能である。
実際の(シミュレーションしない)オペレーションでは、各WICステートメン
ト及びそこから発生したコートはデータの大きなアレイに作用する。
このシミュレーションサブルーチンはこの大きなアレイから後続のシミュレーシ
ョンのための入力として作用するその部分集合を選択する。これにより、シミュ
レータは統計的有効性を提示するパフォーマンス基準を引き出すのに必要な多(
の量のデータを取り扱う必要の結果として動きが取れなくなることを防ぐ。シミ
ュレーションに用いられるべきデータアレイは、ユーザ規定(あるいは規定がな
い場合は、ディフォルト部分集合)である。
この近似シミュレータは、各WICステートメントに対して、全ての要求された
メモリ参照を”実施”する。メモリ参照は、読みだしあるいは書き込みであって
も、メモリにおける各記憶に対する全ての参照を含んでいる。加つるに、WIC
ステートメントによって要求された計算処置はシミュレーションされるが、部分
的にのみである。例えば、メモリ参照の計算に関する計算処置はシミュレーショ
ンされる。シミュレーションは一般的に、後続のメモリ参照に至るステートメン
トあるいは次の条件テストにかけられる何らかのステートメントを実施するだけ
である。
一例として、計算されなければならないが、間接計算に依存するメモリの別の部
分に記憶されているアドレスに対する参照を考慮せよ。この例において、アドレ
スは値jによってアレイA内に規定され、ここでiは間接メモリ参照について言
及している。ここで、iの値の計算がシミュレーションされるが、Aの値はシミ
ュレーションされない。これは、Aが単に”結果”であり、このシミュレーショ
ンがA(1)の計算が如何にして機械のパフォーマンスに影響するかについての
み関連し、計算に対する答えの結果ではないからである。しかしながら、Aの値
が次の条件テストを条件とする場合(例えば、Aが1よりも大きいか小さい場合
)、これは計算される。
このンミュレーンヨンプログラムが実行すると(図7のボックス78参照)、こ
れはメモリ参照の数、実行される原始的演算/論理オペレーションの数演算/論
理オペレーションの数、及び生じるメモリ競合の数を記録する。原始的演算/論
理オペレーションは、加算、減算、乗算、又は論理比較である。より複雑なオペ
レーションは別の原始的演算/論理オペレーションの比例案ステートメントされ
た値である。例えば、加算オペレーションは1に等しく、除算オペレーションは
4に等しい。
メモリバンク内での記憶されたアレイの後続の再割り当てを可能にするべくメモ
リの各ブロックに対してメモリ競合の数が記録される。シミュレータによって発
生され得る他の統計量は平面当たりのフェッチ/リストアの数に対する相対的な
平面当たりのキャッシュ不明、条件的パイプラインフラッシュの数、及び条件的
ステートメント実施の関数としての再構成の数、等を含んでいる。
実際、シミュレーションは、最終的数値あるいは論理的結果に到達するためにで
はな(、コンピュータのオペレーション及び各WICステートメントにおけるそ
の割り当てられた資産を計量するために実行される。か(して、シミュレーショ
ンの結果は、−組の統計的に信頼出来る近似的パフォーマンス特徴である。一旦
、WICステートメントの粗いシミュレーションが終了すると、アルゴリズムは
ブロック又はDO小ループ終了したか否か(即ち、シミュレーションされていな
いWICステートメントが他に存在するか?)を試験する(ボックス80)。ス
テートメントが確かにシミュレーションされずに残っている場合、プログラムは
再循環してシミュレーションを達成する。ブロック又はDo小ループおけるWI
Cステートメントがシミュレーションされている場合、プログラムは進行して、
他の指示の中に、ブロック又はDO小ループための演算計数、そのブロック又は
DO小ループおける各WICステートメントに対する演算計数、及び各々に対す
るメモリバンク及び競合のリストを含むメモリ参照競合の計数を出力する(ボッ
クス82)。図8の決定ボックス84に示されているように、これらの出力は次
に(最適化パラメータからアクセスされた、図5のボックス54参照)予め画定
された作動基準と比較される。スカラーステートメントのブロックまたはDo小
ループこの作動基準より高い効率レヘルで実施することが分かった場合、このW
ICステートメントは目的コートに変換される(ボックス86)。このプログラ
ムは、処理されるWICステートメントがもはや存在しない場合、終了しく決定
ボックス88)、そうでない場合、この方法は再循環して次のWICステートメ
ントを取り扱う。一方、これらの出力が呼び出されたパラメータより低いパフォ
ーマンス効率を示す場合(決定ボックス84)、このパフォーマンス効率が最後
の”試行(try)”に対して改善されているか否かが決定される(決定ボック
ス90)。何らパフォーマンス改善がもたらされていない場合、最後の最適化処
置が逆転され(ボックス92)、未試行の最適化処置が試みられる。パフォーマ
ンス効率改善が見られた場合(ボックス90)、この方法は別の未試行最適化処
置に進む(ボックス94)。
コンパイラは、場合により、スカラーWICコードの各ブロック又はDo小ルー
プついて個別最適化処置を実行することにより最適化器サブルーチンに進む。
コンパイラはコート変換及びコードヒユーリスティックの両方を直列様式で実行
する。例えば、全体的な共通副次式の削除、ループヘッダオペレーションの後続
のスカラー処理、等の公知のコート変換が実行される。コンパイラは又、未使用
処理情報の再分布を可能にするためのループ融合、メモリ競合を最小限にするた
めのループ交換、競合を低減するためのメモリ中のデータの動的再分布、独立的
且つ並列的サブループ実施を可能にするためのループ分割等を含み得るが、これ
らに限定されない、コートヒユーリスティック(code heuristic
S)を実行する。
各個別最適化処置が達成された後(ボックス94)、スカラーステートメントの
Do小ループはブロックにおける修正されたWICステートメントは近似シミュ
レーションサブルーチンを用いて再びシミュレーションされる。かくして、W■
Cステートメントの各Do小ループはブロックは、予め画定された作動基準との
比較のために新しい組の出力を得るべく、上記の如く、その実施をシミュレーシ
ョンせしめた。次に、最適化器ルーチン(optimizer routine
)の数が限度に等しいか否かが決定され(決定ボックス96)、等しい場合、最
適化器ルーチンは停止して、終了し、そしてWICステートメントは目的コード
に変換される。実行の数が等しくなかった場合、ルーチンは戻って継続する。
上記から分かるように、このコンパイラによって、スカラーステートメントの個
別DO小ループびブロックは粗いシミュレーションを用いて個別に試験され得る
。これらの最適化されたコードステートメントは、コードのパフォーマンスを更
に改良する試みで、付加的な最適化サブルーチンにかけられる。各最適化サブル
ーチンの直後に、各ブロック及び/又はDO小ループ記録された内部依存性が変
更されたWICステートメントに従って再試験され且つ再調節されなければなら
ないことが当業者には明白であろう。この手順はコード及びDo小ループ個別ブ
ロックを最適化するだけではな(、コード構造全体に全体的な効果をもたらし得
る。例えば、幾つかのDO小ループ一つのループに”融合”された場合、これら
のDOループ内及び中での依存性が考慮され必要に応じて変更される。また、デ
ータの再分布又は再マツピングは同様の全体的な効果をもたらす。かくして、採
用されたコード変換及びヒユーリスティックに基ずいて、コンパイラによって生
成されている目的コードが生成出来る程、最適となることを保証するべく、各段
階において、試験された実時間の最適化が行われる。
上記の説明は本発明を例示するだけであることを了解すべきである。本発明から
逸脱することな(、種々の変更及び修正が当業者によって考案され得る。従って
、本発明は、付記された請求の範囲に属する全ての斯かる変更、修正及び変異を
含むと意図される。
FIG、 2
FIG、 3
FIG、 4
最適化コンパイラ
FIG、7
手続補正書
Claims (12)
- 1.ソースコードリストを目的コードリストにコンパイルする方法であって、そ のオペレーションを制御するコンパイラソフトウエアを有するコンピュータによ って実行される方法において、 a.上記ソースコードリストからソースコードステートメントを抽出する段階、 b.上記ブロックにおける各ソースコードステートメントを中間コードフォーマ ットにマッピングする段階であって、上記フォーマットが上記ソースコードステ ートメントによって呼び出されたファンクションを実行するために依存した一連 の機械処置を画定している段階、 c.上記ブロックにおける上記中間コードフォーマットの初期近似シミュレーシ ョンを実行し、上記シミュレーションからパフォーマンス結果を引き出す段階、 d.上記パフォーマンス結果に依存して、上記パフォーマンス結果を改良するこ とを試みて、上記中間コードフォーマットを修正する段階、e.斯かる処置を終 端する決定点に到達するまで、段階c及びdを反復する段階を含むことを特徴と する方法。
- 2.上記中間コードフォーマットがワイド中間コード(WIC)ステートメント を含み、段階(c)が各WICステートメント及びWICステートメントの各ブ ロックの近似シミュレーションを実行することを特徴とする請求項1の方法。
- 3.段階dにおける上記修正が一群のコード変換及びヒューリスティックからの ルーチンに従って上記WICステートメントについて実行されることを特徴とす る請求項2の方法。
- 4.段階bが、 b1.上記ブロック中の各上記WICステートメント内の依存性を決定し、上記 初期近似シミュレーションを上記依存性に従って作動せしめる更なる段階を含む ことを特徴とする請求項3の方法。
- 5.段階cが更に、 c1.上記コンピュータにおける使用可能エレメントを画定するアーキテクチュ アパラメータのリストを配設する段階、c2.WICステートメントを実施する ために一組の上記使用可能エレメントを割り当てる段階、及び c3.上記WICステートメントを上記の割り当てられた処理エレメントを通じ て処理するために近似シミュレーションルーチンを作動する段階を含むことを特 徴とする請求項4の方法。
- 6.上記近似シミュレーションルーチンが各WICステートメントの粗いシミュ レーションを行い、上記シミュレーションが、演算/論理原始的オペレーション のクロックサイクル当たり、WICステートメント当たりの数、WICステート メント当たりのメモリ参照競合の数の測定を可能にし、且つ更に、各ブロックに 対する上記オペレーション及び競合の数の蓄積を可能するのに少なくとも十分で あることを特徴とする請求項5の方法。
- 7.段階dが更に、 d1.上記パフォーマンス結果を上記コンピュータのための作動基準に対して比 較し、上記比較の結果が上記結果が上記作動基準と少なくとも等しいことを示さ ない場合、段階eを実行する段階を含むことを特徴とする請求項6の方法。
- 8.段階dが更に、 d2.上記WICステートメントを修正した後、上記決定された依存性を上記修 正されたWICステートメントに従って更新する段階を含むことを特徴とする請 求項7の方法。
- 9.段階dが更に、 d3.メモリ参照競合を低減することを試みて、上記WICステートメントのブ ロックのためのメモリアドレス割り当てを修正する段階を含むことを特徴とする 請求項8の方法。
- 10.段階dが更に、 d4.使用可能エレメントによる上記原始的オペレーションのストリングの並列 的実施を可能にするベく上記のオペレーションのストリングを分割する段階 を含むことを特徴とする請求項9の方法。
- 11.段階dが更に、 d5.上記WICステートメントの修正に続いて、上記の修正されたWICステ ートメントを実施するのに十分な非割り当て処理エレメントが使用可能か否かを 評価し、使用可能でない場合、上記WICステートメントを修正して使用可能処 理エレメントを利用できるようにする段階を含むことを特徴とする請求項10の 方法。
- 12.段階(e)における上記決定点がユーザによってエンタされたパラメータ であることを特徴とする請求項11の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US70533191A | 1991-05-24 | 1991-05-24 | |
US705,331 | 1991-05-24 | ||
PCT/US1992/004387 WO1992022029A1 (en) | 1991-05-24 | 1992-05-20 | Optimizing compiler for computers |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06507990A true JPH06507990A (ja) | 1994-09-08 |
Family
ID=24832996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5500496A Pending JPH06507990A (ja) | 1991-05-24 | 1992-05-20 | コンピュータのための最適化コンパイラ |
Country Status (6)
Country | Link |
---|---|
US (1) | US5442790A (ja) |
EP (1) | EP0586557A4 (ja) |
JP (1) | JPH06507990A (ja) |
AU (1) | AU2158692A (ja) |
CA (1) | CA2109799A1 (ja) |
WO (1) | WO1992022029A1 (ja) |
Families Citing this family (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2921190B2 (ja) * | 1991-07-25 | 1999-07-19 | 日本電気株式会社 | 並列実行方式 |
US5768561A (en) | 1992-06-30 | 1998-06-16 | Discovision Associates | Tokens-based adaptive video processing arrangement |
US6079009A (en) | 1992-06-30 | 2000-06-20 | Discovision Associates | Coding standard token in a system compromising a plurality of pipeline stages |
US6435737B1 (en) | 1992-06-30 | 2002-08-20 | Discovision Associates | Data pipeline system and data encoding method |
US6047112A (en) | 1992-06-30 | 2000-04-04 | Discovision Associates | Technique for initiating processing of a data stream of encoded video information |
US5809270A (en) | 1992-06-30 | 1998-09-15 | Discovision Associates | Inverse quantizer |
US7095783B1 (en) | 1992-06-30 | 2006-08-22 | Discovision Associates | Multistandard video decoder and decompression system for processing encoded bit streams including start codes and methods relating thereto |
US6330665B1 (en) | 1992-06-30 | 2001-12-11 | Discovision Associates | Video parser |
US5784631A (en) | 1992-06-30 | 1998-07-21 | Discovision Associates | Huffman decoder |
DE69229338T2 (de) | 1992-06-30 | 1999-12-16 | Discovision Associates, Irvine | Datenpipelinesystem |
US6067417A (en) | 1992-06-30 | 2000-05-23 | Discovision Associates | Picture start token |
US6112017A (en) | 1992-06-30 | 2000-08-29 | Discovision Associates | Pipeline processing machine having a plurality of reconfigurable processing stages interconnected by a two-wire interface bus |
US5805914A (en) | 1993-06-24 | 1998-09-08 | Discovision Associates | Data pipeline system and data encoding method |
US5861894A (en) | 1993-06-24 | 1999-01-19 | Discovision Associates | Buffer manager |
DE69434845T2 (de) * | 1993-07-22 | 2007-05-16 | Koninklijke Philips Electronics N.V. | Multimedia-System zur interaktiven Darstellung von Benutzerinformation und Massenspeicher zum Gebrauch mit einem solchem System |
JP3417984B2 (ja) * | 1993-09-10 | 2003-06-16 | 株式会社日立製作所 | キャッシュ競合削減コンパイル方法 |
JP3190773B2 (ja) * | 1993-09-30 | 2001-07-23 | 日本電気株式会社 | 言語処理プログラムのコンパイル処理方法 |
US5984512A (en) | 1994-07-29 | 1999-11-16 | Discovision Associates | Method for storing video information |
JP3626784B2 (ja) | 1995-03-17 | 2005-03-09 | 富士通株式会社 | 分散メモリ型並列計算機におけるデータ更新方法およびプログラム変換装置 |
US5669001A (en) * | 1995-03-23 | 1997-09-16 | International Business Machines Corporation | Object code compatible representation of very long instruction word programs |
US5699536A (en) * | 1995-04-13 | 1997-12-16 | International Business Machines Corporation | Computer processing system employing dynamic instruction formatting |
US5943242A (en) | 1995-11-17 | 1999-08-24 | Pact Gmbh | Dynamically reconfigurable data processing system |
US7266725B2 (en) | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
US5867175A (en) * | 1996-05-24 | 1999-02-02 | Microsoft Corporation | Method and apparatus for scriping animation |
US5857106A (en) * | 1996-05-31 | 1999-01-05 | Hewlett-Packard Company | Runtime processor detection and installation of highly tuned processor specific routines |
US6182247B1 (en) * | 1996-10-28 | 2001-01-30 | Altera Corporation | Embedded logic analyzer for a programmable logic device |
US5920716A (en) * | 1996-11-26 | 1999-07-06 | Hewlett-Packard Company | Compiling a predicated code with direct analysis of the predicated code |
DE19651075A1 (de) | 1996-12-09 | 1998-06-10 | Pact Inf Tech Gmbh | Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen |
US6338106B1 (en) | 1996-12-20 | 2002-01-08 | Pact Gmbh | I/O and memory bus system for DFPS and units with two or multi-dimensional programmable cell architectures |
DE19654595A1 (de) * | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen |
DE19654593A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | Umkonfigurierungs-Verfahren für programmierbare Bausteine zur Laufzeit |
DE19654846A1 (de) | 1996-12-27 | 1998-07-09 | Pact Inf Tech Gmbh | Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.) |
JP3961028B2 (ja) | 1996-12-27 | 2007-08-15 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | データフロープロセッサ(dfp)の自動的なダイナミックアンロード方法並びに2次元または3次元のプログラミング可能なセルストラクチャを有するモジュール(fpga,dpga等) |
DE19704044A1 (de) * | 1997-02-04 | 1998-08-13 | Pact Inf Tech Gmbh | Verfahren zur automatischen Adressgenerierung von Bausteinen innerhalb Clustern aus einer Vielzahl dieser Bausteine |
DE19704728A1 (de) | 1997-02-08 | 1998-08-13 | Pact Inf Tech Gmbh | Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
DE19704742A1 (de) | 1997-02-11 | 1998-09-24 | Pact Inf Tech Gmbh | Internes Bussystem für DFPs, sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen, zur Bewältigung großer Datenmengen mit hohem Vernetzungsaufwand |
US6226790B1 (en) * | 1997-02-28 | 2001-05-01 | Silicon Graphics, Inc. | Method for selecting optimal parameters for compiling source code |
US5940620A (en) * | 1997-03-07 | 1999-08-17 | Ncr Corporation | Compiler with intermediate compiling mechanism |
US6567976B1 (en) | 1997-03-20 | 2003-05-20 | Silicon Graphics, Inc. | Method for unrolling two-deep loops with convex bounds and imperfectly nested code, and for unrolling arbitrarily deep nests with constant bounds and imperfectly nested code |
US5946493A (en) * | 1997-03-28 | 1999-08-31 | International Business Machines Corporation | Method and system in a data processing system for association of source code instructions with an optimized listing of object code instructions |
US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
US6080204A (en) * | 1997-10-27 | 2000-06-27 | Altera Corporation | Method and apparatus for contemporaneously compiling an electronic circuit design by contemporaneously bipartitioning the electronic circuit design using parallel processing |
US6075935A (en) * | 1997-12-01 | 2000-06-13 | Improv Systems, Inc. | Method of generating application specific integrated circuits using a programmable hardware architecture |
US6223337B1 (en) * | 1997-12-12 | 2001-04-24 | Hewlett-Packard Company | Random test generation for compiler optimization |
DE19861088A1 (de) | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
US5911073A (en) * | 1997-12-23 | 1999-06-08 | Hewlett-Packard Company | Method and apparatus for dynamic process monitoring through an ancillary control code system |
DE19807872A1 (de) | 1998-02-25 | 1999-08-26 | Pact Inf Tech Gmbh | Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl. |
US6367056B1 (en) | 1998-04-23 | 2002-04-02 | Altera Corporation | Method for incremental timing analysis |
US6164841A (en) * | 1998-05-04 | 2000-12-26 | Hewlett-Packard Company | Method, apparatus, and product for dynamic software code translation system |
US6148437A (en) * | 1998-05-04 | 2000-11-14 | Hewlett-Packard Company | System and method for jump-evaluated trace designation |
US6189141B1 (en) | 1998-05-04 | 2001-02-13 | Hewlett-Packard Company | Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control |
US6223339B1 (en) * | 1998-09-08 | 2001-04-24 | Hewlett-Packard Company | System, method, and product for memory management in a dynamic translator |
FR2785695B1 (fr) * | 1998-11-06 | 2003-01-31 | Bull Cp8 | Procede de compactage d'un programme de type code objet intermediaire executable dans un systeme embarque muni de ressources de traitement de donnees, systeme compacteur et systeme embarque multi-applications correspondants |
US6272674B1 (en) * | 1998-12-14 | 2001-08-07 | Nortel Networks Limited | Method and apparatus for loading a Java application program |
AU5805300A (en) | 1999-06-10 | 2001-01-02 | Pact Informationstechnologie Gmbh | Sequence partitioning in cell structures |
US6507947B1 (en) * | 1999-08-20 | 2003-01-14 | Hewlett-Packard Company | Programmatic synthesis of processor element arrays |
US6438747B1 (en) * | 1999-08-20 | 2002-08-20 | Hewlett-Packard Company | Programmatic iteration scheduling for parallel processors |
US6374403B1 (en) * | 1999-08-20 | 2002-04-16 | Hewlett-Packard Company | Programmatic method for reducing cost of control in parallel processes |
US6550059B1 (en) * | 1999-10-04 | 2003-04-15 | Advanced Micro Devices, Inc. | Method for generating optimized vector instructions from high level programming languages |
DE50115584D1 (de) | 2000-06-13 | 2010-09-16 | Krass Maren | Pipeline ct-protokolle und -kommunikation |
WO2001098898A1 (en) * | 2000-06-21 | 2001-12-27 | Bops, Inc. | Methods and apparatus for indirect vliw memory allocation |
US20020038453A1 (en) * | 2000-08-09 | 2002-03-28 | Andrew Riddle | Method and system for software optimization |
US7000227B1 (en) | 2000-09-29 | 2006-02-14 | Intel Corporation | Iterative optimizing compiler |
JP2004517386A (ja) | 2000-10-06 | 2004-06-10 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | 方法および装置 |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US6990555B2 (en) * | 2001-01-09 | 2006-01-24 | Pact Xpp Technologies Ag | Method of hierarchical caching of configuration data having dataflow processors and modules having two- or multidimensional programmable cell structure (FPGAs, DPGAs, etc.) |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
US7210129B2 (en) | 2001-08-16 | 2007-04-24 | Pact Xpp Technologies Ag | Method for translating programs for reconfigurable architectures |
US7444531B2 (en) | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
US7581076B2 (en) | 2001-03-05 | 2009-08-25 | Pact Xpp Technologies Ag | Methods and devices for treating and/or processing data |
US6721943B2 (en) * | 2001-03-30 | 2004-04-13 | Intel Corporation | Compile-time memory coalescing for dynamic arrays |
US7657877B2 (en) | 2001-06-20 | 2010-02-02 | Pact Xpp Technologies Ag | Method for processing data |
US7996827B2 (en) | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US7434191B2 (en) | 2001-09-03 | 2008-10-07 | Pact Xpp Technologies Ag | Router |
WO2003032157A1 (en) * | 2001-09-18 | 2003-04-17 | Asahi Kasei Kabushiki Kaisha | Compiler |
US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
JP2003173262A (ja) * | 2001-12-06 | 2003-06-20 | Hitachi Ltd | プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体 |
US7577822B2 (en) | 2001-12-14 | 2009-08-18 | Pact Xpp Technologies Ag | Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization |
WO2003060747A2 (de) | 2002-01-19 | 2003-07-24 | Pact Xpp Technologies Ag | Reconfigurierbarer prozessor |
WO2003071432A2 (de) | 2002-02-18 | 2003-08-28 | Pact Xpp Technologies Ag | Bussysteme und rekonfigurationsverfahren |
US20040015426A1 (en) * | 2002-03-14 | 2004-01-22 | Bijan Tadayon | System and method for expressing usage rights with sound signals |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
AU2003286131A1 (en) | 2002-08-07 | 2004-03-19 | Pact Xpp Technologies Ag | Method and device for processing data |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
US7394284B2 (en) | 2002-09-06 | 2008-07-01 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
JP3919680B2 (ja) * | 2003-02-26 | 2007-05-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ装置、コンパイラプログラム、及び記録媒体 |
EP1676208A2 (en) | 2003-08-28 | 2006-07-05 | PACT XPP Technologies AG | Data processing device and method |
JP4328328B2 (ja) * | 2003-10-23 | 2009-09-09 | 富士通株式会社 | ソフトウエア開発ツールプログラム |
DE102004007749A1 (de) * | 2004-02-18 | 2005-09-08 | Zf Friedrichshafen Ag | Vorrichtung und Verfahren zur Erkennung von Wasserdampf in Öl in einem Gehäuse, vorzugsweise Getriebegehäuse |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
WO2007082730A1 (de) | 2006-01-18 | 2007-07-26 | Pact Xpp Technologies Ag | Hardwaredefinitionsverfahren |
US8813057B2 (en) * | 2007-03-31 | 2014-08-19 | Intel Corporation | Branch pruning in architectures with speculation support |
US8214818B2 (en) * | 2007-08-30 | 2012-07-03 | Intel Corporation | Method and apparatus to achieve maximum outer level parallelism of a loop |
JP4339907B2 (ja) * | 2007-10-24 | 2009-10-07 | 株式会社日立製作所 | マルチプロセッサ向け最適コード生成方法及びコンパイル装置 |
WO2010125960A1 (ja) * | 2009-04-28 | 2010-11-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マルチスレッド上で動作するプログラムのプログラム・コードをロック衝突が少ないプログラム・コードに変換するための方法、並びにそのコンピュータ・プログラム及びコンピュータ・システム |
US9489181B2 (en) * | 2014-10-09 | 2016-11-08 | National Instruments Corporation | Correlation analysis of program structures |
US10365904B2 (en) * | 2017-09-29 | 2019-07-30 | Microsoft Technology Licensing, Llc | Interactive code optimizer |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4811214A (en) * | 1986-11-14 | 1989-03-07 | Princeton University | Multinode reconfigurable pipeline computer |
JPH01108638A (ja) * | 1987-10-21 | 1989-04-25 | Hitachi Ltd | 並列化コンパイル方式 |
-
1992
- 1992-05-20 JP JP5500496A patent/JPH06507990A/ja active Pending
- 1992-05-20 CA CA002109799A patent/CA2109799A1/en not_active Abandoned
- 1992-05-20 EP EP92913009A patent/EP0586557A4/en not_active Withdrawn
- 1992-05-20 WO PCT/US1992/004387 patent/WO1992022029A1/en not_active Application Discontinuation
- 1992-05-20 AU AU21586/92A patent/AU2158692A/en not_active Abandoned
-
1994
- 1994-03-09 US US08/208,488 patent/US5442790A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CA2109799A1 (en) | 1992-12-10 |
US5442790A (en) | 1995-08-15 |
WO1992022029A1 (en) | 1992-12-10 |
EP0586557A1 (en) | 1994-03-16 |
AU2158692A (en) | 1993-01-08 |
EP0586557A4 (en) | 1995-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH06507990A (ja) | コンピュータのための最適化コンパイラ | |
Sreraman et al. | A vectorizing compiler for multimedia extensions | |
Bergstrom et al. | Nested data-parallelism on the GPU | |
CN102750150B (zh) | 基于x86架构的稠密矩阵乘法汇编代码自动生成方法 | |
US20160321039A1 (en) | Technology mapping onto code fragments | |
JPS6234275A (ja) | ベクトル化コンパイラ | |
JP2001166949A (ja) | シンボリック実行を用いてソースコードをコンパイルするための方法及び装置 | |
US12039305B2 (en) | Method for compilation, electronic device and storage medium | |
Oancea et al. | Financial software on GPUs: between Haskell and Fortran | |
Sathre et al. | Edge-connected jaccard similarity for graph link prediction on fpga | |
JP2001166946A (ja) | 階層の平坦化によりソースコードをコンパイルする方法及び装置 | |
US11262989B2 (en) | Automatic generation of efficient vector code with low overhead in a time-efficient manner independent of vector width | |
Sovetov | Development of dsl compilers for specialized processors | |
Jin et al. | Integer sum reduction with OpenMP on an AMD MI100 GPU | |
Marker | Design by transformation: from domain knowledge to optimized program generation | |
Ginzburg | Compiling array computations for the Fresh Breeze parallel processor | |
Takayashiki et al. | Page-Address Coalescing of Vector Gather Instructions for Efficient Address Translation | |
Soest | Compiling Second-Order Accelerate Programs to First-Order TensorFlow Graphs | |
EP4227795A1 (en) | A computer-implemented method and a computer-readable medium | |
Barwell | Pattern discovery for parallelism in functional languages | |
Mogers | Guided rewriting and constraint satisfaction for parallel GPU code generation | |
Fu | Accelerating Graph Neural Network Computation on CPUs and GPUs | |
Liu et al. | FluidML: Fast and Memory Efficient Inference Optimization | |
Voetter et al. | Compilation on the GPU? a feasibility study | |
Alex | Matrix Multiplication is Almost All You Need |