![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
opiate |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 29.1.2011 Репутация: нет Всего: нет |
Добрый день!
Подскажите пожалуйста open-source библиотеку, вычисляющую sin, cos, tan, log, pow, sqrt и т.д, использующую использующую SIMD (SSE2/SSE3), которую несложно портировать в MSVC (без cygwin и mingw) |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
дзочэм?
|
|||
|
||||
opiate |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 29.1.2011 Репутация: нет Всего: нет |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
opiate, ты хоть знаешь, что такое инструкции SIMD и зачем они вообще нужны? Просто судя по вопросу, ты этого не знаешь.
Если тебе не нужно вычислять сотни однотипных операций, то используй стандартные функции (sin, cos, sqrt...). Если же тебе нужны именно такие, то ищи по слову вектор. |
|||
|
||||
opiate |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 29.1.2011 Репутация: нет Всего: нет |
Прежде чем грубить, почитай-ка сам что такое SIMD инструкции и какие они бывают, потом пройдись дизассемблером по "стандартным" sin cos из crt, и узнаешь зачем они бывают нужны. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
opiate, может ты сначала сформулируешь вопрос корректно? А то непонятно что тебе нужно. То ли 128-битная арифметика, то ли векторная, то ли просто оптимизированные операции.
А потом, неужели у студии нет галочек, которые бы включали поддержку данного набора инструкций? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
||||
|
||||
opiate |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 29.1.2011 Репутация: нет Всего: нет |
Даже незнаю как еще точнее: ищу оптимизированную с помощью SIMD библиотеку математических функций, которые объявлены в math.h из студии, но c исходниками. В VS2005 для вычисления, например, sin действительно включается SSE2, в VS2008 включается SSE3, это почти то что нужно, но нет исходников (или я их просто невижу?), хотя crt исходники есть.
Спасибо, интересная вещь, но уж больно простейшие там функции. Синуса, косинуса, логарифма нет, только sqrt ceil и floor. Смотрел там же на sourceforge Vector3D SSE, EasySSE, NVec - какие-то самоделки недоделки. Libm от apple - похоже не использует SIMD, и непонятно каким ассемблером компилить. Здесь говорят "Under Linux, the mathematical functions (as declared in math.h) are bundled separately in the mathematical library libm" - вроде как есть еще одна реализация libm под Unix. Использует ли она SIMD? можно ли собрать в msvc? |
|||
|
||||
tzirechnoy |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 2 Всего: 16 |
А давно у Вас в math.h описаны _mm_abs_epi16 и им подобные?
С чего Вы взяли? |
||||
|
|||||
opiate |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 29.1.2011 Репутация: нет Всего: нет |
Они не должны быть там описаны, их использует crt и math в своем коде. C/C++ -> Code Generation -> Enable Enhanced Instruction Set: Streaming SIMD Extensions2 (/arch:SSE2) Запускать и смотреть дизассемблером (F11 в функцию sin()) |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
так если там уже есть поддержка sse2, то для чего еще одна либа?
|
|||
|
||||
opiate |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 29.1.2011 Репутация: нет Всего: нет |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
А тебя лицензия не волнует?
|
|||
|
||||
opiate |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 29.1.2011 Репутация: нет Всего: нет |
совсем не волнует. Разбираюсь щас с Framewave. Вот накой #@$%& нужно было делать сборку из Visual Studio через какой-то долбанный SCons, для которого еще нужно устанавливать долбанный Python еще и старой версии. Наконец-то собралось... Пока что получилось в 2 раза медленнее чем студийная math даже при расчете сразу 3-х синусов через fwsSin_32f_A24() хотя вроде Framewave использует для этого нузкоуровневую SSEPlus. Прошелся в отладке по fwsSin_32f_A24() зачем-то используется что-то из boost, создаются потоки, синхронизация... неудивительно что так медленно. Это сообщение отредактировал(а) opiate - 12.9.2012, 15:18 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |