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

新着トピックス

Parallel Studioによる並列化

 faacはWindowsやLinux、Mac OS XなどさまざまなOS上でコンパイル/実行できるが、今回はParallel Studioを使用するため、Windows環境でVisual Studio 2008を使用して開発を行った。ベースとしたfaacのバージョンは1.28である。配布されているfaacのソースコードにはVisual Studio向けのプロジェクトファイルも付属しており、これを利用することでWindows環境でも簡単にコンパイルが可能だ(図2)。

 今回使用したParallel Studioは、自動並列化/最適化機能を備えたコンパイラやマルチスレッド対応デバッガ、パフォーマンス計測ツール、メモリ/スレッドに関する正当性チェッカなどから構成される開発支援ツールである。詳しくは過去の記事を参照してほしいが、ここでは下記の目的にParallel Studioを使用した。

  • 自動最適化によるパフォーマンス向上
  • 処理に時間のかかっている個所(ホットスポット)の検出
  • マルチスレッド化によって発生する、スレッド間でのデータ競合などの検出
  • メモリリークや不正なメモリの検出

インテル コンパイラーでコンパイルするだけでもパフォーマンスが向上

 Parallel Studioの「インテル Parallel Composer」コンポーネントには、強力な最適化機能で知られるインテル コンパイラーが含まれており、このコンパイラを利用するだけでパフォーマンスの向上が期待できる。Parallel Studioでは、Visual StudioのIDEからボタン1つで自動的にインテル コンパイラーでソフトウェアをコンパイルできるようになり、またGUIによるコンパイルオプション設定が可能だ。

 ソースコードの修正を行う前にまずはインテル コンパイラーでfaacをコンパイルしたところ、これだけでも大幅なパフォーマンス向上が確認できた(表1)。なお、ここでは約4分のWAVE形式音声ファイル(約40MB)を、faacのデフォルト設定でエンコードした際にかかった時間でその処理速度を比較している(表2)。

表1 コンパイラによる処理時間の違い
コンパイラ処理時間
Visual C++10.7秒
インテル コンパイラー8.8秒
表2 今回のテストに使用した条件
構成要素構成
CPUCore 2 Duo E6550(2.33GHz)
メモリ2GB
OSWindows Vista Business SP1
HDDSEAGATE ST3250310AS(250GB)
入力ファイルWAVE形式、約4分(40MB)
faacのコマンドラインオプションなし(デフォルト設定)

 なお、実行ファイルのパフォーマンスは、コンパイラの設定(コンパイルオプション)でも大きく変化する。ここでは、Visual C++およびインテル コンパイラーで最も強力と思われる最適化設定を用いてプログラムをコンパイルしている(図3、4)。