#################################### Installing the UPMEM DPU toolchain #################################### The UPMEM DPU toolchain has versions qualified on Linux for the following distributions: +-------------------------+-------------------------+-------------------------+ | Operating system | V1A DPUs | V1B DPUs | +=========================+=========================+=========================+ | Debian 10 | Supported | Supported | +-------------------------+-------------------------+-------------------------+ | Ubuntu Server 20.04 LTS | Supported | Not Supported | +-------------------------+-------------------------+-------------------------+ | Ubuntu Server 22.04 LTS | Supported | Supported | +-------------------------+-------------------------+-------------------------+ | Rocky 8 | Supported | Supported | +-------------------------+-------------------------+-------------------------+ Please note that the toolchain only supports the Server editions of the Ubuntu distribution. Notably, it doesn't support the Desktop editions. ************** Dependencies ************** Python ====== The debugging tools use Python-based helpers and scripts. Ensure you have Python 3.x installed: .. tabs:: .. code-tab:: console Debian/Ubuntu $ sudo apt install python3 .. code-tab:: console Rocky $ sudo yum install python3 *********************** Installation packages *********************** You can install the UPMEM DPU toolchain in the following ways: Recommended: Installation from the PPA ====================================== For straightforward installation and automatic updates, install the UPMEM DPU toolchain from the UPMEM PPA repository for supported Debian and Ubuntu distributions. #. Add the UPMEM public key to your system: .. code:: console $ wget -qO - https://upmem-sdk.s3.amazonaws.com/upmem.gpg.key | sudo apt-key add - #. Add the UPMEM PPA repository to your system: .. code:: console $ sudo apt install software-properties-common $ sudo add-apt-repository -y "deb http://upmem-sdk.s3.amazonaws.com/$(lsb_release -is | tr '[:upper:]' '[:lower:]')/$(lsb_release -cs) $(lsb_release -cs) main" #. Update the package list: .. code:: console $ sudo apt update #. Install the UPMEM DPU toolchain: .. code:: console $ sudo apt install upmem-firmware $ sudo apt install upmem upmem-driver-dkms Installation from the Debian/RPM package ======================================== Download the Debian or RPM packages `from the UPMEM website `_ and install them and their dependencies using the following commands: .. tabs:: .. code-tab:: console Debian/Ubuntu $ sudo apt install ./upmem-firmware__amd64.deb # Only needed for V1B DIMMs $ sudo apt install ./upmem-driver-dkms__amd64.deb # For machines with real hardware $ sudo apt install ./upmem__amd64.deb .. code-tab:: console Rocky $ sudo dnf install epel-release $ sudo dnf install --enablerepo powertools upmem-firmware--1.x86_64.rpm # Only needed for V1B DIMMs $ sudo dnf install --enablerepo powertools upmem-driver-dkms--1.noarch.rpm # For machines with real hardware $ sudo dnf install --enablerepo powertools upmem--1.x86_64.rpm Installation from tar.gz binary archive ======================================= Users can install the SDK from a tar.gz binary archive `listed as "tarball" in the download page. `_ You want to use this method when: - you don't have administrative rights on the system. - you want to install more than one version of the SDK on the same machine. - you want to install the SDK in a specific directory. **Note**: on a system with UPMEM DIMMs, you still need to install the firmware and the driver using the Debian/RPM package to operate the DIMMs. The SDK and driver versions must match. The binary archive contains a script named ``upmem_env.sh`` to set the environment variables needed to use the SDK. To set the environment variables, source the script: #. Untar the binary package, for instance into the ``$HOME/upmem-sdk`` directory #. Source the script ``$HOME/upmem-sdk/upmem_env.sh`` to set environment variables to appropriate values. Dependencies ------------ Unlike the Debian package, the tar.gz binary archive doesn't manage dependencies automatically. Depending on your usage of the SDK, you'll need some or all the following dependencies: .. code:: text binutils libc6-dev libffi-dev libnuma1 libstdc++6 libudev1 libxml2 pkg-config python3 python3-dev python3-psutil python3-pygments python3-yaml python3-six python3-serial python3-babeltrace ********************** Functional simulator ********************** The UPMEM DPU toolchain integrates a functional simulator. Internal functions of the toolchain are automatically mapped to the simulator at runtime if the program can't find UPMEM DIMMs in the system. This means that users don't need to do anything specific to use the simulator. A program running on a machine with no UPMEM DIMMs automatically falls back on the simulator. If the system contains real hardware, the code executes on it. Users can force the use of the simulator even with DIMMs present by sourcing the ``upmem_env.sh`` script with the ``simulator`` option: .. code:: console $ source $HOME/upmem-sdk/upmem_env.sh simulator The simulator allocates virtual ranks made of a single chip, and a chip provides one DPU by default. It can allocate up to 64 chips for a total of 64 DPUs. Please note that the simulator is functional and not cycle accurate. It can only provide an accurate number of instructions. Don't rely on the provided number of cycles.