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

新着トピックス

インテル コンパイラーの実力を測る――インテル コンパイラー版MySQLは本当に速いのか?

 インテルが開発している「インテル コンパイラー」は、インテルCPUに最適化された高速なバイナリを生成するということで知られており、Oracleなどパフォーマンスを求めるベンダーで採用されているほか、科学計算用アプリケーション、3Dグラフィックソフトなど、さまざまなソフトウェアのコンパイルに利用されている。

 しかし、「インテル コンパイラーはパフォーマンスが高い」とだけ言われても、なかなかピンと来ない人も多いのではないだろうか。そこで、インテル コンパイラーでコンパイルされたバイナリをベンチマークテストし、実際どの程度の性能向上が見込まれるのかを調べてみよう。

各所で高評価を受けるインテル コンパイラー

 インテル コンパイラーはCPUメーカーであるインテルが開発しているということで、Core i7などの最新CPUに搭載されているSSE 4.2といった命令セットへの対応が図られているほか、インテルおよびインテル互換CPUに向けた最適化機能や自動並列化機能、プロシージャ間の最適化(Interprocedural optimization、IPO)と呼ばれる全体最適化機能など、よりパフォーマンスの高いバイナリを生成するための機能を備えている。そのため、特に浮動小数点演算を多用する科学技術系シミュレーションや画像処理、動画/音声処理、CGといったアプリケーションとの相性が良いと言われており、実際の採用例も多い。

 たとえば、日本国内でインテル コンパイラーの販売・サポートを行っているエクセルソフトのWebサイトに掲載されている「インテル製品の導入事例」では、工学系や金融系のシミュレーションアプリケーションでインテル コンパイラーを使用したところ、1.5倍~2倍以上の速度向上が見られる、という例が複数報告されている。

 また、シミュレーションだけでなく音声処理でもパフォーマンス向上が報告されており、ソニーデジタルネットワークアプリケーションズ株式会社の採用例では、インテル コンパイラーの採用や並列化、パフォーマンス解析などによって最終的に3倍程度の高速化に成功している。

 さらに、大手データベースベンダーであるOracleは同社製品のコンパイルにインテル コンパイラーを採用している。インテル コンパイラーの採用により、特にXeonやItanium 2などの64ビット環境で大きなパフォーマンス向上が達成できたそうだ。

 このように、特に科学技術系やシミュレーションの分野で評価の高いインテル コンパイラーであるが、いっぽうで身近なオープンソースソフトウェアでも、インテル コンパイラーを利用することでパフォーマンスが向上する、というレポートが挙げられている。そのなかでも興味深いのが、MySQLの事例だ。Linux World 2005で発表された「Improving MySQL Server Performance with Intel C++ Compiler」というレポートでは、「Set Query Benchmark」というベンチマークにおいて、インテル コンパイラーを利用することでMySQLのパフォーマンスをPentium 4マシンで最大1.35倍、Itanium 2マシンで最大1.24倍、Xeon(64ビット環境)では最大2.55倍向上できた、と報告されている。

 MySQLはオープンソースのリレーショナルデータベースシステムで、もともとはスウェーデンのMySQL社によって開発されていたが、現在ではサン・マイクロシステムズがその権利を所有している。MySQLにはオープンソース版の「MySQL Community Server」と、商用製品である「MySQL Enterprise」の2製品があるが、MySQL Community ServerのLinux版についてはGCCでコンパイルされたバイナリに加え、インテル コンパイラーでコンパイルされたバイナリも配布されている(ダウンロードページ)。そこでこれらのバイナリを使い、本当にこのようなパフォーマンス向上が見られるのか、比較してみよう。