2011-06-19 11 views
6

SSE2命令を使用したアルゴリズムの最適化に取り組んでいます。私は、パフォーマンスをテストしていたとき、しかし、私はこの問題に遭遇していますSSEプログラムは、IntelよりもAMDのほうがかなり長いです。

I)のインテルE6750

  1. 4回行う非SSE2アルゴリズムはSSE2アルゴリズム(プロセス1つの時間をやって14.85秒
  2. を取ります同じデータ))のPhenom II X4の2.8GHzの4をやって

    II 6.89秒かかります回非SSE2アルゴリズムは11.43秒

  3. を取る1時間を行うSSE2アルゴリズム(同じデータを処理)が

12.15秒かかりなぜこれが起こっている誰もが私を助けることができますか?私は結果について本当に混乱しています。

どちらの場合でも、フラグとして-O3を使用してg ++でコンパイルしています。

PS:このアルゴリズムは浮動小数点演算を使用せず、SSEの整数命令を使用します。

+0

同じバイナリで、CPUのクロックが高く( "Deneb"と仮定して)同じキャッシュサイズの場合、ほぼ2倍の長さですか?バマー。私が考えることのできる唯一のことは、この世代のIntel CPUと比較して、この世代のAMDプロセッサに3倍のレイテンシがあるためです(最新世代とは異なります)。他の指示には、確かにどこかのサイクルがあるかもしれませんが、すべてがすべて2倍の速度で動作するべきではありません。 (AMDプロセッサは "遅延を再フォーマットする"ことも知られていますが、float/intを混ぜ合わせていないので、それは問題ではありません) – Damon

+0

20%を超える差は奇妙に聞こえます。 AMD Phenomのバージョンは何ですか? L1/L2/L3キャッシュサイズ?アルゴリズムの実装とは何ですか? – alecco

答えて

3

インテルは、過去5年間にSSEの実装を大幅に改善しました。これは、AMDが実際に追いつかなかったものです。もともとはどちらも実際にはわずか64ビットの実行ユニットであり、128ビットの操作は2マイクロ・オペレーションに分割されていました。コアとコア2が導入されて以来、インテルのCPUは128ビットSSEを完全に実装しています。これは、128ビットのオペレーションが効果的に2倍のスループット向上(1マイクロopと2)を持つことを意味します。最近のインテルCPUには複数のSSE実行ユニットもあります。つまり、128ビットSIMD命令の場合、1クロックに1以上の命令を実行できます。

+0

うわー。私はCPUを昨年購入したときにこれがまったく違っているとは考えていませんでした=(今はHPCに入っていて、お金の違いを理解できるようになりました) –

+0

SSEを使用しているなら、非SIMDコードの場合、大きな違いはないかもしれませんし、インテルのCPUはかなり高価ですので、バング・ペッツ・バックはやや低下します。 –

関連する問題