Arc A380でのIntel Deep Link (Hyper Encode) の効果

QSVEnc 7.08の更新で、Intel Deep Link によるHyper EncodeがQSVEncでも使用可能になったので、今回は実際にその効果を確認してみる。
環境
CPUi9 12900K
コア数8P+8E / 24T
L2 Cache14MB
L3 Cache30MB
電圧Offset -0.13V~0.00V
PL1/PL2241W
tau56s
IccMaxUnlimited
メモリDDR4-3600 2ch
メモリ容量8GBx4
タイミング16-19-19-39-1
メモリコントローラGear1
iGPUIntel UHD Graphics 770 (32EU)
(ドライバ: 30.0.101.1191)
dGPUIntel Arc A380 (128EU)
(ドライバ: 30.0.101.3259 Beta)
マザーMSI MAG Z690 TOMAHAWK WIFI DDR4
冷却Corsair iCUE H150i RGB PRO (360mm)
電源Seasonic FOCUS PX-750
ケースThemaltake Core V71
OSWindows 11 22000


なお、Arc A380はCPU直結のPCIe4x8レーンを用いた。

エンコーダ
QSVEncC 6.08
QSVEncC 7.08+ (DG2用)

入力動画
MPEG2 1920x1080 29.97fps 5203frame
AvisynthのLWLibavVideoSourceで読み込み (SWデコード)



H.264でのHyper Encode



Hyper Encode onの場合、iGPU(内臓GPU)とdGPU(外付GPU)で同じオプションが必要になる。

今回の環境では、Arc A380がFFモードのみ対応、12900KがH.264のFFモードではBフレームに対応していない関係で、Hyper Encodeを使用しようとすると自動的にFFモードでBフレームが0になってしまう。

ということで今回は下のようなモードで速度をチェックしてみた。

・12900KのPGモード
・12900KのFFモード
・Arc A380のFFモード
・Arc A380のFFモード (Bフレーム0)
・Hyper Encode on (FF, Bフレーム0)

また、Hyper Encodeは、GOP長を短くし、内部バッファサイズである--async-depthを大きくするとより効果が出るとされているため、さらに"--gop-len 15 --async-depth 60"とした場合についてもチェックした。

仕様コマンドでまとめるとこんな感じ。

H.264 使用コマンド
qsv H.264 (-u 1:quality, 4:normal)
--icq <x> -u <1,4>

qsv H.264 FF (-u 1:quality, 4:normal)
--icq <x> -u <1,4> --fixed-func

qsv H.264 FF Bframe 0 (-u 1:quality, 4:normal)
--icq <x> -u <1,4> --fixed-func -b 0

qsv H.264 FF Hyper Encode on (-u 1:quality, 4:normal)
--icq <x> -u <1,4> --fixed-func --hyper-encode on

qsv H.264 FF Hyper Encode on GOPLen 15 (-u 1:quality, 4:normal)
--icq <x> -u <1,4> --fixed-func --hyper-encode on --gop-len 15 --async-depth 60



H.264 bitrate-fps
まずは縦軸をエンコード速度(fps)にとってエンコード速度を比較。

※凡例の □ をクリックすると、グラフ線のオン/オフができます。
※マウスをグラフの 〇 のところにあてると、値が確認できます。
グラフが表示されない場合は→こちら
Arc A380単体のH.264エンコードの速度はqualityで250fps前後、Bフレーム0では少し高速になり270fps前後。

ここからHyper Encodeを有効にすると逆に速度が下がって185fps前後となってしまう。

これはやはりGOP長(デフォルト=300)などが原因のようで、GOP長を15とし、--async-depth 60を追加したもの(GOPLen 15)では、330fps近く出ており、高速化できていることがわかる。

Hyper Encodeを活用しようとすると、GOP長と--async-depthに気を使わないといけないようだ。

なお、表にしは載せていないが、今回--async-depthを60以上にしてもほとんど効果はなかった。また、--gop-len 30では270~280fps前後となってしまい、Hyper Encodeの効果があまり見られなかった。



H.264 bitrate-ssim
このときの画質についてもチェックしてみた。

縦軸SSIMが高いほど画質がよく、横軸ビットレートが小さいほど圧縮できているので、左上にいればいるほど良いことになる。

※凡例の □ をクリックすると、グラフ線のオン/オフができます。
※マウスをグラフの 〇 のところにあてると、値が確認できます。
グラフが表示されない場合は→こちら
Hyper Encodeを使用する前のArc A380単体のFFモードに対し、Hyper Encode使用時はBフレームを0とする必要があるため、画質-容量比が一段低下してしまっているのがわかる。「Hyper Encode on」と「(Hyper Encodeを使用せず)Bframe 0」としたものがほぼ重なっていることから、Hyper Encodeそのものの圧縮効率への影響は小さいようだ。

一方、Hyper Encodeで速度を出すためにGOP長を15としたものは一段と画質-容量比が悪化している。GOP長を制限することによる影響は大きいようだ。



HEVCでのHyper Encode



HEVCでも同様にチェックしてみた。ただし、現時点のドライバ(3259 Beta)は、HEVCエンコードが不安定で、異常終了してしまうことがあり、サンプル点が足りていないため、グラフとして歪であったり、本来の実力かはわからない点に注意してほしい。

特に"-u 1" : quality は完走できないことが多すぎ、2-3点しかデータが得られずグラフを描くどころではないため、省略した。

なお、HEVCでは、H.264と異なりHyepr Encode使用時のBフレームに関する制約は存在しない。

HEVC使用コマンド
qsv HEVC
--icq <x> -u 4 -c hevc

qsv HEVC FF
--icq <x> -u 4 -c hevc --fixed-func

qsv HEVC FF Hyper Encode on
--icq <x> -u 4 -c hevc --fixed-func --hyper-encode on

qsv HEVC FF Hyper Encode on GOPLen 15
--icq <x> -u 4 -c hevc --fixed-func --hyper-encode on --gop-len 15 --async-depth 60

※ 10bitの場合には、さらに "--profile main10 --output-depth 10"を追加する



HEVC bitrate-fps
まずは縦軸をエンコード速度(fps)にとってエンコード速度を比較。

※凡例の □ をクリックすると、グラフ線のオン/オフができます。
※マウスをグラフの 〇 のところにあてると、値が確認できます。
グラフが表示されない場合は→こちら
こちらはH.264のときとは少し違う傾向で、単純にHyper Encodeを使用してもGOP長が長いまま(デフォルト=300)ではあまり効果が出ず、速度がほとんど変わらないことがわかった。

GOP長を制限した場合、HEVC 8bitでは大きな効果があり、約270fpsから約320fpsまで高速化しているが、HEVC 10bitでは約210fpsから140-190fps程度まで速度が低下してしまっている。とはいえ、現時点でHEVCエンコードは不安定で、特に10bitは安定していないため、真の実力ではないかもしれない。



HEVC bitrate-ssim
このときの画質についてもチェックしてみた。

縦軸SSIMが高いほど画質がよく、横軸ビットレートが小さいほど圧縮できているので、左上にいればいるほど良いことになる。

※凡例の □ をクリックすると、グラフ線のオン/オフができます。
※マウスをグラフの 〇 のところにあてると、値が確認できます。
グラフが表示されない場合は→こちら
注意点として、今回完走できたケースが少なく、サンプル点が少ないため、綺麗なカーブを描けていない。そのため、直線で引かれてしまっているところと、カーブをきれいに描けているところを比較するのは適切ではないので注意。

最も画質の良いのは12900KのPGで、Arc A380のFFはそれよりわずかに画質-容量比が低いだろうか。Hyper Encodeの有無による差はあまりなさそう(カーブが歪なのではっきりとはわからないが…

H.264のときもそうだったように、HEVCでもGOP長制限の影響は大きく、画質-容量比が悪化してしまっていることが確認できる。



というわけで、ひととおりIntel Arc A380を使った時のDeep Link (Hyper Encode)の速度と画質をチェックした。

Hyper Encodeを使用するには、Arc A380がプライマリGPUである必要があったり、Arc A380と内臓GPUが共通で使用できるエンコードパラメータである必要があるなど、制約が多く、癖が強い。

また、速度を引き出すにはGOP長を制限したりする必要もあり、こうした制約からどうしても画質が犠牲になる傾向がありそう。

今後内臓GPU側のQSVエンコーダもアップデートされ、Arc A380と同様のエンコーダとなれば、「内臓GPUと共通で使用できるパラメータ」は実質的に制約ではなくなるかもしれないし、面白い仕組みだと思うので、今後の進化にも期待したい。



まあただ、Hyper Encodeうんぬん以前に、HEVCについてはまずは安定して動くようになってほしいところ。(Arc A380のH.264は問題ないし、12900K内臓GPUのHEVCでも問題なく動作するので、アプリ側の問題ではないと思うのだが…) Betaでもいいので、ドライバの更新をお願いします…。
スポンサーサイト



コメントの投稿

非公開コメント

いつも興味深く拝見しております。
ドライバーが更新され、HEVCが以前より安定したかと思いますが、Hyper Encodeの性能が改善する可能性を見込んで、再検証されるご予定はございませんか?

Re: タイトルなし

Hyper Encodeについて、Arc A380ではいまでも微妙です。

ただ、どうもArc A380では高速化しないけれど、Arc A770とかでは高速化するようなのです。

下記urlのグラフ32,33などを参照ください。
https://pc.watch.impress.co.jp/docs/column/hothot/1445247.html

申し訳ないのですが、ちょっと追加でArc A770/750を買うのはRTX4080を買ってしまった関係でさすがに厳しいので、そちらの検証はできなさそうです。
プロフィール

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様

clfilters 
- OpenCLベースの複数の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対応版

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