Преимущества x87 по SSE

Вызываемым является объект, позволяет Вам использовать круглую круглую скобку () и в конечном счете передавать некоторые параметры, точно так же, как функции.

Каждый раз Вы определяете функциональный Python, создает вызываемый объект. В примере Вы могли определить функцию func этими способами (это - то же):

class a(object):
    def __call__(self, *args):
        print 'Hello'

func = a()

# or ... 
def func(*args):
    print 'Hello'

Вы могли использовать этот метод вместо методов как , мелкая монета или работает , я думаю, что это просто более ясно видеть obj (), чем obj.doit ()

24
задан John Saunders 4 December 2009 в 04:02
поделиться

3 ответа

Для написанного вручную asm в x87 есть некоторые инструкции, которых нет в наборе инструкций SSE.

Вне моей головы, это все тригонометрические вещи, такие как fsin, fcos, fatan, fatan2 и некоторые экспоненты / логарифмы.

С gcc -O3 -ffast-math -mfpmath = 387 , GCC9 будет фактически встроенным sin (x) как инструкция fsin , независимо от того, какую реализацию в libm использовала бы. ( https://godbolt.org/z/Euc5gp ).

MSVC вызывает __ libm_sse2_sin_precise при компиляции для 32-битной x86.


Если ваш код тратит большую часть при выполнении тригонометрии вы можете увидеть небольшое увеличение или уменьшение производительности, если вы используете x87, в зависимости от того, работает ли ваша стандартная реализация математической библиотеки с использованием SSE1 / SSE2 быстрее или медленнее, чем медленный микрокод для fsin на любом используемом вами процессоре.

Поставщики процессоров не прилагают много усилий в оптимизацию микрокода для инструкций x87 в новейших поколениях ЦП, поскольку он обычно считается устаревшим и редко используется. (Посмотрите на количество операций и пропускную способность для сложных инструкций x87 в таблицах инструкций Агнера Фога в процессорах последних поколений: больше циклов, чем в старых процессорах). Чем новее ЦП, тем больше вероятность, что x87 будет медленнее, чем многие инструкции SSE или AVX для вычисления функций log, exp, pow или trig.

Даже когда x87 доступен, не все математические библиотеки предпочитают использовать сложные инструкции, такие как fsin , для реализации таких функций, как sin () , или особенно exp / log, где целочисленные трюки для управления битовыми шаблонами FP на основе журнала

Некоторые алгоритмы DSP используют много триггеров, но обычно выигрывают много от автоматической векторизации с математическими библиотеками SIMD.

Однако для математического кода, где вы проводите большую часть своего времени выполнение сложений, умножений и т. д. SSE обычно выполняется быстрее.


Также связано: Intel занижает границы ошибок на 1,3 квинтиллиона - худший случай для fsin (катастрофическая отмена для fsin входы очень близко к пи ) очень плохо. Программное обеспечение может работать лучше, но только с помощью медленных методов повышенной точности.

или особенно exp / log, где полезны целочисленные уловки для управления битовыми шаблонами FP на основе журнала.

Некоторые алгоритмы DSP используют много триггеров, но обычно выигрывают много от автоматической векторизации с SIMD математические библиотеки.

Однако для математического кода, в котором вы проводите большую часть своего времени, выполняя сложение, умножение и т. д., SSE обычно работает быстрее.


Также связано: Intel занижает границы ошибок на 1,3 квинтиллиона - наихудший случай для fsin (катастрофическая отмена для входов fsin очень близко к pi ) очень плох. Программное обеспечение может работать лучше, но только с помощью медленных методов повышенной точности.

или особенно exp / log, где полезны целочисленные трюки для управления битовыми шаблонами FP на основе журнала.

Некоторые алгоритмы DSP используют много триггеров, но обычно выигрывают много от автоматической векторизации с SIMD математические библиотеки.

Однако для математического кода, в котором вы проводите большую часть своего времени, выполняя сложение, умножение и т. д., SSE обычно работает быстрее.


Также связано: Intel занижает границы ошибок на 1,3 квинтиллиона - худший случай для fsin (катастрофическая отмена для входов fsin очень близко к pi ) очень плохой. Программное обеспечение может работать лучше, но только с помощью медленных методов повышенной точности.

но обычно выигрывают лот от автоматической векторизации с математическими библиотеками SIMD.

Однако для математического кода, где вы тратите большую часть своего времени на сложение, умножение и т. д., SSE обычно быстрее.


Также по теме: Intel занижает границы ошибок на 1,3 квинтиллиона - худший случай для fsin (катастрофическая отмена для входов fsin очень близко к pi ) очень плохо. Программное обеспечение может работать лучше, но только с помощью медленных методов повышенной точности.

но обычно выигрывают лот от автоматической векторизации с математическими библиотеками SIMD.

Однако для математического кода, где вы тратите большую часть своего времени на сложение, умножение и т. д., SSE обычно быстрее.


Также по теме: Intel занижает границы ошибок на 1,3 квинтиллиона - худший случай для fsin (катастрофическая отмена для входов fsin очень близко к pi ) очень плохо. Программное обеспечение может работать лучше, но только с помощью медленных методов повышенной точности.

3 квинтиллиона - наихудший случай для fsin (катастрофическая отмена для входов fsin очень близко к pi ). Программное обеспечение может работать лучше, но только с помощью медленных методов повышенной точности.

3 квинтиллиона - наихудший случай для fsin (катастрофическая отмена для входов fsin очень близко к pi ). Программное обеспечение может работать лучше, но только с помощью медленных методов повышенной точности.

19
ответ дан 28 November 2019 в 23:12
поделиться
  1. It's present on really old machines.

EOF

17
ответ дан 28 November 2019 в 23:12
поделиться
  • There is considerable legacy and small system compatibility with the x87: SSE is a relatively new processor feature. If your code is to run on an embedded microcontroller, there's a good chance it won't support SSE instructions.

  • Even systems which don't have an FPU installed will often provide 80x87 emulators which will make the code run transparently (more or less). I don't know of any SSE emulators—certainly one of my systems doesn't have any, so the newest Adobe Photoshop elements versions refuse to run.

  • The 80x87 instructions have good parallel operation characteristics which have been thoroughly explored and analyzed since its introduction in 1982 or so. Various clones of the x86 might stall on an SSE instructions.

4
ответ дан 28 November 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: