自動フィールドシフト 高速化版+8

高速化版+8
もっと高速化。
afs_analyze_xxとafs_analyze_shrink_infoを統合

高速化版+7 (結局この時点では公開しなかった)
・VC++2012のWinXP互換ビルドに変更。
特に影響はないと思うけど、VS2012 Update1で利用可能になったので、念のため。

・popcntの確認をSSE4.2のフラグの有無で確認していたのを、正しくpopcntのフラグで確認するようにした。
AMD Phenom等における、「SSE4.2非対応だけどpopcntはある」ケースにも対応。

・メモリアクセスパターンを変更することで、HD映像処理向けの高速化。
詳細は続きに。

・AVX2対応の準備。
Haswell実機で確認後、AVX2対応版を公開できるかも?

x264のAVX2は意外と効果が小さいようで(+5%)残念だけど…afsはどうだろう…。まあ自分で試してみてなんぼですわな。



ダウンロード>>



続きに高速化の細かい話とか。




今回は、いくつかの関数のメモリアクセスパターンを変更した。

効果としては、
・主にHD映像において高速化が見込める。
・HDエンコ時に、自動フィールドシフト(afs) + QSVEnc + その他フィルタ無し、のようなエンコ時のafsの比重が非常に大きい場合、10~30%高速化。
・afs + x264guiEx + x264(preset=slow)だとx264の比率が大きいのでそんなでもない。ただ、afsがボトルネックとなり、CPUが遊んでいる場合には効果が大きく出ると思う。



afsには、メモリ空間に対し飛び飛びにアクセスする部分がある。こういった飛び飛びのアクセスは、非常に時間が掛かってしまう。

そもそも、(キャッシュに入っていない)メモリアクセスというのはとんでもなく遅い。メモリ上を飛び飛びにアクセスしていると特にひどい。

これに対し、オリジナルのafsでは、

・MMXの使用により、64bitまとめて処理
  →64bitずつのアクセスになり、メモリアクセスの回数自体が減る。

により高速化していたし、さらにこれまでの高速化版では、

1. SSEの使用により、128bitずつ処理
2. prefetch命令の挿入により、必要になる飛び飛びのメモリの断片を明示的に先読み

して高速化していた。prefetch命令の挿入は非常に効果が大きかった(高速化の1/3ぐらいはprefetch命令のおかげだった)。

しかし、いくら先読みしているとはいっても、煩雑な飛び飛びのアクセスをしていることには変わりなく、根本的な解決にはなっていない。

今回の高速化版では、なるべく連続的なメモリアクセスをするようにプログラムを変更した。こうすることで、
・prefetch命令不要
・効率的なメモリアクセス
となり、さらに高速化できた。

HD映像で効果が強く、SD映像の場合にはそれほど効果がないように思う。

SD映像の場合は1フレームのデータが小さいので、フレーム全体がキャッシュに乗りやすい。キャッシュに乗ってさえいれば飛び飛びのメモリアクセスもどうということはないので、もともと高速に処理されていて、今回のメモリアクセスパターンの変更が大きな意味を持たないのかな、と思う。

参考:
L1キャッシュ = 32KB/core
L2キャッシュ = 256KB/core
L3キャッシュ = 8MB/CPU (Core i7 2xxx/3xxxの場合)
YC48 SD = 720x480x6 = 約2MB
YC48 HD = 1440x1080x6 = 約9MB
YC48 fullHD = 1920x1080x6 = 約12MB


スポンサーサイト

コメントの投稿

非公開コメント

No title

いつもお世話になっておりますm(_ _)m

更新お疲れ様でした。rigayaさんの高速化版が出る度に更新し続け、以前は20fpsに届くかどうかだった処理速度が、ハードそのままで27fpsを超えました。今回の+8版導入以前が24fps前後でしたので、3fps程度高速化したことになります。

ひと通り試した限りではバグも確認されず、また当環境下においてコンスタントに実時間を切ってのx264エンコが実現し、壁をひとつ超えたような満足感でいっぱいです。本当にありがとうございました。

No title

いつも大変お世話になってます。

高速化版+6から+8に変更した所、x264(preset=slow)のアニメのエンコですが、22分30秒が20分38秒と、約10%も短縮されました。

ソフト側の最適化で高速化されるのは嬉しいですね。

これからも有難く使わせて頂きます。

No title

>may様
ご報告ありがとうございます。そう言っていただけると嬉しいです。

>dahlia様
x264のslowぐらいだとさほど効果でないかなと思っていたのですが、10%ほど速いということで、よかったです。

ばっちり速度向上!

いつもお世話になっております。



春先にWinXP SP3+PhenomⅡx6 1090T@3.6GhzからWin7 64bit SP1+FX-8350@4.5Ghzへと環境を新調しました。

それにより、フィルタ類の設定は未変更ながら、アニメのエンコードでは平均14→20FPSと速度が向上しました。



今回の自動フィールドシフト 高速化版+8の導入で


x264_r2273(10bit-depth_x64)では平均FPSは17→19弱へ
x264_r2273(8bit-depth_x64)では20→22と、当環境でも10%の速度向上が確認できました。


x264設定

--input-depth 16 --preset slower --crf 20 --ipratio 1.5 --qpmin 5 --qpmax 51 --qpstep 12 --qcomp 0.7 --no-mbtree --aq-mode 2 --aq-strength 0.05 --psy-rd 1.2:0.5 --scenecut 65 --keyint 240 --min-keyint 2 --deblock -1:-1 --partitions p8x8,b8x8,i8x8,i4x4 --ref 4 --colormatrix auto --colorprim auto --transfer auto



利用環境は

OS:Windows 7 Professonal 64bit
CPU:AMD FX-8350 @4.5Ghz(Vcore 1.425V)
M/B:ASUS Crosshair V Formula-Z(BIOS:1201)
RAM:A-DATA AD3U1600W8G11-2 (DDR3 PC3-12800 8GBx2)
G/B:SAPPHIRE RADION HD6870(GDDR5 1GB)
SSD:PLEXTOR PX-128 M5P


Aviutl 1.00+x264guiEX 1.72

MPEG-2 VIDEO File Reader(m2v.aui)+aacfaw.aui+FAW2aac.auo


自動フィールドシフト自動フィールドシフト 高速化版+6 → +8
リサイズフィルタ
NL-Means-Light for GPU TypeC
エッジレベル調整MT
WarpSharpMT
スムージングフィルタSIMD
バンディング低減MT SIMD



フィルタ類のセッティング次第では、ほぼリアルタイムエンコードが可能となりました、有難うございました。

Re: ばっちり速度向上!

Piledriver買われたんですね!x264が結構重そうな設定ですけど、それでも8コアと高クロックの合わせ技のためかリアルタイムエンコードも可能と、速いですね。…電圧高めな気がするんで、夏とか暑そうな気が…。

あと、afsがPiledriverなCPUでも10%ほど高速化したということで報告ありがとうございます。「afsで律速になってる」みたいなことを減らせればいいな、と思っています。

お疲れ様です

x264guiExと一緒にいつも有り難く利用させて頂いております。ありがとうございます。
ここで質問していいものかちょっと分からないですが、1つよろしいでしょうか。

x264guiEx+自動フィールドシフトの組み合わせでtc=onの場合、
作成後のmp4ファイルのタイトル(-nameオプション)が自動的に設定されてしまいます。
以前使用していたmp4boxでは、
"作業フォルダ\ソースファイル.nhml"が設定されていたファイルがありました。
ここを消したり任意の記述をしたい場合、
x264guiEx.iniのmuxする際のオプションを弄ればいいのはわかるのですが
tc2mp4modを使う場合の記述の仕方がよくわかりません。
base_cmdもex_cmdでも映像+音声の2トラック用のオプションを書くと、
音声なしの1トラックで出力する際エラーがでます。
今はex_cmdにそれぞれのオプションを記述していて切り替えて使用していますが、たまに忘れてしまいます。
チャプター自動出力を併用した上で、
もしもっとスマートな対処法がありましたらお教え下さい。

Re: お疲れ様です

対処法ですが、音声を追加するオプションを-Oのほうに含めてしまうと良いかと思います。

具体的には、[SETTING_MUXER_TC2MP4]の下をいじっていきます。

base_cmd=" %{vd_cmd} -o "%{muxout}" %{tc_cmd} -L "%{mp4muxerpath}" -O " %{au_cmd} -name 1=Video -brand mp42 %{ex_cmd} %{tmp_cmd} ""

とし、%{aud_path}を"-O"内に移しつつ、動画のタイトルを設定しておきます。

そして、

au_cmd="-add \"%{audpath}\":name=Audio"

として、音声のタイトルも設定します。

という感じでいかがでしょうか。音声があってもなくても対応できると思います。

No title

いつもお世話になっております。

i5-650@Win7x64にて今回の更新で0.2FPS向上しました。5分ソースで総エンコ時間は6.5秒の短縮です。

これだけ見ると大した事ないかもしれませんが、オリジナルの自動フィールドシフト→高速版&現行版x264guiEX使用の比較では「52%」も時間短縮されています!本当にありがとうございます。

来月Haswell移行の予定でしたが、もう少し大丈夫そうです(笑)

できました

>rigayaさま
アドバイス頂いたコマンドでばっちりでした。どうもありがとうございます。
これからも有り難く利用させて頂きたいと思います。

No title

>TKD42様
Haswell行っちゃいましょうよ~(笑)

冗談です。さほど性能上がらないかもですし、USB3.0バグもあるのでまだ様子見のほうがいいかもですね。

ともかく高速化、お役にたてているようで何よりです。


>firna様
うまくいってよかったです。mp4boxの自動で入れるやつはたしかに長すぎますよね…。
プロフィール

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