AVX-512
AVX-512 — это 512-битное расширение 256-битных Advanced Vector Extensions инструкций SIMD для x86 архитектуры набора команд (ISA), предложенное Intel в июле 2013 года и впервые реализованное в Intel Xeon Phi x200 (Knights Landing) 2016 года. [1] а затем позже в ряде процессоров AMD и других процессоров Intel ( см. список ниже ). AVX-512 состоит из нескольких расширений, которые можно реализовать независимо. [2] Эта политика является отходом от исторического требования реализации всего блока инструкций. Для всех реализаций AVX-512 требуется только основное расширение AVX-512F (AVX-512 Foundation).
Помимо расширения большинства 256-битных инструкций, расширения вводят различные новые операции, такие как новые преобразования данных, операции разброса и перестановки. [2] Количество регистров AVX увеличено с 16 до 32 и добавлены восемь новых «регистров маски», которые позволяют выбирать переменные и смешивать результаты инструкций. В ЦП с расширением длины вектора (VL), включенном в большинство процессоров с поддержкой AVX-512 (см. § ЦП с AVX-512 ), эти инструкции также могут использоваться с размерами векторов 128 и 256 бит. AVX-512 — не первый 512-битный набор инструкций SIMD, который Intel внедрила в процессоры: более ранние 512-битные инструкции SIMD, используемые в сопроцессорах Xeon Phi первого поколения и созданные на основе проекта Intel Larrabee , аналогичны, но не совместимы на двоичном уровне и только частично совместим с исходным кодом. [1]
Набор инструкций
[ редактировать ]Набор инструкций AVX-512 состоит из нескольких отдельных наборов, каждый из которых имеет свой собственный уникальный бит функции CPUID; однако они обычно группируются по поколению процессоров, в которых они реализованы.
- Ф, КД, ЕР, ПФ
- Представлен в Xeon Phi x200 (Knights Landing) и Xeon Gold/Platinum ( Skylake SP «Purley»), причем последние два (ER и PF) предназначены только для Knights Landing.
- AVX-512 Foundation (F) — расширяет большинство 32-битных и 64-битных AVX инструкций схемой кодирования EVEX для поддержки 512-битных регистров, масок операций, широковещательной передачи параметров, а также встроенного округления и контроля исключений, реализованных Knights Landing и Скайлейк Ксеон
- Инструкции по обнаружению конфликтов AVX-512 (компакт-диск) — эффективное обнаружение конфликтов, позволяющее векторизовать больше циклов , реализовано Knights Landing. [1] и Скайлейк Икс
- AVX-512 Экспоненциальные и обратные инструкции (ER) - экспоненциальные и обратные операции, предназначенные для реализации трансцендентных операций, реализованные Knights Landing. [1]
- AVX-512 Prefetch Instructions (PF) — новые возможности предварительной выборки, реализованные Knights Landing. [1]
- ВЛ, ДК, ЧБ
- Представлен вместе со Skylake X и Cannon Lake .
- Расширения векторной длины AVX-512 (VL) — расширяет большинство операций AVX-512 для работы с регистрами XMM (128-бит) и YMM (256-бит). [3]
- Инструкции AVX-512 с двойным и четверным словом (DQ) — добавляют новые 32-битные и 64-битные инструкции AVX-512. [3]
- AVX-512 Байтовые и словесные инструкции (BW) — расширяют AVX-512 для поддержки 8-битных и 16-битных целочисленных операций. [3]
- ИФМА, ВБМИ
- Представлено в Кэннон Лейк . [4]
- AVX-512 Integer Fused Multiply Add (IFMA) – объединенное умножение целых чисел с точностью до 52 бит.
- Инструкции по манипулированию векторными байтами AVX-512 (VBMI) добавляют инструкции по перестановке векторных байтов, которых не было в AVX-512BW.
- 4ВННИВ, 4ФМАПС
- Представлен вместе с Knights Mill . [5] [6]
- AVX-512 Векторные инструкции нейронной сети Word переменной точности (4VNNIW) — векторные инструкции для глубокого обучения, расширенного слова, переменной точности.
- AVX-512 Fused Multiply Accumulation Packed Single Precision (4FMAPS) — векторные инструкции для глубокого обучения, с плавающей запятой, одинарной точности.
- ВПОПКНТДК
- по подсчету векторной популяции Инструкция . Представлен вместе с Knights Mill и Ice Lake . [7]
- ВННИ, ВБМИ2, БИТАЛГ
- Представлено с Ледяным озером. [7]
- AVX-512 Vector Neural Network Instructions (VNNI) – векторные инструкции для глубокого обучения.
- AVX-512 Инструкция по манипулированию векторными байтами 2 (VBMI2) – загрузка байтов/слов, сохранение и объединение со сдвигом.
- Битовые алгоритмы AVX-512 (BITALG) — инструкции по манипуляции битами/словами , расширяющие VPOPCNTDQ.
- ВП2ИНТЕРСЕКТ
- Представлено с Тайгеровым озером.
- AVX-512 Пересечение векторной пары с парой регистров маски (VP2INTERSECT) .
- GFNI, VPCLMULQDQ, VAES
- Представлено с Ледяным озером. [7]
- Это не функции AVX-512 как таковые. Вместе с AVX-512 они позволяют использовать версии инструкций GFNI, PCLMULQDQ и AES в кодировке EVEX.
Кодировка и особенности
[ редактировать ]Префикс VEX, используемый AVX и AVX2, хотя и был гибким, не оставлял достаточно места для функций, которые Intel хотела добавить в AVX-512. Это побудило их определить новый префикс под названием EVEX .
По сравнению с VEX, EVEX имеет следующие преимущества: [6]
- Расширенное кодирование регистров, позволяющее использовать 32 512-битных регистра.
- Добавляет 8 новых регистров opmask для маскировки большинства инструкций AVX-512.
- Добавляет новый режим скалярной памяти, который автоматически выполняет широковещательную рассылку.
- Добавляет возможность явного управления округлением в каждой инструкции.
- памяти со сжатием смещения Добавляет новый режим адресации .
Расширенные регистры, бит ширины SIMD и регистры opmask AVX-512 являются обязательными и требуют поддержки со стороны ОС.
SIMD-режимы
[ редактировать ]Инструкции AVX-512 предназначены для смешивания с 128/256-битными инструкциями AVX/AVX2 без снижения производительности. Однако расширения AVX-512VL позволяют использовать инструкции AVX-512 в 128/256-битных регистрах XMM/YMM, поэтому большинство инструкций SSE и AVX/AVX2 имеют новые версии AVX-512, закодированные с префиксом EVEX , которые обеспечивают доступ к новым функциям. такие как opmask и дополнительные регистры. В отличие от AVX-256, новые инструкции не имеют новой мнемоники, но разделяют пространство имен с AVX, что делает различие между версиями инструкций, закодированными VEX и EVEX, в исходном коде неоднозначным. Поскольку AVX-512F работает только с 32- и 64-битными значениями, инструкции SSE и AVX/AVX2, которые работают с байтами или словами, доступны только с расширением AVX-512BW (поддержка байтов и слов). [6]
Имя | Наборы расширений | Регистры | Типы |
---|---|---|---|
Устаревшая ССЕ | SSE–SSE4.2 | хмм0–хмм15 | одиночные поплавки. Из SSE2: байты, слова, двойные слова, четверные слова и двойные числа с плавающей запятой. |
АВХ-128 (ВЕКС) | АВХ, АВХ2 | хмм0–хмм15 | байты, слова, двойные слова, четверные слова, одинарные и двойные числа с плавающей запятой. |
AVX-256 (ВЕКС) | АВХ, АВХ2 | ymm0–ymm15 | одинарное и двойное плавание. Из AVX2: байты, слова, двойные слова, четверные слова. |
AVX-128 (ЭВЕКС) | AVX-512ВЛ | xmm0–xmm31 (k0–k7) | двойные слова, четверные слова, одинарное и двойное плавающее число. С AVX512BW: байты и слова. С AVX512-FP16: полуплавающее. |
AVX-256 (ЭВЕКС) | AVX-512ВЛ | ymm0–ymm31 (k0–k7) | двойные слова, четверные слова, одинарное и двойное плавающее число. С AVX512BW: байты и слова. С AVX512-FP16: полуплавающее. |
AVX-512 (ЭВЕКС) | AVX-512F | zmm0–zmm31 (k0–k7) | двойные слова, четверные слова, одинарное и двойное плавающее число. С AVX512BW: байты и слова. С AVX512-FP16: полуплавающее. |
Расширенные регистры
[ редактировать ]511 256 | 255 128 | 127 0 |
ЗММ0 | YMM0 | ХММ0 |
ЗММ1 | ЯММ1 | ХММ1 |
ЗММ2 | YMM2 | ХММ2 |
ЗММ3 | YMM3 | ХММ3 |
ЗММ4 | YMM4 | ХММ4 |
ЗММ5 | ЯММ5 | ХММ5 |
ЗММ6 | ЯММ6 | ХММ6 |
ЗММ7 | YMM7 | ХММ7 |
ЗММ8 | YMM8 | ХММ8 |
ЗММ9 | YMM9 | ХММ9 |
ЗММ10 | ЯММ10 | ХММ10 |
ЗММ11 | ЯММ11 | ХММ11 |
ЗММ12 | ЯММ12 | ХММ12 |
ЗММ13 | ЯММ13 | ХММ13 |
ЗММ14 | ЯММ14 | ХММ14 |
ЗММ15 | ЯММ15 | ХММ15 |
ЗММ16 | ЯММ16 | ХММ16 |
ЗММ17 | ЯММ17 | ХММ17 |
ЗММ18 | ЯММ18 | ХММ18 |
ЗММ19 | ЯММ19 | ХММ19 |
ЗММ20 | ЯММ20 | ХММ20 |
ЗММ21 | ЯММ21 | ХММ21 |
ЗММ22 | ЯММ22 | ХММ22 |
ЗММ23 | ЯММ23 | ХММ23 |
ЗММ24 | ЯММ24 | ХММ24 |
ЗММ25 | ЯММ25 | ХММ25 |
ЗММ26 | ЯММ26 | ХММ26 |
ЗММ27 | ЯММ27 | ХММ27 |
ЗММ28 | ЯММ28 | ХММ28 |
ЗММ29 | ЯММ29 | ХММ29 |
ЗММ30 | ЯММ30 | ХММ30 |
ЗММ31 | ЯММ31 | ХММ31 |
Ширина файла регистров SIMD увеличена с 256 бит до 512 бит и увеличена с 16 до 32 регистров ZMM0–ZMM31. Эти регистры могут быть адресованы как 256-битные регистры YMM из расширений AVX и 128-битные регистры XMM из потоковых расширений SIMD , а устаревшие инструкции AVX и SSE могут быть расширены для работы с 16 дополнительными регистрами XMM16-XMM31 и YMM16-YMM31 при использовании EVEX. закодированная форма.
Регистры опмаски
[ редактировать ]Векторные инструкции AVX-512 могут указывать регистр opmask для управления тем, какие значения записываются в место назначения. Кодировка инструкций поддерживает значения от 0 до 7 для этого поля, однако в качестве регистров opmask можно использовать только k1–k7 (из k0–k7). маска, соответствующая значению 1–7, тогда как значение 0 зарезервировано для указания того, что регистр opmask не используется, т. е. для обозначения немаскированных операций используется жестко запрограммированная константа (вместо «k0»). Специальный регистр opmask «k0» по-прежнему является действующим и действительным регистром. Его можно использовать в инструкциях по манипуляции с opmask или использовать в качестве целевого регистра opmask. [8] Флаг управляет поведением opmask, которое может быть либо «нулевым», что обнуляет все, что не выбрано маской, либо «объединением», что оставляет все невыделенное нетронутым. Поведение слияния идентично инструкциям смешивания.
Регистры opmask обычно имеют ширину 16 бит, но с расширением AVX-512BW могут достигать 64 бит. [6] Однако то, сколько битов фактически используется, зависит от векторного типа маскируемых инструкций. Для 32-битных одинарных или двойных слов с плавающей запятой 16 бит используются для маскировки 16 элементов в 512-битном регистре. Для двойных слов с плавающей запятой и четверных слов используется не более 8 битов маски.
Регистр opmask является причиной того, что в AVX-512 были добавлены несколько побитовых инструкций, которые, естественно, не имеют ширины элементов. Например, побитовое И, ИЛИ или 128-битное перемешивание теперь существует как в вариантах с двойным словом, так и с четырьмя словами, с той лишь разницей, что в окончательной маскировке.
Новые инструкции по маске
[ редактировать ]Регистры opmask имеют новое мини-расширение инструкций, работающих непосредственно с ними. В отличие от остальных инструкций AVX-512, все эти инструкции закодированы VEX. Все первоначальные инструкции opmask представляют собой 16-битные версии (Word). В AVX-512DQ были добавлены 8-битные (Byte) версии, чтобы лучше соответствовать требованиям маскировки 8 64-битных значений, а в AVX-512BW были добавлены 32-битные (Double) и 64-битные (Quad) версии, чтобы они могли маска до 64 8-битных значений. Инструкции KORTEST и KTEST можно использовать для установки флагов x86 на основе регистров маски, чтобы их можно было использовать вместе с инструкциями ветвления x86, отличными от SIMD, и условными инструкциями.
Инструкция | Набор расширений | Описание |
---|---|---|
KAND
|
Ф | Побитовое логическое И Маски |
KANDN
|
Ф | Побитовое логическое И НЕ Маски |
KMOV
|
Ф | Переход из и в регистры маски или регистры общего назначения. |
KUNPCK
|
Ф | Распаковать регистры маски |
KNOT
|
Ф | НЕ регистрация маски |
KOR
|
Ф | Побитовые логические маски ИЛИ |
KORTEST
|
Ф | ИЛИ Маски и флаги |
KSHIFTL
|
Ф | Сдвиг регистров маски влево |
KSHIFTR
|
Ф | Регистры маски сдвига вправо |
KXNOR
|
Ф | Побитовые логические маски XNOR |
KXOR
|
Ф | Побитовые логические маски XOR |
KADD
|
ЧБ/ДК | Добавьте две маски |
KTEST
|
ЧБ/ДК | Побитовое сравнение и установка флагов |
Новые инструкции в тональной основе AVX-512
[ редактировать ]Многие инструкции AVX-512 представляют собой просто EVEX-версии старых инструкций SSE или AVX. Однако есть несколько новых инструкций, а также старые инструкции, которые были заменены новыми версиями AVX-512. Ниже перечислены новые или сильно переработанные инструкции. Эти базовые инструкции также включают расширения AVX-512VL и AVX-512BW, поскольку эти расширения просто добавляют новые версии этих инструкций вместо новых инструкций.
Растушуйте с помощью маски
[ редактировать ]Версий инструкций смешивания из SSE4 с префиксом EVEX не существует ; вместо этого AVX-512 имеет новый набор инструкций смешивания, использующих регистры маски в качестве селекторов. Вместе с приведенными ниже общими инструкциями сравнения с маской они могут использоваться для реализации общих троичных операций или cmov, аналогичных XOP VPCMOV в .
Поскольку смешивание является неотъемлемой частью кодирования EVEX, эти инструкции также можно считать базовыми инструкциями перемещения. Используя режим наложения обнуления, их также можно использовать в качестве инструкций маскировки.
Инструкция | Набор расширений | Описание |
---|---|---|
VBLENDMPD
|
Ф | Смешивание векторов float64 с использованием элемента управления opmask |
VBLENDMPS
|
Ф | Смешивание векторов float32 с использованием элемента управления opmask |
VPBLENDMD
|
Ф | Смешивание векторов int32 с использованием элемента управления opmask |
VPBLENDMQ
|
Ф | Смешивание векторов int64 с использованием элемента управления opmask |
VPBLENDMB
|
ЧБ | Смешайте байтовые целочисленные векторы с помощью управления opmask |
VPBLENDMW
|
ЧБ | Смешайте целочисленные векторы слов с помощью элемента управления opmask |
Сравнить с маской
[ редактировать ]AVX-512F имеет четыре новые инструкции сравнения. Как и их коллеги из XOP, они используют поле «Непосредственно» для выбора между 8 различными сравнениями. Однако, в отличие от своего вдохновения XOP, они сохраняют результат в регистре маски и изначально поддерживают только сравнения двойных и четверных слов. Расширение AVX-512BW предоставляет байтовые и словные версии. Обратите внимание, что для инструкций могут быть указаны два регистра маски: один для записи, а другой для объявления обычного маскировки. [6]
Немедленный | Сравнение | Описание |
---|---|---|
0 | эквалайзер | Равный |
1 | LT | Меньше, чем |
2 | ТО | Меньше или равно |
3 | ЛОЖЬ | Установить на ноль |
4 | НЕТ | Не равно |
5 | НЛТ | Больше или равно |
6 | я не могу | Больше, чем |
7 | истинный | Установить на один |
Инструкция | Набор расширений | Описание |
---|---|---|
VPCMPD , VPCMPUD
|
Ф | Сравнить знаковые/беззнаковые двойные слова в маске |
VPCMPQ , VPCMPUQ
|
Ф | Сравните знаковые/беззнаковые четверные слова в маске |
VPCMPB , VPCMPUB
|
ЧБ | Сравнить подписанные/беззнаковые байты в маске |
VPCMPW , VPCMPUW
|
ЧБ | Сравните слова со знаком и без знака в маске |
Маска логического набора
[ редактировать ]Последний способ установки масок — использование маски логического набора. Эти инструкции выполняют либо И, либо НЕИ, а затем устанавливают операционную маску назначения на основе нулевых или ненулевых значений результата. Обратите внимание, что, как и инструкции сравнения, они принимают два регистра опмаски: один в качестве назначения, а другой — обычную операционную маску.
Инструкция | Набор расширений | Описание |
---|---|---|
VPTESTMD , VPTESTMQ
|
Ф | Логическое И и установка маски для 32- или 64-битных целых чисел. |
VPTESTNMD , VPTESTNMQ
|
Ф | Логическое NAND и установка маски для 32- или 64-битных целых чисел. |
VPTESTMB , VPTESTMW
|
ЧБ | Логическое И и установка маски для 8- или 16-битных целых чисел. |
VPTESTNMB , VPTESTNMW
|
ЧБ | Логическое NAND и установка маски для 8 или 16-битных целых чисел. |
Сжимать и расширять
[ редактировать ]Инструкции сжатия и расширения соответствуют APL одноименным операциям . Они используют opmask немного иначе, чем другие инструкции AVX-512. Сжатие сохраняет только значения, отмеченные в маске, но сохраняет их в сжатом виде, пропуская и не резервируя место для неотмеченных значений. Расширение работает противоположным образом: загружается столько значений, сколько указано в маске, а затем распределяется по выбранным позициям.
Инструкция | Описание |
---|---|
VCOMPRESSPD , VCOMPRESSPS
|
Храните разреженные упакованные значения с плавающей запятой двойной или одинарной точности в плотной памяти. |
VPCOMPRESSD , VPCOMPRESSQ
|
Храните разреженные упакованные целочисленные значения двойного или четверного слова в плотной памяти/регистре. |
VEXPANDPD , VEXPANDPS
|
Загрузка разреженных упакованных значений с плавающей запятой двойной или одинарной точности из плотной памяти |
VPEXPANDD , VPEXPANDQ
|
Загрузка разреженных упакованных целочисленных значений двойного или четверного слова из плотной памяти/регистра |
Обмены
[ редактировать ]новый набор инструкций перестановки Был добавлен для полных двух перестановок входных данных. Все они принимают три аргумента, два исходных регистра и один индекс; результат выводится путем перезаписи первого исходного регистра или индексного регистра. AVX-512BW расширяет инструкции, включая 16-битные версии (слова), а расширение AVX-512_VBMI определяет байтовые версии инструкций.
Инструкция | Набор расширений | Описание |
---|---|---|
VPERMB
|
ВИМТ | Перестановка элементов упакованных байтов. |
VPERMW
|
ЧБ | Перестановка элементов упакованных слов. |
VPERMT2B
|
ВИМТ | Полная перестановка байтов перезаписывает первый источник. |
VPERMT2W
|
ЧБ | Полная перестановка слов перезаписывает первый источник. |
VPERMI2PD , VPERMI2PS
|
Ф | Полная одинарная/двойная перестановка с плавающей запятой, перезаписывающая индекс. |
VPERMI2D , VPERMI2Q
|
Ф | Полная перестановка двойного/четверного слова перезаписывает индекс. |
VPERMI2B
|
ВИМТ | Полная перестановка байтов перезаписывает индекс. |
VPERMI2W
|
ЧБ | Полная перестановка слов с перезаписью индекса. |
VPERMT2PS , VPERMT2PD
|
Ф | Полная одинарная/двойная перестановка с плавающей запятой, перезаписывающая первый источник. |
VPERMT2D , VPERMT2Q
|
Ф | Полная перестановка двойных/четверных слов с перезаписью первого источника. |
VSHUFF32x4 , VSHUFF64x2 , VSHUFI32x4 , VSHUFI64x2
|
Ф | Перетасуйте четыре упакованные 128-битные строки. |
VPMULTISHIFTQB
|
ВИМТ | Выберите упакованные невыровненные байты из источников четверных слов. |
Побитовая троичная логика
[ редактировать ]Добавлены две новые инструкции, которые могут логически реализовать все возможные побитовые операции между тремя входами. Они принимают на вход три регистра и 8-битное непосредственное поле. Каждый бит на выходе генерируется с использованием поиска трех соответствующих битов на входах для выбора одной из 8 позиций в 8-битном немедленном сообщении. Поскольку с использованием трех бит возможны только 8 комбинаций, это позволяет выполнять все возможные 3 входные побитовые операции. [6] Это единственные побитовые векторные инструкции в AVX-512F; Версии EVEX двух исходных побитовых векторных инструкций SSE и AVX AND, ANDN, OR и XOR были добавлены в AVX-512DQ.
Разница между версиями двойного и четверного слова заключается только в применении opmask.
Инструкция | Описание |
---|---|
VPTERNLOGD , VPTERNLOGQ
|
Побитовая троичная логика |
А0 | А1 | А2 | Двойное И (0x80) |
Двойное ИЛИ (0xFE) |
Побитовое смешивание (0xCA) |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 1 |
0 | 1 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 |
Конверсии
[ редактировать ]Был добавлен ряд инструкций преобразования или перемещения; они дополняют набор инструкций преобразования, доступных в SSE2.
Инструкция | Набор расширений | Описание |
---|---|---|
|
Ф | Преобразование четверного или двойного слова в двойное слово, слово или байт; ненасыщенный, насыщенный или насыщенный без знака. Обратная инструкция расширения знака/нуля из SSE4.1 . |
VPMOVWB , VPMOVSWB , VPMOVUSWB
|
ЧБ | Преобразовать слово в байт; ненасыщенный, насыщенный или насыщенный без знака. |
VCVTPS2UDQ , VCVTPD2UDQ , VCVTTPS2UDQ , VCVTTPD2UDQ
|
Ф | Преобразование с усечением или без него упакованных чисел с плавающей запятой одинарной или двойной точности в упакованные целые числа с двойным словом без знака. |
VCVTSS2USI , VCVTSD2USI , VCVTTSS2USI , VCVTTSD2USI
|
Ф | Преобразование скалярных чисел с плавающей запятой одинарной или двойной точности с усечением или без него в целое число без знака с двойным словом. |
VCVTPS2QQ , VCVTPD2QQ , VCVTPS2UQQ , VCVTPD2UQQ , VCVTTPS2QQ , VCVTTPD2QQ , VCVTTPS2UQQ , VCVTTPD2UQQ
|
ДК | Преобразование с усечением или без него упакованных чисел с плавающей запятой одинарной или двойной точности в упакованные целые числа из четырех слов со знаком или без знака. |
VCVTUDQ2PS , VCVTUDQ2PD
|
Ф | Преобразуйте упакованные целые числа двойного слова без знака в упакованные числа с плавающей запятой одинарной или двойной точности. |
VCVTUSI2PS , VCVTUSI2PD
|
Ф | Преобразуйте скалярные целые числа двойного слова без знака в числа с плавающей запятой одинарной или двойной точности. |
VCVTUSI2SD , VCVTUSI2SS
|
Ф | Преобразуйте скалярные целые числа без знака в числа с плавающей запятой одинарной или двойной точности. |
VCVTUQQ2PS , VCVTUQQ2PD
|
ДК | Преобразуйте упакованные целые числа из четырех слов без знака в упакованные числа с плавающей запятой одинарной или двойной точности. |
VCVTQQ2PD , VCVTQQ2PS
|
Ф | Преобразуйте упакованные целые числа из четырех слов в упакованные числа с плавающей запятой одинарной или двойной точности. |
Разложение с плавающей запятой
[ редактировать ]Среди уникальных новых функций AVX-512F — инструкции по разложению значений с плавающей запятой и обработке специальных значений с плавающей запятой . Поскольку эти методы совершенно новые, они существуют и в скалярных версиях.
Инструкция | Описание |
---|---|
VGETEXPPD , VGETEXPPS
|
Преобразуйте показатели упакованных значений fp в значения fp |
VGETEXPSD , VGETEXPSS
|
Преобразование показателя скалярного значения fp в значение fp |
VGETMANTPD , VGETMANTPS
|
Извлечь вектор нормализованных мантисс из вектора float32/float64 |
VGETMANTSD , VGETMANTSS
|
Извлечение float32/float64 нормализованной мантиссы из скаляра float32/float64 |
VFIXUPIMMPD , VFIXUPIMMPS
|
Исправьте специальные упакованные значения float32/float64. |
VFIXUPIMMSD , VFIXUPIMMSS
|
Исправьте специальное скалярное значение float32/float64. |
Арифметика с плавающей запятой
[ редактировать ]Это второй набор новых методов с плавающей запятой, который включает в себя новое масштабирование и приближенный расчет обратной величины и обратной величины квадратного корня. Приблизительные обратные инструкции гарантируют максимальную относительную ошибку 2. −14 . [6]
Инструкция | Описание |
---|---|
VRCP14PD , VRCP14PS
|
Вычисление приблизительных обратных величин упакованных значений float32/float64 |
VRCP14SD , VRCP14SS
|
Вычисление приблизительных обратных величин скалярного значения float32/float64 |
VRNDSCALEPS , VRNDSCALEPD
|
Округленные упакованные значения float32/float64, включающие заданное количество дробных битов. |
VRNDSCALESS , VRNDSCALESD
|
Круглое скалярное значение float32/float64, включающее заданное количество дробных битов. |
VRSQRT14PD , VRSQRT14PS
|
Вычислить приблизительные значения, обратные квадратным корням упакованных значений float32/float64. |
VRSQRT14SD , VRSQRT14SS
|
Вычислить приблизительную величину, обратную квадратному корню скалярного значения float32/float64 |
VSCALEFPS , VSCALEFPD
|
Масштабируйте упакованные значения float32/float64 с помощью значений float32/float64. |
VSCALEFSS , VSCALEFSD
|
Масштабируйте скалярное значение float32/float64 с помощью значения float32/float64. |
Транслировать
[ редактировать ]Инструкция | Набор расширений | Описание |
---|---|---|
VBROADCASTSS , VBROADCASTSD
|
Ф, ВЛ | Широковещательная передача одинарного/двойного значения с плавающей запятой |
VPBROADCASTB , VPBROADCASTW , VPBROADCASTD , VPBROADCASTQ
|
Ф, ВЛ, ДК, ЧБ | Передача целочисленного значения в виде байта/слова/двойного слова/четверного слова. |
VBROADCASTI32X2 , VBROADCASTI64X2 , VBROADCASTI32X4 , VBROADCASTI32X8 , VBROADCASTI64X4
|
Ф, ВЛ, ДК, ЧБ | Передача двух или четырех целочисленных значений двойного или четверного слова. |
Разнообразный
[ редактировать ]Инструкция | Набор расширений | Описание |
---|---|---|
VALIGND , VALIGNQ
|
Ф, ВЛ | Выравнивание векторов двойных или четверных слов |
VDBPSADBW
|
ЧБ | Двойная блочная упаковка суммы-абсолютных разностей (SAD) в беззнаковых байтах |
VPABSQ
|
Ф | Упакованное четверное слово с абсолютным значением |
VPMAXSQ , VPMAXUQ
|
Ф | Максимум упакованного четверного слова со знаком/без знака |
VPMINSQ , VPMINUQ
|
Ф | Минимум упакованного четверного слова со знаком/без знака |
VPROLD , VPROLVD , VPROLQ , VPROLVQ , VPRORD , VPRORVD , VPRORQ , VPRORVQ
|
Ф | Бит вращается влево или вправо |
VPSCATTERDD , VPSCATTERDQ , VPSCATTERQD , VPSCATTERQQ
|
Ф | Разбросанное упакованное двойное/четверное слово со знаковыми индексами двойного и четверного слова |
VSCATTERDPS , VSCATTERDPD , VSCATTERQPS , VSCATTERQPD
|
Ф | Scatter упакованный float32/float64 с индексами двойного и четверного слова со знаком |
Новые инструкции по наборам
[ редактировать ]Обнаружение конфликтов
[ редактировать ]Инструкции в обнаружении конфликтов AVX-512 (AVX-512CD) предназначены для эффективного расчета бесконфликтных подмножеств элементов в циклах, которые обычно не могут быть безопасно векторизованы. [9]
Инструкция | Имя | Описание |
---|---|---|
VPCONFLICTD , VPCONFLICTQ
|
Обнаружение конфликтов внутри вектора упакованных значений двойных или четверных слов. | Сравнивает каждый элемент в первом источнике со всеми элементами в том же или более ранних местах во втором источнике и формирует битовый вектор результатов. |
VPLZCNTD , VPLZCNTQ
|
Подсчитайте количество начальных нулевых битов для упакованных значений двойного или четверного слова. | Векторизованный LZCNT инструкция
|
VPBROADCASTMB2Q , VPBROADCASTMW2D
|
Маска трансляции в векторный регистр | Либо 8-битная маска для вектора четверного слова, либо 16-битная маска для вектора двойного слова. |
Экспоненциальный и обратный
[ редактировать ]Экспоненциальные и обратные инструкции AVX-512 (AVX-512ER) содержат более точные приблизительные обратные инструкции, чем инструкции в основе AVX-512; относительная ошибка не более 2 −28 . Они также содержат две новые показательные функции, имеющие относительную погрешность не более 2. −23 . [6]
Инструкция | Описание |
---|---|
VEXP2PD , VEXP2PS
|
Вычисление приблизительной экспоненты 2^x упакованных значений с плавающей запятой одинарной или двойной точности |
VRCP28PD , VRCP28PS
|
Вычисление приблизительных обратных величин упакованных значений с плавающей запятой одинарной или двойной точности. |
VRCP28SD , VRCP28SS
|
Вычисление приблизительной обратной величины скалярного значения с плавающей запятой одинарной или двойной точности |
VRSQRT28PD , VRSQRT28PS
|
Вычисление приблизительных обратных величин квадратных корней упакованных значений с плавающей запятой одинарной или двойной точности. |
VRSQRT28SD , VRSQRT28SS
|
Вычисление приблизительной обратной величины квадратного корня скалярного значения с плавающей запятой одинарной или двойной точности |
Предварительная выборка
[ редактировать ]Инструкции предварительной выборки AVX-512 (AVX-512PF) содержат новые операции предварительной выборки для новых функций рассеяния и сбора, представленных в AVX2 и AVX-512. T0
предварительная выборка означает предварительную выборку в кеш уровня 1 и T1
означает предварительную выборку в кеш уровня 2.
Инструкция | Описание |
---|---|
VGATHERPF0DPS , VGATHERPF0QPS , VGATHERPF0DPD , VGATHERPF0QPD
|
Используя индексы dword/qword со знаком, предварительно извлеките ячейки памяти с разреженными байтами, содержащие данные одинарной/двойной точности, используя opmask k1 и подсказку T0. |
VGATHERPF1DPS , VGATHERPF1QPS , VGATHERPF1DPD , VGATHERPF1QPD
|
Используя индексы dword/qword со знаком, предварительно извлеките ячейки памяти с разреженными байтами, содержащие данные одинарной/двойной точности, используя opmask k1 и подсказку T1. |
VSCATTERPF0DPS , VSCATTERPF0QPS , VSCATTERPF0DPD , VSCATTERPF0QPD
|
Используя индексы dword/qword со знаком, предварительно извлеките разреженные байтовые ячейки памяти, содержащие данные одинарной/двойной точности, используя маску записи k1 и подсказку T0 с намерением записать. |
VSCATTERPF1DPS , VSCATTERPF1QPS , VSCATTERPF1DPD , VSCATTERPF1QPD
|
Используя индексы dword/qword со знаком, предварительно извлеките ячейки памяти с разреженными байтами, содержащие данные одинарной/двойной точности, используя маску записи k1 и подсказку T1 с намерением записать. |
4FMAPS и 4VNNIW
[ редактировать ]Два набора инструкций выполняют несколько итераций обработки. Обычно они встречаются только в продуктах Xeon Phi.
Инструкция | Набор расширений | Описание |
---|---|---|
V4FMADDPS , V4FMADDSS
|
4FMAPS | Упакованное/скалярное умножение-сложение одинарной точности с плавающей запятой (4 итерации) |
V4FNMADDPS , V4FNMADDSS
|
4FMAPS | Упакованные/скалярные операции с плавающей запятой одинарной точности, умножение, сложение и отрицание (4 итерации) |
VP4DPWSSD
|
4ВННИВ | Скалярное произведение подписанных слов с накоплением двойных слов (4 итерации) |
VP4DPWSSDS
|
4ВННИВ | Скалярное произведение подписанных слов с накоплением и насыщением двойных слов (4 итерации) |
BW, DQ и VBMI
[ редактировать ]AVX-512DQ добавляет новые инструкции из двойного и четверного слова. AVX-512BW добавляет байтовые и словесные версии одних и тех же инструкций, а также добавляет байтовые и словесные версии инструкций двойного/четверного слова в AVX-512F. Некоторые инструкции, которые получают только словесные формы с помощью AVX-512BW, приобретают байтовые формы с расширением AVX-512_VBMI ( VPERMB
, VPERMI2B
, VPERMT2B
, VPMULTISHIFTQB
).
В набор инструкций маски были добавлены две новые инструкции: KADD
и KTEST
(B и W формируются с AVX-512DQ, D и Q с AVX-512BW). Остальные инструкции маски, которые имели только словесные формы, получили байтовые формы с AVX-512DQ и формы двойного/четверного слова с AVX-512BW. KUNPCKBW
был распространен на KUNPCKWD
и KUNPCKDQ
от AVX-512BW.
Среди инструкций, добавленных AVX-512DQ, есть несколько инструкций SSE и AVX, которые не получили версии AVX-512 с AVX-512F, среди них все две входные побитовые инструкции и инструкции извлечения/вставки целых чисел.
Ниже приведены совершенно новые инструкции.
Инструкции с плавающей запятой
[ редактировать ]Введены три новые операции с плавающей запятой. Поскольку они не только новы для AVX-512, у них есть как упакованные/SIMD, так и скалярные версии.
The VFPCLASS
Инструкции проверяют, является ли значение с плавающей запятой одним из восьми специальных значений с плавающей запятой, какое из восьми значений запускает бит в регистре выходной маски, контролируется непосредственным полем. VRANGE
инструкции выполняют минимальные или максимальные операции в зависимости от значения непосредственного поля, которое также может контролировать, выполняется ли операция абсолютно или нет, и отдельно, как обрабатывается знак. VREDUCE
инструкции работают с одним источником и вычитают из него целую часть значения источника плюс количество битов, указанных в непосредственном поле его дроби.
Инструкция | Набор расширений | Описание |
---|---|---|
VFPCLASSPS , VFPCLASSPD
|
ДК | Типы тестов упакованных значений с плавающей запятой одинарной и двойной точности. |
VFPCLASSSS , VFPCLASSSD
|
ДК | Типы тестов скалярных значений с плавающей запятой одинарной и двойной точности. |
VRANGEPS , VRANGEPD
|
ДК | Вычисление ограничения диапазона для упакованных значений с плавающей запятой. |
VRANGESS , VRANGESD
|
ДК | Вычисление ограничения диапазона для скалярных значений с плавающей запятой. |
VREDUCEPS , VREDUCEPD
|
ДК | Выполните преобразование сокращения упакованных значений с плавающей запятой. |
VREDUCESS , VREDUCESD
|
ДК | Выполните преобразование сокращения скалярных значений с плавающей запятой. |
Прочие инструкции
[ редактировать ]Инструкция | Набор расширений | Описание |
---|---|---|
VPMOVM2D , VPMOVM2Q
|
ДК | Преобразуйте регистр маски в векторный регистр с двумя или четырьмя словами. |
VPMOVM2B , VPMOVM2W
|
ЧБ | Преобразуйте регистр маски в регистр вектора байта или слова. |
VPMOVD2M , VPMOVQ2M
|
ДК | Преобразуйте векторный регистр двойного или четверного слова в регистр маски. |
VPMOVB2M , VPMOVW2M
|
ЧБ | Преобразуйте регистр вектора байта или слова в регистр маски. |
VPMULLQ
|
ДК | Множественно упакованные четырехсловные слова сохраняют низкий результат. Версия VPMULLD из четырех слов. |
индекс ИМТ2
[ редактировать ]Расширьте VPCOMPRESS и VPEXPAND вариантами байтов и слов. Инструкции по сменам новые.
Инструкция | Описание |
---|---|
VPCOMPRESSB , VPCOMPRESSW
|
Сохраняйте разреженные упакованные целочисленные значения байтов/слов в плотной памяти/регистре. |
VPEXPANDB , VPEXPANDW
|
Загрузка разреженных упакованных целочисленных значений байтов/слов из плотной памяти/регистра |
VPSHLD
|
Объединение и сдвиг упакованных данных влево от логики |
VPSHLDV
|
Конкатенация и переменный сдвиг упакованных данных слева от логики |
VPSHRD
|
Объединить и сдвинуть упакованные данные вправо по логике. |
VPSHRDV
|
Объединение и переменный сдвиг упакованных данных вправо по логике |
ВННИ
[ редактировать ]Инструкции векторной нейронной сети: [10] AVX512-VNNI добавляет инструкции в коде EVEX, описанные ниже. В AVX-512F эти инструкции могут работать с 512-битными векторами, а в AVX-512VL дополнительно добавлена поддержка 128- и 256-битных векторов.
Более позднее расширение AVX-VNNI добавляет VEX кодировку этих инструкций , которая может работать только с 128- или 256-битными векторами. AVX-VNNI не является частью пакета AVX-512, он не требует AVX-512F и может быть реализован независимо.
Инструкция | Описание |
---|---|
VPDPBUSD
|
Умножить и добавить беззнаковые и подписанные байты |
VPDPBUSDS
|
Умножьте и добавьте беззнаковые и подписанные байты с насыщением |
VPDPWSSD
|
Умножить и сложить целые числа со знаком |
VPDPWSSDS
|
Умножить и сложить целые числа слов с насыщением |
ИФМА
[ редактировать ]Инструкции умножения-сложения целых чисел. AVX512-IFMA добавляет инструкции в коде EVEX , описанные ниже.
Отдельное AVX-IFMA расширение набора команд VEX определяет кодировку этих инструкций . Это расширение не является частью пакета AVX-512 и может быть реализовано независимо.
Инструкция | Набор расширений | Описание |
---|---|---|
VPMADD52LUQ
|
ИФМА | Упакованное умножение 52-битных целых чисел без знака и добавление младших 52-битных произведений к 64-битным аккумуляторам. |
VPMADD52HUQ
|
ИФМА | Упакованное умножение 52-битных целых чисел без знака и добавление старших 52-битных произведений к 64-битным аккумуляторам. |
ВПОПКНТДК и БИТАЛГ
[ редактировать ]Инструкция | Набор расширений | Описание |
---|---|---|
VPOPCNTD , VPOPCNTQ
|
ВПОПКНТДК | Возвращает количество битов, установленных в 1 в двойном/четверном слове. |
VPOPCNTB , VPOPCNTW
|
БИТАЛГ | Возвращает количество битов, установленных в 1 в байте/слове. |
VPSHUFBITQMB
|
БИТАЛГ | Перетасуйте биты из элементов четверного слова, используя байтовые индексы, в маску. |
ВП2ИНТЕРСЕКТ
[ редактировать ]Инструкция | Набор расширений | Описание |
---|---|---|
VP2INTERSECTD , VP2INTERSECTQ
|
ВП2ИНТЕРСЕКТ | Вычисление пересечения двойных/четверных слов с парой регистров маски |
ГФНИ
[ редактировать ]Новые инструкции поля Галуа полезны для криптографии, [11] поскольку их можно использовать для реализации S-блоков в стиле Rijndael, таких как те, которые используются в AES, Camellia и SM4 . [12] Эти инструкции также могут использоваться для манипуляций с битами в сетях и обработке сигналов. [11]
GFNI — это автономное расширение набора команд, которое можно включить отдельно от AVX или AVX-512. В зависимости от того, указана ли процессором поддержка AVX и AVX-512F, поддержка GFNI позволяет использовать устаревшие (SSE), инструкции в кодировке VEX или EVEX, работающие с 128-, 256- или 512-битными векторами.
Инструкция | Описание |
---|---|
VGF2P8AFFINEINVQB
|
Аффинное обратное преобразование поля Галуа |
VGF2P8AFFINEQB
|
Аффинное преобразование поля Галуа |
VGF2P8MULB
|
Поле Галуа умножает байты |
ВПКLMULQDQ
[ редактировать ]VPCLMULQDQ с AVX-512F добавляет 512-битную версию инструкции PCLMULQDQ в кодировке EVEX . В AVX-512VL добавлены 256- и 128-битные версии с кодировкой EVEX. Только VPCLMULQDQ (то есть на процессорах, отличных от AVX512) добавляет только 256-битную версию с кодировкой VEX. (Наличие 128-битной версии с кодировкой VEX указывается разными битами CPUID: PCLMULQDQ и AVX.) Более широкие, чем 128-битные, варианты инструкции выполняют одну и ту же операцию с каждой 128-битной частью входных регистров, но они не расширять его для выбора четверных слов из разных 128-битных полей (значение операнда imm8 одинаково: выбирается либо младшее, либо старшее четверное слово 128-битного поля).
Инструкция | Описание |
---|---|
VPCLMULQDQ
|
Четверное слово умножения без переноса |
ОАЭ
[ редактировать ]в кодировке VEX и EVEX Инструкции AES . Более широкие, чем 128-битные варианты инструкции выполняют одну и ту же операцию с каждой 128-битной частью входных регистров. Версии VEX можно использовать без поддержки AVX-512.
Инструкция | Описание |
---|---|
VAESDEC
|
Выполните один раунд потока расшифровки AES. |
VAESDECLAST
|
Выполнить последний раунд потока расшифровки AES. |
VAESENC
|
Выполните один раунд потока шифрования AES. |
VAESENCLAST
|
Выполнить последний раунд потока шифрования AES. |
БФ16
[ редактировать ]Инструкции по ускорению AI, работающие с числами Bfloat16 .
Инструкция | Описание |
---|---|
VCVTNE2PS2BF16
|
Преобразование двух векторов упакованных чисел одинарной точности в один вектор упакованных чисел Bfloat16. |
VCVTNEPS2BF16
|
Преобразование одного вектора упакованных чисел одинарной точности в один вектор упакованных чисел Bfloat16. |
VDPBF16PS
|
Вычислить скалярное произведение двух пар Bfloat16 и накопить результат в одно упакованное число одинарной точности. |
РП16
[ редактировать ]Расширение более раннего набора команд F16C , добавляющее комплексную поддержку чисел с плавающей запятой в двоичном формате 16 (также известных как FP16, float16 или числа с плавающей запятой половинной точности). Новые инструкции реализуют большинство операций, которые ранее были доступны для одинарной и двойной чисел с плавающей запятой точности, а также представляют новые инструкции для комплексных чисел и инструкции преобразования. Поддерживаются скалярные и пакетные операции.
В отличие от инструкций формата одинарной и двойной точности, операнды половинной точности не сбрасываются условно до нуля ( FTZ ) и не обрабатываются условно как ноль ( DAZ ) на основании MXCSR
настройки. Субнормальные значения обрабатываются на полной скорости аппаратно, чтобы облегчить использование полного динамического диапазона чисел FP16. Инструкции, создающие номера FP32 и FP64, по-прежнему учитывают MXCSR.FTZ
кусочек. [13]
Арифметические инструкции
[ редактировать ]Инструкция | Описание |
---|---|
VADDPH , VADDSH
|
Добавьте упакованные/скалярные числа FP16. |
VSUBPH , VSUBSH
|
Вычтите упакованные/скалярные числа FP16. |
VMULPH , VMULSH
|
Умножьте упакованные/скалярные числа FP16. |
VDIVPH , VDIVSH
|
Разделите упакованные/скалярные числа FP16. |
VSQRTPH , VSQRTSH
|
Вычислите квадратный корень из упакованных/скалярных чисел FP16. |
VFMADD{132, 213, 231}PH , VFMADD{132, 213, 231}SH
|
Умножение-сложение упакованных/скалярных чисел FP16. |
VFNMADD{132, 213, 231}PH , VFNMADD{132, 213, 231}SH
|
Отрицательные упакованные/скалярные числа FP16 умножения-сложения. |
VFMSUB{132, 213, 231}PH , VFMSUB{132, 213, 231}SH
|
Умножение-вычитание упакованных/скалярных чисел FP16. |
VFNMSUB{132, 213, 231}PH , VFNMSUB{132, 213, 231}SH
|
Отрицательные упакованные/скалярные числа FP16 умножения-вычитания. |
VFMADDSUB{132, 213, 231}PH
|
Умножение-сложение (нечетные векторные элементы) или умножение-вычитание (четные векторные элементы) упакованные числа FP16. |
VFMSUBADD{132, 213, 231}PH
|
Упакованные числа FP16 умножения-вычитания (нечетные векторные элементы) или умножения-сложения (четные векторные элементы). |
VREDUCEPH , VREDUCESH
|
Выполните преобразование сокращения упакованных/скалярных чисел FP16. |
VRNDSCALEPH , VRNDSCALESH
|
Округлите упакованные/скалярные числа FP16 до заданного количества дробных бит. |
VSCALEFPH , VSCALEFSH
|
Масштабируйте упакованные/скалярные числа FP16, умножая их на степень двойки. |
Сложные арифметические инструкции
[ редактировать ]Инструкция | Описание |
---|---|
VFMULCPH , VFMULCSH
|
Умножьте упакованные/скалярные комплексные числа FP16. |
VFCMULCPH , VFCMULCSH
|
Умножьте упакованные/скалярные комплексные числа FP16. Комплексно-сопряженная форма операции. |
VFMADDCPH , VFMADDCSH
|
Умножение-сложение упакованных/скалярных комплексных чисел FP16. |
VFCMADDCPH , VFCMADDCSH
|
Умножение-сложение упакованных/скалярных комплексных чисел FP16. Комплексно-сопряженная форма операции. |
Примерные взаимные инструкции
[ редактировать ]Инструкция | Описание |
---|---|
VRCPPH , VRCPSH
|
Вычислите приблизительное обратное значение упакованных/скалярных чисел FP16. Максимальная относительная погрешность аппроксимации не превышает 2 −11 +2 −14 . |
VRSQRTPH , VRSQRTSH
|
Вычислите приблизительный обратный квадратный корень из упакованных/скалярных чисел FP16. Максимальная относительная погрешность аппроксимации не превышает 2 −14 . |
Инструкции по сравнению
[ редактировать ]Инструкция | Описание |
---|---|
VCMPPH , VCMPSH
|
Сравните упакованные/скалярные числа FP16 и сохраните результат в регистре маски. |
VCOMISH
|
Сравните скалярные числа FP16 и сохраните результат в регистре флагов. Сигнализирует об исключении, если исходным операндом является QNaN или SNaN. |
VUCOMISH
|
Сравните скалярные числа FP16 и сохраните результат в регистре флагов. Сигнализирует об исключении, только если исходным операндом является SNaN. |
VMAXPH , VMAXSH
|
Выберите максимум каждой вертикальной пары исходных упакованных/скалярных чисел FP16. |
VMINPH , VMINSH
|
Выберите минимум каждой вертикальной пары исходных упакованных/скалярных чисел FP16. |
VFPCLASSPH , VFPCLASSSH
|
Протестируйте упакованные/скалярные числа FP16 для специальных категорий (NaN, бесконечность, отрицательный ноль и т. д.) и сохраните результат в регистре маски. |
Инструкции по конвертации
[ редактировать ]Инструкция | Описание |
---|---|
VCVTW2PH
|
Преобразуйте упакованные 16-битные целые числа со знаком в числа FP16. |
VCVTUW2PH
|
Преобразуйте упакованные 16-битные целые числа без знака в числа FP16. |
VCVTDQ2PH
|
Преобразуйте упакованные 32-битные целые числа со знаком в числа FP16. |
VCVTUDQ2PH
|
Преобразуйте упакованные 32-битные целые числа без знака в числа FP16. |
VCVTQQ2PH
|
Преобразуйте упакованные 64-битные целые числа со знаком в числа FP16. |
VCVTUQQ2PH
|
Преобразуйте упакованные 64-битные целые числа без знака в числа FP16. |
VCVTPS2PHX
|
Преобразуйте упакованные числа FP32 в числа FP16. В отличие от VCVTPS2PH от F16C , VCVTPS2PHX имеет другую кодировку, которая также поддерживает широковещание.
|
VCVTPD2PH
|
Преобразование упакованных чисел FP64 в числа FP16. |
VCVTSI2SH
|
Преобразуйте скалярное 32-битное или 64-битное целое число со знаком в число FP16. |
VCVTUSI2SH
|
Преобразуйте скалярное 32-битное или 64-битное целое число без знака в число FP16. |
VCVTSS2SH
|
Преобразуйте скалярное число FP32 в число FP16. |
VCVTSD2SH
|
Преобразуйте скалярное число FP64 в число FP16. |
VCVTPH2W , VCVTTPH2W
|
Преобразуйте упакованные числа FP16 в 16-битные целые числа со знаком. VCVTPH2W округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTPH2W округляет в сторону нуля.
|
VCVTPH2UW , VCVTTPH2UW
|
Преобразуйте упакованные числа FP16 в беззнаковые 16-битные целые числа. VCVTPH2UW округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTPH2UW округляет в сторону нуля.
|
VCVTPH2DQ , VCVTTPH2DQ
|
Преобразуйте упакованные числа FP16 в 32-битные целые числа со знаком. VCVTPH2DQ округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTPH2DQ округляет в сторону нуля.
|
VCVTPH2UDQ , VCVTTPH2UDQ
|
Преобразуйте упакованные числа FP16 в беззнаковые 32-битные целые числа. VCVTPH2UDQ округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTPH2UDQ округляет в сторону нуля.
|
VCVTPH2QQ , VCVTTPH2QQ
|
Преобразуйте упакованные числа FP16 в 64-битные целые числа со знаком. VCVTPH2QQ округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTPH2QQ округляет в сторону нуля.
|
VCVTPH2UQQ , VCVTTPH2UQQ
|
Преобразуйте упакованные числа FP16 в беззнаковые 64-битные целые числа. VCVTPH2UQQ округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTPH2UQQ округляет в сторону нуля.
|
VCVTPH2PSX
|
Преобразуйте упакованные числа FP16 в числа FP32. В отличие от VCVTPH2PS от F16C , VCVTPH2PSX имеет другую кодировку, которая также поддерживает широковещание.
|
VCVTPH2PD
|
Преобразование упакованных чисел FP16 в числа FP64. |
VCVTSH2SI , VCVTTSH2SI
|
Преобразуйте скалярное число FP16 в 32-битное или 64-битное целое число со знаком. VCVTSH2SI округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTSH2SI округляет в сторону нуля.
|
VCVTSH2USI , VCVTTSH2USI
|
Преобразуйте скалярное число FP16 в беззнаковое 32-битное или 64-битное целое число. VCVTSH2USI округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTSH2USI округляет в сторону нуля.
|
VCVTSH2SS
|
Преобразуйте скалярное число FP16 в число FP32. |
VCVTSH2SD
|
Преобразуйте скалярное число FP16 в число FP64. |
Инструкции по разложению
[ редактировать ]Инструкция | Описание |
---|---|
VGETEXPPH , VGETEXPSH
|
Извлеките компоненты экспоненты упакованных/скалярных чисел FP16 как числа FP16. |
VGETMANTPH , VGETMANTSH
|
Извлеките компоненты мантиссы упакованных/скалярных чисел FP16 как числа FP16. |
Инструкции по перемещению
[ редактировать ]Инструкция | Описание |
---|---|
VMOVSH
|
Перемещение скалярного числа FP16 в/из памяти или между векторными регистрами. |
VMOVW
|
Переместить скалярное число FP16 в/из памяти или регистра общего назначения. |
Устаревшие инструкции с версиями в кодировке EVEX
[ редактировать ]Группа | Устаревшая кодировка | Инструкции | AVX-512 расширения | |||||
---|---|---|---|---|---|---|---|---|
СШЭ SSE2 ММХ |
AVX SSE3 SSE4 |
AVX2 ФМА |
Ф | ВЛ | ЧБ | ДК | ||
ВАТИНА | Да | Да | Нет | VADDPD , VADDPS , VADDSD , VADDSS
|
И | И | Н | Н |
ВОДА | VANDPD , VANDPS , VANDNPD , VANDNPS
|
Н | И | |||||
ВКМП | VCMPPD , VCMPPS , VCMPSD , VCMPSS
|
И | Н | Н | ||||
ВКОМ | VCOMISD , VCOMISS
| |||||||
ВДИВ | VDIVPD , VDIVPS , VDIVSD , VDIVSS
|
И | ||||||
ВЦВТ | VCVTDQ2PD , VCVTDQ2PS , VCVTPD2DQ , VCVTPD2PS , VCVTPH2PS , VCVTPS2PH , VCVTPS2DQ , VCVTPS2PD , VCVTSD2SI , VCVTSD2SS , VCVTSI2SD , VCVTSI2SS , VCVTSS2SD , VCVTSS2SI , VCVTTPD2DQ , VCVTTPS2DQ , VCVTTSD2SI , VCVTTSS2SI
| |||||||
ВМАКС | VMAXPD , VMAXPS , VMAXSD , VMAXSS
| |||||||
ВМИН | VMINPD , VMINPS , VMINSD , VMINSS
|
Н | ||||||
ВМОВ | VMOVAPD , VMOVAPS , VMOVD , VMOVQ , VMOVDDUP , VMOVHLPS , VMOVHPD , VMOVHPS , VMOVLHPS , VMOVLPD , VMOVLPS , VMOVNTDQA , VMOVNTDQ , VMOVNTPD , VMOVNTPS , VMOVSD , VMOVSHDUP , VMOVSLDUP , VMOVSS , VMOVUPD , VMOVUPS , VMOVDQA32 , VMOVDQA64 , VMOVDQU8 , VMOVDQU16 , VMOVDQU32 , VMOVDQU64
|
И | И | |||||
ВМУЛ | VMULPD , VMULPS , VMULSD , VMULSS
|
Н | ||||||
ДО | VORPD , VORPS
|
Н | И | |||||
ВСКРТ | VSQRTPD , VSQRTPS , VSQRTSD , VSQRTSS
|
И | Н | |||||
ВСУБ | VSUBPD , VSUBPS , VSUBSD , VSUBSS
| |||||||
ВУКОМИ | VUCOMISD , VUCOMISS
|
Н | ||||||
ВУНПК | VUNPCKHPD , VUNPCKHPS , VUNPCKLPD , VUNPCKLPS
|
И | ||||||
ВКСОР | VXORPD , VXORPS
|
Н | И | |||||
ВЕКСТРАКТЫ | Нет | Да | Нет | VEXTRACTPS
|
И | Н | Н | |
ВИНСЕРТПС | VINSERTPS
| |||||||
ВПЭКСТР | VPEXTRB , VPEXTRW , VPEXTRD , VPEXTRQ
|
Н | И | И | ||||
ВПИНСР | VPINSRB , VPINSRW , VPINSRD , VPINSRQ
| |||||||
ВПАК | Да | Да | Да | VPACKSSWB , VPACKSSDW , VPACKUSDW , VPACKUSWB
|
И | Н | ||
ВПАДД | VPADDB , VPADDW , VPADDD , VPADDQ , VPADDSB , VPADDSW , VPADDUSB , VPADDUSW
|
И | ||||||
ВПАНД | VPANDD , VPANDQ , VPANDND , VPANDNQ
|
Н | ||||||
ВПАВГ | VPAVGB , VPAVGW
|
Н | И | |||||
ВПКМП | VPCMPEQB , VPCMPEQW , VPCMPEQD , VPCMPEQQ , VPCMPGTB , VPCMPGTW , VPCMPGTD , VPCMPGTQ
|
И | ||||||
ВПМАКС | VPMAXSB , VPMAXSW , VPMAXSD , VPMAXSQ , VPMAXUB , VPMAXUW , VPMAXUD , VPMAXUQ
| |||||||
ВПМИН | VPMINSB , VPMINSW , VPMINSD , VPMINSQ , VPMINUB , VPMINUW , VPMINUD , VPMINUQ
| |||||||
ВПМОВ | VPMOVSXBW , VPMOVSXBD , VPMOVSXBQ , VPMOVSXWD , VPMOVSXWQ , VPMOVSXDQ , VPMOVZXBW , VPMOVZXBD , VPMOVZXBQ , VPMOVZXWD , VPMOVZXWQ , VPMOVZXDQ
| |||||||
ВПМУЛ | VPMULDQ , VPMULUDQ , VPMULHRSW , VPMULHUW , VPMULHW , VPMULLD , VPMULLQ , VPMULLW
| |||||||
ВОССТАНИЕ | VPORD , VPORQ
|
Н | ||||||
VPSUB | VPSUBB , VPSUBW , VPSUBD , VPSUBQ , VPSUBSB , VPSUBSW , VPSUBUSB , VPSUBUSW
|
И | ||||||
ВПУНПКК | VPUNPCKHBW , VPUNPCKHWD , VPUNPCKHDQ , VPUNPCKHQDQ , VPUNPCKLBW , VPUNPCKLWD , VPUNPCKLDQ , VPUNPCKLQDQ
| |||||||
ВПКСОР | VPXORD , VPXORQ
|
Н | ||||||
ВПСАДБВ | VPSADBW
|
Н | И | |||||
ВПШУФ | VPSHUFB , VPSHUFHW , VPSHUFLW , VPSHUFD , VPSLLDQ , VPSLLW , VPSLLD , VPSLLQ , VPSRAW , VPSRAD , VPSRAQ , VPSRLDQ , VPSRLW , VPSRLD , VPSRLQ , VPSLLVW , VPSLLVD , VPSLLVQ , VPSRLVW , VPSRLVD , VPSRLVQ , VPSHUFPD , VPSHUFPS
|
И | ||||||
ВЕКСТРАКТ | Нет | Да | Да | VEXTRACTF32X4 , VEXTRACTF64X2 , VEXTRACTF32X8 , VEXTRACTF64X4 , VEXTRACTI32X4 , VEXTRACTI64X2 , VEXTRACTI32X8 , VEXTRACTI64X4
|
Н | И | ||
ВИНСЕРТ | VINSERTF32x4 , VINSERTF64X2 , VINSERTF32X8 , VINSERTF64x4 , VINSERTI32X4 , VINSERTI64X2 , VINSERTI32X8 , VINSERTI64X4
| |||||||
ВПАБС | VPABSB , VPABSW , VPABSD , VPABSQ
|
И | Н | |||||
ВПАЛИГНР | VPALIGNR
|
Н | ||||||
ВПЕРМЬ | VPERMD , VPERMILPD , VPERMILPS , VPERMPD , VPERMPS , VPERMQ
|
И | Н | |||||
ВПМАДД | VPMADDUBSW VPMADDWD
|
Н | И | |||||
ВФМАДД | Нет | Нет | Да | VFMADD132PD , VFMADD213PD , VFMADD231PD , VFMADD132PS , VFMADD213PS , VFMADD231PS , VFMADD132SD , VFMADD213SD , VFMADD231SD , VFMADD132SS , VFMADD213SS , VFMADD231SS
|
И | Н | ||
ВФМАДСУБ | VFMADDSUB132PD , VFMADDSUB213PD , VFMADDSUB231PD , VFMADDSUB132PS , VFMADDSUB213PS , VFMADDSUB231PS
| |||||||
ВФМСУБАДД | VFMSUBADD132PD , VFMSUBADD213PD , VFMSUBADD231PD , VFMSUBADD132PS , VFMSUBADD213PS , VFMSUBADD231PS
| |||||||
ВФМСУБ | VFMSUB132PD , VFMSUB213PD , VFMSUB231PD , VFMSUB132PS , VFMSUB213PS , VFMSUB231PS , VFMSUB132SD , VFMSUB213SD , VFMSUB231SD , VFMSUB132SS , VFMSUB213SS , VFMSUB231SS
| |||||||
ВФНМАДД | VFNMADD132PD , VFNMADD213PD , VFNMADD231PD , VFNMADD132PS , VFNMADD213PS , VFNMADD231PS , VFNMADD132SD , VFNMADD213SD , VFNMADD231SD , VFNMADD132SS , VFNMADD213SS , VFNMADD231SS
| |||||||
ВФНМСУБ | VFNMSUB132PD , VFNMSUB213PD , VFNMSUB231PD , VFNMSUB132PS , VFNMSUB213PS , VFNMSUB231PS , VFNMSUB132SD , VFNMSUB213SD , VFNMSUB231SD , VFNMSUB132SS , VFNMSUB213SS , VFNMSUB231SS
| |||||||
СОБЕРИТЕ | VGATHERDPS , VGATHERDPD , VGATHERQPS , VGATHERQPD
| |||||||
ВПГАТЕР | VPGATHERDD , VPGATHERDQ , VPGATHERQD , VPGATHERQQ
| |||||||
ВПСРАВ | VPSRAVW , VPSRAVD , VPSRAVQ
|
И |
Процессоры с AVX-512
[ редактировать ]- Интел
- Рыцарский десант (Ксеон Фи x200): [1] [14] AVX-512 F, CD, ER, PF
- Рыцарская мельница (Xeon Phi x205): [7] AVX-512 F, CD, ER, PF, 4FMAPS, 4VNNIW, VPOPCNTDQ
- Скайлейк-СП , Скайлейк-Х : [15] [16] [17] AVX-512 F, CD, VL, DQ, ЧБ
- Кэннон Лейк : [7] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI
- Каскадное озеро : AVX-512 F, CD, VL, DQ, BW, VNNI
- Купер Лейк : AVX-512 F, CD, VL, DQ, BW, VNNI, BF16
- Ледяное озеро , [7] Ракетное озеро : [18] [19] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES
- Tiger Lake (кроме Pentium и Celeron, но у некоторых обозревателей есть снимок экрана CPU-Z Celeron 6305 с поддержкой AVX-512). [20] [21] ): [22] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES, VP2INTERSECT
- Alder Lake (никогда официально не поддерживается Intel, полностью удалено в новых процессорах). Примечание 1 ): [23] [24] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES, BF16, VP2INTERSECT, FP16
- Сапфировые пороги : [25] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES, BF16, FP16
- Кентавр Технология
- АМД
Подмножество | Ф | компакт-диск | ЯВЛЯЕТСЯ | ПФ | 4FMAPS | 4ВННИВ | ВПОПКНТДК | ВЛ | ДК | ЧБ | ИФМА | ВИМТ | ВННИ | БФ16 | индекс ИМТ2 | БИТАЛГ | ВПКLMULQDQ | ГФНИ | ОАЭ | ВП2ИНТЕРСЕКТ | РП16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Рыцарский десант (Xeon Phi x200, 2016) | Да | Да | Нет | ||||||||||||||||||
Рыцарская мельница (Xeon Phi x205, 2017) | Да | Нет | |||||||||||||||||||
Скайлейк-СП , Скайлейк-Х (2017) | Нет | Нет | Да | Нет | |||||||||||||||||
Кэннон Лейк (2018) | Да | Нет | |||||||||||||||||||
Каскадное озеро (2019) | Нет | Да | Нет | ||||||||||||||||||
Купер Лейк (2020) | Да | Нет | |||||||||||||||||||
Ледяное озеро (2019) | Да | Нет | Да | Нет | |||||||||||||||||
Тигровое озеро (2020) | Да | Нет | |||||||||||||||||||
Ракетное озеро (2021) | Нет | ||||||||||||||||||||
Ольховое озеро (2021) | Частичный Примечание 1 | Частичный Примечание 1 | |||||||||||||||||||
Дзен 4 (2022) | Да | Да | Нет | ||||||||||||||||||
Сапфировые пороги (2023) | Нет | Да | |||||||||||||||||||
Дзен 5 (2024) | Да | Нет |
^Примечание 1. Intel официально не поддерживает семейство инструкций AVX-512 на микропроцессорах Alder Lake . В начале 2022 года Intel начала отключать AVX-512 в микропроцессорах Alder Lake, чтобы клиенты не могли включить AVX-512. [34] В более старых процессорах семейства Alder Lake с некоторыми устаревшими комбинациями версий BIOS и микрокода можно было выполнять инструкции семейства AVX-512 при отключении всех ядер эффективности, которые не содержат микросхем для AVX-512. [35] [36] [23]
Производительность
[ редактировать ]Intel Vectorization Advisor (начиная с версии 2017) поддерживает встроенный анализ производительности AVX-512 и качества векторного кода (для «Core», Xeon и Intel Xeon Phi процессоров ). Наряду с традиционным профилем горячих точек, рекомендациями Advisor и «бесшовной» интеграцией диагностики векторизации компилятора Intel, анализ Advisor Survey также предоставляет метрики AVX-512 ISA и новые «характеристики», специфичные для AVX-512, например, разброс, сжатие/расширение, использование маски. [37] [38]
На некоторых процессорах (в основном Intel до Ice Lake ) инструкции AVX-512 могут вызывать даже большее регулирование частоты, чем его предшественники, что приводит к штрафам за смешанные рабочие нагрузки. Дополнительный даунклокинг запускается 512-битной шириной векторов и зависит от характера выполняемых инструкций, а использование 128- или 256-битной части AVX-512 (AVX-512VL) его не запускает. В результате gcc и clang по умолчанию предпочитают использовать 256-битные векторы для целей Intel. [39] [40] [41]
Компиляторы C/ C++ также автоматически обрабатывают развертывание цикла и предотвращают зависания в конвейере , чтобы наиболее эффективно использовать AVX-512. Это означает, что программист, использующий встроенные функции языка для принудительного использования AVX-512, иногда может привести к ухудшению производительности по сравнению с код, сгенерированный компилятором, когда он встречает циклы, явно написанные в исходном коде. [42] В других случаях использование встроенных функций AVX-512 в коде C/C++ может привести к повышению производительности по сравнению с написанным в чистом виде C/C++. [43]
Прием
[ редактировать ]Существует множество примеров применения AVX-512 , включая обработку мультимедиа, криптографию, видеоигры , [44] нейронные сети , [45] и даже OpenJDK , который использует для сортировки AVX-512 . [46]
В часто цитируемой цитате из 2020 года Линус Торвальдс сказал: «Я надеюсь, что AVX-512 умрет мучительной смертью, и что Intel начнет исправлять реальные проблемы вместо того, чтобы пытаться создавать волшебные инструкции, чтобы затем создавать тесты, на которых они смогут хорошо выглядеть». [47] заявив, что он предпочел бы, чтобы транзисторный бюджет был потрачен на дополнительные ядра и целочисленную производительность, и что он «ненавидел» тесты с плавающей запятой . [48]
Numenta рекламирует свои «очень редкие » [49] технология нейронных сетей, которая, по их словам, устраняет необходимость в графических процессорах , поскольку их алгоритмы работают на процессорах с AVX-512. [50] Они заявляют о десятикратном ускорении по сравнению с A100 , главным образом потому, что их алгоритмы уменьшают размер нейронной сети, сохраняя при этом точность , с помощью таких методов, как алгоритм разреженного эволюционного обучения (SET). [51] и Форсайт-обрезка. [52]
См. также
[ редактировать ]- Набор инструкций FMA (FMA)
- Набор инструкций XOP (XOP)
- Масштабируемое векторное расширение для ARM — новый набор векторных команд (дополняющий VFP и NEON ), поддерживающий очень широкую разрядность и один двоичный код, который может автоматически адаптироваться к максимальной ширине, поддерживаемой аппаратным обеспечением.
Ссылки
[ редактировать ]- Куссвурм, Дэниел (2022). Современное параллельное программирование на языке C++ и ассемблере: разработка SIMD X86 с использованием AVX, AVX2 и AVX-512 . Нью-Йорк, штат Нью-Йорк: Apress Media LLC. ISBN 978-1-4842-7918-2 . OCLC 1304243196 .
- ^ Jump up to: а б с д и ж Джеймс Рейндерс (23 июля 2013 г.). «Инструкция AVX-512» . Интел . Проверено 20 августа 2013 г.
- ^ Jump up to: а б Куссвурм 2022 , с. 223.
- ^ Jump up to: а б с Джеймс Рейндерс (17 июля 2014 г.). «Дополнительные инструкции AVX-512» . Интел . Проверено 3 августа 2014 г.
- ^ Антон Шилов. «Процессоры Intel Skylake для ПК не поддерживают инструкции AVX-512» . Китгуру.нет . Проверено 17 марта 2015 г.
- ^ «Intel добавит в свои процессоры инструкции глубокого обучения» . 14 октября 2016 г.
- ^ Jump up to: а б с д и ж г час «Справочник по программированию расширений набора команд архитектуры Intel» (PDF) . Интел . Проверено 29 января 2014 г.
- ^ Jump up to: а б с д и ж «Расширения набора команд архитектуры Intel и справочник по программированию будущих функций» . Интел . Проверено 16 октября 2017 г.
- ^ «В встроенной документации asm неверно указано, что k0 (X86 AVX-512) жестко привязан к нулю · Проблема № 94977 · ржавчина-lang/Rust» . Гитхаб .
- ^ «Архитектура AVX-512/Демиховский плакат» (PDF) . Интел . Проверено 25 февраля 2014 г.
- ^ «Intel® Deep Learning Boost» (PDF) . Интел . Проверено 11 октября 2021 г.
- ^ Jump up to: а б «Руководство по технологии новых инструкций поля Галуа (GFNI)» . networkbuilders.intel.com .
- ^ Кивилинна, Юсси (19 апреля 2023 г.). "камелия-симд-аэсни" . Гитхаб .
Более новые процессоры x86-64 также поддерживают новые инструкции Galois Field New (GFNI), которые позволяют более просто реализовать Camellia s-box и обеспечивают еще большую производительность.
- ^ «Спецификация архитектуры Intel® AVX512-FP16, июнь 2021 г., версия 1.0, номер 347407-001US» (PDF) . Интел. 30 июня 2021 г. Проверено 4 июля 2021 г.
- ^ «Краткое описание процессора Intel Xeon Phi» . Интел . Проверено 12 октября 2016 г.
- ^ «Intel представляет платформу серии X: до 18 ядер и 36 потоков, от 242 до 2000 долларов» . Арс Техника . Проверено 30 мая 2017 г.
- ^ «Intel Advanced Vector Extensions 2015/2016: поддержка в коллекции компиляторов GNU» (PDF) . Gcc.gnu.org . Проверено 20 октября 2016 г.
- ^ Патрицио, Энди (21 сентября 2015 г.). «Дорожная карта Intel Xeon на 2016 год» . Itworld.org . Архивировано из оригинала 21 октября 2016 г. Проверено 20 октября 2016 г.
- ^ «Обзор Intel Core i9-11900K — самый быстрый игровой процессор в мире?» . www.techpowerup.com . 30 марта 2021 г.
- ^ " Добавить Rockelake в gcc" commit" . gcc.gnu.org .
- ^ «Процессор Intel Celeron 6305 (4 МБ кэш-памяти, 1,80 ГГц, с IPU) Технические характеристики» . ark.intel.com . Архивировано из оригинала 18 октября 2020 г. Проверено 10 ноября 2020 г.
- ^ Дешевая производительность ноутбука может конкурировать | HP 14S DQ2518TU , 18 июня 2021 г. , получено 8 августа 2021 г.
- ^ «Использование коллекции компиляторов GNU (GCC): параметры x86» . ГНУ . Проверено 14 октября 2019 г.
- ^ Jump up to: а б Катресс, Ян; Фрумусану, Андрей. «Обзор процессора Intel Core i9-12900K 12-го поколения: гибридная производительность усложняет гибрид» . www.anandtech.com . Проверено 5 ноября 2021 г.
- ^ Ларабель, Майкл. «Intel Core i9 12900K «Ольховое озеро» AVX-512 в Linux» . www.phoronix.com . Проверено 8 ноября 2021 г.
- ^ Ларабель, Майкл. «Сравнение производительности AVX-512: AMD Genoa против Intel Sapphire Rapids и Ice Lake» . www.phoronix.com . Проверено 19 января 2023 г.
- ^ «Первая в отрасли высокопроизводительная система на кристалле x86 с процессорами серверного класса и интегрированной технологией сопроцессора искусственного интеллекта» . 2 августа 2022 г. Архивировано из оригинала 12 декабря 2019 г.
{{cite web}}
: CS1 maint: неподходящий URL ( ссылка ) - ^ «Задержка инструкций x86, x64, задержка памяти и дампы CPUID (instlatx64)» . Пользователи.atw.hu .
- ^ «Процессоры Ryzen на базе AMD Zen 4 могут иметь до 24 ядер и поддерживать векторы AVX512» . Аппаратные времена . 2021-05-23 . Проверено 02 сентября 2021 г.
- ^ Хагедорн, Гильберт (18 мая 2021 г.). «AMD работает над потрясающим 96-ядерным процессором EPYC» . Guru3D.com . Проверено 25 мая 2021 г.
- ^ моллюск (23 августа 2021 г.). «Подробности об утечке гигабайта» . чипсы и сыр . Проверено 10 июня 2022 г.
- ^ W1zzard (26 мая 2022 г.). «AMD отвечает на наши технические вопросы по Zen 4 с Робертом Хэллоком» . TechPowerUp . Проверено 29 мая 2022 г.
- ^ Ларабель, Майкл (26 сентября 2022 г.). «Анализ производительности AMD Zen 4 AVX-512 на Ryzen 9 7950X» . www.phoronix.com .
- ^ Ларабель, Майкл (10 февраля 2024 г.). «Опубликована поддержка компилятора AMD Zen 5 для GCC — подтверждают новые функции AVX и многое другое» . www.phoronix.com .
- ^ Алкорн, Пол (2 марта 2022 г.). «Intel Nukes Alder Lake поддерживает AVX-512, теперь она отключена в кремнии» . Аппаратное обеспечение Тома . Проверено 7 марта 2022 г.
- ^ Катресс, Ян; Фрумусану, Андрей (19 августа 2021 г.). «День Intel Architecture 2021: подробное описание озера Олдер, Золотой бухты и Грейсмонта» . АнандТех . Проверено 25 августа 2021 г.
- ^ Алкорн, Пол (19 августа 2021 г.). «День Intel Architecture 2021: Чипсы Олдер-Лейк, Золотая бухта и ядра Грейсмонт» . Аппаратное обеспечение Тома . Проверено 21 августа 2021 г.
- ^ «Intel Advisor XE 2016, обновление 3. Что нового — программное обеспечение Intel» . Software.intel.com . Проверено 20 октября 2016 г.
- ^ «Intel Advisor — программное обеспечение Intel» . Software.intel.com . Проверено 20 октября 2016 г.
- ^ Кордес, Питер. «Инструкции SIMD, понижающие частоту процессора» . Переполнение стека .
- ^ Кордес, Питер. «почему автоматическая векторизация gcc для Tigerlake использует регистры ymm, а не zmm» . Переполнение стека .
- ^ «Примечания к выпуску LLVM 10.0.0» .
- ^ Мэтью Кольбе (10 октября 2023 г.). Молниеносный доклад: как использовать внутренние возможности SIMD для значительного замедления работы — Мэтью Колбе — CppNow 2023 . С++ сейчас . Получено 15 октября 2023 г. - через YouTube.
- ^ Клаузекер, Роберт (5 августа 2023 г.). «Перекодирование символов Юникода с помощью инструкций AVX-512». arXiv : 2212.05098 [ cs.DS ].
- ^ Шевчик, Крис (24 ноября 2021 г.). «Эмулятор RPCS3 PS3 значительно ускоряет работу процессоров Intel Alder Lake с включенным AVX-512» . ПК-геймер . Проверено 11 октября 2023 г.
- ^ Карнейро, Андре; Серпа, Матеус (5 сентября 2021 г.). «Легкие приложения глубокого обучения на AVX-512» . Симпозиум IEEE по компьютерам и коммуникациям 2021 года (ISCC) . Афины : IEEE . стр. 1–6. дои : 10.1109/ISCC53001.2021.9631464 .
- ^ Параса, Шринивас (30 мая 2023 г.). «JDK-8309130: встроенные функции x86_64 AVX512 для методов Arrays.sort (массивы int, long, float и double)» . OpenJDK . Проверено 11 октября 2023 г.
- ^ Тунг, Лиам (13 июля 2020 г.). «Линус Торвальдс: Надеюсь, Intel AVX-512 умрёт мучительной смертью» . ЗДНет . Проверено 11 октября 2023 г.
- ^ Торвальдс, Линус (11 июля 2020 г.). «Ольховое озеро и AVX-512» . Realworldtech.com . Проверено 11 октября 2023 г.
- ^ «Разреженность обеспечивает 100-кратное ускорение производительности в сетях глубокого обучения: демонстрация технологии» (PDF) . numenta.com . 20 мая 2021 г. Проверено 11 октября 2023 г.
- ^ Афифи-Сабет, Кеумарс (08 октября 2023 г.). «Крошечный стартап помог Intel обойти AMD и Nvidia в критических тестах ИИ — игра уже окончена?» . ТехРадар . Проверено 11 октября 2023 г.
- ^ Мокану, Дечебал; Мокану, Елена (2018). «Масштабируемое обучение искусственных нейронных сетей с адаптивной разреженной связностью, вдохновленное сетевой наукой» . Природные коммуникации . 9 (1): 2383. Бибкод : 2018NatCo...9.2383M . дои : 10.1038/s41467-018-04316-3 . ПМК 6008460 . ПМИД 29921910 .
- ^ Соуза, Лукас (30 октября 2020 г.). «Доводы в пользу разреженности в нейронных сетях, часть 2: динамическая разреженность» . numenta.com . Проверено 11 октября 2023 г.