Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

BOLT


Twitterに流れてきた、これ

Facebookのブログは、こちら => Accelerate large-scale applications with BOLT
このブログ書いている、Maxim Panchenko さん、なんか、いろいろなコンパイラ書いているわ。。。

Facebook(Facebook Incubator)が公開したBOLT
引用
    BOLT is a post-link optimizer developed to speed up large applications. 
    It achieves the improvements by optimizing application's code layout based 
    on execution profile gathered by sampling profiler, such as Linux perf tool. 
    BOLT can operate on any binary with a symbol table, 
    but for maximum gains it utilizes relocations saved by a linker (--emit-relocs).

    NOTE: current support is limited to non-PIE X86-64 and AArch64 ELF binaries.

プロファイラ(perf)でプロファイルを取って、
そのプロファイル情報からバイナリコードを最適化すると。。。
プログラムの実行は使用するデータに依存するので、複数のプロファイルにも対応済み。
ただし、複数ファイルを1つのファイルのまとめる作業は必要

LLVMを使って、バイナリファイル(実行プログラム)に対して、いろいろなパスを実行しているのね。
これら、いろいろなパスが実際には何を行っているのを調べるのは、意味があるかもね。

ターゲットは、AArch64とx86です。

確か、AMDBolt、HSA用のライブラリ
   Bolt is a C++ template library optimized for GPUs. 
   Bolt provides high-performance library implementations for common algorithms such as scan, 
   reduce, transform, and sort.
出していたよね。1.3まででて、4年前から更新されていないね。HSAって、どうなったんだろうか?
かなり期待していたんだけどね。
x86/ARMで共通に使えるって感じだったが、ARMを止めて、x86になってHSAもね。。。