回答:
SSE(ストリーミングSIMD拡張)命令とコンパイラ/プロシージャの組み込み関数(* mmintrin.hファイル)を使用して、「自分で」実行することもできます。
チュートリアル
アセンブリでSSE命令を使用する方法の例を次に示します。http:
//neilkemp.us/src/sse_tutorial/sse_tutorial.html
そして、SSE命令を組み込み関数と共に使用する方法に関するチュートリアルがあります:http :
//www.codeproject.com/KB/recipes/sseintro.aspx
C ++でSSE SIMDを使用するための実用的なガイド:http :
//sci.tuomastonteri.fi/programming/sse/printable
役立つ情報
インテルC ++組み込みリファレンス(手順のリストを取得するのに役立ちます):http :
//cache-www.intel.com/cd/00/00/34/76/347603_347603.pdf
IntelおよびAMDプロセッサでサポートされる拡張命令セットのSSEおよびSSE2組み込みサポート(SSEおよびSIMDに関連するすべての種類の情報に有用):http :
//msdn.microsoft.com/en-us/library/y0dh78ez%28v= vs.71%29.aspx
SSE、SSE2、SSE3、SSSE3、SSE4、3DNowなどに関する全体的な指示リストと情報(異なるprocアーキテクチャの異なるバージョンのSSE):http ://softpixel.com/~cwright/programming/simd/sse.php
線形代数フレームワークを好む場合は、Eigenについて耳にしました:
http : //eigen.tuxfamily.org/
http://eigen.tuxfamily.org/index.php?title=FAQ#Vectorization(SIMDサポートについて)
最後に、C ++ SIMDフレームワークについてさらに回答が必要な場合は、StackOverflowリンクをご覧ください。(C ++ SSE SIMDフレームワーク):https :
//stackoverflow.com/questions/4953121/c-sse-simd-framework
これらのvector / matrix-libsは両方ともSSE2コードを最適化しており、SonyにはPowerPCコンパイルスイッチ用のAltivecもあります。
ソニーのvectormath SSE2とAltivec
Bullet's Linearmath SSE2
少し調べてみると、弾丸の数学ライブラリを使用できると思います。弾丸自体はオープンソースの物理エンジンであり、その横に強力な数学ライブラリがあるようです。ダウンロードリンクhttp://sourceforge.net/projects/bullet/files/SIMD%20and%20amp_%20Vector%20Math%20library/simd%20math%201.02%20and%20vector%20math%201.01/simdvectormath.tgzへのショートカットです。/ダウンロード
simdvectormath
は、弾丸ファイルで特定のファイルを見つけるのに少し時間がかかるからです
まだここにはありません。ただし、boost.simdライブラリが(できれば)存在します。このプレゼンテーションを見てください(boostconで先週行われました)
https://github.com/boostcon/2011_presentations/blob/master/thu/simd.pdf
SIMDの使用に厳密に焦点を合わせていませんが、ゲームに関してはglmは非常に優れた汎用数学ライブラリであることがわかりました。任意のマトリックスなどはサポートしていませんが、3Dグラフィックスで使用する合理化された機能があり、SSEを有効にする機能と一般的なアルゴリズムのいくつかのより高速な実装があります。
OpenGLで使用するように特別に設計されていますが、さまざまなタスクに非常に役立つことがわかりました。演算子のオーバーロードを頻繁に使用するため、それを使用するコードの使用と保守が非常に簡単になります。
これはOpenGL GLSL言語に基づいており、非常に堅実なドキュメントがあり、相違点も十分にドキュメント化されています。