Réponses:
Vous pouvez également le faire "vous-même" en utilisant les instructions SSE (Streaming SIMD Extensions) et les éléments intrinsèques (fichiers * mmintrin.h) de votre compilateur / proc.
Tutoriels
Voici un exemple d'utilisation des instructions SSE avec l'assembly:
http://neilkemp.us/src/sse_tutorial/sse_tutorial.html
Et voici un tutoriel sur la façon d'utiliser les instructions SSE avec intrinsèques:
http://www.codeproject.com/KB/recipes/sseintro.aspx
Un guide pratique pour utiliser SSE SIMD avec C ++:
http://sci.tuomastonteri.fi/programming/sse/printable
Informations utiles
Référence Intel C ++ Intrinsics (utile pour obtenir la liste des instructions):
http://cache-www.intel.com/cd/00/00/34/76/347603_347603.pdf
Prise en charge intrinsèque SSE et SSE2 des jeux d'instructions améliorés pris en charge par les processeurs Intel et AMD (utiles pour toutes sortes d'informations relatives à SSE et SIMD):
http://msdn.microsoft.com/en-us/library/y0dh78ez%28v= vs.71% 29.aspx
Liste d'instructions générales et informations sur SSE, SSE2, SSE3, SSSE3, SSE4, 3DNow, etc. (différentes versions de SSE pour différentes architectures de proc):
http://softpixel.com/~cwright/programming/simd/sse.php
Si vous préférez un cadre d'algèbre linéaire, j'ai entendu parler d'Eigen:
http://eigen.tuxfamily.org/
http://eigen.tuxfamily.org/index.php?title=FAQ#Vectorization (sur le support SIMD)
Et enfin, si vous avez besoin de plus de réponses sur les cadres SIMD C ++, voici un lien StackOverflow . (Framework C ++ SSE SIMD):
/programming/4953121/c-sse-simd-framework
Ces deux bibliothèques vectorielles / matricielles ont optimisé le code SSE2, Sony a également un commutateur de compilation Altivec pour PowerPC:
Sony vectormath SSE2 et Altivec
Bullet's Linearmath SSE2
par un peu de recherche, je pense que vous pouvez utiliser la bibliothèque mathématique de bullet, bullet lui-même est un moteur de physique open source et il semble avoir une bibliothèque mathématique puissante à côté. voici un raccourci pour télécharger le lien http://sourceforge.net/projects/bullet/files/SIMD%20and%20amp_%20Vector%20Math%20library/simd%20math%201.02%20and%20vector%20math%201.01/simdvectormath.tgz /Télécharger
simdvectormath
un fichier spécifique dans des fichiers à puce
Ce n'est pas encore là. Mais il y aura une bibliothèque boost.simd (espérons-le). Jetez un œil à cette présentation (donnée la semaine dernière à boostcon)
https://github.com/boostcon/2011_presentations/blob/master/thu/simd.pdf
AMD a le projet open source SSEPlus , même si je ne l'ai jamais utilisé, je ne peux donc pas commenter sa qualité ou son applicabilité.
Bien qu'il ne soit pas exactement axé sur l'utilisation de SIMD, je trouve que glm est une très bonne bibliothèque mathématique à usage général en matière de jeux. Il ne prend pas en charge les matrices arbitraires et similaires, mais il a des fonctionnalités rationalisées à utiliser avec les graphiques 3D et il a des fonctionnalités pour activer SSE ainsi que certaines implémentations plus rapides d'algorithmes courants.
Bien qu'il soit spécifiquement conçu pour être utilisé avec OpenGL, je l'ai trouvé très utile pour une variété de tâches. Il utilise fortement la surcharge de l'opérateur, ce qui le rend très facile à utiliser et à maintenir le code qui l'utilise.
Il est basé sur le langage OpenGL GLSL, qui a une documentation très solide, et toutes les différences sont également bien documentées.