バンディング低減MT 高速化版+8

せっかくSkylake-Xがあるので、バンディング低減をAVX512に対応させてみよう、ということで、AVX512を使ったコードにしてみたのだが…。



環境は、こんな感じ。CPUのクロックは固定しないと、測定が安定しなかったので、クロックを完全に4.0GHzに固定してはかっている。

i9 7980XE (18C/36T)
CPU Clock 4.0GHz (Speed Step off, AVX2/AVX512 offset off)
Mesh Clock 3.0GHz
DDR4-3200, 4ch, 16-18-18-38-1
Aviutl 1.00 (スレッド数: 32)

こういう環境で、1080pのフレームをバンディング低減(range=31, mode=1)で256枚処理して、その平均の処理時間をとった。

以前導入した分割ブロックは横8x縦4の32ブロックを各スレッドに分配した。

VC2017 (15.5.6)
avx20.856 ms
avx5120.836 ms

AVX512にしてもたいして変わらん。

ただ、以前、VC++2017のAVX512のコード生成が怪しい、みたいなことがあって、そのせいかなーと思った。

しょうがないので、gcc 7.2.0でもコンパイルできるようにコードをなおして(結構面倒…)、もう一度測ってみた。

VC2017 (15.5.6)gcc 7.2.0
avx20.856 ms0.772 ms
avx5120.836 ms0.758 ms

AVX512、やっぱりたいして変わらん。

けど、まあ、VCよりは速くなったし、少しとはいえAVX512のほうが気休め程度速いので、とりあえずこれで。

※今回はAVX512 offsetを切ってるからいいけど、AVX512 offsetが発動してしまうと、AVX512のほうが遅くなってしまう説も…。うーん。



結局のところ、バンディング低減の場合、メモリのランダムアクセスが遅い原因で、別に演算が遅いわけではないので、AVX512にしてもたいして速くならないのかなあ、と思っている。

あと、AVX512の利点として32本になったレジスタというのがあるのだけど、それは64bitプログラムの話で、Aviutlは32bitなプログラムなので、たった8本しか使えない。

そのため、レジスタからあふれた大量の変数をメモリに退避したり、今度はそれをレジスタに戻したり、みたいなコードが大量に出ていて、AVX512のメリットを活かせていないというのも痛い気がする。32本使えれば、あそこまでひどいことにはなるまいに…。



バンディング低減 ダウンロード>>
ダウンロード (ミラー) >>
OneDriveの調子がいまいちの時はミラー(GDrive)からどうぞ。同じものです。

ソースはこちら


スポンサーサイト

コメントの投稿

非公開コメント

No title

>Aviutlは32bitなプログラムなので、たった8本しか使えない。

つまり、AviUtlを使わず64bit環境で実行できる状況にすれば改善の余地はあると・・・

ならばいっそご自身で開発されている、いろんなフィルター(プラグイン)とエンコードの実行のみ特化したソフトウェア(つまり一体型)を一つ用意されたほうがよいのかもしれないですね
一ユーザーである私としては、実行環境がAviUtlでなければならないわけではありませんし

(少し前に5chでどなたかが公開されたHWインターレース解除を利用可能にするプラグインを出されたときにも思っていたのですが、もうAviUtlでなければならない時代ではないかと)

Re: No title

Aviutlはどうしても2bitというデメリットがついて回るのは残念ですが、一方で(プラグインを含めて)機能が多彩でいろいろ便利なので使い続けています。編集とかしなければ、エンコードだけのソフトウェアでもよいのですが。

まあ、速度面のデメリットはそれほどクリティカルではないと思いますし、4Kぐらいまではいけるんじゃないでしょうか。

8Kは32bitプロセスのメモリ4GB制限のせいでもう無理でしょうけど…。

No title

>編集とかしなければ、エンコードだけのソフトウェアでもよいのですが。

この「編集」というのは、CMなどのカット編集などのことでしょうか?
CMカットなどは他のソフトのほうが使い勝手が良いので、AviUtlでしようと思ったことがないですね
(というか、CMカットするのが時間的、体力的に辛くなってきたのと、残しておいても別にいいやと思うようになってきたのもある)

今、私がAviUtlを使用する目的としては、必要な場合にあらかじめCMカットなどして中間出力したファイルをAviUtlに食わせて

・アナログ素材のみリンギング低減処理
・バンディング低減(必要な場合のみ)
・RadeonのHWインターレス解除
https://github.com/nekopanda/D3DVP
・x265によるエンコード(最終出力)

を一気通貫で実行してしまうくらいなものなので
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先(@を半角にしてください!)
rigaya34589@live.jp
github

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

○Aviutlプラグイン
x264guiEx 2.xx (ミラー)
- x264を使用したH264出力
- x264guiExの導入>
- x264.exeはこちら>

x265guiEx (ミラー)
- x265を使用したH.265/HEVC出力
- x265.exeはこちら>

QSVEnc + QSVEncC (ミラー)
- QuickSyncVideoによるH264出力
- QSVEncCはコマンドライン版
- QSVEncC 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC (ミラー)
- NVIDIAのNVEncによるH264出力
- NVEncCオプション一覧>

VCEEnc + VCEEncC (ミラー)
- AMDのVCEによるH.264出力

ffmpegOut (ミラー)
- ffmpeg/avconvを使用した出力

自動フィールドシフト (ミラー)
- SSE2~AVX2による高速化版
- オリジナル: aji様

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

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

PMD_MT (ミラー)
- SSE2~FMA3による高速化版
- オリジナル: スレ48≫989氏

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

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

○その他
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 (ミラー)

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

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

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