PMD_MT 高速化版+4

主にAMD向けの更新 & 昨日の記事の続き。

更新内容は、

・AVX+FMA3の組み合わせでは256bit演算でなく、128bit演算を使用するように
AVX+FMA3の動作するSteamroller上ではそのほうが高速

・AVX+FMA4の組み合わせも追加、Bulldozerでも (たぶん) 高速化
持ってないので動作確認してないけど、たぶんちゃんと動くはず…

このまえの記事の続き。

AMDのSteamrollerなどでは256bitの浮動小数点演算に対応はしていても内部的には128bit×2の演算しかできないのであれば、わざわざ256bit演算を使う必要はないのではないか、と予想したのだけどそれの検証。

浮動小数点演算部分をAVX+FMA3(256bit)で行うか、AVX+FMA3(128bit)で行うか、で比較。2つの差は図にすると下みたいな感じ。(左:256bit, 右:128bit)

pmd_mt_7850K_256bit_vs_128bit_image



環境
A10-7850K (2M/4T, Core 4.4GHz @ 1.41~1.47V)
DDR3-2496, 2ch, 16GB, 11-13-13-31-2
Asrock FM2A88ITX-X+

Win7 x64
Aviutl 1.00

対象: 1280x720p, 2048フレーム

以下、1フレームあたりのPMD_MT単体の処理速度(2048フレームの平均)

PMD_MTは「修正PMD」「useExp」の2つのオプションがあるので、2x2=4通りあるのだけど、ここでは修正PMDはオンとして、useExpを「オフ」でのかかった時間を測った。

結果
pmd_mt_7850K_256bit_vs_128bit

AVX/FAM3の256bitとAVX/FMA3の128bitを比べると、AVX/FMA3の128bitのほうが速い。予想通り、A10-7850Kでは256bit演算を使うよりも128bit×2でそのまま演算したほうが高速なようだ。

Intel CPUにようにちゃんと256bit演算が高速であれば、256bitで計算したほうが128bitを2回するより速いはずなのだが…こうしてみるとAMDのAVX(256bit)対応は、単に「256bit演算も一応できないことはない」ということであって、それ以上の意味は無いのかな、と思う。

AMDも次世代はちゃんとシングルスレッド性能やSIMD性能を上げて欲しいけど…



あと、BulldozerはFMA3には非対応で、FMA4というのにしか対応していないようなので、AVX+FMA4の組み合わせも追加しておいた (確認はできないけどたぶんちゃんと動くはず)。このAVX+FMA4はFMA3/FMA4両対応となっているSteamrollerではなぜか若干遅いので(上の図にある通り)、FMA3に対応していればAVX+FMA3が優先的に動くようにしてある。



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



スポンサーサイト



コメントの投稿

非公開コメント

No title

AMD的には、SIMDはHSA使えって事なんでしょうけどね。
HSA使って、何処までパフォーマンス出るか、分かりませんが。。。
というか、相変わらずAMDがHSA!HSA!って叫んでるだけで、
イマイチ動き有りませんが、どうなんでしょ?

Bulldozer系は・・・まぁ・・・ごめんなさいって感じでしょうか(苦笑

Re: No title

まあ、おっしゃるとおり重い計算はHSA使ってGPUでやってほしいってことなんでしょうけど、HSAの普及はいまのところ進んでなさそうですよね。

なにか一般的なソフトで対応が進めばまた変わるかもしれませんが。
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先: rigaya34589@live.jp
github twitter

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

○Aviutl 出力プラグイン
x264guiEx 3.xx
- x264を使用したH264出力
- x264guiExの導入紹介動画>
- x264guiExの導入
- x264guiExのエラーと対処方法>
- x264.exeはこちら>

x265guiEx
- x265を使用したH.265/HEVC出力
- x265guiExの導入>
- x265.exeはこちら>

QSVEnc + QSVEncC
- QuickSyncVideoによるHWエンコード
- QSVEnc 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC
- NVIDIAのNVEncによるHWエンコード
- NVEnc 導入/使用方法>
- NVEncCオプション一覧>

VCEEnc + VCEEncC
- AMDのVCE/VCNによるHWエンコード
- VCEEnc 導入/使用方法>
- VCEEncCオプション一覧>

svtAV1guiEx
- SVT-AV1によるAV1出力
- svtAV1guiExの導入>
- SVT-AV1単体はこちら>

VVenCguiEx
- VVenCによるVVC出力
- VVenCguiExの導入>

ffmpegOut
- ffmpegを使用した出力
- ffmpegOutの導入>


○Aviutl フィルタプラグイン
自動フィールドシフト (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: aji様

clfilters 
- OpenCLベースの複数のGPUフィルタ集
- 対応フィルタの一覧等はこちら

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

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

PMD_MT
- SSE2~AVX512による高速化版
- オリジナル: スレ48≫989氏

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

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

○その他
Amatsukaze改造版
- AmatsukazeのAV1対応版

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 (ミラー)
SVT-AV1 (ミラー)

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

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

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