次期 SDPA のために Cell での様々な実験を行っている。ベクトルの内積計算は SIMD で相当速くできるはずなので、ちょっとした比較実験を行ってみた。実験の細部は結構いいかげんであるが。
○計算自体は簡単で a * a + b を計算する。
○変数は double と float を用いる
○上記の計算を 400万回繰り返した合計時間を測定する
PPE での計算
float の場合 : 17.136309 msec.
double の場合 : 16.553479 msec.
SPE (1個)での計算
float の場合 : 1.000001 msec.
PPE から見た実行時間 : 1.299747 msec.
double の場合 : 1.625001 msec.
PPE から見た実行時間 : 1.933592 msec.
結果
○やはり SPE での SIMD の方がはるかに速い
○しかも SPE 1個だけの結果である
○SPE での float と double の差が予想以上に少ない。double の計算は結構速い?
○PPE から SPE への DMA 転送等のオーバーヘッドは 0.3 msec. 程度
今後に期待がもてそうな結果である。測定した時間が正しければであるが。
実は float 変数2個を用いた float-float 計算はかなり遅かった。
○計算自体は簡単で a * a + b を計算する。
○変数は double と float を用いる
○上記の計算を 400万回繰り返した合計時間を測定する
PPE での計算
float の場合 : 17.136309 msec.
double の場合 : 16.553479 msec.
SPE (1個)での計算
float の場合 : 1.000001 msec.
PPE から見た実行時間 : 1.299747 msec.
double の場合 : 1.625001 msec.
PPE から見た実行時間 : 1.933592 msec.
結果
○やはり SPE での SIMD の方がはるかに速い
○しかも SPE 1個だけの結果である
○SPE での float と double の差が予想以上に少ない。double の計算は結構速い?
○PPE から SPE への DMA 転送等のオーバーヘッドは 0.3 msec. 程度
今後に期待がもてそうな結果である。測定した時間が正しければであるが。
実は float 変数2個を用いた float-float 計算はかなり遅かった。