Skip to main content

Installation

To download and build OCUDU:

  1. Install dependencies
  2. Install RF driver (only required for Split 8 deployments)
  3. Clone the repository
  4. Build the codebase

note

OCUDU requires a Linux-based OS with realtime kernel support.

Coming from srsRAN Project?

Complete this installation first, then follow the Migration Guide to port your existing srsRAN Project modifications to OCUDU.

Build Tools and Dependencies​

OCUDU uses CMake and C++17. Recommended build tools:

OCUDU requires these dependencies:

Install build tools and dependencies:

sudo apt-get install cmake make gcc g++ pkg-config libmbedtls-dev libsctp-dev libyaml-cpp-dev libgtest-dev

These packages are optional but recommended:

  • Ccache: This will help to speed up re-compilation
  • backward-cpp: This library helps to generate more informative backtraces in the stdout if an error occurs during runtime

FFT Library​

OCUDU requires one of the following libraries for FFT calculation:

libfftw​

sudo apt-get install libfftw3-dev

oneMKL​

sudo apt update
sudo apt install -y gpg-agent wget
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
sudo apt update
sudo apt install intel-oneapi-mkl-devel libomp-dev

AOCL-FFTZ​

AOCL_FFTZ_VERSION="5.2"
sudo apt update && sudo apt install -y wget autoconf automake make libtool
cd /tmp
wget --no-check-certificate -O - "https://github.com/amd/aocl-fftz/archive/refs/tags/${AOCL_FFTZ_VERSION}.tar.gz" | tar -xz
cd aocl-fftz-${AOCL_FFTZ_VERSION}
cmake -B buildFFTZ
cmake --build buildFFTZ --target install -j"${nproc}"

ARMPL (for ARM architectures)​

sudo apt update && sudo apt install -y environment-modules wget
cd /tmp
wget --no-check-certificate -O - https://developer.arm.com/-/cdn-downloads/permalink/Arm-Performance-Libraries/Version_24.10/arm-performance-libraries_24.10_deb_gcc.tar | tar -x
cd arm-performance-libraries_24.10_deb/
./arm-performance-libraries_24.10_deb.sh --accept
cd ~ && rm -Rf /tmp/arm-performance-libraries_24.10_deb
source /usr/share/modules/init/bash
export MODULEPATH=$MODULEPATH:/opt/arm/modulefiles
module avail
module load armpl/24.10.0_gcc

Eigen​

note

The Eigen library is only required if you plan to enable the DOA estimation feature, disabled by default. If DOA is not needed, you may skip this step.

OCUDU relies on the Eigen library for linear algebra computations in the DOA (direction of arrival) estimator. The library is available from most distro repositories.

sudo apt update && sudo apt install libeigen3-dev

RF-drivers​

note

UHD and/or ZMQ are only required for Split 8 deployments, if you are planning on using a Split 7.2 deployment you may skip this step.

OCUDU uses RF drivers to support different radio types. Currently, only UHD and ZMQ are supported:


Clone and Build​

OCUDU supports several build configurations, controlled via CMake flags. The tabs below cover the available options.

Clone the OCUDU repository:

git clone https://gitlab.com/ocudu/ocudu.git

Then build the code-base:

cd ocudu
mkdir build
cd build
cmake ../
make -j $(nproc)
make test -j $(nproc)

The binary is at ocudu/build/apps/gnb/. To install system-wide:

sudo make install

See Running OCUDU for configuration and next steps.


Vector Tests​

Most PHY components, as well as a few components from other layers, are tested by injecting vectors of input data and comparing the results with vectors of expected output data. Since data vectors can be quite heavy, vector tests are not included in the main repository and, instead, are offered as an external plugin that is part of the OCUDU MATLAB companion repository. All the details for installing and running the vector tests are explained in our MATLAB integration tutorial.