Библиотека 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 ++ 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


Спасибо, но у меня нет времени делать так много рутины.
itun

Может быть, в следующий раз это не так сложно, как выглядит;). Однако я добавил несколько ссылок внизу, которые могут помочь.
Valkea

Аккуратный ответ. SIMD математика это весело. Я помню дни, когда я использовал SSE для ускорения трассировки лучей. Но зачем играть в маленькую игрушку, если у нас сейчас есть GPGPU :)
Notabene


1

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


Я видел это, но как его скомпилировать я так и не понял
itun

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.