GNU C++ の SSE SSE2 および SSE3 [closed] 質問する

GNU C++ の SSE SSE2 および SSE3 [closed] 質問する

GNU C++ で SSE、SSE2、SSE3 を習得するための簡単なチュートリアルはありますか? SSE でコードを最適化するにはどうすればよいでしょうか?

ベストアンサー1

申し訳ありませんが、チュートリアルについては知りません。

最善の策は (私見ですが)、Intel が提供する (一般的には) 単一の SSE 命令をラップする「組み込み」関数を介して SSE を使用することです。これらは、*mmintrin.h という名前のインクルード ファイルのセットを介して利用可能になります。たとえば、xmmintrin.h はオリジナルの SSE 命令セットです。

Intelの最適化の内容を理解し始める参考マニュアルは良いアイデアです (組み込み関数の例についてはセクション 4.3.1.2 を参照)。また、SIMD セクションは必読です。命令セットのリファレンス マニュアルも非常に役立ち、各命令のドキュメントには、対応する「組み込み」関数が含まれています。

するコンパイラーが組み込み関数から生成したアセンブラーの検査 (多くのことを学ぶことができます) とプロファイリング/パフォーマンス測定 (労力に見合うだけの成果のない SSE コードの時間の無駄を避けることができます) に時間を費やしてください。

2011-05-31 更新:Agner Fogの「組み込み関数とベクトル化」には、非常に優れた解説があります。最適化PDFありがとう)少し広範囲に及んでいますが(例えば、最初の1つおよび第5条二つ目)。これらは厳密にはチュートリアル資料ではありませんが (実際、「これらのマニュアルは初心者向けではありません」という警告があります)、SIMD (asm、組み込み関数、またはコンパイラのベクトル化を介して使用されるかどうかに関係なく) を、より大きな最適化ツールボックスの 1 つの部分として正しく扱っています。

2012-10-04 更新:素敵なLinuxジャーナルの記事gccのベクトル組み込み関数についてはここで触れておく価値がある。SSEだけでなくより一般的なもの(PPCとARM拡張もカバー)。最後のページ、それが私の注目を集めたインテルの「イントリンシックガイド」

おすすめ記事