[[PageNavi(NavigationList)]]
==== IPPのパフォーマンスを検証 ====
IPPは様々な分野で活用できる関数群を備えているだけでなく、さらにそれらのパフォーマンスが高いというのもポイントだ。例えば'''表3'''は先に紹介した、IPPのサンプルコードに含まれている動画エンコーダ(umc_video_enc_con.exe、以下IPPエンコーダ)と、オープンソースのH.264エンコーダである「[http://x264.nl/ x264]」とで同じ動画をH.264形式でエンコードし、エンコードにかかった時間を比較したものだ。IPPエンコーダとx264とでは設定できるパラメータが微妙に異なるため、細かい部分の設定は完全に同一ではないが、IPPを使ったエンコーダがx264と比べて高いパフォーマンスを出していることが分かる。
{{{ html
<h6>表3 MPEG4/AVC H.264形式での動画エンコード時間</h6>
<table class="wikitable" border="1">
<tr><th>エンコーダ</th><th>1回目</th><th>2回目</th><th>3回目</th><th>平均</th></tr>
<tr><td>IPPエンコーダ</td><td>8.892</td><td>8.642</td><td>8.720</td><td>8.751</td></tr>
<tr><td>x264</td><td>14.165</td><td>14.118</td><td>14.243</td><td>14.175</td></tr>
</table>
}}}
なお、x264にはVisual Studioのプロジェクトファイルが付属しているので、それをVisual Studioで開き、インテル C++ コンパイラでコンパイルしたものを使用している。コンパイル時のオプションは'''図2'''のように設定している。
[[Thumb(45c3c25539a202cde6053f9d6cd89037.png, caption=図2 x264のコンパイルオプション)]]
また、テストに使用したPCのスペックは'''表4'''のようなもので、エンコーディング設定は'''表5'''のように設定した。下記はx264のコマンドライン、[「最適化・並列化コードを生み出す最新コンパイラ「インテル_コンパイラー」サンプルコード_p4 こちら]はIPPエンコーダで使用した設定ファイルである。
{{{
> x264.exe -I 250 -b 0 -r 1 -q 20 -B 2000 --frames 150 -o test_icc.mp4 test1.yuv 1280x720
}}}
{{{ html
<h6>表4 テストに使用したPCのスペック</h6>
<table class="wikitable" border="1">
<tr><th>項目</th><th>スペック</th></tr>
<tr><td>OS</td><td>Windows Vista Businness SP1</td></tr>
<tr><td>CPU</td><td>Core 2 Duo E6550(2.33GHz)</td></tr>
<tr><td>メモリ</td><td>2048MB</td></tr>
</table>
}}}
{{{ html
<h6>表5 テストでのエンコーディング設定</h6>
<table class="wikitable" border="1">
<tr><th>パラメータ</th><th>値</th></tr>
<tr><td>画像サイズ</td><td>1280×720</td></tr>
<tr><td>FPS</td><td>30</td></tr>
<tr><td>エンコードするフレーム数</td><td>150(約5秒)</td></tr>
<tr><td>パス数</td><td>1</td></tr>
<tr><td>ビットレート</td><td>2kbps</td></tr>
<tr><td>QP</td><td>20</td></tr>
<tr><td>GOPサイズ</td><td>250</td></tr>
</table>
}}}
また、CPUをどのように使っているかをWindowsのタスクマネージャで確認したところ、IPPサンプルは2つのコアをほぼ均等に使っていたが('''図3''')、x264は片方のコアに多く負荷がかかっていた状態であった('''図4''')。このことからIPPを使ったエンコーダは並列処理の粒度が低く、より効率的に処理を実行できていると言える。
[[Thumb(b52bf36f1e5e6ae1292efff42c50dde5.png, caption=図3 IPPサンプル実行時のCPU利用状況)]]
[[Thumb(579f712dc7857d1fcda3d65c776ef961.png, caption=図4 x264実行時のCPU利用状況)]]
[[PageNavi(NavigationList)]]