En el pasado, he usado Visual Studio con la biblioteca matemática DirectX XNA. Ahora, estoy usando la colección del compilador GNU. ¿Alguien puede aconsejar una biblioteca matemática SIMD con una buena documentación?
fuente
En el pasado, he usado Visual Studio con la biblioteca matemática DirectX XNA. Ahora, estoy usando la colección del compilador GNU. ¿Alguien puede aconsejar una biblioteca matemática SIMD con una buena documentación?
También puede hacerlo "usted mismo" utilizando las instrucciones SSE (Extensiones SIMD de transmisión) y los elementos intrínsecos (archivos * mmintrin.h) de su compilador / proc.
Tutoriales
Aquí hay un ejemplo de cómo usar las instrucciones SSE con el ensamblaje:
http://neilkemp.us/src/sse_tutorial/sse_tutorial.html
Y aquí hay un tutorial sobre cómo usar las instrucciones SSE con intrínsecos:
http://www.codeproject.com/KB/recipes/sseintro.aspx
Una guía práctica para usar SSE SIMD con C ++:
http://sci.tuomastonteri.fi/programming/sse/printable
Informaciones utiles
Referencia de Intel C ++ Intrinsics (útil para obtener la lista de instrucciones):
http://cache-www.intel.com/cd/00/00/34/76/347603_347603.pdf
SSE y SSE2 Soporte intrínseco para los conjuntos de instrucciones mejorados compatibles con los procesadores Intel y AMD (útil para todo tipo de información relacionada con SSE y SIMD):
http://msdn.microsoft.com/en-us/library/y0dh78ez%28v= vs.71% 29.aspx
Lista de instrucciones generales e información sobre SSE, SSE2, SSE3, SSSE3, SSE4, 3DNow, etc. (diferentes versiones de SSE para diferentes arquitecturas de proceso):
http://softpixel.com/~cwright/programming/simd/sse.php
Si prefiere un marco de álgebra lineal, le pregunté sobre Eigen:
http://eigen.tuxfamily.org/
http://eigen.tuxfamily.org/index.php?title=FAQ#Vectorization (sobre el soporte SIMD)
Y, por último, si necesita más respuestas sobre C ++ SIMD Frameworks, aquí hay un enlace StackOverflow . (Marco SIMD de C ++ SSE):
/programming/4953121/c-sse-simd-framework
Ambos vectores / matriz-libs tienen código SSE2 optimizado, Sony también tiene un conmutador de compilación Altivec para PowerPC:
Vectormath SSE2 y Altivec de Sony
Bullet's Linearmath SSE2
fuente
Creo que puede usar la biblioteca matemática de bullet, la bala en sí misma es un motor de física de código abierto y parece tener una poderosa biblioteca matemática al lado. Aquí hay un acceso directo para descargar el enlace http://sourceforge.net/projects/bullet/files/SIMD%20and%20amp_%20Vector%20Math%20library/simd%20math%201.02%20and%20vector%20math%201.01/simdvectormath.tgz /descargar
fuente
simdvectormath
de archivo específico en los archivos de balaAún no está aquí. Pero habrá una biblioteca boost.simd (con suerte). Echa un vistazo a esta presentación (dada la semana pasada en boostcon)
https://github.com/boostcon/2011_presentations/blob/master/thu/simd.pdf
fuente
AMD tiene el proyecto de código abierto SSEPlus , aunque nunca lo he usado, así que no puedo comentar sobre su calidad o aplicabilidad.
fuente
Si bien no está exactamente enfocado en usar SIMD, encuentro glm es una muy buena biblioteca matemática de propósito general cuando se trata de juegos. No admite matrices arbitrarias y similares, pero tiene características optimizadas para ser utilizadas con gráficos 3D y tiene características para habilitar SSE, así como algunas implementaciones más rápidas de algoritmos comunes.
Si bien está diseñado específicamente para usarse con OpenGL, he encontrado que es muy útil para una variedad de tareas. Utiliza mucho la sobrecarga del operador, lo que hace que sea muy fácil de usar y mantener el código que lo usa.
Se basa en el lenguaje OpenGL GLSL, que tiene una documentación muy sólida, y cualquier diferencia también está bien documentada.
fuente