128bit-AVXをイントリンシック命令で使う

AVXは256bit演算(浮動小数点演算がメイン)で有名だけど、整数演算的には128bitAVXというのもあって、これまでのSSE系命令を3オペランドで記述できるので、少し高速化が期待できる…はず。

で、アセンブラは暗号にしか見えないので置いといて、イントリンシック命令から128bitAVXが使えるのか、そいで使えるなら効果はどれくらいなのかを試してみた。
結論から言うと、イントリンシック命令で書いてある場合、VC++2010のコンパイルオプションに/arch:AVXと書いてコンパイルし直すだけで128bitAVXを使ってくれる。(逆アセンブルから確認、AVXっぽい命令が出てた)

ちなみにVC++2008で同じ事やると"/arch:AVX"なんてコマンド知らんって怒られる。

さて、x264guiExの色変換の関数だけ切り出してVC++2010で速度測定用のプログラムを作って速度を比較してみた。

Core i5 2500 @ 3.8GHzで、1920x1080pを1フレーム変換するのにかかる時間を測った。(120フレームを変換するのを100回やってその平均をとる)

YUY2 → nv12
C言語  1.296ms
SSE2  0.488ms
+AVX  0.476ms (SSE2版比 +2.4% 高速化)

YC48 → nv12 (10bit)
C言語  4.178ms
SSE2  2.379ms
SSE4.1 1.346ms
+AVX  1.210ms (SSE4.1版比 +11.3% 高速化)

というわけで/arch:AVXでコンパイルすれば、128bitAVXを(まったく書きなおしていない)イントリンシック命令で使用出来て、少し効果があるっぽい、ということがわかった。

というかYC48→nv12のSSE2版あんま速くない…まあ適当だからしょうがないか…
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

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