Описание тега fma
Слитное умножение, сложение или умножение-накопление
1
ответ
Получение максимальной пропускной способности на Haswell в кеше L1: только 62%
Я пытаюсь получить полную пропускную способность в кэше L1 для следующей функции на процессорах Intel float triad(float *x, float *y, float *z, const int n) { float k = 3.14159f; for(int i=0; i<n; i++) { z[i] = x[i] + k*y[i]; } } Это функция триа…
17 сен '14 в 20:03
2
ответа
Как использовать инструкции Fused Multiply-Add (FMA) с SSE/AVX
Я узнал, что некоторые процессоры Intel/AMD могут выполнять одновременное умножение и добавление с помощью SSE / AVX: FLOPS за цикл для песчаных мостов и скважин SSE2 / AVX / AVX2. Мне нравится знать, как сделать это лучше всего в коде, и я также хо…
10 апр '13 в 18:02
2
ответа
Что мне нужно сделать, чтобы GCC 4.9 распознал возможность использовать AVX FMA?
Я имею std::vector<double> X,Y оба размера N (с N%16==0) а я хочу посчитать sum(X[i]*Y[i]), Это классический вариант использования Fused Multiply и Add (FMA), который должен быть быстрым на процессорах с поддержкой AVX. Я знаю, что все мои цел…
16 фев '16 в 17:32
0
ответов
Есть ли какие-либо усиления FMA для отрицательного аккумулятора?
Работая с C++ AMP, я пытаюсь оптимизировать свои математические функции. Столкнулся с небольшой загадкой с перекрестным произведением: float_3 CrossProduct(float_3 v1, float_3 v2) restrict(amp) { float a = mad(v1.y, v2.z, -v1.z * v2.y); float b = ma…
20 фев '15 в 11:29
3
ответа
Могу ли я использовать AVX FMA для точного 52-битного умножения?
AXV2 не имеет целочисленных умножений с источниками больше 32-битных. Он предлагает 32 x 32 -> 32 умножения, а также 32 x 32 -> 64 умножения1, но ничего с 64-битными источниками. Скажем, мне нужно беззнаковое умножение с входными данными, большими, …
30 дек '16 в 22:54
2
ответа
Автоматически генерировать инструкции FMA в MSVC
MSVC поддерживает инструкции AVX/AVX2 в течение многих лет, и, согласно этому сообщению в блоге msdn, он может автоматически генерировать инструкции слияния-умножения-добавления (FMA). Но ни одна из следующих функций не компилируется в инструкцию FM…
14 дек '15 в 11:32
3
ответа
Оптимизация для быстрого умножения, но медленного сложения: FMA и doubledouble
Когда я впервые получил процессор Haswell, я попытался реализовать FMA, чтобы определить множество Мандельброта. Основной алгоритм таков: intn = 0; for(int32_t i=0; i<maxiter; i++) { floatn x2 = square(x), y2 = square(y); //square(x) = x*x floatn…
01 июн '15 в 12:25
1
ответ
Пропускная способность FMA и умножение на X86 Broadwell
Я подозреваю, что последняя архитектура Intel для выполнения мнемоники MUL как FMA но с нулевым дополнением (на архитектуре broadWell). Подробно, я в настоящее время выполняю произведение четырехчленных полиномов (Пи), следуя шаблону. P1*P2*P3*P4 Ка…
12 фев '19 в 21:56
0
ответов
Должен ли я использовать FMA явно в C++AMP для ядер GPU?
Например, у меня есть выражение как a = b * c + d * e + f * g + h * i + j, Должен ли я вместо этого написать a = fma(a, c, fma(d, e, fma(f, g, fma(h, i, j))))? Будет ли компилятор автоматически оптимизировать выражение? Или форма FMA на самом деле л…
01 сен '15 в 13:28
1
ответ
Можно ли использовать FMA вместо ADD для операций XMM/YMM FP на Intel Haswell?
Этот вопрос относится к упакованным операциям с плавающей запятой одинарной точности с регистрами XMM/YMM в Haswell. Итак, в соответствии с потрясающей, потрясающей таблицей, составленной Агнером Фогом, я знаю, что MUL может быть выполнен на любом п…
04 мар '15 в 17:52
2
ответа
Разрешено ли сокращение выражений с плавающей точкой в C++?
Выражения с плавающей запятой иногда могут быть сокращены на оборудовании обработки, например, используя объединенное умножение и сложение в качестве одной аппаратной операции. По-видимому, используя их, это не просто деталь реализации, а регулирует…
14 мар '18 в 12:44
1
ответ
Почему AVX512-IFMA поддерживает только 52-битные числа?
Из значения можно сделать вывод, что он использует те же компоненты, что и аппаратное обеспечение с плавающей запятой двойной точности. Но double имеет 53 бита мантиссы, так почему AVX512-IFMA ограничен 52 битами?
04 мар '15 в 18:23
2
ответа
Предотвращение автоматического использования GCC инструкций AVX и FMA при компиляции с -mavx и -mfma
Как я могу отключить автоматическую векторизацию с помощью инструкций AVX и FMA? Я бы все же предпочел, чтобы компилятор использовал SSE и SSE2 автоматически, но не FMA и AVX. Мой код, который использует AVX, проверяет его доступность, но GCC не дел…
18 сен '13 в 09:14
0
ответов
Может ли C# использовать плавное умножение-сложение?
Компилятор / джиттер C# использует смешанные операции многократного добавления, если они доступны на используемом оборудовании? Если да, есть ли какие-то особые настройки компилятора, которые мне нужно установить, чтобы воспользоваться этим? Мое нам…
25 май '16 в 17:06
2
ответа
Встроенные функции FMA не работают: аппаратное обеспечение или компилятор?
Я пытаюсь использовать встроенные функции Intel FMA, такие как _mm_fmadd_ps (__m128 a, __m128 b, __m128 c), чтобы повысить производительность моего кода. Итак, прежде всего, я сделал небольшую тестовую программу, чтобы посмотреть, что она может дела…
19 июн '17 в 12:11
2
ответа
Слитый умножить добавить и режимы округления по умолчанию
С GCC 5.3 следующий код компилируется с -O3 -fma float mul_add(float a, float b, float c) { return a*b + c; } производит следующую сборку vfmadd132ss %xmm1, %xmm2, %xmm0 ret Я заметил, что GCC делает это с -O3 уже в GCC 4.8. Лязг 3.7 с -O3 -mfma про…
23 дек '15 в 12:57
2
ответа
Инструкции Intel FMA предлагают преимущество нулевой производительности
Рассмотрим следующую последовательность команд, используя инструкции Haswell FMA: __m256 r1 = _mm256_xor_ps (r1, r1); r1 = _mm256_fmadd_ps (rp1, m6, r1); r1 = _mm256_fmadd_ps (rp2, m7, r1); r1 = _mm256_fmadd_ps (rp3, m8, r1); __m256 r2 = _mm256_xor_…
25 фев '16 в 19:51
2
ответа
Использование инструкций FMA (слитое умножение) для сложного умножения
Я хотел бы использовать имеющиеся объединенные инструкции процессора сложения и умножения, чтобы помочь в сложном умножении массива приличного размера. По сути, основная математика выглядит так: void ComplexMultiplyAddToArray(float* pDstR, float* pD…
07 май '15 в 00:20
1
ответ
VS2010 SP1 поддерживает только часть набора инструкций AVX?
Microsoft заявляет, что VS2010 поддерживает полный набор инструкций AVX: http://blogs.msdn.com/b/vcblog/archive/2009/11/02/visual-c-code-generation-in-visual-studio-2010.aspx ... В версии VS2010 все функции и инструкции AVX полностью поддерживаются …
20 окт '11 в 20:01
1
ответ
Разница в опциях gcc -ffp-contract
У меня есть вопрос относительно -ffp-contract пометка в GNU GCC (см. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html). Документация флага написана следующим образом: -ffp-contract=off отключает сжатие выражений с плавающей точкой. -ffp-cont…
11 апр '17 в 17:24