Technical Walkthrough

解谜 NVIDIA DOCA

NVIDIA DOCA 的早期接入版本于今年早些时候在 GTC 上发布。 DOCA 标志着我们专注于寻找加速计算的新方法。 DPU 范式作为 SmartNICs 的发展终于出现了。我们通过加速、卸载并将数据中心基础架构与 DPU 隔离,使开发人员和应用程序架构师能够从通用 CPU 中榨取更多价值。

考虑 DOCA 最重要的方式之一是 DPU 启用平台。 DOCA 能够将 DPU 功能快速消耗到新的和现有的数据中心软件堆栈中。

现代数据中心不仅仅由简单的网络基础设施组成。操作高效且可扩展的数据中心的关键是软件。编排、资源调配、监视和遥测都是软件组件。甚至网络基础设施本身也主要是软件的功能。网络节点上使用的网络操作系统决定了功能集,并围绕操作工具和监控驱动许多下游决策。

我们称 DOCA 为一个带有 SDK 的软件框架,但它不仅仅是这样。当考虑什么是 DOCA 以及如何使用它时, SDK 是一个很好的起点。一个常见的混淆源是组件运行的位置。主机上需要哪些 DOCA 组件, DPU 上需要哪些组件?与运行时环境相比,在哪些条件下需要 SDK ? DOCA 库具体是什么?

概述

对于 DOCA 的新手来说,这篇文章揭开了 DOCA 堆栈和打包的复杂性。首先,我想重温一些术语并完善它们在 DOCA 上下文中的含义。

SDK

这是一个软件开发工具包。在上下文中,应用程序开发人员需要能够使用 DOCA 编写和编译软件。它包含运行时、库和驱动程序。并不是每个人都需要与 SDK 打包或通常是 SDK 一部分的所有东西。

从严格意义上讲, SDK 更多的是打包软件组件,但它也被用来最简洁(尽管不完全准确)地描述行业应该如何思考 DOCA 是什么以及如何使用它。 DOCA 主要供应用程序开发人员使用。

运行

这是运行或执行 DOCA 应用程序所需的组件集。它包含 DOCA 应用程序必须运行的链接库和驱动程序。就打包而言,它不需要包含头文件和源文件,就可以编写和构建(编译)应用程序。 DOCA 应用程序可以为 x86 或 ARM 编写和构建,因此每个体系结构都有不同的运行时包。

这里有两种不同的背景。在更广泛和更一般的上下文中,库是应用程序使用的资源的集合。库资源可能包括各种数据,如配置、文档或帮助数据;消息模板;预先编写的代码;以及子例程、类、值或类型规范。

在 DOCA 的上下文中,库还提供了更多功能和有用的行为实现的集合。它们提供了定义良好的接口,通过这些接口可以调用该行为。

例如, DOCA DPI 库提供了一个用于检查和处理网络数据包内容的框架。

从头开始使用 DPU 正则表达式加速器编写 DPI 应用程序需要大量工作。您必须编写所有预处理和后处理例程来解析数据包头和有效负载,然后编写一个过程来编译 RegEx 规则,以便在加速器上进行高速查找。

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.
图 1 。 DOCA DPI 库块.

驱动程序

设备驱动程序为硬件设备提供接口。此位软件是最低级别的抽象。 DOCA 为 DPU 的特定硬件功能提供了额外的抽象层。这样,随着 DPU 硬件的发展,对底层硬件的更改将不需要 DOCA 应用程序也进行更新,以遵循新的或不同的驱动程序接口。

DOCA 与 CUDA 的相似之处

考虑 DOCA 包装的另一个有用方法是通过其与 CUDA 的相似性。 DOCA 运行时旨在以类似于 NVIDIA 显示驱动程序包为 CUDA 提供的方式包含所有驱动程序和库。

必须调用 CUDA 库进行 GPU 处理的应用程序只需要安装 NVIDIA 显示驱动程序包。同样, DOCA 应用程序只需要特定体系结构的运行时包。在这两种情况下,您都有一套附加的包和工具,用于将 GPU 或 DPU 功能和加速集成到应用程序中。

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.
图 2 . DOCA 与 CUDA 运行时和开发人员工具包堆栈.

DOCA 平台要求

另一个复杂的因素可能是在哪个平台上需要哪些 DOCA 组件。毕竟, DPU 运行自己的操作系统,但也将自己作为主机操作系统的外围设备。

DOCA 应用程序可以在 x86 主机上运行,也可以在 DPU ARM 内核上运行。 DOCA 应用程序在 x86 主机上运行,旨在通过 DOCA 库调用使用 DPU 加速功能。就打包而言,不同的 OSs 可能意味着所有这些组件的安装过程都不同,但幸运的是,这并不像管理员看起来那么混乱。

对于 NVIDIA BlueField DPU ,所有运行时和 SDK 组件都与操作系统映像捆绑在一起。可以在 DPU 上编写、构建和编译 DOCA 应用程序,以进行快速测试。所有的 DOCA 组件都在那里,但这并不总是一个理想的开发环境。 DPU 操作系统映像内置并包含 SDK 组件,这对每个人来说都很容易,因为它是包含运行时组件的超集。

对于 x86 主机来说,有更多的单个组件需要考虑。管理员在主机上需要的包同样主要取决于此主机是开发环境还是构建服务器,以及它的体系结构。或者主机将运行并执行调用 DOCA 库的应用程序?

对于注定要用作开发环境的 x86 主机,还有一个额外的考虑因素。为了开发将在 x86 CPU 上运行的 DOCA 应用程序,管理员需要主机包的本机 x86 DOCA SDK 。对于从 x86 主机开发 ARM 应用程序, NVIDIA 有一个预构建的 DOCA 开发容器,用于管理所有跨平台的复杂性。

对于仅使用 DOCA 运行或执行应用程序的 x86 主机来说,最简单的情况就是 DOCA 主机运行时包能够满足这一要求。它包含了使使用 DOCA 库编写的应用程序能够在目标机器上正确执行的最小组件集。图 3 显示了跨两个不同 OS 域的不同组件。

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.
图 3 。 DOCA 主机和 BlueField 之间的打包 DPU .

简化安装

既然我已经解释了所有这些打包是如何在 x86 主机上工作的,那么我应该指出,您可以通过一种简单的方法将正确的组件安装到正确的位置。 NVIDIA SDK Manager 减少了管理这种打包复杂性所需的时间和精力。 SDK Manager 不仅可以在主机上安装或修复 SDK 组件,还可以通过图形界面检测操作系统并将其安装到 BlueField DPU 上。小菜一碟!

SDK Manager provides a graphical wizard interface to ease installation of NVIDIA DOCA and the OS image on the DPU.
图 4 。 SDK Manager 图形界面,用于设置 DPU 和安装 DOCA 组件。

概括

希望这篇文章能帮助您理解并揭开 DOCA 及其包装的神秘面纱。要下载 DOCA 软件并开始使用,请参阅 NVIDIA DOCA 开发者页面。