Chiharu の日記

絵描き C/C++ プログラマーの日記です。

Parallel force - パラレル・フォース 〜計測まとめ

これまでの高速化の軌跡を、Core i7 870 と Atom D330 とでまとめてみました。

項目i7 860 (fps)D330 (fps)概要
オリジナル152.3単一スレッド処理
並列化627.1複数スレッド処理
並列化 (2)707.6複数スレッド処理 + ループ展開
並列化 (3)818.5複数スレッド処理 + ループ展開 + ブレンド処理最適化 (C++)
並列化 + SIMD12514.1複数スレッド処理 + ループ展開 + ブレンド処理最適化 (SSE2)
並列化 + SIMD (2)16619.2複数スレッド処理 + ループ展開 + ブレンド処理最適化 + 読み込み処理最適化 (SSE2)
Atom が遅い、のは当たり前として。Atom の方は結構、面白い傾向がありますね。
D330 は論理コアの数が 4 なのですが、物理コアは 2 コア (SMT 有) です。上記『オリジナル』と『並列化』の比が 3 倍以上となっていることから、SMT の効果が 1.5 倍分は効いていることになります。SMT おそるべし。Atom はインオーダー実行なので、よほど Atom に特化して最適化されたコードでないと、単一スレッド処理では実行ユニットがひまひまなのかも。アウトオブオーダーの代わりに SMT 用意したのだとすれば、それはちょっと正解かも、と思えるくらいの速度比です。
さらに D330 は SSE2 を使ったときの速度向上っぷりが半端でないです。上記『並列化 (3)』と『並列化 + SIMD (2)』の速度比が 2.25 倍となっており、SSE2 さいこーって状態です。(それでも、i7 870 の『オリジナル』をやっと超える程度の速度なんですけれど…)
Atom はなかなか面白いプロセッサだと思ってます。踏ん張れば、Core i7 の 1 コア分くらいの働きをするプロセッサということです。