HPC/並列プログラミングポータルでは、HPC(High Performance Computing)プログラミングや並列プログラミングに関する情報を集積・発信しています。

新着トピックス

インテル コンパイラーでオープンソースソフトウェアをコンパイルしよう

 インテルの「インテル C++ コンパイラー」は高速なバイナリを生成するということで知られている。いっぽうWindowsの世界ではマイクロソフトのVisual C++が、LinuxではオープンソースのGCCが事実上標準のコンパイラになっており、多くのオープンソースソフトウェアはこれらのコンパイラでコンパイルされている。そのため、利用したいソフトウェアがインテル コンパイラーでコンパイルできるのか興味のある人も多いだろう。また、Visual C++やGCCでコンパイルされたものと比べ、どのくらいパフォーマンスが違うのかも気になるところだ。

 インテル C++ コンパイラーはVisual C++やGCCとの互換性を備えているものの、完全に同一というわけではない。そこで、有名なオープンソースソフトウェアについてインテル C++ コンパイラーでのコンパイルを行い、どの程度の修正でコンパイルが可能なのか、またそのパフォーマンスはどうなのか、調査してみよう。

 なお、今回の記事ではインテル C++コンパイラー 11.0の無償体験版を使用している。この体験版はインテル コンパイラーの国内代理店であるエクセルソフトのWebサイトからダウンロード可能だ。ぜひ読者の皆さんも手元でインテル コンパイラーを試してほしい。

オープンソースソフトウェアでも実績が多いインテル コンパイラー

 実際の作業を説明する前に、まずはインテル コンパイラーでのコンパイルを利用するにあたって役に立つであろう資料を紹介しておこう。

 まず、インテル コンパイラーのもっとも貴重な情報源となるのが、開発元であるインテルのWebサイトである。インテルのWebサイトでは、LinuxカーネルやSTLport、POV-rayなどのソフトウェアについて、インテル コンパイラーでのコンパイル方法を解説したドキュメントが公開されている(表1)。

 用意されているドキュメントは数値演算系や画像処理系のソフトウェア/ライブラリが多いが、これらはインテル コンパイラーが得意とする領域であり、高速化が期待できる。もしこれらのソフトウェア/ライブラリを利用しているなら、インテル コンパイラーを試してみる価値があるだろう。

表1 インテルのWebサイトで公開されているオープンソースソフトウェアのコンパイル解説ドキュメント
ソフトウェア説明
LinuxカーネルOS
PGPLOTプロット画像作成ライブラリ
NCARドロー画像ライブラリ
WRF気象モデリングシステム
HDF5クラスタライブラリ
UPC並列言語処理系
FFTW高速フーリエ変換ライブラリ
stlportC++標準ライブラリ
POV-Ray3D画像レンダラー
NetCDF科学用データフォーマットライブラリ
Open MPI並列化ライブラリ
HPCC bnechmarkベンチマークツール
ACE+TAO分散コンポーネント
XercesXML処理ライブラリ
Quantlib金融/財務処理ライブラリ

 また、ソフトウェアによってはVisual C++やGCCでコンパイルしたバイナリだけでなく、インテル コンパイラーでコンパイルしたバイナリも配布されている場合がある(表2)。このようなバイナリは有志がコンパイルして配布していることが多く、公式版と比べてパフォーマンスが高いものが多いようだ。ただし、公開されているバージョンが古い場合もあるので注意してほしい。

表2 インテル コンパイラーでコンパイルされたバイナリが配布されているソフトウェア例
ソフトウェア配布先/配布者
MySQL公式ダウンロードページ
BlenderWoogieWorks Animation Studio
FFTWFranz Franchetti
x264seraphyのプログラム公開所(「x264 詰め合わせ」の「おまけ」以下)
lameRAREWARES

 例えば、上記で配布されているBlenderのインテル コンパイラー版バイナリを使い、Core 2 Duo E6550(2.33GHz)を搭載したマシンでBlender Render Benchmarkで配布されているテストファイルをレンダリングしたところ、公式版よりも1.5倍程度高速であった(表3)。

表3 Blenderでテストファイル(test.blend)のレンダリングにかかった時間(3回の平均)
バイナリレンダリング時間
公式版(Visual C++ 2008 SP2)3:13:18
インテル コンパイラー版(SSE3対応)2:01:06

 また、「インテル コンパイラーの実力を測る――インテル コンパイラー版MySQLは本当に速いのか?」記事では、インテル コンパイラーによるMySQLの高速化についても調査しているので、そちらも参照してほしい。