録画人間の末路 -

人は記録をしながらじゃないと生きていけない

GeForce9400のCUDAでも爆速エンコード?したい

2009-01-07 20:37:24 | 意味なしレビュー
PC・GIGAの今月号/2009年2月号で「H.264/MPEG2ハードウエアエンコードボード対決!」と銘打ってSpursEngine搭載の「WinFast PxVC110」と「FIRECODER Blu」のお馴染みの二枚の比較をやっていたけど、その記事の間違いが無視できないレベルだったので指摘させていただく。

それは両者を使って1分の1920x1080のTS映像をH.264に変換と、同じく1分のDVD映像を1920x1080のH.264にアップコンバートする実験を行い、
PxVC1100 58秒/2分00秒    FIRECODER Blu 37秒/1分28秒
とでたので
「「FIRECODER Blu」の方が「WinFast PxVC1100」よりも27~36%も高速という結果になった。2時間の映画なら32~43分も速い計算だ。」
と結論付けている。これが大間違い。PxVC1100が遅い大きな原因の一つがエンコードを行うDVD Movie Writerの仕様で、エンコード開始時にまず下処理を行うようになっており、これが時間がかかる。本来CPUに依存しないSpursEngineにも関わらず、CPUが高速な方が多少速く終わるのはこのためだ。FIRECODER Bluはその処理を行わずにいきなりSpursEngineに受け渡しているので、その分速い。つまり、上の21秒ないし42秒の差のほとんどはこの下処理に使われているのだ。下処理は一度やれば終わりなので、一度終わってしまえばもうそれほどの差が出ることは無い。つまり、「27~36%の差」ではなく、「21~42秒の差」と書くのが正しい。もちろんそれを差っぴいてもFIRECODER Bluの方が高速だが、わたしの実験ではその差はわずか。ソフトの違いを無視してかつ2時間の映画をエンコードしても、数十分どころか数分も違えば上等であろう。
大体たかが1分の映像で結果を出すからこういうことになるのだ。どちらのソフトも終了時に経過時間を表記しない仕様なので、検証時間をケチって短くしたのだろうが、そのためにPxVC1100の能力を見誤ることになった。Leadekは抗議してもいいような内容だぞ、これ。


さて、ケチ付けはこれくらいにして。
先日も書いたとおり、IntelPCのマザーボードをチップセットGeForce9400のものと交換した。これでオンボードで十分な描画が出来るうえに、CUDAを試すことが出来る。もちろん単体グラボに及びもしないだろうが、果たしてオンボードでもどの程度の能力を持っているのか、やはり興味はある。

環境は
CPU:Core2DuoE8500 OS:WindowsXP ProSP2 MEM:DDR2-800 1GBx2 マザー:GIGABYTE GA-E7AUM-DS2H ソフト:Badaboom 1.1 トライアル版
と、いたって普通。ところが、最初からトラブルに合うはめに。
Badaboomを落としてきてインストールしようとしたところ、開始まもなくいきなりOSが落ちて再起動してしまったのだ。何度やっても同じ。
こりゃドライバがまずいのだろ、と解釈してnVIDIAサイトより9400対応の最新版と思われる180.48_geforce_winxp_32bit_international_whql.exeを落としてきてインストール、再びBadaboomを入れるが・・・やはりOSが落ちる。ただし、前のドライバより先へ進んだのは間違いないし、インストールが終わったようにも見えた。ので、再起動したときに試しにBadaboomのアイコンをダブルクリックすると、ちゃんと起動できた。動いたのでこれでよし、とする。
いよいよCUDAのテストだ。Badaboomはうわさどおり、日本語で書かれたファイル名が書かれた映像ファイルを読み込めないので、適当なアルファベット名に変更した映像ファイルを用意する。1440x1080のもともとTSファイルだが、音声をPCMにして多重化しなおしたもので、時間は30分だ。これを、H.264でサイズは同じ1440x1080、ビットレート5Mbps、音声128KbpsでDeInterlaceのみ行った。
それを放り込んで、CPUのパフォーマンスを見ると、占有率が非常に低い。ごくまれに50%近くに跳ね上がることもあるが、多くは10%前後にとどまっており、CPUは有り余っていると言っていい。間違いなくGeForce9400のGPGPUは利いている。
なら、他の作業を同時にやっても快適か・・・というと、かえって悪くなってしまったのだ。作業どころか、すでに開いてあった別のウィンドウにフォーカスを移すだけですら、非常に重いのである。エディタでテキストを打つことすら至難の業だ(これはさすがに言いすぎ。でも、文字が出るのがツーテンポ遅れるので打ちにくいったらありゃしない)。
原因はもうお分かりいただけると思う。GPUがCUDAに占拠されてしまって、描画する余裕が全くなくなってしまったためだ。これでは考えてみたら十分ありうることだが、実際なってみるまで気がつかないものである。GPGPUの長所はCPUに負担をあたえないため、重い作業の代名詞であるエンコードをGPUに任せ、CPUは他の作業に割り当てられるところにある、とさんざん言われていただけに、ちょっとがっかりである。一切描画を行わず、CPUだけに負担をかける一般的な作業くらいなら使えるが、それはエンコードくらいしか思いつかない・・・ダメじゃん。CPUでエンコードなら、負担を軽めにすればネットくらいならなんとか使えるのに。
しかも、残念ながら9400によるエンコード速度は、わずか4.6fps。お世辞にも速いとは言えない。かかった時間は03:18:39・・・。うーむ。
参考として、TMPGEnc4.0XPressでほぼ同じ条件でもエンコードしてみた。すると、かかった時間は01:28:25。ソフトやエンジンの違いがあるとは言え、GeForce9400での結果より倍以上も速い。ちなみに、CUDAを有効にしてみたが、使用率は常時0%だった・・・。

AMD690Gの登場いらい、それまでメーカー製くらいしか使われなかったオンボードVGAにDIY系ユーザーも注目するようになった。わたしも、「いずれロークラスのVGAはオンボードの時代が来る」と確信し、ちゃくちゃくとオンボードVGA環境に変更している。だが、やはりオンボードはオンボード。いくらIntel系オンボードVGA最高のGeForce9400といえどもプラスアルファの能力は単品ミドルクラスの足元にも及ばない。ましてGPGPUのようなこれからの技術をまともに使おう、というのがそもそも間違いだったのかもしれない。過度な期待は禁物である・・・。普通はしないか。GPGPU使いたいなら、おとなしくミドルクラス以上のやつにしときましょうね。

コメント (12)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« SARVH全面広告に見える醜さ | トップ | CATVでアナログ延命? は本... »

12 コメント

コメント日が  古い順  |   新しい順
Unknown (emanon)
2009-01-07 23:26:26
 ん~、GeForce9400でならといった結果ですがグラフィックボードでGPGPUを使っている時の補助機能としてなら悪くは無い選択かもしれませんね
返信する
Unknown (FRS)
2009-01-08 00:18:28
まぁ雑誌の記事用の比較ですし、1分程度のソースで
やってる限りは、実際の処理はどこから始まっているか?
なんて気がつきにくいかもしれませんね。
そもそも比較なら同じソフトウェアでやらないとダメなんでしょうが、FIRECODERからDMW5って発想はなかったかw
返信する
傑作頂きました。 (貧乏おたく)
2009-01-08 00:47:24
今日は痛快な2連発と言うことでなかなか面白い話ですね。特に後半のはPCに詳しくない人にも笑い話として語れそうな面白さ(笑)。
1つ目の雑誌の記事はケチ所か大事な指摘ですよ。騙されてFIRECODERってのを選択してしまうユーザーがたくさん出そうですし。

2つ目の「確かにCPUは軽くなったけどメモ帳も使えない」というのは頭隠して尻隠さずとでも言うか本末転倒な傑作ですね。家族にでも話してみたいと思います。クイズ形式で行きましょうかね。「最新技術のビデオカードで映像圧縮したらなんとメモ帳も動かない、何故でしょう?」
返信する
少し違うんじゃないかな… (N.Shim@)
2009-01-08 01:53:00
う~ん。
krmmk3さんのレポートだとCUDA処理中に画面描写を行うだけ、GPUに余裕がなく、Windowsの反応が鈍いと仰られているように読めるのですが…。
もし、そう考えているのであれば、遅い理由は少し違うんじゃないかと思いますね。

まずエンコード速度ですが、以前の記事「第二のデンジャラスユニット HDFury2に狂喜乱舞 http://blog.goo.ne.jp/krmmk3/e/6921ab5aaf71da8a280ecbb54cf5197e」に書かれたように、CUDAのエンコード速度自体はストリーミングプロセッサ数で決まります。
GeForce 9400はストリーミングプロセッサ数が16なので、badaboom 1.0 の1280x720 Baseline Profileでも6fps位だろうと推定されます。(8600GTの半分)
今回のテストは badaboom 1.1 の1440x1080なのでここから更にfpsが下がるわけで、4.6fpsは順当でしょうね。

で、問題のWindowsの速度低下ですが、私のテストではSP数が32のGeForce8600GTで、且つDirectXに画面描写を頼っているAeroのVistaでも、エンコード中、特に速度低下を感じたことはありませんでした。
一応テストで解像度の設定を下げてみたりしましたが、1fps変わるかどうかといったところで、CUDA側に有利な効果があると言い切れるほどではありませんでした。

過去のペガシスのインタビューなどから判明しているのですが、CUDAはエンコード対象のフレーム画像をメインメモリとGPUのVRAM(フレームバッファ、とは言わないか)の間で頻繁に転送するため、動画エンコード処理ではハードウェア側のバス転送速度がボトルネックになりやすい様です。

今回テストしているGeForce9400は、チップセット統合型であるため、

1)チップセットが使用するバス幅の内、大半がCUDA処理に回されてしまい、通常チップセットとGPUが分かれている状況で発生しないと思われる、OS処理とCUDA処理のバス帯域幅の食い合いが起きているのではないか
2)VRAMが独立しておらず、エンコードの元データをメインメモリに配置後、それをVRAMとして使用しているメインメモリの別な場所へ転送する必要があり、その転送でメインメモリの帯域幅を本来の半分の幅でしか使用できず(InとOutを同じメモリバスで同時に行う必要がある、グラフィックカードが独立の場合、InかOutの片方向のはず)、通常処理のメモリアクセスを圧迫する
3)本来のチップセットの仕事がCUDA処理が忙しい関係で疎かになってしまう

といった問題が発生しているのではないか、と私は考えています。

仮にストリーミングプロセッサ数が16と同じGPU(例えば8500GTとか)でも、PCI Express接続の独立したカードなら、統合型GPUより快適に使用できるのではないか、と推測されますが、どうでしょうか。
返信する
Unknown (Unknown)
2009-01-08 04:25:59
私も同じ事を書こうと思ったらすでに書いてありましたねw
以前AviutlのフィルタでGPGPU対応のものがあり690Gのオンボで試してみた所、正に今回のエントリの状態でした。
ウィンドウの移動もままならないというかほとんど操作不能でしたw
そしてこれ自体はVGAの性能の問題ではなく、オンボードVGAはVRAMをメインメモリからシェアしているので如何にHTのような高速なバスでやり取りしていても帯域が足りないのは明白ですね。
現在メインマシンを790GX+Phenomに変えたのでまたやってみますが多分同じ結果でしょう。
返信する
Unknown (arpus)
2009-01-08 10:07:52
あけましておめでとうございます.
私は拡張VGAカード派なのでオンボVGAの話はあまり把握していませんが、N.Shim@さんの仰るとおり表示処理が食われたと言うよりはメモリバンド周りの負荷の増大が原因ではないかと思います。
確かに3D処理とCUDA/PhysXはリソースの奪い合いになるのが事実のようですが、お使いの環境がWinXPなので2D描画を3D処理で行われてもほとんどはメモリ転送にしか費やされないと思います。
むしろホストメモリの帯域よりは遅いPCIex経由の方が、ホストメモリをシェアする統合型VGAよりメモリアクセスの負荷は少なくなるのではないでしょうか。
それだけBadaboomが性能を生かし切っているとも言えますが、ロードバランシングの設定なども欲しくなりますよね。
返信する
Unknown (Unknown)
2009-01-08 16:35:26
ご存知だとは思いますが
TMPGEnc4.0XPressでのCUDA使用はフィルタ処理のみ(しかも比較的重い処理のみ)なので、インタレ解除くらいでしたらCUDAは使いません。
ノイズ除去+輪郭強調+スマートシャープくらい使えば差が出るかもしれません。
返信する
TMPGEncのCUDA判定 (N.Shim@)
2009-01-08 19:12:16
TMPGEnc4.0XPressは私も使用していますが、インタレース解除と音声ボリューム調整、リサイズだけでCUDAのパーセンテージが処理の30%~60%になる場合があります。
(Phenom X4 9850BEとGeForce8800GTの組み合わせ)

TMPGEnc4.0XPressはCUDA導入時にベンチマークを行う作りになっており、それぞれのフィルタ処理をCUDAに回すかどうかは、ハードウェア環境毎、CPUで行う方が速いかCUDAで行う方が速いかでまちまちです。

krmmk3さんの環境のように、ベンチマークの結果明らかにCPUに任せた方が良い環境では、0%になる、ということでしょう。
返信する
Unknown (Unknown)
2009-01-08 21:42:35
TMPGEnc4.0XPressでのCUDA使用時の挙動に関するような論議は場違いなので避けます。
krmmk3さんの環境において元記事の「GeForce9400のCUDAでも爆速エンコード?したい」に対しての進言でしたのであしからず。
返信する
Unknown (krmmk3)
2009-01-08 22:26:33
結構書き込み、来てますね~。

>emanonさん
GeForce9400がHyblidSLIをフルサポートしてくれればいいんですけどね。手持ちのマザーだと、8200で他のGeForceいれて試そうかな、と思ってます。

>貧乏おたくさん
傑作というよりヌケ作というべきかと(笑) 至難の業はちょっといいすぎですけど、打ち込んだ文字が遅れてモヤモヤと出てくる様はやっぱり扱いにくいです。

>N.Shim@さん
おっしゃるとおり、そういう感触を感じましたのでそう書きました。はじめのうちはそれでもそこそこ動くんですよ。ただ、その時は5.4fpsくらい出ているんですね。いよいよエンコードが佳境に入って限界の4.6fpsになると、もう描画が遅くて遅くてという感じで・・・。やっぱメモリの問題ですかね。

>2009-01-08 04:25:59さん
AviutlのGPGPUフィルタというのは初耳ですね。そんないいものがあったのですか。でも、やっぱりオンボードだと荷が重いのですかね。メモリの問題だとしたら、LFBのある790GXは少しマシかも。

>arpusさん
書いているうちに、メモリを使い切っている方が大きいかなぁという気がしてきました。だけど、結果として他の作業に支障が出るほど遅くなる、ということは変わらないんですよねぇ。

>2009-01-08 16:35:26さん
2009-01-08 21:42:35で書かれた方も同一だと思われますので、そちらに関しても返事をします。TMPGEncも別に場違いではないですよ。今回はCUDAの話ですから。
どちらかというと、CPUだけでやってもGeForce9400のCUDAよりは速いですよ、TMPGEncをつかったけど、CUDAは関係していませんよ、というニュアンスで書いたのもまた事実ですが、あまりお気になさりませんように。
記事のタイトルはASCII.netの「CUDA+TMPGEncで爆速エンコード!?」を意識しただけですので、あまり意味はないです。
返信する

コメントを投稿

意味なしレビュー」カテゴリの最新記事