Будет ли atan2 использовать SSE2,

mkrec

если проц и настройки соответствующие?
в хелпе написано про atan. про atan2 непонятно.

Chupa

самый лучший способ это узнать - проверить самому

SPARTAK3959

SSE2 во-первых работает только с float, а во-вторых трасцендентных функций не поддерживает. Так что это целиком зависит от разработчиков. Самый простой способ скомпилить и дизассемблировать программу. Если используется команда fpatan или что-то вроде того, то используется FPU.

mkrec

> 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.
> Самый простой способ скомпилить и дизассемблировать программу.
уже.

mkrec

зато возник другой вопрос. А вообще, SSE2-оптимизированные atan2, sin, cos и sqrt, они будут работать быстрее FPU?
Что-то не нашел ответа на этот вопрос. Мне не очень нравится, что без SSE-оптимизации выполняется изящный fpatan, а с оной - происходит call какой-то функции ___libm_sse2_atan2 (к тому же, после movapd - не знаю, быстрее ли он, чем fld).

freezer

а с оной - происходит call какой-то функции ___libm_sse2_atan2
а если /Oi написать?

mkrec

интринсики чтобы вызывать? /Oi установлен.

SPARTAK3959

Будьте готовы к тому, что реализация atan/atan2 через SSE будет иметь в 2-3 раза меньшую точность, чем на FPU (даже работающем с float). Ибо формулы, по которым он считается - приближенные. А что быстрее - нужно тестировать. Кто ж знает какую приближенную формулу выбрали авторы компилятора.
PS Если нужна экстремальная скорость при точности float, то можно использовать CUDA. Во многих параллелизуемых задачах она оказывается быстрее.

freezer

Если нужна экстремальная скорость при точности float, то можно использовать CUDA. Во многих параллелизуемых задачах она оказывается быстрее.
это только если у тебя есть два миллиона флоатов, и тебе нужно для них сразу посчитать миллион арктангенсов. Ну и видюха у юзера есть соответствующая...
Оставить комментарий
Имя или ник:
Комментарий: