Articulo de referencia

AVX-512

AVX-512 son extensiones de 512 bits para las instrucciones SIMD de extensiones vectoriales avanzadas de 256 bits para la arquitectura del conjunto de instrucciones (ISA) x86 , p...

AVX-512 son extensiones de 512 bits para las instrucciones SIMD de extensiones vectoriales avanzadas de 256 bits para la arquitectura del conjunto de instrucciones (ISA) x86 , propuestas por Intel en julio de 2013 e implementadas por primera vez en el Intel Xeon Phi x200 (Knights Landing) de 2016, [ 1 ] y posteriormente en varias CPU de AMD y otras Intel ( ver lista a continuación ). AVX-512 consta de múltiples extensiones que pueden implementarse de forma independiente. [ 2 ] Esta política se aparta del requisito histórico de implementar el bloque de instrucciones completo. Solo la extensión principal AVX-512F (AVX-512 Foundation) es requerida por todas las implementaciones de AVX-512.

Además de ampliar la mayoría de las instrucciones de 256 bits, las extensiones introducen varias operaciones nuevas, como nuevas conversiones de datos, operaciones de dispersión y permutaciones. [ 2 ] El número de registros AVX aumenta de 16 a 32, y se añaden ocho nuevos "registros de máscara", que permiten la selección de variables y la combinación de los resultados de las instrucciones. En las CPU con la extensión de longitud de vector (VL), incluida en la mayoría de los procesadores compatibles con AVX-512 (véase §  CPU con AVX-512 ), estas instrucciones también pueden utilizarse en tamaños de vector de 128 y 256 bits.

AVX-512 no es el primer conjunto de instrucciones SIMD de 512 bits que Intel ha introducido en procesadores: las instrucciones SIMD de 512 bits anteriores utilizadas en los coprocesadores Xeon Phi de primera generación , derivadas del proyecto Larrabee de Intel , son similares pero no son compatibles a nivel binario y solo son parcialmente compatibles a nivel de código fuente. [ 1 ]

El sucesor de AVX-512 es AVX10 , anunciado en julio de 2023. [ 3 ] AVX10 simplifica la detección de instrucciones compatibles al introducir una versión del conjunto de instrucciones, donde cada versión posterior incluye todas las instrucciones de la anterior. En las revisiones iniciales de la especificación AVX10, la compatibilidad con vectores de 512 bits se hizo opcional, lo que permitiría a Intel admitirla en sus E-cores . En revisiones posteriores, Intel hizo obligatorios los vectores de 512 bits, con la intención de admitirlos tanto en P-cores como en E-cores. La versión inicial 1 de AVX10 no agrega nuevas instrucciones en comparación con AVX-512, y para los procesadores que admiten vectores de 512 bits es equivalente a AVX-512 (en el conjunto admitido por los procesadores Intel Sapphire Rapids ). Las versiones posteriores de AVX10 introducirán nuevas características.

Conjunto de instrucciones

El conjunto de instrucciones AVX-512 consta de varios conjuntos separados, cada uno con su propio bit de identificación de CPU único. Sin embargo, normalmente se agrupan según la generación de procesador que los implementa.

F, CD, ER, PF:  se introdujeron con Xeon Phi x200 (Knights Landing) y Xeon Scalable ( Skylake SP "Purley"), siendo los dos últimos (ER y PF) específicos de Knights Landing y Knights Mill.

  • AVX-512 Foundation (F) : amplía la mayoría de las instrucciones AVX de 32 y 64 bits con el esquema de codificación EVEX para admitir registros de 512 bits, máscaras de operación, difusión de parámetros y redondeo integrado y control de excepciones, implementado por Knights Landing y Skylake Xeon. 
  • Instrucciones de detección de conflictos AVX-512 (CD) : detección de conflictos eficiente para permitir la vectorización de más bucles , implementada por Knights Landing [ 1 ] y Skylake X. 
  • Instrucciones exponenciales y recíprocas AVX-512 (ER) :  operaciones exponenciales y recíprocas diseñadas para ayudar a implementar operaciones trascendentales , implementadas por Knights Landing [ 1 ].
  • Instrucciones de precarga AVX-512 (PF) : nuevas capacidades de precarga, implementadas por Knights Landing [ 1 ]. 

4VNNIW, 4FMAPS:  introducidos con y específicos de Knights Mill . [ 4 ] [ 5 ]

  • Instrucciones de red neuronal vectorial AVX-512 con precisión variable de palabra (4VNNIW) : instrucciones vectoriales para aprendizaje profundo, precisión variable de palabra mejorada.
  • AVX-512 Fused Multiply Accumulation Packed Single Precision (4FMAPS) : instrucciones vectoriales para aprendizaje profundo, punto flotante, precisión simple.

VL, DQ, BW:  introducidos con Skylake-X/SP y Cannon Lake .

  • Extensiones de longitud de vector AVX-512 (VL) : extienden la mayoría de las operaciones AVX-512 para que también operen en registros XMM (128 bits) e YMM (256 bits) [ 6 ]. 
  • Instrucciones AVX-512 de doble palabra y cuádruple palabra (DQ) : agrega nuevas instrucciones AVX-512 de 32 bits y 64 bits [ 6 ]. 
  • Instrucciones de byte y palabra AVX-512 (BW) : extiende AVX-512 para cubrir operaciones con enteros de 8 y 16 bits [ 6 ]. 

IFMA, VBMI:  introducido con Cannon Lake . [ 7 ]

  • AVX-512 Multiplicación y suma fusionada de enteros (IFMA) : multiplicación y suma fusionada de enteros utilizando una precisión de 52 bits.
  • Las instrucciones de manipulación de bits vectoriales (VBMI) de AVX-512 añaden instrucciones de permutación de bytes vectoriales que no estaban presentes en AVX-512BW.

VNNI:  introducido con Cascade Lake.

  • Instrucciones de red neuronal vectorial AVX-512 (VNNI) : instrucciones vectoriales para el aprendizaje profundo.

VPOPCNTDQ: Instrucción de conteo de población  vectorial . Introducida con Knights Mill e Ice Lake . [ 8 ]

VBMI2, BITALG:  introducidos con Ice Lake. [ 8 ]

  • Instrucciones de manipulación de bits vectoriales AVX-512 2 (VBMI2) : carga, almacenamiento y concatenación de bytes/palabras con desplazamiento.
  • Algoritmos de bits AVX-512 (BITALG) : instrucciones de manipulación de bits de byte/palabra que amplían VPOPCNTDQ.

VP2INTERSECT:  introducido con Tiger Lake.

  • Intersección de pares de vectores AVX-512 a un par de registros de máscara (VP2INTERSECT) .

GFNI, VPCLMULQDQ, VAES:  introducidos con Ice Lake. [ 8 ]

  • Estas no son características de AVX-512 propiamente dichas. Junto con AVX-512, permiten versiones codificadas con EVEX de las instrucciones GFNI, PCLMULQDQ y AES.

BMM:  introducido con AMD Zen 6 .

  • Instrucciones de manipulación de bits AVX-512 (BMM) : incluye operaciones de multiplicación de matrices de bits e inversión de bits. [ 9 ]

Codificación y características

El prefijo VEX utilizado por AVX y AVX2, si bien era flexible, no dejaba suficiente espacio para las características que Intel quería agregar a AVX-512. Esto los llevó a definir un nuevo prefijo llamado EVEX .

En comparación con VEX, EVEX añade los siguientes beneficios: [ 5 ]

  • Codificación de registros ampliada que permite 32 registros de 512 bits.
  • Agrega 8 nuevos registros opmask para enmascarar la mayoría de las instrucciones AVX-512.
  • Agrega un nuevo modo de memoria escalar que realiza una difusión automáticamente.
  • Permite incluir un control de redondeo explícito en cada instrucción.
  • Agrega un nuevo modo de direccionamiento de memoria de desplazamiento comprimido .

Los registros extendidos, el bit de ancho SIMD y los registros opmask de AVX-512 son obligatorios y todos requieren compatibilidad con el sistema operativo.

modos SIMD

Las instrucciones AVX-512 están diseñadas para combinarse con las instrucciones AVX/AVX2 de 128/256 bits sin penalización de rendimiento. Sin embargo, las extensiones AVX-512VL permiten el uso de instrucciones AVX-512 en los registros XMM/YMM de 128/256 bits, por lo que la mayoría de las instrucciones SSE y AVX/AVX2 tienen nuevas versiones AVX-512 codificadas con el prefijo EVEX, que permiten el acceso a nuevas características como opmask y registros adicionales. A diferencia de AVX-256, las nuevas instrucciones no tienen nuevos mnemónicos, pero comparten el espacio de nombres con AVX, lo que hace que la distinción entre las versiones codificadas con VEX y EVEX de una instrucción sea ambigua en el código fuente. Dado que AVX-512F solo funciona con valores de 32 y 64 bits, las instrucciones SSE y AVX/AVX2 que operan con bytes o palabras solo están disponibles con la extensión AVX-512BW (compatibilidad con bytes y palabras). [ 5 ]

Registros extendidos

El ancho del archivo de registros SIMD aumenta de 256 bits a 512 bits y se expande de 16 a un total de 32 registros (ZMM0-ZMM31). Estos registros pueden direccionarse como registros YMM de 256 bits desde extensiones AVX y como registros XMM de 128 bits desde extensiones SIMD de transmisión . Además, las instrucciones AVX y SSE heredadas pueden extenderse para operar en los 16 registros adicionales (XMM16-XMM31 e YMM16-YMM31) al usar la codificación EVEX.

Registros de Opmask

Las instrucciones vectoriales AVX-512 pueden indicar un registro opmask para controlar qué valores se escriben en el destino. La codificación de la instrucción admite de 0 a 7 para este campo; sin embargo, solo los registros opmask k1 a k7 (de k0 a k7) pueden usarse como la máscara correspondiente al valor 1 a 7, mientras que el valor 0 está reservado para indicar que no se usa ningún registro opmask; es decir, se usa una constante codificada (en lugar de 'k0') para indicar operaciones sin máscara. El registro opmask especial 'k0' sigue siendo un registro funcional y válido, puede usarse en instrucciones de manipulación de registros opmask o usarse como el registro opmask de destino. [ 10 ] Un indicador controla el comportamiento de opmask, que puede ser "zero", que pone a cero todo lo que no está seleccionado por la máscara, o "merge", que deja todo lo que no está seleccionado sin modificar. El comportamiento de merge es idéntico al de las instrucciones blend.

Los registros opmask suelen tener un ancho de 16 bits, pero pueden llegar a 64 bits con la extensión AVX-512BW. [ 5 ] Sin embargo, la cantidad de bits que se utilizan realmente depende del tipo de vector de las instrucciones enmascaradas. Para las palabras de coma flotante simple o doble de 32 bits, se utilizan 16 bits para enmascarar los 16 elementos en un registro de 512 bits. Para las palabras de coma flotante doble y cuádruple, se utilizan como máximo 8 bits de máscara.

El registro opmask es la razón por la que varias instrucciones bit a bit, que de forma natural no tienen ancho de elemento, los incorporaron en AVX-512. Por ejemplo, las operaciones AND, OR o de mezcla de 128 bits ahora existen en variantes de doble palabra y de cuádruple palabra, con la única diferencia en el enmascaramiento final.

Nuevas instrucciones para la máscara de op

Los registros opmask cuentan con una nueva mini extensión de instrucciones que operan directamente sobre ellos. A diferencia del resto de las instrucciones AVX-512, estas instrucciones están codificadas en VEX. Las instrucciones opmask iniciales son todas versiones de 16 bits (Word). Con AVX-512DQ se añadieron versiones de 8 bits (Byte) para adaptarse mejor a las necesidades de enmascaramiento de 8 valores de 64 bits, y con AVX-512BW se añadieron versiones de 32 bits (Double) y 64 bits (Quad) para que puedan enmascarar hasta 64 valores de 8 bits. Las instrucciones KORTEST y KTEST se pueden usar para establecer los indicadores x86 en función de los registros de máscara, de modo que se puedan usar junto con instrucciones condicionales y de salto x86 que no sean SIMD.

New instructions in AVX-512 foundation

Muchas instrucciones AVX-512 son simplemente versiones EVEX de antiguas instrucciones SSE o AVX . Sin embargo, existen varias instrucciones nuevas, así como instrucciones antiguas que han sido reemplazadas por nuevas versiones AVX-512. Las instrucciones nuevas o profundamente modificadas se enumeran a continuación. Estas instrucciones básicas también incluyen las extensiones de AVX-512VL y AVX-512BW, ya que dichas extensiones simplemente añaden nuevas versiones de estas instrucciones en lugar de instrucciones completamente nuevas.

Mezclar usando la mascarilla

No existen versiones con prefijo EVEX de las instrucciones de mezcla de SSE4 ; en su lugar, AVX-512 cuenta con un nuevo conjunto de instrucciones de mezcla que utilizan registros de máscara como selectores. Junto con las instrucciones generales de comparación en máscara que se describen a continuación, estas pueden utilizarse para implementar operaciones ternarias genéricas o cmov, de forma similar a VPCMOV de XOP .

Dado que la fusión es una parte integral de la codificación EVEX, estas instrucciones también pueden considerarse instrucciones de movimiento básicas. Utilizando el modo de fusión de anulación, también pueden usarse como instrucciones de enmascaramiento.

Comparar con la máscara

AVX-512F incluye cuatro nuevas instrucciones de comparación. Al igual que sus contrapartes XOP , utilizan el campo inmediato para seleccionar entre ocho comparaciones diferentes. Sin embargo, a diferencia de sus predecesoras XOP, guardan el resultado en un registro de máscara e inicialmente solo admiten comparaciones de doble palabra y de cuatro palabras. La extensión AVX-512BW proporciona las versiones de byte y palabra. Cabe destacar que se pueden especificar dos registros de máscara para las instrucciones: uno para escribir y otro para declarar el enmascaramiento regular. [ 5 ]

Máscara de conjunto lógico

La última forma de configurar máscaras es mediante la instrucción Logical Set Mask. Estas instrucciones realizan una operación AND o NAND y, a continuación, configuran la máscara de operación de destino según si el resultado es cero o distinto de cero. Cabe destacar que, al igual que las instrucciones de comparación, estas requieren dos registros de máscara de operación: uno como destino y otro como máscara de operación normal.

Comprimir y expandir

Las instrucciones `compress` y `expand` coinciden con las operaciones APL del mismo nombre. Utilizan la máscara de operación de una forma ligeramente diferente a otras instrucciones AVX-512. `compress` solo guarda los valores marcados en la máscara, pero los guarda compactados omitiendo los valores no marcados y sin reservar espacio para ellos. `expand` funciona de forma opuesta: carga tantos valores como indique la máscara y luego los distribuye en las posiciones seleccionadas.

Permutar

Se ha añadido un nuevo conjunto de instrucciones de permutación para permutaciones completas de dos entradas. Todas ellas aceptan tres argumentos: dos registros fuente y un índice. El resultado se obtiene sobrescribiendo el primer registro fuente o el registro índice. AVX-512BW amplía las instrucciones para incluir también versiones de 16 bits (palabra), y la extensión AVX-512_VBMI define las versiones de byte de las instrucciones.

lógica ternaria bit a bit

Se han añadido dos nuevas instrucciones que permiten implementar lógicamente todas las operaciones bit a bit posibles entre tres entradas. Estas instrucciones toman como entrada tres registros y un campo inmediato de 8 bits. Cada bit de la salida se genera mediante una búsqueda de los tres bits correspondientes en las entradas para seleccionar una de las 8 posiciones del campo inmediato de 8 bits. Dado que solo son posibles 8 combinaciones con tres bits, esto permite realizar todas las operaciones bit a bit posibles con 3 entradas. [ 5 ] Estas son las únicas instrucciones vectoriales bit a bit en AVX-512F; en AVX-512DQ se añadieron versiones EVEX de las dos instrucciones vectoriales bit a bit SSE y AVX AND, ANDN, OR y XOR.

La diferencia entre las versiones de doble palabra y de cuatro palabras radica únicamente en la aplicación de la máscara de operación.

Conversiones

Se añadieron varias instrucciones de conversión o de movimiento; estas completan el conjunto de instrucciones de conversión disponibles en SSE2.

Descomposición de punto flotante

Entre las novedades exclusivas de AVX-512F se encuentran las instrucciones para descomponer valores de punto flotante y manejar valores especiales de punto flotante . Dado que estos métodos son completamente nuevos, también existen en versiones escalares.

Aritmética de punto flotante

Este es el segundo conjunto de nuevos métodos de punto flotante, que incluye un nuevo escalado y cálculo aproximado del recíproco y del recíproco de la raíz cuadrada. Las instrucciones de recíproco aproximado garantizan un error relativo máximo de 2 −14 . [ 5 ]

Transmisión

Misceláneas

New instructions by sets

Detección de conflictos

Las instrucciones en la detección de conflictos AVX-512 (AVX-512CD) están diseñadas para ayudar a calcular de manera eficiente subconjuntos libres de conflictos de elementos en bucles que normalmente no podrían ser vectorizados de forma segura. [ 11 ]

Exponencial y recíproca

Las instrucciones exponenciales y recíprocas AVX-512 (AVX-512ER) contienen instrucciones recíprocas aproximadas más precisas que las de la base AVX-512; el error relativo es como máximo de 2 −28 . También contienen dos nuevas funciones exponenciales que tienen un error relativo de como máximo de 2 −23 . [ 5 ]

Precarga

Las instrucciones de precarga AVX-512 (AVX-512PF) contienen nuevas operaciones de precarga para la nueva funcionalidad de dispersión y recolección introducida en AVX2 y AVX-512. T0La precarga significa precargar en la caché de nivel 1 y la T1precarga significa precargar en la caché de nivel 2.

4FMAPS y 4VNNIW

Los dos conjuntos de instrucciones realizan múltiples iteraciones de procesamiento. Generalmente, solo se encuentran en productos Xeon Phi.

BW, DQ y VBMI

AVX-512DQ agrega nuevas instrucciones de doble palabra y cuádruple palabra. AVX-512BW agrega versiones de byte y palabra de las mismas instrucciones, y agrega versiones de byte y palabra de las instrucciones de doble palabra/cuádruple palabra en AVX-512F. Algunas instrucciones que solo obtienen formas de palabra con AVX-512BW adquieren formas de byte con la extensión AVX-512_VBMI ( VPERMB, VPERMI2B, VPERMT2B, VPMULTISHIFTQB).

Se añadieron dos nuevas instrucciones al conjunto de instrucciones de máscara: KADDy KTEST(formas B y W con AVX-512DQ, D y Q con AVX-512BW). El resto de las instrucciones de máscara, que solo tenían formas de palabra, obtuvieron formas de byte con AVX-512DQ y formas de doble palabra/cuádruple palabra con AVX-512BW. KUNPCKBWse extendió a KUNPCKWDy KUNPCKDQmediante AVX-512BW.

Entre las instrucciones añadidas por AVX-512DQ se encuentran varias instrucciones SSE y AVX que no obtuvieron versiones AVX-512 con AVX-512F, entre ellas todas las instrucciones de dos bits de entrada y las instrucciones de extracción/inserción de enteros.

Las instrucciones que son completamente nuevas se explican a continuación.

Instrucciones de punto flotante

Se introducen tres nuevas operaciones de punto flotante. Dado que no solo son nuevas en AVX-512, cuentan con versiones tanto empaquetadas/SIMD como escalares.

Las VFPCLASSinstrucciones comprueban si el valor de punto flotante es uno de los ocho valores especiales de punto flotante; el campo inmediato controla cuál de estos ocho valores activará un bit en el registro de máscara de salida. Las VRANGEinstrucciones realizan operaciones de mínimo o máximo según el valor del campo inmediato, que también puede controlar si la operación se realiza de forma absoluta o no, y por separado, cómo se maneja el signo. Las VREDUCEinstrucciones operan sobre una única fuente y le restan la parte entera del valor de la fuente más un número de bits especificado en el campo inmediato de su fracción.

Otras instrucciones

VBMI2

Se amplían las funcionalidades VPCOMPRESS y VPEXPAND con variantes de byte y palabra. Las instrucciones de desplazamiento son nuevas.

VNNI

Instrucciones de red neuronal vectorial: [ 12 ] AVX512-VNNI agrega instrucciones codificadas en EVEX que se describen a continuación. Con AVX-512F, estas instrucciones pueden operar en vectores de 512 bits, y AVX-512VL agrega además soporte para vectores de 128 y 256 bits.

Una extensión posterior de AVX-VNNI añade codificaciones VEX de estas instrucciones, que solo pueden operar con vectores de 128 o 256 bits. AVX-VNNI no forma parte del conjunto AVX-512, no requiere AVX-512F y puede implementarse de forma independiente.

IFMA

Instrucciones de multiplicación y suma de enteros fusionados. AVX512-IFMA añade instrucciones codificadas en EVEX que se describen a continuación.

Una extensión independiente del conjunto de instrucciones AVX-IFMA define la codificación VEX de estas instrucciones. Esta extensión no forma parte del conjunto AVX-512 y puede implementarse de forma independiente.

VPOPCNTDQ y BITALG

VP2INTERSECT

GFNI

GFNI es una extensión de conjunto de instrucciones independiente y se puede habilitar por separado de AVX o AVX-512. Dependiendo de si la CPU indica compatibilidad con AVX y AVX-512F, la compatibilidad con GFNI habilita instrucciones heredadas (SSE), VEX o EVEX que operan en vectores de 128, 256 o 512 bits.

En criptografía, estas instrucciones se pueden usar para implementar cajas S de estilo Rijndael , como las que se usan en Camellia y ARIA . [ 13 ] [ 14 ] Estas instrucciones también se pueden usar para la manipulación de bits en redes y procesamiento de señales . [ 15 ]

VPCLMULQDQ

VPCLMULQDQ con AVX-512F agrega una versión de 512 bits codificada en EVEX de la instrucción PCLMULQDQ . Con AVX-512VL, agrega versiones de 256 y 128 bits codificadas en EVEX. VPCLMULQDQ por sí solo (es decir, en CPU que no son AVX-512) agrega solo la versión de 256 bits codificada en VEX. (La disponibilidad de la versión de 128 bits codificada en VEX se indica mediante diferentes bits de CPUID: PCLMULQDQ y AVX). Las variantes de la instrucción que abarcan más de 128 bits realizan la misma operación en cada porción de 128 bits de los registros de entrada, pero no la extienden para seleccionar palabras cuádruples de diferentes campos de 128 bits (el significado del operando imm8 es el mismo: se selecciona la palabra cuádruple baja o alta del campo de 128 bits).

VAES

Instrucciones AES codificadas en VEX y EVEX . Las variantes de la instrucción que abarcan más de 128 bits realizan la misma operación en cada segmento de 128 bits de los registros de entrada. Las versiones VEX se pueden usar sin compatibilidad con AVX-512.

BF16

Instrucciones de aceleración de IA que operan sobre los números Bfloat16 .

FP16

Una extensión del conjunto de instrucciones F16C anterior , que añade soporte completo para los números de coma flotante binarios de 16 bits (también conocidos como FP16, float16 o números de coma flotante de precisión media). Las nuevas instrucciones implementan la mayoría de las operaciones que antes estaban disponibles para números de coma flotante de precisión simple y doble , e introducen nuevas instrucciones para números complejos e instrucciones de conversión. Se admiten operaciones escalares y empaquetadas.

A diferencia de las instrucciones de formato de precisión simple y doble, los operandos de precisión media no se vacían condicionalmente a cero ( FTZ ) ni se tratan condicionalmente como cero ( DAZ ) según MXCSRla configuración. Los valores subnormales se procesan a máxima velocidad por hardware para facilitar el uso del rango dinámico completo de los números FP16. Las instrucciones que crean números FP32 y FP64 siguen respetando el MXCSR.FTZbit. [ 16 ]

Instrucciones aritméticas

Instrucciones aritméticas complejas

Instrucciones recíprocas aproximadas

Instrucciones de comparación

Instrucciones de conversión

Instrucciones de descomposición

Instrucciones de movimiento

BMM

Instrucciones de multiplicación de matrices de bits e inversión de bits. A diferencia de otros subconjuntos de AVX-512, introducidos originalmente por AMD.

Las instrucciones de multiplicación de matrices de bits solo están definidas para vectores de 256 y 512 bits, donde cada una de las líneas de 256 bits representa una matriz de 16x16 bits. Para las versiones de 512 bits, cada vector contiene dos matrices y la operación se realiza en paralelo sobre ellas.

La instrucción de inversión de bits está definida para vectores de 128, 256 y 512 bits.

Instrucciones heredadas con versiones codificadas en EVEX

CPUs con AVX-512

^Nota 1 : Intel no admite oficialmente la familia de instrucciones AVX-512 en losAlder Lake. A principios de 2022, Intel comenzó a deshabilitar (desactivar) AVX-512 en silicio en los microprocesadores Alder Lake para evitar que los clientes habilitaran AVX-512. [ 38 ] En CPU más antiguas de la familia Alder Lake con algunas combinaciones heredadas de revisiones de BIOS y microcódigo, era posible ejecutar instrucciones de la familia AVX-512 al deshabilitar todos los núcleos de eficiencia que no contienen el silicio para AVX-512. [ 39 ] [ 40 ] [ 26 ]

Actuación

Intel Vectorization Advisor (a partir de la versión 2017) admite el análisis nativo del rendimiento AVX-512 y la calidad del código vectorial (para procesadores "Core", Xeon e Intel Xeon Phi ). Junto con el perfil de puntos críticos tradicional, las recomendaciones del Asesor y la integración "perfecta" de los diagnósticos de vectorización del compilador Intel, el análisis de la encuesta del Asesor también proporciona métricas ISA AVX-512 y nuevas "características" específicas de AVX-512, por ejemplo, dispersión, compresión/expansión y utilización de máscaras. [ 41 ] [ 42 ]

En algunos procesadores (principalmente Intel anteriores a Ice Lake ), las instrucciones AVX-512 pueden causar una limitación de frecuencia incluso mayor que sus predecesoras, lo que supone una penalización para cargas de trabajo mixtas. La reducción adicional de la frecuencia se activa por el ancho de 512 bits de los vectores y depende de la naturaleza de las instrucciones que se ejecutan; el uso de la parte de 128 o 256 bits de AVX-512 (AVX-512VL) no la activa. Como resultado, gcc y clang prefieren por defecto usar los vectores de 256 bits para objetivos Intel. [ 43 ] [ 44 ] [ 45 ]

Los compiladores de C/ C++ también manejan automáticamente el desenrollado de bucles y evitan bloqueos en la tubería para usar AVX-512 de la manera más efectiva, lo que significa que un programador que usa intrínsecos del lenguaje para intentar forzar el uso de AVX-512 a veces puede resultar en un rendimiento peor en comparación con el código generado por el compilador cuando encuentra bucles escritos directamente en el código fuente. [ 46 ] En otros casos, el uso de intrínsecos de AVX-512 en código C/C++ puede resultar en una mejora del rendimiento en comparación con el código C/C++ escrito directamente. [ 47 ]

Recepción

Hay muchos ejemplos de aplicaciones de AVX-512 , incluyendo procesamiento de medios, criptografía, videojuegos , [ 48 ] redes neuronales , [ 49 ] e incluso OpenJDK , que emplea AVX-512 para ordenar . [ 50 ]

En una cita muy citada de 2020, Linus Torvalds dijo: "Espero que AVX-512 muera de forma dolorosa, y que Intel empiece a solucionar problemas reales en lugar de intentar crear instrucciones mágicas para luego crear pruebas de rendimiento en las que puedan quedar bien", [ 51 ] afirmando que preferiría que el presupuesto de transistores se gastara en núcleos adicionales y rendimiento de enteros, y que "detesta" las pruebas de rendimiento de punto flotante . [ 52 ]

Véase también

Referencias

  • Kusswurm, Daniel (2022). Programación paralela moderna con C++ y lenguaje ensamblador  : desarrollo SIMD X86 usando AVX, AVX2 y AVX-512 . Nueva York, NY: Apress Media LLC. ISBN 978-1-4842-7918-2OCLC 1304243196 .​ 
  1. 1 2 3 4 5 6 James Reinders (23 de julio de 2013). "Instrucciones AVX-512" . Intel . Recuperado el 20 de agosto de 2013 .
  2. 1 2 Kusswurm 2022 , pág. 223.
  3. Bonshor, Gavin (25 de julio de 2023). "Intel presenta los conjuntos de instrucciones AVX10 y APX: Unificando AVX-512 para arquitecturas híbridas" . AnandTech . Archivado del original el 25 de julio de 2023. Recuperado el 21 de agosto de 2024 .
  4. "Intel añadirá instrucciones de aprendizaje profundo a sus procesadores" . 14 de octubre de 2016.
  5. 1 2 3 4 5 6 7 8 "Intel Architecture Instruction Set Extensions Programming Reference" (PDF) . Intel . Consultado el 29 de enero de 2014 .
  6. 1 2 3 James Reinders (17 de julio de 2014). "Instrucciones AVX-512 adicionales" . Intel . Recuperado el 3 de agosto de 2014 .
  7. Anton Shilov. "Los procesadores Intel 'Skylake' para PC no admitirán las instrucciones AVX-512" . Kitguru.net . Consultado el 17 de marzo de 2015 .
  8. 1 2 3 4 5 6 "Referencia de programación de extensiones del conjunto de instrucciones y características futuras de la arquitectura Intel" . Intel . Consultado el 16 de octubre de 2017 .
  9. " [ PARCHE ] Añadir soporte para procesadores AMD znver6" . 19 de noviembre de 2025.
  10. "La documentación en línea de asm indica incorrectamente que k0 (X86 AVX-512) está cableado a cero · Problema n.° 94977 · rust-lang/Rust" . GitHub .
  11. "Arquitectura AVX-512/Póster de Demikhovsky" (PDF) . Intel . Consultado el 25 de febrero de 2014 .
  12. "Intel® Deep Learning Boost" (PDF) . Intel . Consultado el 11 de octubre de 2021 .
  13. Kivilinna, Jussi (19 de abril de 2023). "camellia-simd-aesni" . GitHub . Los procesadores x86-64 más recientes también admiten las instrucciones Galois Field New Instructions (GFNI), que permiten implementar la s-box de Camellia de una manera más directa y ofrecen un rendimiento aún mejor.
  14. Yoo, Tae-Hee; Kivilinna, Jussi; Cho, Choong-Hee (2023). "Aceleración basada en AVX del algoritmo de cifrado de bloques ARIA" . Acceso IEEE . 11 : 77403– 77415. Código bibliográfico : 2023IEEEA..1177403Y . doi : 10.1109/ACCESS.2023.3298026 .
  15. Towner, Daniel; Kinsella, Ray (9 de diciembre de 2021). "Guía de tecnología de nuevas instrucciones de campo de Galois (GFNI)" . Intel Corporation .
  16. "Especificación de la arquitectura Intel® AVX512-FP16, junio de 2021, revisión 1.0, ref. 347407-001US" (PDF) . Intel. 30 de junio de 2021. Consultado el 4 de julio de 2021 .
  17. "Intel Xeon Phi Processor product brief" . Intel . Consultado el 12 de octubre de 2016 .
  18. "Intel presenta la plataforma de la serie X: hasta 18 núcleos y 36 subprocesos, desde 242 $ hasta 2000 $" . Ars Technica . Consultado el 30 de mayo de 2017 .
  19. "Extensiones avanzadas de vectores de Intel 2015/2016: Compatibilidad con la colección de compiladores GNU" (PDF) . Gcc.gnu.org . Consultado el 20 de octubre de 2016 .
  20. Patrizio, Andy (21 de septiembre de 2015). "Se filtran detalles de la hoja de ruta de Intel sobre Xeon para 2016" . Itworld.org . Archivado del original el 21 de octubre de 2016. Consultado el 20 de octubre de 2016 .
  21. "Análisis del Intel Core i9-11900K: ¿El procesador para juegos más rápido del mundo?" . www.techpowerup.com . 30 de marzo de 2021.
  22. ""Añadir rocketlake a gcc" commit" . gcc.gnu.org .
  23. "Especificaciones del producto del procesador Intel Celeron 6305 (4M de caché, 1,80 GHz, con IPU)" . ark.intel.com . Archivado del original el 18 de octubre de 2020. Consultado el 10 de noviembre de 2020 .
  24. ^ Computadora portátil Murah Kinerja Boleh Diadu | HP 14S DQ2518TU , 18 de junio de 2021 , consultado el 8 de agosto de 2021
  25. "Uso de la colección de compiladores GNU (GCC): opciones x86" . GNU . Consultado el 14 de octubre de 2019 .
  26. 1 2 Cutress, Ian; Frumusanu, Andrei. "Análisis del Intel Core i9-12900K de 12.ª generación: el rendimiento híbrido trae consigo una complejidad híbrida" . www.anandtech.com . Archivado del original el 4 de noviembre de 2021. Consultado el 5 de noviembre de 2021 .
  27. Larabel, Michael. "Intel Core i9 12900K "Alder Lake" AVX-512 en Linux" . www.phoronix.com . Consultado el 8 de noviembre de 2021 .
  28. Larabel, Michael. "Comparación de rendimiento AVX-512: AMD Genoa vs. Intel Sapphire Rapids e Ice Lake" . www.phoronix.com . Consultado el 19 de enero de 2023 .
  29. "El primer SoC x86 de alto rendimiento de la industria con CPU de clase servidor y tecnología de coprocesador de IA integrada" . 2 de agosto de 2022. Archivado del original el 12 de diciembre de 2019.
  30. "x86, x64 Latencia de instrucciones, latencia de memoria y volcados de CPUID (instatx64)" . users.atw.hu .
  31. https://www.phoronix.com/news/Hygon-C86-4G-CPU-GCC-17
  32. https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=2a64a63d982584618af1de1b5d5f1f1c3ec03502
  33. "Los procesadores Ryzen basados ​​en AMD Zen 4 podrían tener hasta 24 núcleos y compatibilidad con vectores AVX512" . Hardware Times . 23 de mayo de 2021. Archivado del original el 2 de septiembre de 2021. Consultado el 2 de septiembre de 2021 .
  34. Hagedoorn, Hilbert (18 de mayo de 2021). "AMD está trabajando en un prodigioso procesador EPYC de 96 núcleos" . Guru3D.com . Consultado el 25 de mayo de 2021 .
  35. clamchowder (23 de agosto de 2021). "Detalles sobre la filtración de gigabytes" . Chips And Cheese . Consultado el 10 de junio de 2022 .
  36. W1zzard (26 de mayo de 2022). "AMD responde a nuestras preguntas técnicas sobre Zen 4, con Robert Hallock" . TechPowerUp . Consultado el 29 de mayo de 2022 .
  37. Larabel, Michael (26 de septiembre de 2022). "Análisis de rendimiento de AMD Zen 4 AVX-512 en el Ryzen 9 7950X" . www.phoronix.com .
  38. Alcorn, Paul (2 de marzo de 2022). "Intel elimina el soporte AVX-512 de Alder Lake y ahora lo desactiva en silicio" . Tom's Hardware . Consultado el 7 de marzo de 2022 .
  39. Cutress, Ian; Frumusanu, Andrei (19 de agosto de 2021). "Día de la Arquitectura de Intel 2021: Detalles de Alder Lake, Golden Cove y Gracemont" . AnandTech . Archivado del original el 25 de agosto de 2021. Recuperado el 25 de agosto de 2021 .
  40. Alcorn, Paul (19 de agosto de 2021). "Día de la Arquitectura Intel 2021: Chips Alder Lake, núcleos Golden Cove y Gracemont" . Tom's Hardware . Consultado el 21 de agosto de 2021 .
  41. "Novedades de Intel Advisor XE 2016 Update 3 - Intel Software" . Software.intel.com . Consultado el 20 de octubre de 2016 .
  42. "Intel Advisor - Intel Software" . Software.intel.com . Consultado el 20 de octubre de 2016 .
  43. Cordes, Peter. "Las instrucciones SIMD reducen la frecuencia de la CPU" . Stack Overflow .
  44. Cordes, Peter. "¿Por qué la autovectorización de gcc para tigerlake usa registros ymm en lugar de zmm?" . Stack Overflow .
  45. "Notas de la versión LLVM 10.0.0" .
  46. Matthew Kolbe (10 de octubre de 2023). Charla relámpago: Cómo aprovechar las funciones intrínsecas SIMD para ralentizaciones masivas - Matthew Kolbe - CppNow 2023. C++Now . Consultado el 15 de octubre de 2023 a través de YouTube.
  47. Clausecker, Robert (5 de agosto de 2023). "Transcodificación de caracteres Unicode con instrucciones AVX-512". Software: Practice and Experience . 53 (12): 2430– 2462. arXiv : 2212.05098 . doi : 10.1002/spe.3261 .
  48. Szewczyk, Chris (24 de noviembre de 2021). "El emulador RPCS3 de PS3 obtiene una mejora considerable en las CPU Intel Alder Lake con AVX-512 habilitado" . PC Gamer . Consultado el 11 de octubre de 2023 .
  49. ^ Carneiro, André; Serpa, Matheus (5 de septiembre de 2021). "Aplicaciones ligeras de aprendizaje profundo en AVX-512". Simposio IEEE 2021 sobre Computadoras y Comunicaciones (ISCC) . Atenas : IEEE . págs. 1 a 6. doi : 10.1109/ISCC53001.2021.9631464 . 
  50. Parasa, Srinivas (30 de mayo de 2023). "JDK-8309130: Intrínsecos AVX512 x86_64 para los métodos Arrays.sort (matrices int, long, float y double)" . OpenJDK . Consultado el 11 de octubre de 2023 .
  51. Tung, Liam (13 de julio de 2020). "Linus Torvalds: Espero que el AVX-512 de Intel muera de forma dolorosa" . ZDNet . Consultado el 11 de octubre de 2023 .
  52. Torvalds, Linus (11 de julio de 2020). "Alder Lake y AVX-512" . realworldtech.com . Consultado el 11 de octubre de 2023 .