Note: This project is under active development. Documentation is being continuously updated.
Axio BF3 Express is a high-performance execution platform for NVIDIA BlueField 3 DPUs. It enables users to run application DAGs with pipeline parallelism to achieve optimal throughput (up to 400Gbps in ideal conditions). The platform provides comprehensive programmability across the entire stack, including:
- Reconfigurable match-action engines
- Data path accelerators (DPAs)
- On-board SoC
- ASIC-based accelerators
Axio BF3 Express uses a kernel and wrapper programming model, similar to GPU programming. The model consists of two main components:
- Kernels: Function binaries that correspond to application DAG nodes
- Specification File: Defines:
- Target DPU component for each kernel
- Inter-function dependencies (representing DAG edges)
The platform encapsulates each DAG node into a wrapper, which manages the corresponding kernel binary for parallel execution.
- Intel® Xeon® Gold 6530 Processor
- Two-port 400GbE BlueField 3, PCIe 5.0 x 16
- Host Memory: 512GB DDR5 3200MT/s
- DPU Memory: 32GB DDR5 5200MT/s
- Ubuntu 22.04
- Linux kernel 5.15.x
- DPDK 22.11.x
- NVIDIA DOCA 2.9.2
Axio BF3 Express depends on NVIDIA DOCA, open vswitch, and rdma-core. Please make sure DOCA has been installed, while others can be installed by running the following commands:
# Clone the repository with submodules
git clone --recurse-submodules https://github.com/axio-project/axio-bf3-express.git
# Install required packages
sudo apt-get install binutils-dev meson nlohmann-json3-dev libyara-dev- Build the Axio BF3 Express library (includes kernel wrapper compilation):
# Clean build
bash build.sh -t lib -e rdma_simple -c
# Build library
bash build.sh -t lib -e rdma_simple- Build the runtime environment:
# Clean build
bash build.sh -t runtime -c
# Build runtime
bash build.sh -t runtimeAxio BF3 Express handles RDMA traffic (RC mode) and is compatible with any RDMA application. The following example uses Axio-emulator to generate RDMA traffic. For more details about Axio-emulator, please refer to the Axio-emulator documentation.
Remote Host (Axio-emulator) -> Local BF3 (Axio BF3 Express) -> Local Host (Axio-emulator)
- On Local Host:
sudo ./build/axio > tmp/temp.log- On Local BF3 SoC:
sudo ./runtime/build/runtime/nicc_runtime- On Remote Host:
sudo ./build/axio > tmp/temp.logThe offloaded DAG in the RDMA simple example follows this workflow:
- DPA core receives RDMA requests and stores them in DPA memory
- Requests are sent to a SoC core for processing
- SoC core redirects requests to local host through local RDMA
- Local Axio-emulator echoes back requests through: local BF3 SoC -> local BF3 DPA -> remote host