x265 ビルド msys2 gcc版 (AVX512対応)

これまでは、x265はVisual Studioでビルドしていたのだけど、AVX512対応版をビルドしようとするとなぜかうまくいかないため、gccでビルドすることにした。

2018/4/14 19:43にx265 2.7+336をここで紹介するgccでプロファイルによる最適化を実施した実行ファイルに差し替えました。




準備



msys2を使うと、非常に簡単にgccによるビルド環境が作れるので、それで。

そのほか、mercurial(hg)とcmakeをインストールしておく。

msys2
cmake
mercurial




msys2を最新へ。

まず、msys2のインストールフォルダにあるmsys2.exeを起動して、コアとパッケージシステムを更新。

pacman -Syu


一度、msys2.exeを再起動した後、残りを更新する。

pacman -Su


gccビルド環境と、そのほかx265のビルドに必要なものをインストール。

pacman -S base-devel
pacman -S mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain
pacman -S nasm


一度msys2を終了する。

msys2のインストールフォルダには、
・msys2.exe
・mingw32.exe
・mingw64.exe
があるのだけど、32bit向けのコンパイルをしたい場合にはmingw32.exe、64bit向けのコンパイルをしたい場合にはmingw64.exeを起動すれば、自動的にそれ向けに環境が整備されて、あとは普通に gcc とかをたたけばよい。

このあたり、msys2はわかりやすくて非常に良い感じ。

あとは、プロファイル用の入力ファイルをy4m形式で作成しておく。

ffmpegでy4mを作る場合、
ffmpeg.exe -y -i <ソース動画> -an -pix_fmt yuv420p -f yuv4mpegpipe -frame 30 <出力.y4m>
とかで作れば良いと思う。



ビルド



msys2環境向けに、x265実行ファイルを作成するためのスクリプトを作ったので参考にしていただければ。
build_x265.sh

スクリプトの上のほうにある、

#cmake.exeのある場所
CMAKE_DIR="/C/Program Files/CMake/bin"
#hg.exeのある場所
HG_DIR="/C/Program Files/Mercurial"
#プロファイル用のソース
Y4M_PATH=$HOME/sakura_op_cut.y4m

を自分の環境にあったものに変更してから、実行すれば、

$HOME/build_x265/{x86, x64}/x265/build/msys/8bit

以下に x265.exe が作成される。(multilibバイナリでも8bitのフォルダの下に作成される)

このスクリプトは32bit/64bit両対応で、mingw32.exeのシェルで実行すればx86(32bit)版が、mingw64.exeのシェルで実行すればx64(64bit)版がビルドできる。

x86版(32bit向け)は普通の8bitのみの実行ファイルだが、x64版(64bit向け)はgccのプロファイル付き最適化を使用したmultilib(8bit+10bit+12bit)の実行ファイルができる。

flto(プログラム全体の最適化)もやってみたのだけど、うまくいかない(リンクでこける…)のであきらめ。



fprofiled(プロファイルによる最適化)の効果



実験環境
i9 7980XE (18C/36T, 4GHz、AVX offsetなし)
電源設定: 高パフォーマンス

Aviutl 1.00
x265guiEx 3.67v2
x265 3.6+336 (fprofiled あり版 と なし版)

x265オプション
--crf 21 --preset <各種プリセット> [--output-depth 10] --asm avx512

ソース
sample_movie_1080p.mpg (1920x1080, 29.97fps, 5203frame, 2分53秒)



fprofiledの最適化は、gccでもきちんと効果があるみたいで、3~5%ほど改善している。


スポンサーサイト



コメントの投稿

非公開コメント

プロフィール

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出力

svtAV1guiEx (ミラー)
- SVT-AV1によるAV1出力

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