Jawaban:
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
Kedua vektor / matriks-lib ini telah mengoptimalkan kode SSE2, Sony juga memiliki sakelar kompilasi Altivec untuk PowerPC:
Sony Vectormath SSE2 dan Altivec
Linearmath Bullet's SSE2
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
simdvectormath
file spesifik dalam file
Itu belum datang. Tapi akan ada perpustakaan boost.simd (semoga). Lihatlah presentasi ini (diberikan minggu lalu di boostcon)
https://github.com/boostcon/2011_presentations/blob/master/thu/simd.pdf
AMD memiliki proyek SSEPlus open source , meskipun saya belum pernah menggunakannya sehingga saya tidak bisa mengomentari kualitas atau penerapannya.
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.