Nvidia Inc. is positioning its open DOCA software framework as the fastest and easiest way to speed up the development and performance of data processing unit applications.
DOCA is a software development kit for Nvidia BlueField DPUs (pictured). For those not familiar with BlueField, it provides data center infrastructure-on-a-chip, optimized for high-performance enterprise and cloud computing. Because DOCA is tied to BlueField, there’s a misconception that it’s closed and proprietary.
The reality is that DOCA is built using an open-source foundation, which allows for flexibility and portability. Nvidia has always made much of its software open, and its strategy with DOCA is consistent with that. The company is a believer (as am I) that openness drives usage, which in turn creates opportunity. Nvidia’s commitment to being open is one of the reasons it has run away from the field in the area of accelerated computing.
There are three key aspects of DOCA that make it open:
- Specific open-source networking drivers, which developers can use in their software stack.
- DOCA FLOW, an API that provides a set of accelerated libraries for specific environments. DOCA FLOW runs on top of the Data Plane Development Kit, an open-source software managed by the Linux Foundation, and makes it easy to develop hardware-accelerated networking apps.
- Containerized services, which are binaries that anyone can develop on top of. A nondeveloper can use a container, drop it into the app and run it. The use of containers makes DOCA-based applications portable between different environments.
The accelerated libraries improve performance when using BlueField DPUs. Whenever a new BlueField DPU is introduced, typically every 18 months, the DOCA libraries are forward- and backward-compatible. So software developers don’t have to rewrite their stacks every time a new BlueField DPU comes out. Although developers can’t use DOCA to program another DPU, they can take their code, with minor rewrites, and apply it elsewhere using DOCA’s open foundation.
There is already some standardization at the driver level, but Nvidia has observed a trend where those who initially integrated with BlueField using drivers are migrating to DOCA for better performance. Most BlueField developers have programmed at the driver level in the past because the DOCA SDK has been available for only a short time. The first version shipped early last year. Now that DOCA is on version 1.3, developers can gradually transition to DOCA to enable better performance and faster application development.
Standardization is also taking place around tools for programming smart network interface cards or smartNICs, which are programmable hardware that offload processing tasks typically handled by a central processing unit. Nvidia’s most advanced smartNICs are powered by BlueField DPUs. Organizations are starting to think more about the APIs and what the management framework will look like for smartNICs going forward.
SmartNICs aren’t new, but the programmability of DPUs and the APIs – like DOCA – make them much more flexible than older generations. These standardized, cross-vendor APIs are not yet ready, but Nvidia is participating in those efforts.
The containerized services within DOCA offer a different type of openness to application development for DPUs. Although the services are not open source, they are very portable and easy to implement, so developers can quickly port applications written for other DPUs to run on Bluefield, or take BlueField-based applications written for one environment and port them to other environments. This simplified portability provides much of the benefits of an open API.
Over time, Nvidia hopes customers will be using DOCA libraries to get the enhanced performance that differentiates Nvidia from other hardware providers. Customers that want to get the best of BlueField can use the DOCA libraries or services. Those who want flexibility and portability can use the open drivers.
Besides leveraging an open platform, Nvidia is contributing to different open-source frameworks and consortiums such as the Open Programmable Infrastructure. Nvidia is also a major and frequent contributor of new open-source code to the Linux kernel in the areas of networking, artificial intelligence and compute acceleration.