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)

環境
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を「オフ」でのかかった時間を測った。
結果

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)からどうぞ。同じものです。
更新内容は、
・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)

環境
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を「オフ」でのかかった時間を測った。
結果

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)からどうぞ。同じものです。
スポンサーサイト