Desmitificar NVIDIA DOCA

por justinbetz

La versión de acceso anticipado del SDK NVIDIA DOCA se anunció a principios de este año en GTC. DOCA marca nuestro enfoque para encontrar nuevas formas de acelerar la computación. La aparición del paradigma de la DPU como la evolución de las SmartNIC finalmente está aquí. Permitimos a los desarrolladores y arquitectos de aplicaciones exprimir más valor de las CPU de uso general al acelerar, descargar y aislar la infraestructura del data center a la DPU.

Una de las formas más importantes de pensar en DOCA es como la plataforma de habilitación de DPU. DOCA permite el consumo rápido de características de DPU en pilas de software de data centers nuevas y existentes.

Un data center moderno consiste en mucho más que una simple infraestructura de red. La clave para data centers operacionalmente eficientes y escalables es el software. La organización, el aprovisionamiento, la supervisión y la telemetría son componentes de software. Incluso la infraestructura de red en sí misma es principalmente una función del software. El sistema operativo de red utilizado en los nodos de red determina el conjunto de características e impulsa muchas decisiones posteriores en torno a las herramientas de operación y monitoreo.

Llamamos DOCA a un framework de software con un SDK, pero es más que eso. Un SDK es un gran lugar para comenzar cuando se piensa en qué es DOCA y cómo consumirlo. Una fuente frecuente de confusión es dónde se ejecutan los componentes. ¿Qué componentes DOCA se requieren en el host y cuáles se requieren en la DPU? ¿En qué condiciones necesitaría el SDK en comparación con el entorno de tiempo de ejecución? ¿Qué son exactamente las bibliotecas de DOCA?

Descripción General

Para las personas que recién conocen DOCA, esta publicación desmitifica parte de la complejidad en torno a la pila y el empaque de DOCA. Primero, me gustaría revisar algunos términos y refinar lo que significan en el contexto de DOCA.

SDK

Este es un conjunto de desarrollo de software. En contexto, esto es lo que un desarrollador de aplicaciones necesitaría para poder escribir y compilar software utilizando DOCA. Contiene tiempos de ejecución, bibliotecas y drivers. No todo el mundo necesita todo lo que está empaquetado en el SDK o que lo normalmente forma parte de él.

En un sentido estricto, un SDK se trata más de empaquetar componentes de software, pero también se usa para describir de manera más concisa (aunque no del todo precisa) cómo la industria debe pensar sobre qué es DOCA y cómo consumirlo. DOCA está destinado principalmente para que lo utilicen los desarrolladores de aplicaciones.

Tiempo de Ejecución

Este es el conjunto de componentes necesarios para ejecutar una aplicación de DOCA. Contiene las bibliotecas y drivers vinculados que una aplicación de DOCA debe tener para ejecutarse. En términos de empaquetado, no necesita contener los archivos de encabezado ni las fuentes para poder escribir y compilar aplicaciones. Las aplicaciones de DOCA se pueden escribir y crear para x86 o Arm, por lo que hay diferentes paquetes de tiempo de ejecución para cada arquitectura.

Bibliotecas

Hay dos contextos diferentes aquí. En el contexto más amplio y general, una biblioteca es una colección de recursos que utilizan las aplicaciones. Los recursos de la biblioteca pueden incluir todo tipo de datos, como la configuración, la documentación o los datos de ayuda; plantillas de mensajes; código preescrito y subrutinas, clases, valores o especificaciones de tipo.

En el contexto de DOCA, las bibliotecas también proporcionan una colección de implementaciones de comportamiento más funcionales y útiles. Proporcionan interfaces bien definidas mediante las cuales se invoca ese comportamiento.

Por ejemplo, la biblioteca DPI de DOCA proporciona un framework para inspeccionar el contenido de los paquetes de red y realizar acciones con este contenido.

Escribir una aplicación DPI usando el acelerador DPU RegEx desde cero sería mucho trabajo. Tendrías que escribir todas las rutinas de preprocesamiento y posprocesamiento para analizar los encabezados de paquetes y la carga útil y, luego, escribir un proceso para compilar reglas RegEx para la búsqueda de alta velocidad en el acelerador.

Packets passing through the DPI engine go through the connection tracking module where an accelerated regex match occurs from a set of precompiled signatures. Post processing routines occur after the regex result is returned.
El bloque de biblioteca DPI de DOCA.

Drivers

Los drivers de dispositivo proporcionan una interfaz a un dispositivo de hardware. Este pedazo de software es el nivel más bajo de abstracción. DOCA proporciona una capa adicional de abstracción para las funciones de hardware específicas de la DPU. De esta manera, a medida que el hardware de la DPU evoluciona, los cambios en el hardware subyacente no requerirán que las aplicaciones de DOCA también se actualicen para seguir interfaces de drivers nuevas o diferentes.

Similitudes entre DOCA y CUDA

Otra forma útil de pensar en el empaquetamiento de DOCA es a través de sus similitudes con CUDA. El tiempo de ejecución DOCA está destinado a incluir todos los drivers y bibliotecas en una línea similar a la que proporciona el paquete de drivers de pantalla de NVIDIA para CUDA.

Las aplicaciones que deben invocar bibliotecas de CUDA para el procesamiento de GPU solo necesitan tener instalado el paquete de drivers de pantalla de NVIDIA. Del mismo modo, las aplicaciones DOCA solo necesitan el paquete de tiempo de ejecución para la arquitectura específica. En ambos casos, tiene un conjunto adicional de paquetes y herramientas para integrar la funcionalidad y la aceleración de GPU o DPU en las aplicaciones.

The NVIDIA DOCA runtime contains NVIDIA DOCA drivers and binaries like how CUDA driver and binary components are packaged with the NVIDIA display driver package.
DOCA en comparación con el tiempo de ejecución de CUDA y la pila del conjunto para desarrolladores.

Requisitos de la plataforma DOCA

Otro factor complicado puede ser clasificar qué componentes DOCA se requieren en qué plataforma. Después de todo, la DPU ejecuta su propio sistema operativo, pero también se presenta como un elemento periférico para el sistema operativo host.

Las aplicaciones DOCA pueden ejecutarse en el host x86 o en los núcleos Arm de la DPU. Las aplicaciones DOCA que se ejecutan en el host x86 están diseñadas para utilizar las características de aceleración por DPU a través de llamadas a la biblioteca de DOCA. En términos de empaquetamiento, diferentes sistemas operativos pueden significar diferentes procedimientos de instalación para todos estos componentes, pero, afortunadamente, esto no es tan confuso como parece para los administradores.

Para la DPU NVIDIA BlueField, todos los componentes del tiempo de ejecución y del SDK se incluyen con la imagen del sistema operativo. Es posible escribir, compilar y compilar aplicaciones DOCA en la DPU para realizar pruebas rápidas. Todos los componentes de DOCA están ahí, pero ese no siempre es un entorno de desarrollo ideal. Tener los componentes del SDK integrados e incluidos con la imagen del sistema operativo de la DPU hace que sea más fácil para todos, ya que es el superconjunto el que contiene los componentes del tiempo de ejecución.

Para el host x86, hay muchos más componentes individuales para considerar. Los paquetes que un administrador necesita en el host dependen, de nuevo, principalmente de si este host es un entorno de desarrollo o un servidor de compilación, y en qué arquitectura se utilizará. ¿O el host ejecutará aplicaciones que invoquen bibliotecas de DOCA?

Para los hosts x86 destinados a servir como entorno de desarrollo, hay una consideración adicional. Para el desarrollo de aplicaciones DOCA que se ejecutarán en la CPU x86, un administrador necesita el SDK DOCA x86 nativo para paquetes de host. Para desarrollar aplicaciones Arm desde un host x86, NVIDIA tiene un contenedor de desarrollo DOCA prediseñado que gestiona todas esas complejidades multiplataforma.

En el caso más simple para los hosts x86 que solo ejecutan aplicaciones con DOCA, eso es lo que satisfaría el paquete del tiempo de ejecución de DOCA para el host. Contiene el conjunto mínimo de componentes para permitir que las aplicaciones escritas utilizando bibliotecas de DOCA se ejecuten correctamente en la máquina de destino. La Figura 3 muestra los diferentes componentes en los dos dominios diferentes del sistema operativo.

NVIDIA DOCA components exist in both places: The OS running on x86 host and on the BlueField DPU. An NVIDIA DOCA development container is available for x86 hosts to provide an Arm QEMU-emulated build environment to be able to build and compile applications to run natively on the DPU.
Empaquetamiento de DOCA entre el host y la DPU BlueField.

Simplificación de la instalación

Ahora que he explicado cómo funciona todo ese empaquetamiento en el host x86, debo mencionar que tienes una manera fácil de instalar los componentes correctos en los lugares correctos. El Administrador de SDK de NVIDIA reduce el tiempo y el esfuerzo necesarios para gestionar esta complejidad de empaquetamiento. El Administrador de SDK no solo puede instalar o reparar los componentes del SDK en el host, sino que también puede detectar e instalar el sistema operativo en la DPU BlueField, todo a través de una interfaz gráfica. ¡Juego de niños!

SDK Manager provides a graphical wizard interface to ease installation of NVIDIA DOCA and the OS image on the DPU.
Interfaz gráfica del Administrador de SDK para configurar una DPU e instalar componentes de DOCA.

Resumen

Con suerte, esta publicación ayuda mucho a comprender y desmitificar DOCA y su empaquetamiento. Para descargar el software DOCA y comenzar a usarlo, consulta la página para desarrolladores de NVIDIA DOCA.