Files
openairinterface5g/doc/LDPC_T2_OFFLOAD_SETUP.md
T

5.4 KiB

OAI T1/T2 LDPC offload

Table of Contents

[[TOC]]

This documentation aims to provide a tutorial for AMD Xilinx T2 Telco card integration into OAI and its usage.

Requirements

  • bitstream image and PMD driver for the T2 card provided by AccelerComm
  • DPDK 20.11.7 with patch from Accelercomm (also tested with DPDK 20.11.3)
  • tested on RHEL7.9, RHEL9.2, Ubuntu 20.04, Ubuntu 22.04

DPDK setup

DPDK installation

# Get DPDK source code
git clone https://github.com/DPDK/dpdk-stable.git ~/dpdk-stable
cd ~/dpdk-stable
git checkout v20.11.7
git apply ~/ACL_BBDEV_DPDK20.11.3_xxx.patch

Replace ~/ACL_BBDEV_DPDK20.11.3_xxx.patch by patch file provided by Accelercomm.

cd ~/dpdk-stable
meson setup build
# meson setup --prefix=/opt/dpdk-t2 build for installation with non-default installation prefix
cd build
ninja
sudo ninja install
sudo ldconfig

DPDK configuration

  • load required kernel module
sudo modprobe igb_uio
sudo insmod ~/dpdk-stable/kernel/linux/igb_uio/igb_uio.ko
  • check presence of the card and its PCI addres on the host machine
lspci | grep "Xilinx"
  • bind the card with igb_uio driver
sudo python3 ~/dpdk-stable/usertools/dpdk-devbind.py -b igb_uio 41:00.0

Replace PCI address of the card 41:00.0 by address detected by lspci | grep "Xilinx" command

  • hugepages setup (10 x 1GB hugepages)
sudo python3 ~/dpdk-stable/usertools/dpdk-hugepages.py -p 1G --setup 10G`

Note: device binding and hugepages setup has to be done after every reboot of the host machine

Modifications in the OAI code

PMD path specification

Path to the PMD for operating the card is specified in CMakeLists.txt file in LDPC OFFLOAD library section. Modify following line based on the location of the PMD on your system. By deafult, path to the PMD is set to /opt/dpdk-t2/lib/x86_64-linux-gnu/.

find_library(PMD_T2 NAMES rte_baseband_accl_ldpc HINTS "/opt/dpdk-t2/lib/x86_64-linux-gnu/")

T2 card DPDK initialization

Following lines in openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c file has to be modified based on your system requirements. By default, PCI address of the T2 card is set to 41:00.0 and cores 14 and 15 are assigned to the DPDK.

 char *dpdk_dev = "41:00.0"; //PCI address of the card
 char *argv_re[] = {"bbdev", "-a", dpdk_dev, "-l", "14-15", "--file-prefix=b6", "--"};

For the DPDK EAL initialization, device is specified by -a option and list of cores to run the DPDK application on is selected by -l option. PCI adress of the T2 card can be detected by lspci | grep "Xilinx" command.

OAI Build

OTA deployment is precisely described in the following tutorial:

# Get openairinterface5g source code
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git ~/openairinterface5g
cd ~/openairinterface5g
git checkout develop

# Install OAI dependencies
cd ~/openairinterface5g/cmake_targets
./build_oai -I

# Build OAI gNB
cd ~/openairinterface5g
source oaienv
cd cmake_targets
./build_oai -w USRP --ninja --gNB -P -C --build-lib "ldpc_t2"

Shared object file libldpc_t2.so is created during the compilation. This object is conditionally compiled. Selection of the library to compile is done using --build-lib ldpc_t2.

Required poll mode driver has to be present on the host machine and required DPDK version has to be installed on the host, prior to the build of OAI

5G PHY simulators

nr_ulsim test

Offload of the channel decoding to the T2 card is in nr_ulsim specified by -o option. Example command for running nr_ulsim with LDPC decoding offload to the T2 card:

cd ~/openairinterface5g
source oaienv
cd cmake_targets/ran_build/build
sudo ./nr_ulsim -n100 -s20 -m20 -r273 -R273 -o

nr_dlsim test

Offload of the channel encoding to the AMD Xilinx T2 card is in nr_dlsim specified by -c option. Example command for running nr_dlsim with LDPC encoding offload to the T2 card:

cd ~/openairinterface5g
source oaienv
cd cmake_targets/ran_build/build
sudo ./nr_dlsim -n300 -s30 -R 106 -e 27 -c

OTA test

Offload of the channel encoding and decoding to the AMD Xilinx T2 card is enabled by --ldpc-offload-enable 1 option.

Run OAI gNB with USRP B210

cd ~/openairinterface5g
source oaienv
cd cmake_targets/ran_build/build
sudo ./nr-softmodem --sa -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --ldpc-offload-enable 1

Limitations

AMD Xilinx T2 card

  • offload of the LDPC encoding implemented for MCS > 2, OAI CPU encoder is used for MCS =< 2
  • functionality of the LDPC encoding and decoding offload verified in OTA SISO setup with USRP N310 and Quectel RM500Q, blocking of the card reported for MIMO setup (2 layers)

Note: AMD Xilinx T1 Telco card is not supported anymore.