GHA Denoiserで最も時間のかかる一般化調和解析の処理の性能測定を行いました。
0.5秒のフレーム127個から、それぞれ100本、計12700本の正弦波を抽出しています。モジュールとデバイスを組み合わせて4ケーステストしました。結果を以下に示します。
ケース1
モジュール CPU
CPU Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz
抽出本数 12700
所要時間 10分52.197秒
単位時間あたりの抽出本数 19 [本/秒]
ケース2
モジュール CUDA2
CPU Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz
GPU GeForce GTX 580
抽出本数 12700
所要時間 1分41.410秒
単位時間あたりの抽出本数 125 [本/秒]
ケース3
モジュール CUDA2
CPU Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz
GPU GeForce GTX TITAN(CUDA-倍精度オフ)
抽出本数 12400
所要時間 1分53.407秒
単位時間あたりの抽出本数 109 [本/秒]
ケース4
モジュール CUDA2
CPU Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz
GPU GeForce GTX TITAN(CUDA-倍精度オン)
抽出本数 12600
所要時間 56.138秒
単位時間あたりの抽出本数 224 [本/秒]
デバイスごとの単位時間あたりの抽出本数と、CPUのみを使った場合を基準とする比率を下図に示します。
CPU単体とGeForce GTX TITAN(CUDA-倍精度オン)を比較すると、12倍程度の差が付いています。一方、TITANの倍精度をオフにすると、 GTX 580よりも若干遅くなります。おそらく700番台のGeForce GTXも同じ傾向になるでしょう。
なお、CUDA2モジュールをGeForce GTX TITANで動かすと動作が不安定になるようです。ケース3では3フレーム分、ケース4では1フレーム分の解析が抜け落ちています。
(※2013年6月3日追記: この不具合は、OpenMPでスレッド並列されたループ内でスレッドセーフではないbool型のvectorを使った事が原因でした。次回リリースでは修正します。)
