innuendo
> Ты хоть сделал проверочку на нужные sse avx по ЦПУ?
Найди CPU который не поддерживает AVX?
Pentium 4? Athlon?
v1c
Это не тру метод :(
v1c
С чего ты взял, что будет вообще x86 система? Запросто может оказаться какой-нибудь ARM. Ассемблерные вставки просто не будут работать, не только avx.
Векторные команды довольно тормознутые и надо очень сильно постараться, чтобы они дали прирост производительности, а не затормозили все. Если не использовать групповую загрузку в регистры, скорее всего создашь только тормоза. На fpu сделать тоже самое чаще всего получается эффективнее.
sse и fpu одновременно использовать нельзя. Или на новых процессорах уже можно?
Простой способ воспользоваться sse - использовать интеловский компилятор, он многие вещи делает автоматически и сам подбирает вариант компиляции, в зависимости от целевой платформы.
Zab
> Векторные команды довольно тормознутые и надо очень сильно постараться, чтобы они дали прирост производительности, а не затормозили все.
Если векторные команды реализованы нативно, то их скорость ± такая же, как и у скалярных.
Ненативная поддержка — это, например, когда AVX команды реализуются как пара SSE, встречалось в первых процессорах с поддержкой AVX (типа Zen1).
> На fpu сделать тоже самое чаще всего получается эффективнее.
FPU уже лет 10 как почти полностью вымер, одновременно с переходом на 64 бита.
> sse и fpu одновременно использовать нельзя. Или на новых процессорах уже можно?
Всегда можно было. FPU нельзя использовать одновременно с MMX, ибо они используют одинаковые регистры (причем FPU через виртуальный стек, а MMX — напрямую). К счастью, обе технологии вымерли, будучи замещены SSE (но транзисторный бюджет, к сожалению, занимают).
Zab
Может он напишет код который ковертит avx в neon или как его так :)
Микрософтовские компиляторы последних поколений (с 2013го, кажется), вообще считают ассемблерные вставки ошибками. Есть какие-то опции, заставляющие это принять, но просто так оно не будет компилироваться.
Более старые же компиляторы, встретив хотя бы одну вставку, полностью отменяли оптимизацию для этого компилируемого модуля. Приходилось фрагменты со вставками компилировать отдельно. И совершенно невозможно было делать их инлайн-подстановками.
}:+()___ [Smile]
Когда учился в школе то ФПУ было очень даже круто ... Год так 94
А под SSE есть синусы/косинусы и экспоненты?
Dmitry_Milk
Нет , числиками юзают
}:+()___ [Smile]
FPU через виртуальный стек, а MMX — напрямую). К счастью, обе технологии вымерли
нет.
А mmx даже сейчас я юзаю но хитро.
Zab
> Микрософтовские компиляторы последних поколений (с 2013го, кажется), вообще считают ассемблерные вставки ошибками.
M$ никогда не умели настоящий встроенный ассемблер, как gcc/clang.
Dmitry_Milk
> А под SSE есть синусы/косинусы и экспоненты?
К SSE, наконец, сообразили, что делать такие сложные вещи одной машинной командой — это бред.
}:+()___ [Smile]
Ну да , году в 81 считать синус на ЦПУ было занятным ....
}:+()___ [Smile]
Покажи код синуса ккспоненты в асме ...
Начали со строк, закончили синусами. Если что, синусы нужно считать четвёрками sincos на SSE/AVX, тогда будет буст.
Просто так, проходил мимо - так-ли круто?
А если к носу прикинуть?