Jaa


Expression Encoder 4 Pro SP1 と NVIDIA CUDA 高速GPU 使用時のエンコーディング パフォーマンス

続いて、同じくEE4開発チームが作成した、EE4SP1とCUDAに関するドキュメントです。ご参考になれば幸いです。

-------

Expression Encoder 4 Pro SP1 と NVIDIA CUDA 高速GPU 使用時のエンコーディング パフォーマンス

Expression Encoder Pro Service Pack 1 (SP1) より、NVIDIA® CUDA 高速 GPU を使った GPU (グラフィック プロセッシング ユニット) エンコーディングのサポートを追加しています。エンコーディングのパフォーマンスは、ハードウェアやメディア ソース、配信のターゲット等、様々な要因の影響を受けます。そのため私たちは、様々なシナリオを想定し、推奨の PC 構成や適切な GPU の組み合わせ、さらにそれによるパフォーマンスへの影響等に関する情報を提供しています。

GPU エンコーディングとは? どのような点で重要なのか?

従来のビデオ トランスコーディングの処理は水道管を通る水に似ています。まず、非圧縮ビデオ フレームがデコーダー コンポーネントから取り込まれ、リサイズやデインターレースなどの処理が行われた後、最終的にパイプラインの一部であるエンコーダーコンポーネントに送信されます。こうした処理のどこか一箇所で時間がかかってしまうと、システムが “詰まって” しまい、パイプライン全体のビデオ フレームの流れが滞ってしまいます。

clip_image002

現在市販されている PC の場合、このトランスコーディング プロセスのボトルネックは最後のエンコーダー コンポーネントであることが一般的です。これは、複数プロセッサを搭載した PC であっても同じです。エンコーダー コンポーネントは、CPU が大きくかかわる場所です。GPU とは、通常、グラフィック カードに搭載され、画面へのピクセル描画に使われるハードウェア リソースです。たくさんの処理を並列で実行する場合に高い効率性を実現し、特にビデオエンコーディングでその威力を発揮します。

こうしたボトルネックに対応するため、私たちは GPU エンコーディングを Expression Encoder 4 Pro SP1 に追加しています。新しい Main Concept H.264 CUDA エンコーダーを従来のエンコーディング パイプラインに統合したため、NVIDIA GPU のビデオ エンコーディングアクセラレーターとしての使用が可能になりました。その結果、オフラインの場合で、エンコーディングのパフォーマンスが CPU 1 個につき 2 ~ 3 倍改善され、さらにハイエンドのラップトップにおける 3 または 4 HD ストリームのリアルタイム エンコーディングのようなソフトウェアベースのエンコーディングでは実現することのできないライブスムース ストリーミングが可能になっています。

Expression Encoder Pro による GPU エンコーディングの詳細については、こちらのホワイトペーパーを参照してください。

推奨の PC 構成

エンコーディングのパフォーマンスは、ハードウェアやメディア ソース、配信のターゲット等、様々な要因の影響を受けます。以下の表は、PC の構成と適切な GPU の組み合わせを例として示したものです。ハードウェアを選択する際に参考にしてください。私たちの方でテストを実施しているのは、GeForce® GTX、Quadro® 6000 および Tesla™ C2000 シリーズの NVIDIA CUDA 対応 GPU です (なお、以下でリストする PC は推奨または保証というわけではありませんのでご了承ください)。

シナリオ

マシン

スペック

ラップトップ

Dell Alienware M15X Laptop

8-コア i7-940M、NVIDIA GTX 260M、8GB RAM、SSD HDD、Win7x64

コンシューマー デスクトップ

Dell Studio 9000 Desktop

8-コア i7-950、NVIDIA GTX 460、9GB RAM、1TB 7200mm HDD、Win7x64

プロフェッショナル ワークステーション

HP Z800 Workstation

24-コア Dual Xeon X5650、NVIDIA Quadro 6000 または NVIDIA Tesla C2050、6GB RAM、500 GB 7200 HDD、Win7x64

サーバー

SuperMicro 6016GT-TF-FM205

24-コア Dual Xeon X5670、2 x NVIDIA Tesla C2050、32GB RAM、1 TB SAS Array、Win7x64

パフォーマンステスト

GPU エンコーディングのテストをしていただく方のために、私たちがパフォーマンス テストで使用したメディア ソースを以下のリンクで提供します。

"Big Buck Bunny" 1920x1080p 9m56s WMV file (6Mbps): https://bit.ly/bbbwmv

想定ケースとして、iDevice を配信対象としたファイルのエンコーディングやエンタープライズレベルのエンコーディング ファーム等、エンコードシナリオとして最も一般的な 4 つのケースを選んであります。いずれのケースも、上表のすべてのマシンを使用し、後述のエンコーディングプロファイルを用いて Big Buck Bunny という WMV ファイルをエンコードしています。各マシンのパフォーマンスの数値や CPU のみのエンコーディングと GPU のアシストによるエンコーディングの比較についても記載しています。

ケース 1: オフラインの H.264 1080p MP4

エンコーディング プロファイル: MP4 1080p 8Mbps CBR、バイキュービック リサイジング

ケース 1 は、メディア ファイルを "iDevices" や YouTube で使いたいコンシューマーや PC マニア等にとって最も一般的な使用ケースの一つです。下の図からは、GPU の使用によりエンコーディング プロセスが 1.5 から 2 倍速くなることが分かります。

clip_image003

ケース 2: オフラインの H.264 1080p スムース ストリーミング (10 ストリーム)

エンコーディング プロファイル: H.264 IIS スムース ストリーミング – HD1080p CBR、バイキュービック リサイジング

ケース 2 は一般的なビデオオンデマンド シナリオです。企業などでは、スムース ストリーミング再生を行うために 10 種類のビットレートでメディア ファイルをエンコードすることがあります。以下のパフォーマンス値から分かるように、エンコードにかかる時間はワークステーションまたはサーバー上が最も速くなっていますが、テストを実施したマシン全体では 2 ~ 3 倍の改善が見られました。

clip_image004

ケース 3: オフライン H.264 5 x 1080p ストリーム

エンコーディング プロファイル: 1080p H.264 スムース ストリーミング 5 x 1080p ストリーム、バイキューブリサイジング

ケース 3 は同じフレーム レートおよびビット レートによる 5 つの 1080p ストリームの同時エンコーディングです。GPU の併用によりすべてのマシンでかなりのパフォーマンスの改善が見られますが、クラスターエンコーディングのようにエンコード時間が最もネックとなっている状況にとっては理想的です。

clip_image005

ケース #4: ライブ1080p スムース ストリーミング

エンコーディング プロファイル: できるだけ多くのストリーム (最大 10 個) を取得できるよう Live Performance Toolを自動生成モードで使用した 1080p H.264 ライブ スムース ストリーミング

Expression Encoder チームが開発した Live Performance Tool では、コンピューターのリアルタイム エンコーディングの性能や、ライブ ブロードキャスティングのためのエンコード設定の最適化をテストすることができます。私たちはまずこのツールを使用し、マシンごとにそれぞれが生成可能なストリーム数を調べました。下の図から、GPU を併用しないと、ラップトップの場合はライブ スムース ストリーミング ブロードキャストができないことが分かります。一方、GPU を併用すると、ラップトップでもオンサイトのライブ スムース ストリーミング ブロードキャストが可能です。ワークステーションやサーバーなどハイエンドマシンの場合は、マシンが生成できるストリーム数は 2 倍になります。

clip_image006

次に、下の図を見てください。CPU 単体の場合と GPU を併用した場合をテスト結果です。マシンが配信可能なストリーム数が増加することはもちろんですが、GPU の使用により CPU の負荷をかなり取り除くことができています (特にラップトップ シナリオで顕著です)。

clip_image007

 

まとめ

Expression Encoder Pro を使って GPU エンコーディングを実行すると、エンコード時間の高速化や、PC が配信可能なストリーム数の増加など、パフォーマンス面で大きなメリットがあります。上記のパフォーマンス レポートが、GPU エンコーディングの利点を理解し、適切なハードウェアを選択していただく上で少しでもお役に立てれば幸いです。また、ご質問やご意見がありましたら私たちの製品やリコメンデーションの改善に役立てたいと思いますので、

Expression Encoder フォーラムまでお願いします。