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

新着トピックス

IPPのパフォーマンスを検証

 IPPは様々な分野で活用できる関数群を備えているだけでなく、さらにそれらのパフォーマンスが高いというのもポイントだ。例えば表3は先に紹介した、IPPのサンプルコードに含まれている動画エンコーダ(umc_video_enc_con.exe、以下IPPエンコーダ)と、オープンソースのH.264エンコーダである「x264」とで同じ動画をH.264形式でエンコードし、エンコードにかかった時間を比較したものだ。IPPエンコーダとx264とでは設定できるパラメータが微妙に異なるため、細かい部分の設定は完全に同一ではないが、IPPを使ったエンコーダがx264と比べて高いパフォーマンスを出していることが分かる。

表3 MPEG4/AVC H.264形式での動画エンコード時間
エンコーダ1回目2回目3回目平均
IPPエンコーダ8.8928.6428.7208.751
x26414.16514.11814.24314.175

 なお、x264にはVisual Studioのプロジェクトファイルが付属しているので、それをVisual Studioで開き、インテル C++ コンパイラでコンパイルしたものを使用している。コンパイル時のオプションは図2のように設定している。

 また、テストに使用したPCのスペックは表4のようなもので、エンコーディング設定は表5のように設定した。下記はx264のコマンドライン、こちらはIPPエンコーダで使用した設定ファイルである。

>  x264.exe -I 250 -b 0 -r 1 -q 20 -B 2000 --frames 150 -o test_icc.mp4 test1.yuv 1280x720
表4 テストに使用したPCのスペック
項目スペック
OSWindows Vista Businness SP1
CPUCore 2 Duo E6550(2.33GHz)
メモリ2048MB
表5 テストでのエンコーディング設定
パラメータ
画像サイズ1280×720
FPS30
エンコードするフレーム数150(約5秒)
パス数1
ビットレート2kbps
QP20
GOPサイズ250

 また、CPUをどのように使っているかをWindowsのタスクマネージャで確認したところ、IPPサンプルは2つのコアをほぼ均等に使っていたが(図3)、x264は片方のコアに多く負荷がかかっていた状態であった(図4)。このことからIPPを使ったエンコーダは並列処理の粒度が低く、より効率的に処理を実行できていると言える。