![]() |
HPC/並列プログラミングポータルでは、HPC(High Performance Computing)プログラミングや並列プログラミングに関する情報を集積・発信しています。 |
[記事一覧を見る]
最近のコンパイラには、出力するバイナリコードをより高速に実行できるようにする「最適化」機能が搭載されている。CPUやPCアーキテクチャがより複雑化している近年、コンパイラによる最適化はより注目を浴びるようになっている。
たとえば、現在のCPUはいわゆる「マシン語」のコマンド列をそのまま実行するのではなく、内部でより細かい単位に分解して実行する。このとき、CPUのリソースをより効率良く利用できるよう、場合によってはその順序の並び替えや、並列化が行われる。また、処理を行うデータがキャッシュされているかどうかによっても処理速度が大きく変化する。CPUクロックの向上により、CPUとメモリ間でデータをやりとりする時間についても大きなボトルネックとなるようになったからだ。
このようにCPUの動作が複雑になっている現在、「より速く実行できるコード」を生成するには、CPUの構造やその動作についての知識も必要になっている。そこで注目されているのが、インテルが開発するコンパイラ製品「インテル コンパイラー」である。
インテル コンパイラーは最新のインテル製CPUに最適化されたコードを生成できるだけでなく、安全に並列実行できる処理を自動的に並列化するなど、より高度な最適化機能を備えている。また、インテルが開発している数値演算ライブラリやマルチメディア処理ライブラリが付属しており、これらを利用することで大規模な数値演算の高速化や、マルチメディア処理の高速化も期待できる。
本特集では、このインテル コンパイラーについて紹介するとともに、インテル コンパイラーで作成したプログラムのパフォーマンスについても検証する。
なお、本特集で紹介しているインテル コンパイラー製品は、30日間利用できる無料評価版が用意されている。記事中のコードは評価版でもそのまま利用できるので、ぜひダウンロードしてそのパフォーマンスを手元で確かめてほしい。
コンパイラが持つ最適化機能を利用することで、冗長なソースコードから効率の良いバイナリコードを生成できる。そして、よりパフォーマンスを追求したいなら、インテル製CPUに向けた高い最適化を謳う「インテル コンパイラー」を検討したい。本記事では、インテル コンパイラーの特徴や使い方を紹介するとともに、生成したコードのパフォーマンスがVisual C++やGCC3、GCC4と比べてどの程度違うのか、検証を行う。
各種スケジューリング処理やシミュレーション、統計処理、デジタル制御や信号処理などの分野では、多次元行列演算や高速フーリエ変換(FFT)、線形計画法など、さまざまな数学的処理が必要とされる。インテル コンパイラーに付属する「インテル マス・カーネル・ライブラリ」(MKL)はこのような処理を高速に実行する数値演算ライブラリで、同社のCPUで高速に動作するよう最適化されているだけでなく、並列処理にも対応しているのが特徴だ。本記事ではMKLが備えている機能を紹介するとともに、フリーのライブラリとのパフォーマンスを比較する。
インテル C++ コンパイラーに付属するライブラリの1つに「インテル インテグレーテッド・パフォーマンス・プリミティブ」(IPP)がある。IPPは動画や音声、画像などの処理に向けた関数を備えたライブラリなのだが、実際のところIPPがどのようなものなのか分からない方も多いだろう。そこで本記事では、IPPには何が含まれており、またどのような用途に使えるのかを紹介する。
本特集内で使用したサンプルコード全文を掲載しています。
[PageInfo]
LastUpdate: 2009-11-17 17:03:30, ModifiedBy: hiromichi-m
[Permissions]
view:all, edit:login users, delete/config:members