Biblioteca SIMD C ++ [fechada]


14

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?

Respostas:


15

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


Obrigado, mas não tenho tempo para fazer tanta rotina.
itun 23/05

Talvez da próxima vez, não seja tão difícil assim;). No entanto, adicionei alguns links na parte inferior que podem ajudar.
Valkea 23/05

Resposta pura. Matemática SIMD é divertido. Lembro-me dos dias em que eu estava usando o SSE para acelerar o rastreamento de raios. Mas por jogar pouco brinquedo, se temos GPGPU agora :)
Notabene


1

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


Eu vi isso, mas como compilá-lo eu não entendia
itun

3
Em vez de apenas despejar um link de download, talvez um link para o site real com a documentação, wiki e referência da API possa ser mais útil. bulletphysics.org
Bob Somers

@Bob eu só queria expressar que link para download, uma vez que só tem algum achado tempo simdvectormatharquivo específico em arquivos de bala
Ali1S232


0

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.


0

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.