Hopper es una microarquitectura de unidad de procesamiento gráfico (GPU) desarrollada por Nvidia . Está diseñada para centros de datos y se utiliza junto con la microarquitectura Lovelace . Es la última generación de la línea de productos anteriormente denominada Nvidia Tesla , ahora GPU para centros de datos de Nvidia.
La arquitectura Hopper , que lleva el nombre de la científica informática y contralmirante de la Marina de los Estados Unidos Grace Hopper , se filtró en noviembre de 2019 y se reveló oficialmente en marzo de 2022. Mejora a sus predecesoras, las microarquitecturas Turing y Ampere , presentando un nuevo multiprocesador de transmisión , un subsistema de memoria más rápido y un motor de aceleración de transformadores.
La GPU Nvidia Hopper H100 se implementa utilizando el proceso TSMC N4 con 80 mil millones de transistores. Consta de hasta 144 multiprocesadores de transmisión . [1] Debido al mayor ancho de banda de memoria proporcionado por el zócalo SXM5, la Nvidia Hopper H100 ofrece un mejor rendimiento cuando se usa en una configuración SXM5 que en el zócalo PCIe típico. [2]
Los multiprocesadores de streaming para Hopper mejoran las microarquitecturas Turing y Ampere , aunque el número máximo de warps simultáneos por multiprocesador de streaming (SM) sigue siendo el mismo entre las arquitecturas Ampere y Hopper, 64. [3] La arquitectura Hopper proporciona un acelerador de memoria tensorial (TMA), que admite la transferencia de memoria asíncrona bidireccional entre la memoria compartida y la memoria global. [4] Con TMA, las aplicaciones pueden transferir hasta tensores 5D. Al escribir desde la memoria compartida a la memoria global, se pueden utilizar operadores de reducción por elementos y bit a bit, evitando registros e instrucciones SM al tiempo que permite a los usuarios escribir códigos especializados en warp. TMA se expone a través de cuda::memcpy_async
[5]
Al paralelizar aplicaciones, los desarrolladores pueden usar clústeres de bloques de subprocesos . Los bloques de subprocesos pueden realizar operaciones atómicas en la memoria compartida de otros bloques de subprocesos dentro de su clúster, también conocida como memoria compartida distribuida . La memoria compartida distribuida puede ser utilizada por un SM simultáneamente con caché L2 ; cuando se utiliza para comunicar datos entre SM, esto puede utilizar el ancho de banda combinado de la memoria compartida distribuida y L2. El tamaño máximo de clúster portátil es 8, aunque el Nvidia Hopper H100 puede admitir un tamaño de clúster de 16 mediante el uso de la cudaFuncAttributeNonPortableClusterSizeAllowed
función, potencialmente a costa de una cantidad reducida de bloques activos. [6] Con la multidifusión L2 y la memoria compartida distribuida, se reduce el ancho de banda necesario para la lectura y escritura de memoria de acceso aleatorio dinámico . [7]
Hopper ofrece un rendimiento mejorado en formato de punto flotante de precisión simple (FP32) con el doble de operaciones FP32 por ciclo por SM que su predecesor. Además, la arquitectura Hopper agrega soporte para nuevas instrucciones, incluido el algoritmo Smith-Waterman . [6] Al igual que Ampere, se admite la aritmética TensorFloat-32 (TF-32). El patrón de mapeo para ambas arquitecturas es idéntico. [8]
La Nvidia Hopper H100 admite memoria HBM3 y HBM2e de hasta 80 GB; el sistema de memoria HBM3 admite 3 TB/s, un aumento del 50 % con respecto a los 2 TB/s de la Nvidia Ampere A100. En toda la arquitectura, se aumentó la capacidad de caché L2 y el ancho de banda. [9]
Hopper permite que los núcleos de cómputo CUDA utilicen compresión automática en línea, incluso en la asignación de memoria individual, lo que permite acceder a la memoria con un mayor ancho de banda. Esta característica no aumenta la cantidad de memoria disponible para la aplicación, porque los datos (y, por lo tanto, su compresibilidad ) pueden cambiar en cualquier momento. El compresor elegirá automáticamente entre varios algoritmos de compresión. [9]
La Nvidia Hopper H100 aumenta la capacidad de la caché L1 combinada, la caché de texturas y la memoria compartida a 256 KB. Al igual que sus predecesores, combina las cachés L1 y de texturas en una caché unificada diseñada para ser un búfer de fusión. El atributo cudaFuncAttributePreferredSharedMemoryCarveout
se puede utilizar para definir la exclusión de la caché L1. Hopper introduce mejoras en NVLink a través de una nueva generación con un ancho de banda de comunicación general más rápido. [10]
Algunas aplicaciones CUDA pueden experimentar interferencias al realizar operaciones de vaciado o de cercado debido al ordenamiento de la memoria. Debido a que la GPU no puede saber qué escrituras están garantizadas y cuáles son visibles por tiempo aleatorio, puede esperar operaciones de memoria innecesarias, lo que ralentiza las operaciones de vaciado o cercado. Por ejemplo, cuando un núcleo realiza cálculos en la memoria de la GPU y un núcleo paralelo realiza comunicaciones con un par, el núcleo local vaciará sus escrituras, lo que dará como resultado escrituras NVLink o PCIe más lentas . En la arquitectura Hopper, la GPU puede reducir la transmisión de red a través de una operación de cercado. [11]
La interfaz de programación de aplicaciones (API) matemática de la arquitectura Hopper expone funciones en el SM como __viaddmin_s16x2_relu
, que realiza la operación por media palabra . En el algoritmo Smith-Waterman, se puede utilizar un mínimo o máximo de tres vías seguido de una fijación a cero. [12] De manera similar, Hopper acelera las implementaciones del algoritmo Needleman-Wunsch . [13]__vimax3_s16x2_relu
La arquitectura Hopper fue la primera arquitectura de Nvidia en implementar el motor de transformador [14] . El motor de transformador acelera los cálculos al reducirlos dinámicamente desde precisiones numéricas más altas (es decir, FP16) a precisiones más bajas que son más rápidas de realizar (es decir, FP8) cuando la pérdida de precisión se considera aceptable [14] . El motor de transformador también es capaz de asignar dinámicamente bits en la precisión elegida a la mantisa o al exponente en tiempo de ejecución para maximizar la precisión [15] .
El factor de forma SXM5 H100 tiene una potencia de diseño térmico (TDP) de 700 vatios . Con respecto a su asincronía, la arquitectura Hopper puede alcanzar altos grados de utilización y, por lo tanto, puede tener un mejor rendimiento por vatio. [16]
El GH200 combina una GPU H100 basada en Hopper con una CPU de 72 núcleos basada en Grace en un solo módulo. El consumo total de energía del módulo es de hasta 1000 W. La CPU y la GPU están conectadas a través de NVLink, que proporciona coherencia de memoria entre la CPU y la memoria de la GPU. [17]
En noviembre de 2019, una conocida cuenta de Twitter publicó un tuit que revelaba que la próxima arquitectura después de Ampere se llamaría Hopper, en honor a la científica informática y contralmirante de la Marina de los Estados Unidos Grace Hopper , una de las primeras programadoras del Harvard Mark I. La cuenta afirmaba que Hopper se basaría en un diseño de módulo de múltiples chips , lo que daría como resultado una ganancia de rendimiento con un menor desperdicio. [18]
Durante la Nvidia GTC de 2022 , Nvidia anunció oficialmente Hopper. [19] Para 2023, durante el auge de la IA , los H100 tenían una gran demanda. Larry Ellison de Oracle Corporation dijo ese año que en una cena con el director ejecutivo de Nvidia, Jensen Huang , él y Elon Musk de Tesla, Inc. y xAI "estaban rogando" por los H100, "supongo que es la mejor manera de describirlo. Una hora de sushi y súplicas". [20]
En enero de 2024, los analistas financieros de Raymond James estimaron que Nvidia estaba vendiendo la GPU H100 en un rango de precios de $25,000 a $30,000 cada una, mientras que en eBay, las H100 individuales costaban más de $40,000. [21] En febrero de 2024, se informó que Nvidia estaba enviando GPU H100 a centros de datos en vehículos blindados. [22]
Comparación de aceleradores utilizados en DGX: [23] [24] [25]