В чем разница между AVX2 и AVX-512?

Что касается SIMD и распараллеливания, в чем разница между AVX2 и AVX-512? Это одно и то же или разные? Я просто вижу, что double8 используется в AVX-512, а double4 используется для AVX2?

Я использую PyOpenCL для написания кода ядра на C и не уверен, в чем будет разница.


person digeridoo    schedule 02.12.2019    source источник


Ответы (1)


AVX2 - это 256-битный векторный набор команд. У вас есть 256-битные регистры, которые можно интерпретировать несколькими способами (8 чисел с плавающей запятой, 4 числа с двойной точностью, 32 байта и т. Д.). AVX1 поддерживает только операции с плавающей запятой, AVX2 добавляет 256-битные целочисленные операции. AVX-512 - это набор 512-битных векторных инструкций. Есть только 2 разновидности AVX, старый добрый AVX и AVX2. AVX-512 имеет множество различных вариантов. Вам может быть интересно Руководство Intel по внутренним функциям.

Самая большая разница заключается в том, что на одну инструкцию обрабатывается в два раза больше операций. Тем не менее, в AVX-512 есть определенные инструкции, которые могут сделать некоторые конкретные вещи более оптимальными (например, аппроксимации экспоненты).

person FA-18_1    schedule 02.12.2019
comment
AVX512 вводит маскирование, поэтому вы можете с меньшими затратами сделать смешивание в рамках другой операции. Или даже эффективная замаскированная загрузка / сохранение с подавлением сбоев в случае, если данные, которые вам нужно пропустить, находились на несопоставленной странице. Также разбросайте магазины, по сравнению с AVX2, имеющим только набираемые грузы. Кроме того, вы можете упомянуть FMA, отдельную от AVX. AVX512 всегда включает FMA. - person Peter Cordes; 03.12.2019
comment
Эта статья может показаться вам интересной - person Martin; 12.12.2019