自動フィールドシフト 高速化 (まとめ)

この前高速化版+10を公開したのだけど、自動フィールドシフト高速化で実際どのくらい速くなっているのか…という話。

環境
Win7 SP1 x64
Core i7 4770K (4C/8T @ 4.0GHz)
DDR3-2133 2ch 16GB (9-11-10-28-2)

Aviutl 1.00 (スレッド数:8)
m2v.aui 0.7.8

MPEG2, 1440x1080i, 10240frames

自動フィールドシフト設定
デフォルトに「映画/アニメ」プリセットを適用したもの
スレッド数:8

この設定で、ベンチマークプラグインで出力しつつ、所要時間を測定。要するに自動フィールドシフトの単体ベンチマークのようなもの。

いつもどおり一発勝負。



今回、上に書いたように自動フィールドシフトの単体の速度を測るだけでなく、所要時間を自動フィールドシフトの処理ごとに測定した。

1. 初期化
init

2. フレームの取得 (デコード、色変換、YUY2アップサンプリング)
get_ycp_cache

3. フレーム走査 (並列化部分)
scan_frame

4. 解析・フィルタリング・判定
count_motion
analyze_frame
analyze_map_filter

5. フィールドシフト・フレーム合成
blend

大雑把に言えば、この5つの部分に分けられる。




まずこれまで公開した高速化版の比較。

オリジナル(MMX)、高速化版+6、高速化版+8、高速化版+10で比較。

+8と+10のAVX版は共通(同じコード)。

1フレームにかかった平均処理時間をグラフにした。

afs_time_2

更新ごとに速くして行きましたよ~という図。

こうして見ると、薄いグレーの部分(scan_frame)や黄色の部分の高速化が目立つけど、それ以外も少しずつ高速化している。

自動フィールドシフトで並列化されている部分は薄いグレーの部分だけで、そこが最も高速化しているので、自動フィールドシフト単体としての並列化率は更新するたびに下がり続けている。

それでも実際に高速化版を使用するとCPU使用率が上がる事が多い。実際には自動フィールドシフト単体の使用なんてせずに例えばx264エンコをしたりする。なので、自動フィールドシフトの高速化によってx264により多くのフレームが渡されことになり、x264側のマルチスレッドが効くようになることで、エンコ中のCPU使用率が向上している(そして速くなる)のだと思う。



次に、高速化版 +10で、各高速化の段階ごとに比較。

afs_time_1

AVX2も「劇的」からは程遠いけど、確実に効果はある。



というわけで、だいたいこんなもんだし、もっといえばHaswellでこんだけ、という話。Ivy/Sandyだと似たような傾向だけど、XeonW3680(Westmere)ではこんなに高速化していなかったので、CPU・環境によって結構違うのかもしれない(原因不明)。

高速化を通じて、色々勉強になったし、大量のメモリアクセスは遅いということは身に染みた。

自動フィールドシフトという素晴らしいプラグインを開発・公開してくださったaji様、ありがとうございます。

また、公開初期の頃、いろいろバグがあって申し訳ありませんでした。ご指摘いただいた方々、あるいは高速化したよ、という報告をくださった方々、ありがとうございます。


スポンサーサイト

コメントの投稿

非公開コメント

No title

改めてrigayaさんを始めとする諸氏の方々に敬服致します。
発端は要望や自己満足から始まったであろう自分専用の産物を公開して頂き、たくさんの人達が享受を得られています。
長い年月を経て動作環境が変わっていく中で、ずっと第一線で使える為のソフトウェア更新の労力というのは本当に凄いものです。

少し本題からはそれますが、rigayaさんの書く文章(ブログ構成)って読みやすくて良いですね。それでは。

Re: No title

おっしゃるとおり、ついに1.00に到達したAviutlを開発されているKENくんさんを始め、各プラグインを開発してくださっている方にはほんと感謝です。

ブログ、読みやすいと言ってくださり、嬉しいです。今後も「見やすい」「読みやすい」は心がけて行きたいです。

※コメントが二重になっていたので、片方削除させて頂きました。

No title

以前、PhenomⅡ X4 940BEで、afs高速化版でクラッシュすると報告した者です。
大変遅くなりましたが、報告です。
(AMD 790GXのVGA + Win7 x64 SP1)
結果的に、afs_7.5a+6_SSE2only版もダメでした。

しかぁ~~し!!
afs_7.5a+8 を、試してみると、シークが明らかに軽くなって、
24分の地デジで、
1passは13.63fps→20.30 fps、
2passは 9.62fps→13.39 fpsに跳ね上がりました。

総エンコード時間 : 1時間47分56.3秒から
    ↓
総エンコード時間 : 1時間14分53.1秒へ。

HD→SDの場合も、かなり時間短縮!
素晴らしい~、感謝感謝!

Re: No title

こんなに高速化するとは…わたしも驚きです。やはりx264の負荷が小さい1pass目では効果が大きいですね。
プロフィール

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