ในอดีตฉันเคยใช้ Visual Studio กับห้องสมุดคณิตศาสตร์ DirectX XNA ตอนนี้ฉันใช้คอมไพเลอร์ GNU ใครสามารถให้คำแนะนำห้องสมุดคณิตศาสตร์ SIMD ด้วยเอกสารที่ดี?
ในอดีตฉันเคยใช้ Visual Studio กับห้องสมุดคณิตศาสตร์ DirectX XNA ตอนนี้ฉันใช้คอมไพเลอร์ GNU ใครสามารถให้คำแนะนำห้องสมุดคณิตศาสตร์ SIMD ด้วยเอกสารที่ดี?
คำตอบ:
นอกจากนี้คุณยังสามารถทำ "ตัวคุณเอง" โดยใช้คำสั่งSSE (Streaming SIMD Extensions)และไฟล์intrinsics (* mmintrin.h) ของคอมไพเลอร์ / proc ของคุณ
สอน
นี่คือตัวอย่างของวิธีการใช้คำสั่ง SSE กับชุดประกอบ:
http://neilkemp.us/src/sse_tutorial/sse_tutorial.html
และนี่คือการสอนเกี่ยวกับวิธีการใช้คำสั่ง SSE กับอินทริน:
http://www.codeproject.com/KB/recipes/sseintro.aspx
คำแนะนำการใช้ SSE SIMD ด้วย C ++:
http://sci.tuomastonteri.fi/programming/sse/printable
ข้อมูลที่เป็นประโยชน์
การอ้างอิง Intel C ++ Intrinsics (มีประโยชน์ในการรับรายการคำสั่ง):
http://cache-www.intel.com/cd/00/00/34/76/347603_347603.pdf
การสนับสนุน SSE & SSE2 ที่แท้จริงสำหรับชุดคำสั่งที่ปรับปรุงแล้วซึ่งสนับสนุนโดยโปรเซสเซอร์ Intel และ AMD (มีประโยชน์กับข้อมูลทุกประเภทที่เกี่ยวข้องกับ SSE และ SIMD):
http://msdn.microsoft.com/en-us/library/y0dh78ez%28v= vs.71% 29.aspx
รายการคำแนะนำโดยรวมและข้อมูลเกี่ยวกับ SSE, SSE2, SSE3, SSSE3, SSE4, 3DNow เป็นต้น (รุ่นต่างๆของ SSE สำหรับสถาปัตยกรรม proc ที่แตกต่างกัน):
http://softpixel.com/~cwright/programming/simd/sse.php
หากคุณต้องการกรอบพีชคณิตเชิงเส้นฉันเกี่ยวกับ Eigen:
http://eigen.tuxfamily.org/
http://eigen.tuxfamily.org/index.php?title=FAQ#Vectorization (เกี่ยวกับการสนับสนุน SIMD)
และสุดท้ายถ้าคุณต้องการคำตอบเพิ่มเติมเกี่ยวกับ C ++ SIMD กรอบนี่คือการเชื่อมโยง StackOverflow (กรอบ C + SSE SIMD):
/programming/4953121/c-sse-simd-framework
vector / matrix-libs ทั้งสองนี้มีโค้ด SSE2 ที่ได้รับการปรับปรุงแล้ว Sony ยังมี Altivec สำหรับ PowerPC compile switch:
vectormath ของ Sony SSE2 และ Altivec
โดย seraching เล็กน้อยฉันคิดว่าคุณสามารถใช้ห้องสมุดคณิตศาสตร์ของ bullet, bullet ตัวเองเป็นเครื่องมือฟิสิกส์ opensource และดูเหมือนว่าจะมีห้องสมุดคณิตศาสตร์ที่มีประสิทธิภาพด้านข้าง นี่เป็นทางลัดไปยังลิงค์ดาวน์โหลดhttp://sourceforge.net/projects/bullet/files/SIMD%20and%20amp_%20Vector%20Math%20library/simd%20math%201.02%20and%20vector%20math%201.01/simdvectormath.tgz / ดาวน์โหลด
simdvectormath
ไฟล์เฉพาะในไฟล์ bullet
มันยังไม่อยู่ที่นี่ แต่จะมี boost.simd library (หวังว่า) ดูที่การนำเสนอนี้ (เมื่อสัปดาห์ที่แล้วที่ boostcon)
https://github.com/boostcon/2011_presentations/blob/master/thu/simd.pdf
AMD มีโครงการโอเพนซอร์ซ SSEPlusแม้ว่าฉันจะไม่เคยใช้มันดังนั้นฉันจึงไม่สามารถให้ความเห็นเกี่ยวกับคุณภาพหรือการบังคับใช้
แม้ว่าจะไม่ได้มุ่งเน้นไปที่การใช้ SIMD อย่างแน่นอน แต่ฉันพบว่าglmเป็นห้องสมุดคณิตศาสตร์อเนกประสงค์ที่ดีมากเมื่อพูดถึงเกม ไม่รองรับการฝึกอบรมตามอำเภอใจและสิ่งที่ชอบ แต่ก็มีคุณสมบัติที่มีความคล่องตัวที่จะใช้กับกราฟิก 3D และมีคุณสมบัติในการเปิดใช้งาน SSE เช่นเดียวกับการใช้อัลกอริทึมทั่วไปที่รวดเร็วขึ้น
ในขณะที่มันถูกออกแบบมาโดยเฉพาะเพื่อใช้กับ OpenGL ฉันพบว่ามันมีประโยชน์มากสำหรับงานที่หลากหลาย มันใช้ตัวดำเนินการโอเวอร์โหลดอย่างมากซึ่งทำให้ง่ายต่อการใช้งานและบำรุงรักษาโค้ดที่ใช้งาน
มันขึ้นอยู่กับภาษา OpenGL GLSL ซึ่งมีเอกสารที่แข็งแกร่งมากและมีความแตกต่างใด ๆ ที่เป็นเอกสารเช่นกัน