• Showing Page History #49587

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

 インテルの「インテル 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)。

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

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

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

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