No passado, eu usei o Visual Studio com a biblioteca de matemática DirectX XNA. Agora, estou usando a coleção de compiladores GNU. Alguém pode aconselhar uma biblioteca matemática do SIMD com uma boa documentação?
fonte
No passado, eu usei o Visual Studio com a biblioteca de matemática DirectX XNA. Agora, estou usando a coleção de compiladores GNU. Alguém pode aconselhar uma biblioteca matemática do SIMD com uma boa documentação?
Você também pode fazer isso "você mesmo", usando as instruções SSE (Streaming SIMD Extensions) e as intrínsecas (arquivos * mmintrin.h) do seu compilador / proc.
Tutoriais
Aqui está um exemplo de como usar as instruções SSE com montagem:
http://neilkemp.us/src/sse_tutorial/sse_tutorial.html
E aqui está um tutorial sobre como usar instruções SSE com intrínsecas:
http://www.codeproject.com/KB/recipes/sseintro.aspx
Um guia prático para usar o SSE SIMD com C ++:
http://sci.tuomastonteri.fi/programming/sse/printable
Informações úteis
Referência intrínseca do Intel C ++ (útil para obter a lista de instruções):
http://cache-www.intel.com/cd/00/00/34/76/347603_347603.pdf
SSE e SSE2 Suporte intrínseco aos conjuntos de instruções aprimorados suportados pelos processadores Intel e AMD (útil para todos os tipos de informações relativas ao SSE e SIMD):
http://msdn.microsoft.com/en-us/library/y0dh78ez%28v= vs71% 29.aspx
Lista de instruções gerais e informações sobre SSE, SSE2, SSE3, SSSE3, SSE4, 3DNow etc. (versões diferentes do SSE para diferentes arquiteturas de processos):
http://softpixel.com/~cwright/programming/simd/sse.php
Se você preferir uma estrutura de álgebra linear que ouvi sobre o Eigen:
http://eigen.tuxfamily.org/
http://eigen.tuxfamily.org/index.php?title=FAQ#Vectorization (sobre o suporte ao SIMD)
E, finalmente, se você precisar de mais respostas sobre os C ++ SIMD Frameworks, aqui está um link do StackOverflow . (Estrutura C ++ SSE SIMD):
/programming/4953121/c-sse-simd-framework
Ambas as bibliotecas de vetores / matrizes otimizaram o código SSE2, a Sony também possui um comutador de compilação Altivec for PowerPC:
Vectormath da Sony SSE2 e Altivec
Linearmath SSE2 da Bullet
fonte
Pensando um pouco, acho que você pode usar a biblioteca de matemática do bullet, o bullet em si é um mecanismo de física de código aberto e parece ter uma poderosa biblioteca de matemática ao lado. aqui está um atalho para baixar o link http://sourceforge.net/projects/bullet/files/SIMD%20and%20amp_%20Vector%20Math%20library/simd%20math%201.02%20and%20vector%20math%201.01/simdvectormath.tgz /baixar
fonte
simdvectormath
arquivo específico em arquivos de balaAinda não está aqui. Mas haverá uma biblioteca boost.simd (espero). Veja esta apresentação (dada na semana passada no boostcon)
https://github.com/boostcon/2011_presentations/blob/master/thu/simd.pdf
fonte
A AMD possui o projeto SSEPlus de código aberto , embora nunca o tenha usado, portanto não posso comentar sobre sua qualidade ou aplicabilidade.
fonte
Embora não esteja exatamente focado no uso do SIMD, acho que o glm é uma biblioteca matemática de uso geral muito boa quando se trata de jogos. Ele não suporta matrizes arbitrárias e similares, mas possui recursos simplificados para serem usados com gráficos 3D e possui recursos para ativar o SSE, além de algumas implementações mais rápidas de algoritmos comuns.
Embora tenha sido projetado especificamente para ser usado com o OpenGL, achei muito útil para uma variedade de tarefas. Ele usa muito a sobrecarga do operador, o que facilita muito o uso e a manutenção do código que o utiliza.
É baseado na linguagem OpenGL GLSL, que possui uma documentação muito sólida, e quaisquer diferenças também estão bem documentadas.
fonte