MILEPOST GCC: optimizing a compiler by machine learning

by syoyo

http://www.milepost.eu/

機械学習を用いて、いくつかサンプルプログラムを走らせ学習し、そのプロセッサに最適なコンパイルオプションの組み合わせを導出するというもの.
単純に “-O3” 最適化オプションを指定するものと比べて、MILEPOST GCC を使うと 11% ~ 16% 程度の高速化を得ることができる. しかもコンパイラオプションのどの組み合わせが有効かはこのフレームワークが勝手に導出してくれるのでとってもお手軽.

たとえば遺伝的アルゴリズムを利用した ACOVEA のように、

http://www.coyotegulch.com/products/acovea/

このような自動で最適化オプションを探すという手法はありましたが、
探索区間が大きかったり試行に時間がかかるなどでチューニング時間がかかり広く使える手法にはほど遠かったとのこと.
(ACOVEA は確か 1 日近くかかる)

MILEPOST GCC は、その問題を機械学習を使うことで効率化し、
またフレームワークを GCC plugin で実現することで実務的に使えるようにしています.

実際ソースを落としていじろうとしましたが、
最後の最後らへんで、うまく動いてくれませんでした.

ちなみに、学習データは ctuning.org でデータベース化していろいろ面白いことをやっていこうとするようです.

http://ctuning.org/wiki/index.php/Main_Page

Advertisements