過去数年間のコンパイラ最適化技術の新機能は何ですか?


14

データフローと制御フローグラフの最適化に興味があり、特に計算が複雑です。しかし、のぞき穴の最適化の分野における最新の発明について知ることも興味深いでしょう。


2
私の論文スライド)では、LLVMでコールグラフのフラット化について説明し、実装しました。基本的に、それはすべてのコードを一緒にマージするため、「関数」の概念を取り除く手続き間変換であり、手続き間のコードの動き、呼び出しサイトに最適化された呼び出し規約、スタックレス実行などの多くの興味深い可能性を可能にします。
CAFxX

@CAFxX:スライドがOpen Officeをクラッシュさせた..代わりにオンラインの写真がありますか?
イットリル


おかげで、それで見ることができましたが、グラフは見栄えが良くてもテキストは良かったです。
イットリル

回答:


8

それがどれほど斬新であるか、またはあなたの興味のためにそれが適用側に多すぎるかどうかはわかりませんが、Hooplは、制御グラフの頂点に関する事実の伝播を制御/データフロー最適化がモジュール化できる方法を示しています言語および特定の最適化。

彼らは、Lerner、Grove、Chambersの2002アルゴリズムを参照しており、単純な最適化を「超最適化」にまとめています。



6

検証済みの最適化コンパイラには、少しのリバイバルがありました。Lernerの論文(前のコメントで言及)に加えて、Xavier Leroyが率いるCompCertプロジェクトを見ることができます。彼らは、最適化をマシンチェック可能なプルーフとして指定することで(Coqを使用して)いくつかのクールなことをしました。私はまだ論文を読んでいませんが、プリンストンのVerified Software Toolchainプロジェクトもこの分野で興味深い結果を生み出しているようです。


1
CompCert:CerCo(cerco.cs.unibo.it)に似たプロジェクトにも取り組んでいます。CompCertとは異なり、Cの大部分のサブセットに対して検証済みの具体的なコスト保存コンパイラを作成することを目指しています(CompCertは、ソースプログラムの拡張プロパティがコンパイルによって保存されることのみを示しています)。また、CompCertが採用しているような「マイルドな」最適化と同様に、いくつかの適度に複雑なループ最適化をコンパイラーに実装しています。これは、もちろんコストを節約するものとして検証する必要があります。
ドミニクマリガン

5

ダブルFORループのbaz [i] + = force(foo [i]、foo [j])が(i、j)に対して独立した結果を持つことを認識し、(i、j)上のスペース充填曲線に呼び出しを並べ替えますキャッシュミスを削減します。

完全に「のぞき穴」ではありませんが、「無料」でキャッシュを無視する動作を取得するのは良いことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.