This recipe helps you build DPDK with Intel oneAPI.
Content expert:
Alina Shadrina
Prerequisites
- Install Intel® oneAPI Base Toolkit which contains Intel oneAPI DPC++/C++ Compiler. Please, refer to the Get Started Guide in case of any questions. To check for supported Linux distributions and hardware requirements, please refer Intel® oneAPI DPC++/C++ Compiler System Requirements.
- DPDK Framework is based on meson* system which can be installed with:
python3 -m pip install meson
Make sure you are using meson >= 0.64 and newer because the support for Intel LLVM Compiler is added starting 0.64 release. Please, refer to Meson Quick Guide for more information about system requirements and prerequisites.
- Install Ninja build system:
python3 -m pip install ninja
Building DPDK with Intel oneAPI DPC++/C++ Compiler
- Get the latest version of DPDK:
git clone https://github.com/DPDK/dpdk.git
Or download one of the official releases.
- Navigate to DPDK project folder.
- If you installed meson, Ninja, and other dependencies using pip locally, update PATH with your .local/bin, i.e.:
export PATH=$PATH:/home/user/.local/bin
- Set up Intel oneAPI environment variables
- For non-default installation:
source $ONEAPI_ROOT/setvars.sh
-
- For default installation:
source /opt/intel/oneapi/setvars.sh
- Run meson with Intel oneAPI DPC++/C++ Compiler to configure the project:
CC=icx CXX=icpx FC=ifx meson -Dexamples=all build
As a result, the end of the build log will looks as follows:
The Meson build system
Version: 1.0.0
Source dir: /home/dpdk
Build dir: /home/dpdk/build
Build type: native build
Program cat found: YES (/usr/bin/cat)
Project name: DPDK
Project version: 23.03.0-rc0
C compiler for the host machine: icx (intel-llvm 2023.0.0 "Intel(R) oneAPI DPC++/C++ Compiler 2023.0.0 (2023.0.0.20221201)")
C linker for the host machine: icx ld.bfd 2.34
…..
apps:
dumpcap: missing dependency, "libpcap"
libs:
kni: explicitly disabled via build config (deprecated lib)
flow_classify: explicitly disabled via build config (deprecated lib)
drivers:
common/mvep: missing dependency, "libmusdk"
net/af_xdp: missing dependency, "libxdp >=1.2.2" and "libbpf"
net/ipn3ke: missing dependency, "libfdt"
net/kni: missing internal dependency, "kni" (deprecated lib)
net/mvneta: missing dependency, "libmusdk"
net/mvpp2: missing dependency, "libmusdk"
net/nfb: missing dependency, "libnfb"
net/pcap: missing dependency, "libpcap"
raw/ifpga: missing dependency, "libfdt"
crypto/armv8: missing dependency, "libAArch64crypto"
crypto/ipsec_mb: missing dependency, "libIPSec_MB"
crypto/mvsam: missing dependency, "libmusdk"
crypto/uadk: missing dependency, "libwd"
compress/isal: missing dependency, "libisal"
gpu/cuda: missing dependency, "cuda.h"
Build targets in project: 776
DPDK 23.03.0-rc0
User defined options
examples: all
Found ninja-1.10.0 at /usr/bin/ninja
- Run Ninja to build executables:
ninja -C build
- Make sure DPDK is built with Intel oneAPI DPC++/C++ Compiler:
$ readelf -p .comment build/app/test/dpdk-test String dump of section '.comment': [ 0] GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 [ 2b] Intel(R) oneAPI DPC++/C++ Compiler 2023.0.0 (2023.0.0.20221201) [ 6b] Intel(R) oneAPI DPC++/C++ Compiler 2023.0.0 (2023.0.0.20221116)
Troubleshooting
If you observe multiple errors:
./rte_build_config.h:422:28: warning: ISO C99 requires whitespace after the macro name [-Wc99-extensions] #define RTE_TOOLCHAIN_INTEL-LLVM 1
Then abort compilation, open build/rte_build_config.h and replace :
#define RTE_TOOLCHAIN_INTEL-LLVM 1
With
#define RTE_TOOLCHAIN_INTEL_LLVM 1
And then rerun Ninja.