Будет ли atan2 использовать SSE2,
самый лучший способ это узнать - проверить самому
SSE2 во-первых работает только с float, а во-вторых трасцендентных функций не поддерживает. Так что это целиком зависит от разработчиков. Самый простой способ скомпилить и дизассемблировать программу. Если используется команда fpatan или что-то вроде того, то используется FPU.
> SSE2 во-первых работает только с float, а во-вторых трасцендентных функций не поддерживает.
уже.
atan has an implementation that uses Streaming SIMD Extensions 2 (SSE2). See _set_SSE2_enable for information and restrictions on using the SSE2 implementation.> Самый простой способ скомпилить и дизассемблировать программу.
C++ allows overloading, so you can call overloads of atan and atan2. In a C program, atan and atan2 always take and return doubles.
уже.
зато возник другой вопрос. А вообще, SSE2-оптимизированные atan2, sin, cos и sqrt, они будут работать быстрее FPU?
Что-то не нашел ответа на этот вопрос. Мне не очень нравится, что без SSE-оптимизации выполняется изящный fpatan, а с оной - происходит call какой-то функции ___libm_sse2_atan2 (к тому же, после movapd - не знаю, быстрее ли он, чем fld).
Что-то не нашел ответа на этот вопрос. Мне не очень нравится, что без SSE-оптимизации выполняется изящный fpatan, а с оной - происходит call какой-то функции ___libm_sse2_atan2 (к тому же, после movapd - не знаю, быстрее ли он, чем fld).
а с оной - происходит call какой-то функции ___libm_sse2_atan2а если /Oi написать?
интринсики чтобы вызывать? /Oi установлен.
Будьте готовы к тому, что реализация atan/atan2 через SSE будет иметь в 2-3 раза меньшую точность, чем на FPU (даже работающем с float). Ибо формулы, по которым он считается - приближенные. А что быстрее - нужно тестировать. Кто ж знает какую приближенную формулу выбрали авторы компилятора.
PS Если нужна экстремальная скорость при точности float, то можно использовать CUDA. Во многих параллелизуемых задачах она оказывается быстрее.
PS Если нужна экстремальная скорость при точности float, то можно использовать CUDA. Во многих параллелизуемых задачах она оказывается быстрее.
Если нужна экстремальная скорость при точности float, то можно использовать CUDA. Во многих параллелизуемых задачах она оказывается быстрее.это только если у тебя есть два миллиона флоатов, и тебе нужно для них сразу посчитать миллион арктангенсов. Ну и видюха у юзера есть соответствующая...
Оставить комментарий
mkrec
если проц и настройки соответствующие?в хелпе написано про atan. про atan2 непонятно.