Libreria SIMD C ++ [chiuso]


14

In passato ho usato Visual Studio con la libreria matematica DirectX XNA. Ora sto usando la raccolta di compilatori GNU. Qualcuno può consigliare una libreria matematica SIMD con una buona documentazione?

Risposte:


15

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


Grazie, ma non ho tempo di fare tanta routine.
itun

Forse la prossima volta, non è così difficile come sembra;). Tuttavia ho aggiunto alcuni link in basso che potrebbero aiutare.
Valkea,

Risposta ordinata. La matematica SIMD è divertente. Ricordo i giorni in cui stavo usando SSE per accelerare il raytracing. Ma perché giocare a un piccolo giocattolo, se abbiamo GPGPU ora :)
Notabene,

3

Entrambi questi lib di vettore / matrice hanno un codice SSE2 ottimizzato, Sony ha anche uno switch di compilazione Altivec per PowerPC:

  1. Vectormath di Sony SSE2 e Altivec

  2. Bullet's Linearmath SSE2


1
Entrambi i collegamenti sono morti.
vexe

1

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


L'ho visto, ma come compilarlo non ho capito
itun

3
Invece di scaricare semplicemente un collegamento per il download, forse un collegamento al sito Web effettivo con la documentazione, il wiki e il riferimento API potrebbe essere più utile. bulletphysics.org
Bob Somers,

@Bob volevo solo esprimere quel link per il download dato che ci vuole solo un po 'di tempo a trovare simdvectormathfile specifici in file bullet
Ali1S232,


0

AMD ha il progetto SSEPlus open source , anche se non l'ho mai usato, quindi non posso commentare la sua qualità o applicabilità.


0

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.