Perpustakaan SIMD C ++ [ditutup]


14

Di masa lalu, saya telah menggunakan Visual Studio dengan perpustakaan matematika DirectX XNA. Sekarang, saya menggunakan koleksi kompiler GNU. Adakah yang bisa menyarankan perpustakaan matematika SIMD dengan dokumentasi yang baik?

Jawaban:


15

Anda juga dapat melakukannya "sendiri" menggunakan instruksi SSE (Streaming SIMD Extensions) dan intrinsik (file * mmintrin.h) dari kompiler / proc Anda.


Tutorial

Berikut ini adalah contoh cara menggunakan instruksi SSE dengan perakitan:
http://neilkemp.us/src/sse_tutorial/sse_tutorial.html

Dan di sini ada tutorial tentang cara menggunakan instruksi SSE dengan intrinsik:
http://www.codeproject.com/KB/recipes/sseintro.aspx

Panduan praktis untuk menggunakan SSE SIMD dengan C ++:
http://sci.tuomastonteri.fi/programming/sse/printable


Informasi yang berguna

Referensi Intel C ++ Intrinsics (berguna untuk mendapatkan daftar instruksi):
http://cache-www.intel.com/cd/00/00/34/76/347603_347603.pdf

SSE & SSE2 Dukungan intrinsik untuk set instruksi yang ditingkatkan yang didukung oleh prosesor Intel dan AMD (berguna untuk semua jenis informasi relatif terhadap SSE dan SIMD):
http://msdn.microsoft.com/en-us/library/y0dh78ez%28v= vs.71% 29.aspx

Daftar instruksi keseluruhan dan informasi tentang SSE, SSE2, SSE3, SSSE3, SSE4, 3DNow dll (versi SSE yang berbeda untuk arsitektur proc yang berbeda):
http://softpixel.com/~cwright/programming/simd/sse.php


Jika Anda lebih suka kerangka kerja aljabar linier, saya membaca tentang Eigen:
http://eigen.tuxfamily.org/
http://eigen.tuxfamily.org/index.php?title=FAQ#Vectorization (tentang dukungan SIMD)

Dan akhirnya jika Anda membutuhkan lebih banyak jawaban tentang C ++ SIMD Frameworks, berikut ini tautan StackOverflow . (C ++ SSE SIMD framework):
/programming/4953121/c-sse-simd-framework


Terima kasih, tetapi saya tidak punya waktu untuk melakukan begitu banyak rutinitas.
itun

Mungkin lain kali, tidak sesulit kelihatannya;). Namun saya menambahkan beberapa tautan di bagian bawah yang mungkin bisa membantu.
Valkea

Jawabannya rapi. Matematika SIMD menyenangkan. Saya ingat hari-hari ketika saya menggunakan SSE untuk mempercepat raytracing. Tetapi mengapa bermain mainan kecil, jika kita memiliki GPGPU sekarang :)
Notabene


1

oleh sedikit seraching saya pikir Anda dapat menggunakan perpustakaan matematika peluru, peluru itu sendiri adalah mesin fisika opensource dan tampaknya memiliki perpustakaan matematika yang kuat di sampingnya. di sini adalah jalan pintas untuk mengunduh tautan http://sourceforge.net/projects/bullet/files/SIMD%20and%20amp_%20Vector%20Math%20library/simd%20math%201.02%20and%20vector%20math%201.01/simdvectormath.tgz / unduh


Saya melihatnya, tetapi bagaimana mengompilasinya saya tidak mengerti
itun

3
Daripada hanya membuang tautan unduhan, mungkin tautan ke situs web sebenarnya dengan dokumentasi, wiki, dan referensi API mungkin lebih bermanfaat. bulletphysics.org
Bob Somers

@ Bob, saya hanya ingin menyatakan tautan unduhan itu karena hanya perlu beberapa saat menemukan simdvectormathfile spesifik dalam file
Ali1S232


0

AMD memiliki proyek SSEPlus open source , meskipun saya belum pernah menggunakannya sehingga saya tidak bisa mengomentari kualitas atau penerapannya.


0

Meskipun tidak benar-benar fokus menggunakan SIMD, saya menemukan glm menjadi perpustakaan matematika guna yang sangat baik dalam hal permainan. Ini tidak mendukung matriks arbitrer dan sejenisnya, tetapi telah merampingkan fitur untuk digunakan dengan grafik 3D dan memiliki fitur untuk mengaktifkan SSE serta beberapa implementasi lebih cepat dari algoritma umum.

Walaupun dirancang khusus untuk digunakan dengan OpenGL, saya merasa sangat berguna untuk berbagai tugas. Ini sangat menggunakan operator overloading yang membuatnya sangat mudah digunakan dan memelihara kode yang menggunakannya.

Ini didasarkan pada bahasa OpenGL GLSL, yang memiliki dokumentasi yang sangat solid, dan perbedaan juga didokumentasikan dengan baik.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.