Biblioteka SIMD C ++ [zamknięta]

14

W przeszłości korzystałem z programu Visual Studio z biblioteką matematyczną DirectX XNA. Teraz używam kolekcji kompilatora GNU. Czy ktoś może doradzić bibliotece matematycznej SIMD z dobrą dokumentacją?

itun
źródło

Odpowiedzi:

15

Możesz także zrobić to „samodzielnie”, korzystając z instrukcji SSE (Streaming SIMD Extensions) i wewnętrznych (plików * mmintrin.h) kompilatora / proc.


Poradniki

Oto przykład użycia instrukcji SSE z asemblerem:
http://neilkemp.us/src/sse_tutorial/sse_tutorial.html

A oto samouczek dotyczący korzystania z instrukcji SSE z elementami wewnętrznymi:
http://www.codeproject.com/KB/recipes/sseintro.aspx

Praktyczny przewodnik po użyciu SSE SIMD z C ++:
http://sci.tuomastonteri.fi/programming/sse/printable


Przydatne informacje

Dokumentacja Intrinsics firmy Intel C ++ (przydatna do uzyskania listy instrukcji):
http://cache-www.intel.com/cd/00/00/34/76/347603_347603.pdf

SSE i SSE2 Wewnętrzna obsługa rozszerzonych zestawów instrukcji obsługiwanych przez procesory Intel i AMD (przydatne do wszelkiego rodzaju informacji dotyczących SSE i SIMD):
http://msdn.microsoft.com/en-us/library/y0dh78ez%28v= vs.71% 29.aspx

Ogólna lista instrukcji i informacje o SSE, SSE2, SSE3, SSSE3, SSE4, 3DNow itp. (Różne wersje SSE dla różnych architektur proc):
http://softpixel.com/~cwright/programming/simd/sse.php


Jeśli wolisz szkielet algebry liniowej, słyszałem o Eigen:
http://eigen.tuxfamily.org/
http://eigen.tuxfamily.org/index.php?title=FAQ#Vectorization (o obsłudze SIMD)

I na koniec, jeśli potrzebujesz więcej odpowiedzi na temat C ++ SIMD Framework, oto link StackOverflow . (C ++ SSE SIMD framework):
/programming/4953121/c-sse-simd-framework

Valkea
źródło
Dziękuję, ale nie mam czasu na rutynę.
itun
Może następnym razem nie będzie to takie trudne;). Dodałem jednak na dole kilka linków, które mogą pomóc.
Valkea
Zgrabna odpowiedź. Matematyka SIMD jest fajna. Pamiętam dni, kiedy korzystałem z SSE do przyspieszania raytracingu. Ale po co grać małą zabawkę, skoro mamy teraz GPGPU :)
Notabene
3

Oba te biblioteki wektor / macierz mają zoptymalizowany kod SSE2, Sony ma również przełącznik kompilacji Altivec dla PowerPC:

  1. Sony vectormath SSE2 i Altivec

  2. Bullet's Linearmath SSE2

Maik Semder
źródło
1
Oba linki są martwe.
vexe
1

myśląc, że możesz użyć biblioteki matematycznej bulleta, sama kula jest silnikiem fizyki typu open source i wydaje się, że ma obok niej potężną bibliotekę matematyczną. tutaj jest skrót do pobierania linku http://sourceforge.net/projects/bullet/files/SIMD%20and%20amp_%20Vector%20Math%20library/simd%20math%201.02%20and%20vector%20math%201.01/simdvectormath.tgz /Ściągnij

Ali1S232
źródło
Widziałem to, ale jak to skompilować, nie zrozumiałem
to
3
Zamiast po prostu zrzucić link do pobrania, być może link do faktycznej strony z dokumentacją, wiki i referencją API może być bardziej pomocny. bulletphysics.org
Bob Somers
@ Bob Chciałem tylko wyrazić ten link do pobrania, ponieważ znalezienie simdvectormathokreślonego pliku w plikach pocisków zajmuje trochę czasu
Ali1S232,
0

AMD ma projekt SSEPlus typu open source , chociaż nigdy go nie użyłem, więc nie mogę komentować jego jakości ani możliwości zastosowania.

Bob Somers
źródło
0

Chociaż niezbyt koncentruję się na korzystaniu z SIMD, uważam, że glm jest bardzo dobrą biblioteką matematyczną ogólnego zastosowania, jeśli chodzi o gry. Nie obsługuje dowolnych matryc i tym podobnych, ale ma usprawnione funkcje do użytku z grafiką 3D i ma funkcje umożliwiające SSE, a także niektóre szybsze implementacje popularnych algorytmów.

Chociaż jest specjalnie zaprojektowany do pracy z OpenGL, uważam, że jest bardzo przydatny do różnych zadań. W dużym stopniu wykorzystuje przeciążenie operatora, co czyni go bardzo łatwym w użyciu i utrzymuje kod, który go używa.

Opiera się na języku OpenGL GLSL, który ma bardzo solidną dokumentację, a wszelkie różnice są również dobrze udokumentowane.

akaltar
źródło