Risposte:
Puoi anche farlo "tu stesso" usando le istruzioni SSE (Streaming SIMD Extensions) e le informazioni intrinseche (* file mmintrin.h) del tuo compilatore / proc.
Esercitazioni
Ecco un esempio di come utilizzare le istruzioni SSE con assembly:
http://neilkemp.us/src/sse_tutorial/sse_tutorial.html
Ed ecco un tutorial su come usare le istruzioni SSE con intrinseci:
http://www.codeproject.com/KB/recipes/sseintro.aspx
Una guida pratica all'utilizzo di SSE SIMD con C ++:
http://sci.tuomastonteri.fi/programming/sse/printable
Informazioni Utili
Riferimento Intel C ++ Intrinsics (utile per ottenere l'elenco delle istruzioni):
http://cache-www.intel.com/cd/00/00/34/76/347603_347603.pdf
Supporto intrinseco SSE e SSE2 per le serie di istruzioni avanzate supportate dai processori Intel e AMD (utile per tutti i tipi di informazioni relative a SSE e SIMD):
http://msdn.microsoft.com/en-us/library/y0dh78ez%28v= vs.71% 29.aspx
Elenco di istruzioni generali e informazioni su SSE, SSE2, SSE3, SSSE3, SSE4, 3DNow ecc. (Versioni diverse di SSE per architettura proc diversa):
http://softpixel.com/~cwright/programming/simd/sse.php
Se preferisci un framework di algebra lineare che ho sentito su Eigen:
http://eigen.tuxfamily.org/
http://eigen.tuxfamily.org/index.php?title=FAQ#Vectorization (sul supporto SIMD)
E infine se hai bisogno di più risposte su C ++ SIMD Frameworks, ecco un link StackOverflow . (C ++ SSE SIMD framework):
/programming/4953121/c-sse-simd-framework
Entrambi questi lib di vettore / matrice hanno un codice SSE2 ottimizzato, Sony ha anche uno switch di compilazione Altivec per PowerPC:
Vectormath di Sony SSE2 e Altivec
Bullet's Linearmath SSE2
con un po 'di seraching penso che tu possa usare la libreria matematica di bullet, bullet stessa è un motore di fisica open source e sembra avere una potente libreria matematica accanto. ecco un collegamento per scaricare il collegamento http://sourceforge.net/projects/bullet/files/SIMD%20and%20amp_%20Vector%20Math%20library/simd%20math%201.02%20and%20vector%20math%201.01/simdvectormath.tgz /Scarica
simdvectormath
file specifici in file bullet
Non è ancora qui. Ma ci sarà una libreria boost.simd (si spera). Dai un'occhiata a questa presentazione (data la scorsa settimana su boostcon)
https://github.com/boostcon/2011_presentations/blob/master/thu/simd.pdf
AMD ha il progetto SSEPlus open source , anche se non l'ho mai usato, quindi non posso commentare la sua qualità o applicabilità.
Trovo che non sia esattamente focalizzato sull'uso di SIMD glm una libreria matematica per scopi generici molto buona quando si tratta di giochi. Non supporta matrici arbitrarie e simili, ma ha funzionalità semplificate da utilizzare con la grafica 3D e ha funzionalità per abilitare SSE, nonché alcune implementazioni più veloci di algoritmi comuni.
Sebbene sia progettato specificamente per essere utilizzato con OpenGL, l'ho trovato molto utile per una varietà di attività. Usa fortemente il sovraccarico dell'operatore che lo rende molto facile da usare e mantenere il codice che lo utilizza.
Si basa sul linguaggio OpenGL GLSL, che ha una documentazione molto solida e anche le differenze sono ben documentate.