Desmistificando o NVIDIA DOCA

por justinbetz

A versão de acesso antecipado do SDK NVIDIA DOCA foi anunciada no início deste ano no GTC. O DOCA evidencia nosso foco em encontrar novas formas de acelerar a computação. Agora, a DPU finalmente estabeleceu-se como a evolução das SmartNICs. Com isso, permitimos que desenvolvedores e arquitetos de aplicações extraiam mais valor das CPUs de uso geral, acelerando, transferindo e isolando a infraestrutura de data center para a DPU.

É importante pensar no DOCA como a plataforma facilitadora da DPU. O DOCA permite o consumo rápido de recursos de DPU em pacotes de software de data center novos e existentes.

Um data center moderno é muito mais que uma simples infraestrutura de rede. A resposta para data centers eficientes e dimensionáveis é o software. Orquestração, provisionamento, monitoramento e telemetria são todos componentes de software. Até a infraestrutura de rede em si é majoritariamente uma função de software. O sistema operacional usado nos nós de rede define o conjunto de recursos e influencia muitas decisões posteriores a respeito de ferramentas de operação e monitoramento.

Costumamos chamar o DOCA de framework de software com um SDK, mas ele é mais que isso. O SDK é um ótimo ponto de partida para entender o que é e como usar o DOCA. Uma questão que costuma causar confusão é o local de execução dos componentes. Quais componentes do DOCA são necessários no host e quais na DPU? Em que condições o SDK seria necessário, em comparação ao ambiente de runtime? O que são as bibliotecas do DOCA, exatamente?

Visão Geral

Esta publicação pretende desmistificar os componentes e o empacotamento do DOCA, para quem não tem familiaridade com essas características. Primeiro, vamos rever alguns termos e especificar o que significam no contexto do DOCA.

SDK

É um kit de desenvolvimento de software. Nesse contexto, é o que um desenvolvedor de aplicações precisaria para poder escrever e compilar software usando o DOCA. Ele contém runtimes, bibliotecas e drivers. Nem todos precisam de tudo o que normalmente vem no pacote ou faz parte do SDK.

Em um sentido mais estrito, o SDK serve para empacotar componentes de software, mas também é usado para descrever mais concisamente (embora não precisamente) como o setor deve enxergar e consumir o DOCA. O DOCA foi feito para uso por desenvolvedores de aplicações, principalmente.

Runtime

É o conjunto de componentes necessários para executar uma aplicação DOCA. Ele contém as bibliotecas e os drivers vinculados de que uma aplicação DOCA precisa para ser executada. Em relação ao pacote, o runtime não precisa conter os arquivos de cabeçalho e fontes para escrever e criar (compilar) aplicações. As aplicações DOCA podem ser escritas e compiladas para x86 ou Arm, e há diferentes pacotes de runtime para cada arquitetura.

Bibliotecas

Nesse ponto, há dois contextos diferentes. No contexto mais amplo e geral, bibliotecas são coleções de recursos usados por aplicações. Os recursos de uma biblioteca podem incluir todos os tipos de dados, como configuração, documentação ou dados de ajuda; modelos de mensagens; código pré-escrito e sub-rotinas, classes, valores ou especificações de tipo.

No contexto do DOCA, as bibliotecas também oferecem uma coleção de implementações comportamentais mais funcionais e úteis. Elas disponibilizam interfaces bem definidas pelas quais o comportamento é invocado.

A biblioteca DPI do DOCA, por exemplo, oferece um framework para inspeção e ação sobre o conteúdo de pacotes de rede.

Escrever uma aplicação DPI usando o acelerador RegEx da DPU do zero seria um trabalho complexo. Seria preciso escrever todas as rotinas de pré-processamento e pós-processamento para analisar cabeçalhos e conteúdo de pacote e, então, escrever um processo para compilar regras RegEx para pesquisa de alta velocidade no 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.
O bloco da biblioteca DPI do DOCA.

Drivers

Drivers de dispositivo fornecem uma interface para dispositivos de hardware. Essa parte do software está no nível mais baixo de abstração. O DOCA oferece uma camada adicional de abstração para as funções específicas do hardware da DPU. Assim, à medida que o hardware de DPU evolui, as alterações no hardware subjacente não exigirão que as aplicações DOCA também sejam atualizadas para acompanhar diferentes interfaces de driver.

Semelhanças entre DOCA e CUDA

Outra forma útil de pensar sobre o pacote DOCA é analisando as semelhanças que apresenta em relação à CUDA. O runtime do DOCA inclui todos os drivers e bibliotecas, de maneira semelhante ao que o pacote de drivers de vídeo da NVIDIA disponibiliza à CUDA.

As aplicações que precisam invocar bibliotecas CUDA para o processamento por GPU só precisam ter o pacote de drivers de vídeo da NVIDIA instalado. Da mesma forma, as aplicações DOCA só precisam do pacote de runtime para a arquitetura em questão. Em ambos os casos, há um conjunto adicional de pacotes e ferramentas para integrar a funcionalidade de GPU e DPU e a aceleração nas aplicações.

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 versus runtime da CUDA e o pacote de kit de desenvolvedor.

Requisitos de plataforma do DOCA

Outra dificuldade é identificar quais componentes do DOCA são necessários para cada plataforma. Afinal, a DPU executa o próprio sistema operacional, mas também se apresenta como periférico para o sistema operacional de host.

As aplicações DOCA podem ser executadas em um host x86 ou nos núcleos Arm da DPU. As aplicações DOCA executadas em host x86 são feitas para usar os recursos de aceleração da DPU por chamadas de bibliotecas DOCA. Em relação ao pacote, sistemas operacionais diferentes podem exigir procedimentos de instalação diferentes para os componentes, mas isso não é tão complicado para os administradores.

Para a DPU NVIDIA BlueField, todos os componentes de runtime e SDK são reunidos com a imagem do sistema operacional. É possível escrever, criar e compilar aplicações DOCA na DPU para testes rápidos. Todos os componentes do DOCA estão presentes, mas isso nem sempre será um ambiente de desenvolvimento ideal. Ter os componentes do SDK incorporados e incluídos na imagem do sistema operacional da DPU facilita tudo, disponibilizando o superconjunto que contém os componentes do runtime.

Para o host x86, é preciso considerar muito mais componentes individuais. Os pacotes de que um administrador precisa no host dependem principalmente da arquitetura e do propósito do host, isto é, se é um ambiente de desenvolvimento ou um servidor de criação. Também é importante saber se o host executará aplicações que invocam bibliotecas do DOCA.

No caso de hosts x86 feitos para servir como ambientes de desenvolvimento, é preciso levar em conta mais um fator. Para o desenvolvimento de aplicações DOCA que serão executadas em CPUs x86, o administrador precisa do SDK DOCA x86 nativo para pacotes de host. Para desenvolver aplicações Arm de um host x86, a NVIDIA tem um contêiner de desenvolvimento do DOCA pré-pronto que reduz todas essas complexidades entre plataformas.

No caso mais simples para hosts x86 que só executam aplicações usando o DOCA, o pacote DOCA Runtime for Host é satisfatório. Ele contém o conjunto mínimo de componentes para permitir que aplicações escritas usando bibliotecas do DOCA sejam executadas corretamente na máquina de destino. A figura 3 mostra os diferentes componentes nos dois domínios de sistema operacional diferentes.

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.
Pacote do DOCA entre o host e a DPU BlueField.

Simplificando a instalação

Agora que expliquei como todo o pacote funciona no host x86, é importante destacar que existe uma forma fácil de instalar os componentes certos nos lugares certos. O Gerenciador de SDK da NVIDIA reduz o tempo e o esforço necessários para lidar com essa dificuldade de pacote. O Gerenciador de SDK não só instala e repara os componentes do SDK no host, mas também detecta e instala o sistema operacional na DPU BlueField, tudo através de uma interface gráfica. Não é prático?

SDK Manager provides a graphical wizard interface to ease installation of NVIDIA DOCA and the OS image on the DPU.
Interface gráfica do Gerenciador de SDK para configurar uma DPU e instalar os componentes do DOCA.

Resumo

Espero que esta publicação tenha ajudado você a entender melhor o DOCA e seus pacotes. Para fazer download do software DOCA e começar a usá-lo, consulte a página de desenvolvedores do NVIDIA DOCA.