QSVEnc 7.61

この前、Resizable BARがオフの環境では、QSVEncがなぜか非常に遅くなってしまうということを書いた。

ということで、今回はある程度対策がうまくいったのでQSVEnc 7.61として公開。



以下、下記の環境でテストを実施した。

環境: Win11 x64 / i9 12900K / Arc A380 (PCIe3x4) / 5186ドライバ / QSVEnc 7.61
入力ファイル: MPEG2 1440x1080 54433frames (約30分)
オプション: --avhw --icq 23
モニタリング: HWiNFO64, エンコード速度のみQSVEnc



Resizable BAR Onの状況



まず、Resizable BAR Onの時の状況を確認。

グラフは横軸がエンコード中の実時間、縦軸が左からエンコード速度(ピンク)GPUのクロック(水色)、右軸がMedia Usage(橙色)Copy Engine Usage(黄色)になっている。

QSVEnc_7_61_resizable_bar_on.png

エンコード速度(ピンク)は安定して430fps程度を維持できている。Media Usage(橙色)は100%に貼り付いていて、フル稼働していることが確認できる。意外なことにGPUのクロック(水色)は1400MHzで安定していて、Maxの2450MHzには到達していない。



Resizable BAR Offの状況



次に、Resizable BAR Offの状況を確認してみよう。

QSVEnc_7_60_resizable_bar_off.png

なかなかややこしい感じになっている。

エンコード速度(ピンク)は報告いただいた通り、最初だけ極めて速いものの、10秒程度で落ち込んで300fpsを切り、さらにしばらくすると100fps程度まで低下してしまう。その後、270fps前後と100fps前後をいったり来たりしている。

この300fps弱と100fps程度のエンコード速度差は、グラフから明らかにGPUのクロック(水色)と連動していることがわかる。また、Media Usage(橙色)は、最初以外は40~50%をうろうろしていて、エンコーダを十分に活用できていない。

Arc A380でGPUクロックが600MHzというのは最低クロックなので、この状態では高速にエンコードできず、さらにエンコーダ使用率も低迷することで速度が出なくなっていることがわかる。

不可解なのはCopy Engine Usage(黄色)で、最初の10秒以後は30~40%前後の使用率がある。これはResizable BAR Onのときはほぼずっと0%だったので、Resizable BAR Off特有の現象で、このあたりになんらかのボトルネックになっているなにかがあるのかもしれない。ただ、今回はhwデコードをしているので、コピー…といってもなにを…? という感じ。入力のMPEG2のデータの転送が遅い、とかだともうどうしようもない気がする。

ともかく、Resizable BAR Offだと

・Media Engineの使用率が低い(がなぜかCopy Engineは中途半端に高い)
・そのせいか、GPUクロックも低下し、GPUクロックが下がると明らかにエンコードも遅くなる

ことがわかった。



QSVEnc 7.61で回避



Resizable BAR Offの状況から、エンコード速度を上げるには

1. Media Engineの使用率を上げる
2. GPUクロックが下がらないようにする

のどちらかしかない。

Media Engineの使用率を上げるのが正攻法だが、Resizable BAR OffでMedia Engineの使用率がhwデコードでも下がる原因はまだよくわからないので、すぐにはどうしようもなさそう。

そこで、2.のGPUロックが下がらないようにすることを考えてみた。

基本的にはGPUの負荷が低いとGPUクロックが低下する傾向にある。

そこで、OpenCLで短時間の適当な計算して、定期的にわずかな負荷(デフォルトでは0.01%程度)をかけることにしてみた。QSVEnc 7.61ではdGPUでは(いくつかの条件を満たせば)自動的にこの機能がオンになり、速度低下を回避する。

QSVEnc 7.61での結果がこちら。

QSVEnc_7_61_resizable_bar_off.png

GPUのクロック(水色)が1400~2450MHzで推移し、600MHzまで低下することがなくなった。その結果、エンコード速度(ピンク)が270fps前後を安定して維持できるようになって、100fpsまで低下するようなことがなくなった。(やや不安定ではあるけど)

なお、デフォルトではこの機能はdGPU(Arc GPU)でOpenCLフィルタを使わない場合のみ有効。

強制的に有効にしたい場合は、"--avoid-idle-clock on"を指定してください。

また、逆に不要なので無効にしたかったり、わずかでも負荷を減らしたい場合は"--avoid-idle-clock off"を指定してください。



あとはそれでもResizable BAR Offだとまだかなり遅いのは事実。なぜこれほど効率が低下するのか、ということが本質ではあるので、そっちも調べて対策していきたいが、いまのところ難しそう。



※Aviutl向けには、Aviutl_QSVEnc_7.xx.zip をダウンロードしてください。
QSVEnc ダウンロード>>

QSVEncの導入

QSVEncCのオプションについてはこちら。
QSVEncCオプション一覧>


スポンサーサイト



コメントの投稿

非公開コメント

No title

前回A380の不具合について書き込んだ者です。
早速の対応ありがとうございます。
とても速くなって驚いております。
これからも楽しみにしながら応援しています!
ありがとうございました!

Re: No title

ありがとうございます。

やや謎の症状でしたが、無事クロック低下を回避して高速化されたとのことで、本当に良かったです。

No title

その後、なぜか速度低下してしまいました。
当初は270fpsほど出ていたのですが、エンコード開始後すぐに118fpsあたりまで低下するようになってしまいました。
設定は
-c av1 --avhw --icq 28 --gop-len 90 --tff --vpp-deinterlace normal --max-bitrate 4000


エンコード時のGPU-Zでの読みは
GPU Clock 1400-2450
Memory Clock 1950
GPU TEMP 51C
GPU CHIP POWER DRAW 26W
GPU LOAD 75%
でした。

エンコード後のTOTAL TIME LOGは
AMT [info] Total: 465.36s, FilterWait: 462.66s, EncoderWait: 0.05sとなっています。

以上レポートでした!
今後の開発にお役に立てれば幸いです!

Re: No title

GPUのクロックは維持できている(600MHには落ちていない)のかと思いますので、一応これでも多少は速度は出ているのかな、という状況と思います。

記事中ではhwデコードの例をお示ししていますが、Amatsukaze利用の場合、フレームをCPUから転送する必要なこともあり、Resizable BAR Offの速度低下の影響はより大きいかと思います。

手元のA380でも140fps程度まで低下しましたが、現状ではResizable BAR Offの状態に関しては、申し訳ないですがいろいろ調べたのですがお手上げに近い状態です。すみません…。

No title

さっそくお返事ありがとうございます。
わかりました!
これでしばらく使ってみます

動作報告

Intel Arc A380をResizableBARを有効に出来ない古いHWで使用している、古いハードウェアの愛好家です。
この記事で改良が行われたと知りまして、試しにQSVEncの新旧のみを変更して私なりにベンチマークを行いました。

環境:
Windows10Pro64bit(22H2に2月25日時点での最新のWindowsUpdateを適用したもの)
Xeon E5-2690(1CPU)/DDR3 4GB×4(Dual Channel)/1TB NVMe SSD/Intel Arc A380(ドライバは101.4826)
Amatsukaze0.9.1.3 + QSVEncC 7.48/QSVEncC 7.61
設定は
-c hevc --vpp-deinterlace normal --output-res 1920x1080 --cqp 24:26:28 --gop-len 6
使用動画は無作為に選び出した長さもサイズも異なるもの4本をキュー停止状態で一覧に放り込み、キュー開始トグルスイッチのOFF -> ONで4本一斉スタート

上記条件でQSVEncC 7.48ですと、QSVが4本同時に動いていて各スレッドのFPSの変動が安定した時は、1本辺り平均52fps/4本合計で210fps程度出ます(GPU使用率98%/VideoProceccing99~100%)。
これは当方の今までの普段の使い方の平均FPSとそう大きく乖離していない数字になります(4本同時実行は、当方のCPUとSSDの余力を使い切った性能限界でもあります)。
これをQSVEncCだけ7.61に置き換えて、十分なクールダウン時間を置いて行った場合、QSVが4本同時に動いていて各スレッドのFPSの変動が安定した時は、1本辺り平均75fps/4本合計で300fps程度となりました。

各スレッドの正確な処理時間の比較は当方の操作ミスにより1回目のログが消失したため計測できていないのですが、明らかに7.48よりもトータルの処理速度が改善いたしました。
解せないのは、7.48の時の方がGPU-Z読みでは動作クロックが高い位置にある時間が多かった気がすることです(完全なログが取れていた訳では無いので、飽く迄も「気がする」レベルです)。

以上です。
旧世代ハードウェアという大きな性能向上が見込めない資産でまだまだ戦える(気がする)喜びのあまり、つい長々と書き込んでしまいました。
旧資産を活かせるのはrigaya様の様な開発者様がおられるお陰です。
陰ながら応援しております。

No title

もしかしたらすでにご存じかもしれませんが、redditにhandbrakeによる検証のスレッドがありました
結果としてはresizeable BARをオフにすると速度は劇的に低下するというもので、スレッド主はメモリコントローラが原因ではないかと書いていました。
参考まで。
該当URL: https://www.reddit.com/r/handbrake/comments/189cgvp/intel_arc_h265_encoding_performance_and_resizable/


Re: No title

> NoResizableBAR_HW_user 様

詳細な動作報告ありがとうございます!

E5-2690、8コアなのですね。当時としてはすごいスペックです…。

ResizableBARを有効に出来ない環境でも最近の更新での高速化効果があったとのことで、わたくしとしても嬉しいです。(おそらくQSVEnc 7.59のCPU→GPU転送効率化のほうが効いていると思います)

> 2024-02-26(01:21) 様

Handbrakeでの情報を教えていただき、ありがとうございます。知らなかったので大変助かります。

Handbrakeでもやはり同様の傾向なのですね。QSVEncも7.61ではResizable BAR offで特にfpsが高い場合に大きく速度低下するというのは変わらないです。

Handbrakeでも同様となるとQSVEnc固有の問題でなく、Arc GPUの一般的な現象なのかもしれません。(スレッド主の指摘しているメモリコントローラが原因かは判別は難しいとは思いますが…)
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先: rigaya34589@live.jp
github twitter

最新記事
最新コメント
カテゴリ
月別アーカイブ
カウンター
検索フォーム
いろいろ
公開中のAviutlプラグインとかのダウンロード

○Aviutl 出力プラグイン
x264guiEx 3.xx
- x264を使用したH264出力
- x264guiExの導入紹介動画>
- x264guiExの導入
- x264guiExのエラーと対処方法>
- x264.exeはこちら>

x265guiEx
- x265を使用したH.265/HEVC出力
- x265guiExの導入>
- x265.exeはこちら>

QSVEnc + QSVEncC
- QuickSyncVideoによるHWエンコード
- QSVEnc 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC
- NVIDIAのNVEncによるHWエンコード
- NVEnc 導入/使用方法>
- NVEncCオプション一覧>

VCEEnc + VCEEncC
- AMDのVCE/VCNによるHWエンコード
- VCEEnc 導入/使用方法>
- VCEEncCオプション一覧>

svtAV1guiEx
- SVT-AV1によるAV1出力
- svtAV1guiExの導入>
- SVT-AV1単体はこちら>

VVenCguiEx
- VVenCによるVVC出力
- VVenCguiExの導入>

ffmpegOut
- ffmpegを使用した出力
- ffmpegOutの導入>


○Aviutl フィルタプラグイン
自動フィールドシフト (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: aji様

clcufilters 
- OpenCL/CUDAのGPUフィルタ集
- 対応フィルタの一覧等はこちら

エッジレベル調整MT (ミラー)
- エッジレベル調整の並列化/高速化
- SSE2~AVX512対応
- オリジナル: まじぽか太郎様

バンディング低減MT (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: まじぽか太郎様

PMD_MT
- SSE2~AVX512による高速化版
- オリジナル: スレ48≫989氏

透過性ロゴ (ミラー)
- SSE2~FMA3によるSIMD版
- オリジナル: MakKi氏

AviutlColor (ミラー)
- BT.2020nc向け色変換プラグイン
- BT.709/BT.601向けも同梱

○その他
Amatsukaze改造版
- AmatsukazeのAV1対応版

tsreplace
- tsの映像のみを置き換えて圧縮

rkmppenc
- Rockchip系SoCのhwエンコーダ

fawutil
- FAW(FakeAACWave)⇔aac変換
- 二重音声の取り扱いにも対応

x264afs (ミラー)
- x264のafs対応版

aui_indexer (ミラー使い方>)
- lsmashinput.aui/m2v.auiの
 インデックス事前・一括生成

auc_export (ミラー使い方>)
- Aviutl Controlの
 エクスポートプラグイン版
 エクスポートをコマンドから

aup_reseter (ミラー)
- aupプロジェクトファイルの
 終了フラグを一括リセット

CheckBitrate (ミラー, 使い方, ソース)
- ビットレート分布の分析(HEVC対応)

チャプター変換 (使い方>)
- nero/appleチャプター形式変換

エッジレベル調整 (avisynth)
- Avisynth用エッジレベル調整

メモリ・キャッシュ速度測定
- スレッド数を変えて測定
- これまでの測定結果はこちら

○ビルドしたものとか
L-SMASH (ミラー)
x264 (ミラー)
x265 (ミラー)
SVT-AV1 (ミラー)

○その他
サンプル動画
その他

○読みもの (ミラー)
Aviutl/x264guiExの色変換
動画関連ダウンロードリンク集
簡易インストーラの概要

○更新停止・公開終了
改造版x264gui
x264guiEx 0.xx
RSSリンクの表示
リンク
QRコード
QR