В прошлом я использовал Visual Studio с математической библиотекой DirectX XNA. Теперь я использую коллекцию компиляторов GNU. Кто-нибудь может посоветовать SIMD математическую библиотеку с хорошей документацией?
источник
В прошлом я использовал Visual Studio с математической библиотекой DirectX XNA. Теперь я использую коллекцию компиляторов GNU. Кто-нибудь может посоветовать SIMD математическую библиотеку с хорошей документацией?
Вы также можете сделать это «самостоятельно», используя инструкции 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 ++ 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 для разных архитектур процессов):
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
Обе эти vector / matrix-libs оптимизировали код SSE2, у Sony также есть переключатель компиляции Altivec для PowerPC:
Sony Vectormath SSE2 и Altivec
Bullet's Linearmath SSE2
источник
немного подумав, я думаю, что вы можете использовать математическую библиотеку пули, сама пуля - физический движок с открытым исходным кодом, и рядом с ней, похоже, есть мощная математическая библиотека. вот ссылка для скачивания ссылки http://sourceforge.net/projects/bullet/files/SIMD%20and%20amp_%20Vector%20Math%20library/simd%20math%201.02%20and%20vector%20math%201.01/simdvectormath.tgz /скачать
источник
simdvectormath
конкретный файл вЭто еще не здесь. Но будет библиотека boost.simd (надеюсь). Взгляните на эту презентацию (на прошлой неделе на boostcon)
https://github.com/boostcon/2011_presentations/blob/master/thu/simd.pdf
источник
У AMD есть проект SSEPlus с открытым исходным кодом , хотя я никогда не использовал его, поэтому я не могу комментировать его качество или применимость.
источник
Хотя я не совсем сосредоточен на использовании SIMD, я считаю, что glm - очень хорошая математическая библиотека общего назначения, когда речь идет об играх. Он не поддерживает произвольные матрицы и тому подобное, но имеет оптимизированные функции для использования с трехмерной графикой и имеет функции, позволяющие использовать SSE, а также некоторые более быстрые реализации общих алгоритмов.
Хотя он специально разработан для использования с OpenGL, я обнаружил, что он очень полезен для различных задач. Он интенсивно использует перегрузку операторов, что делает его очень простым в использовании и обслуживании кода, который его использует.
Он основан на языке OpenGL GLSL, который имеет очень надежную документацию, и любые различия также хорошо документированы.
источник