Biblioteca SIMD C ++ [cerrada]

14

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?

itun
fuente

Respuestas:

15

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

Valkea
fuente
Gracias, pero no tengo tiempo para hacer tanta rutina.
es
Tal vez la próxima vez, no es tan difícil como parece;). Sin embargo, agregué algunos enlaces en la parte inferior que podrían ayudar.
Valkea
Buena respuesta. Las matemáticas SIMD son divertidas. Recuerdo los días en que usaba SSE para acelerar el trazado de rayos. Pero, ¿por qué jugar a un pequeño juguete si ahora tenemos GPGPU :)
Notabene
3

Ambos vectores / matriz-libs tienen código SSE2 optimizado, Sony también tiene un conmutador de compilación Altivec para PowerPC:

  1. Vectormath SSE2 y Altivec de Sony

  2. Bullet's Linearmath SSE2

Maik Semder
fuente
1
Ambos enlaces están muertos.
vexe
1

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

Ali1S232
fuente
Lo vi, pero no entendí cómo compilarlo
es
3
En lugar de simplemente descargar un enlace de descarga, quizás sea más útil un enlace al sitio web real con la documentación, wiki y referencia de API. bulletphysics.org
Bob Somers
@Bob sólo quería expresar ese enlace de descarga ya que sólo requiere un poco de tiempo hallazgo simdvectormathde archivo específico en los archivos de bala
Ali1S232
0

AMD tiene el proyecto de código abierto SSEPlus , aunque nunca lo he usado, así que no puedo comentar sobre su calidad o aplicabilidad.

Bob Somers
fuente
0

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.

akaltar
fuente