Бібліотека SIMD C ++ [закрита]


14

Раніше я використовував Visual Studio з математичною бібліотекою DirectX XNA. Тепер я використовую колекцію компілятора GNU. Хтось може порадити бібліотеку математики SIMD з хорошою документацією?

Відповіді:


15

Ви також можете зробити це «себе» з використанням SSE (Streaming SIMD Extensions) інструкцій і вбудованих функцій (* 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 ++ (корисно отримати список інструкцій):
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 для різних архітектурних систем):
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 Frameworks, ось посилання на StackOverflow . (C ++ SSE SIMD Framework):
/programming/4953121/c-sse-simd-framework


Дякую, але я не встиг зробити так багато рутини.
itun

Можливо, наступного разу це не так складно, як це виглядає;). Однак я додав кілька посилань у нижній частині, які можуть допомогти.
Valkea

Акуратна відповідь. SIMD математика - це весело. Я пам’ятаю дні, коли я використовував SSE для прискорення передачі даних. Але навіщо грати в маленьку іграшку, якщо у нас зараз GPGPU :)
Нотабене


1

трохи затягнувшись, я думаю, що ви можете використовувати математичну бібліотеку кулі, сама куля є двигуном фізики відкритих джерел, і, здається, є потужна бібліотека з математики. ось ярлик для завантаження http://sourceforge.net/projects/bullet/files/SIMD%20and%20amp_%20Vector%20Math%20library/simd%20math%201.02%20and%20vector%20math%201.01/simdvectormath.tgz / скачати


Я бачив це, але як його скласти, я не зрозумів
це

3
Замість того, щоб просто скинути посилання для завантаження, можливо, корисніше буде посилання на фактичний веб-сайт із посиланням на документацію, вікі та API. bulletphysics.org
Боб Сомерс

@Bob я просто хотів висловити це посилання для завантаження, оскільки це просто потребує певного часу, щоб знайти simdvectormathконкретний файл у файлах
кулей


0

AMD має проект з відкритим кодом SSEPlus , хоча я ніколи його не використовував, тому не можу коментувати його якість чи застосовність.


0

Не дивлячись точно на використання SIMD, я вважаю, що glm є дуже хорошою математикою загального призначення, коли мова йде про ігри. Він не підтримує довільних матриць тощо, але він має впорядковані функції для використання з тривимірною графікою і має функції для включення SSE, а також деяких швидших реалізацій загальних алгоритмів.

Хоча він спеціально розроблений для використання з OpenGL, я вважав, що це дуже корисно для різних завдань. Він сильно використовує операторські перевантаження, що робить його дуже простим у використанні та підтримці коду, який його використовує.

Він заснований на мові OpenGL GLSL, яка має дуже солідну документацію, і будь-які відмінності також добре задокументовані.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.