NVIDIA DOCA 软件框架包括编程 NVIDIA BlueField 数据处理器 ( DPU )并提供一致的体验,无论开发环境如何。 NVIDIA 提供以下资源:
- 开发人员计划
- SDK 管理器支持
- 工具汇编:
- 编译器
- 基准测试
- API 参考和程序员指南
- 参考应用程序
- 使用案例
NVIDIA 通过为开发人员提供 DOCA SDK 和用于开箱即用部署的 DOCA 运行时软件来提供堆栈。
DOCA 驱动程序还是 DOCA 库?
DOCA 驱动程序和 DOCA 库是开发人员、 IT 安全和运营团队以及 IT 管理员的关键部分。它们用于为 DPU 开发和部署软件定义和硬件加速的应用程序。然而,我有时会收到关于正确使用的问题。
为了确保没有混淆,并确定哪种可能最适合您的开发需求,我写了这篇文章来讨论何时使用哪种。
DOCA drivers | DOCA libraries | |
Hardware-accelerated | Yes | Yes |
Code management | Fine-grained control | Implicit initialization and unified APIs |
Coding complexity | High complexity | Simplified, with programming guides |
License | Mostly open source | DOCA |
Multi-generation compatibility | Limited | Supported |
Per-use case logic | Developers’ responsibility | Built-in |
Reference applications | Partially available | Available for every library |
Performance | Optimized | Maximized |
Scale | Component dependent | Maximized |
表 1 比较了驱动程序和库,并强调了各自的优缺点。本质上, DOCA 驱动程序提供了更大的定制空间,而 DOCA 库的设计旨在以更低的编码复杂性提供最佳的每个用例性能和扩展。
DOCA 库
首先, DOCA 库是针对特定用例优化的高级抽象 API 。库可以通过更快的开发时间和上市时间来实现优异的性能。它们还包括各种指南和示例应用程序,这些应用程序在用于开发时比 DOCA 驱动程序的学习曲线更短。
NVIDIA 库已提前加速。它们使您能够快速构建各种应用程序,并显著提高性能,因为已经为指定用例创建和调整了逻辑。它们还确保了多代兼容性,这在使用 DOCA 驱动程序时是无法保证的。
这些库旨在解决特定的用例,如防火墙、网关或存储控制器。它们使用 PMD 和 DPDK ,并包含 DPDK 或驱动程序级别不存在的其他功能和逻辑。
例如,如果使用 RegEx 识别用于深度数据包检查( DPI )的复杂字符串模式, DOCA DPI 库包括预处理(数据包头解析)和后处理例程,以便更容易使用 RegEx 加速器对网络数据包执行操作。 DPDK RegEx API 不包含任何这些内容。 DOCA DPI 库 API 是抽象的,更易于开发数据包检查例程,因为不需要理解逻辑。
DOCA 库允许您选择具有内置硬件加速的首选 API 。 DOCA 1.3 的当前版本包括 120 多个 DOCA API :
这些服务可通过 NGC Catalog 获得,并可在几分钟内部署到 BlueField DPU 上。
这些库的价值是通过运行时环境、 DOCA 服务和一组扩展的文档来实现的。一般的图书馆用户不会开发应用程序,而是利用 NVIDIA 或第三方提供的现有应用程序和服务。
DOCA 服务是由多个项目组成的容器化驱动程序和库,可以作为服务运行以提供特定功能。每个服务都提供不同的功能,例如 DOCA 遥测 API ,它可以在几分钟内从 NGC 目录中提取。它提供了一种快速方便的方法来收集用户定义的数据并将其传输到 DOCA 遥测服务( DTS )。
此外, API 还提供了几个内置输出以方便用户,包括将数据直接保存到存储器、 NetFlow 、 Fluent 位转发和 Prometheus 端点。
这些库中的每一个都共享对象,并且除了它们各自使用 PMD 驱动程序之外,没有以任何方式绑定。类似地,每个都有一个公共基础设施,每个都有自己的 文档和程序员指南 。
DOCA 驱动程序和 DOCA SDK
虽然库消除了低级编程,但它们可能不支持您正在寻找的所有特性和功能,因此 NVIDIA 提供了 DOCA 驱动程序。 DOCA 驱动程序是基于开源的,如果您正在开发自己的解决方案或必须创建独特的解决方案,则可以提供更大的灵活性。
NVIDIA 驱动程序是为开发人员设计的,通过 DOCA SDK 提供。 SDK 包括创建和构建应用程序所需的所有组件,包括参考应用程序源、开发工具、文档和 NVIDIA SDK 管理器。 SDK 管理器支持快速部署开发环境,还可以将映像闪存并安装到本地 DPU 。
开发人员容器支持在任何地方开发 DOCA 加速的应用程序。您不必在 DPU 上的 Arm 处理器上执行此操作。在具有物理 DPU 的主机上,可以在开发人员容器中执行此操作,该容器模拟 Arm 处理器。 NVIDIA 提供了详细的文档、示例和 API 兼容性。
DOCA SDK 是利用 DOCA 库和驱动程序并创建独特的个性化软件以满足应用程序开发需求的最有效方法。
DOCA 运行时也可用于验证和测试应用程序。
DOCA 运行时
如果您尚未准备好或无法将应用程序移植到 Arm 体系结构, NVIDIA 将为 x86 提供 DOCA 运行时。在这种情况下, gRPC 客户端在 DPU 上运行,并与 x86 运行时建立通信通道。应用程序可以访问 DPU 运行时组件,您不必编译任何 Arm 代码。
软件定义、硬件加速的基础架构
DOCA 简化了 BlueField DPU 的编程和应用程序开发,并通过提供更高级别的抽象消除了障碍。通过提供运行时二进制文件和高级 API , DOCA 框架使您能够专注于应用程序代码,而不是学习。
您可以选择两种开发路线:通过库和服务或通过 SDK 和驱动程序。目前, DOCA 软件栈包括 120 多个 DOCA API ,全球 2500 多名 DOCA 开发人员正在使用这些 API 。它们可通过 NGC Catalog 获得。
如果您是 DOCA 的新手, NVIDIA 提供免费的、自定进度的课程, DPU 的 DOCA 简介 . 它涵盖了 DOCA 平台的要点。
我希望我已经澄清了所有困惑,并鼓励您加入 DOCA 开发人员计划 today.
有关更多信息,请参阅以下参考资料:
- 文件和指南: https://docs.nvidia.com/doca/sdk
- 揭开 NVIDIA DOCA 的神秘面纱
- 在 NVIDIA BlueField DPU 上使用 DOCA 加速解决方案开发
- 使用 NVIDIA BlueField DPU 和 NVIDIA DOCA 库开发应用程序