Post

Sionna Setup Guide: WSL2, Ubuntu 24.04, and CUDA 13.0

A practical setup guide for running NVIDIA Sionna PHY, SYS, and RT on Windows through WSL2 with Ubuntu 24.04 and CUDA 13.0.

A practical setup guide for running NVIDIA Sionna PHY / SYS / RT on Windows through WSL2.
This guide includes notes from an actual installation, including RTX 50-series compatibility warnings and large PyTorch package download timeouts.

Tested environment

  • Windows 11, NVIDIA GeForce RTX 5060 Laptop GPU (8 GB)
  • WSL2 Ubuntu 24.04, Python 3.12, CUDA 13.0
  • Sionna (PHY + SYS + RT)

Table of Contents

  1. Choosing the Environment: WSL2 vs Dual Boot
  2. Install WSL2 + Ubuntu 24.04
  3. Install NVIDIA Driver + CUDA 13.0
  4. Set Up a Python Virtual Environment
  5. Install PyTorch + Sionna
  6. Set Up a VS Code Workspace
  7. Verify the Installation
  8. Daily Startup Routine

1. Choosing the Environment: WSL2 vs Dual Boot

  WSL2 (Recommended) Dual Boot
Setup difficulty Low, usually under 1 hour Higher, usually 2-3 hours with partitioning
GPU performance Around 5-10% overhead Native maximum performance
CUDA support Officially supported through WSL-CUDA Fully supported
VS Code integration Excellent with Remote-WSL Requires local Linux setup
Recommended for Learning and development Large-scale RT simulation optimization

Conclusion: WSL2 is enough for learning and development.
Sionna RT can run on WSL2 + CUDA, and it can also run without a GPU by using the CPU LLVM backend.


2. Install WSL2 + Ubuntu 24.04

Open PowerShell as Administrator and run:

wsl --install -d Ubuntu-24.04

After installation, reboot the PC, launch “Ubuntu 24.04” from the Start menu, and create a username and password.

The password field does not show any characters while typing. This is normal.

Update packages and install the basic tools:

sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-venv python3-pip git curl build-essential

Note: Ubuntu 24.04 uses Python 3.12 by default. If you try to install python3.11, you may see:

E: Unable to locate package python3.11

Installing python3 gives you Python 3.12, which satisfies Sionna’s Python requirement of 3.11 or newer.


3. Install NVIDIA Driver + CUDA 13.0

3-1. Install the NVIDIA Driver on Windows

When using GPU acceleration inside WSL2, install the NVIDIA driver on Windows only.
Do not install a separate NVIDIA driver inside Ubuntu running under WSL.

Windows (NVIDIA driver installed) yes
    -> WSL-CUDA bridge handles GPU access automatically
WSL Ubuntu (no separate driver, CUDA toolkit only) yes

Installing NVIDIA App is a convenient way to keep the Windows driver up to date.

3-2. Install CUDA Toolkit 13.0 in Ubuntu

Important for RTX 50-series users:
GPUs such as the RTX 5060 use NVIDIA’s Blackwell architecture and have Compute Capability 12.0. To use this hardware natively instead of falling back to compatibility behavior, CUDA 13.0 or newer is recommended. If an older CUDA 12.x toolkit is already installed, clean up the old packages and folders first to reduce conflicts.

# Remove older CUDA packages and leftover folders
sudo apt-get purge "cuda*" "libcudnn*" "libnccl*"
sudo rm -rf /usr/local/cuda-12.6
sudo rm -rf /usr/local/cuda
sudo apt-get autoremove
sudo apt-get autoclean

# Download and register the NVIDIA package repository key
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb

# Register the key so apt trusts the NVIDIA repository
sudo dpkg -i cuda-keyring_1.1-1_all.deb

# Refresh package lists
sudo apt update

# Install CUDA 13.0 toolkit
sudo apt install -y cuda-toolkit-13-0

Note: Installing cuda-toolkit-12-4 on Ubuntu 24.04 may fail with:

nsight-systems-2023.4.4 : Depends: libtinfo5 but it is not installable

Ubuntu 24.04 uses libtinfo6, and libtinfo5 is no longer available by default. For RTX 50-series systems, it is better to move directly to a CUDA 13.0 setup.

3-3. Register PATH and Library Paths

Use the generic CUDA symlink path (/usr/local/cuda) instead of hardcoding a specific version folder such as /usr/local/cuda-13.0. This makes future CUDA version switching easier.

# Add nvcc to PATH
echo 'export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}' >> ~/.bashrc

# Add CUDA shared libraries to the runtime library path
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc

# Apply changes to the current terminal session
source ~/.bashrc

~/.bashrc is loaded automatically when a new terminal starts.
Without source ~/.bashrc, the new environment variables apply only after opening a new terminal.

Ubuntu alternatives note:
Running ls -l /usr/local/cuda may show a chain through /etc/alternatives/cuda and eventually point to /usr/local/cuda-13.0. This is a normal Ubuntu alternatives structure for switching between installed versions, so you do not need to modify it manually.

3-4. Verify the CUDA Installation

nvidia-smi     # Check GPU visibility and driver version
nvcc --version # Check that the CUDA compiler reports release 13.0

The CUDA Version shown by nvidia-smi is the maximum CUDA version supported by the Windows driver.
It does not have to exactly match the installed toolkit version, such as CUDA 13.0.


4. Set Up a Python Virtual Environment

# Create a workspace directory
mkdir ~/sionna-workspace && cd ~/sionna-workspace

# Create an isolated Python environment in .venv
python3 -m venv .venv

# Activate the virtual environment
source .venv/bin/activate

After activation, your shell prompt should include (.venv).

Why use a virtual environment?
It isolates Python packages from the system Python installation. This makes it easier to manage different Sionna versions or experiments independently.

Why name it .venv?
Directories starting with . are hidden by default, and tools such as VS Code usually recognize .venv automatically.


5. Install PyTorch + Sionna

Run this section while the virtual environment is active.

5-1. Install PyTorch (CUDA 13.0 / cu130)

For RTX 50-series GPUs, use the cu130 PyTorch index so the installed PyTorch build matches the CUDA 13.0 stack.

Troubleshooting: ReadTimeoutError during installation
Large dependency packages such as nvidia-cusparse-cu* can be several hundred MB. On slower or unstable networks, pip may time out while downloading them. Adding --default-timeout=1000 gives pip more time to finish the download.

# Remove old or incompatible PyTorch packages first, if present
pip uninstall -y torch torchvision torchaudio

# Install PyTorch for CUDA 13.0
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130 --default-timeout=1000

5-2. Verify GPU Detection and Native Compatibility

After installation, run the following command and check that the GPU is detected without compatibility warnings:

python3 -c "import torch; print(f'Device: {torch.cuda.get_device_name(0)}'); print(f'CC: {torch.cuda.get_device_capability(0)}'); print(f'Is Compatible: {torch.cuda.is_available()}')"

Expected output example:

Device: NVIDIA GeForce RTX 5060 Laptop GPU
CC: (12, 0)
Is Compatible: True

If warnings such as sm_120 is not compatible are gone, the native GPU acceleration environment is set up correctly.

CPU-only Setup

If you only want CPU execution without GPU acceleration, install the standard PyPI build:

pip install torch torchvision torchaudio

5-3. Install Sionna

pip install sionna

When running pip install sionna, packages required for Sionna RT, such as drjit and mitsuba, are installed automatically.
If you later run pip install drjit mitsuba, seeing Requirement already satisfied is normal.

Install the RT CPU Backend (LLVM)

Sionna RT can use LLVM to run ray-tracing operations on CPU when no GPU backend is available.

sudo apt install -y llvm-15

What LLVM does:
drjit uses LLVM as the CPU backend when compiling code at runtime. If a CUDA-capable GPU is available, the CUDA backend is selected automatically, while LLVM remains useful as a fallback.

Install JupyterLab

pip install jupyterlab

Start JupyterLab:

jupyter lab --no-browser

Copy the printed http://localhost:8888/... URL and open it in a Windows browser.


6. Set Up a VS Code Workspace

Install VS Code + Remote WSL

  1. Install VS Code from code.visualstudio.com. During installation, make sure “Add to PATH” is enabled.
  2. Install these extensions:
    • WSL (ms-vscode-remote.remote-wsl)
    • Python (ms-python.python)
    • Jupyter (ms-toolsai.jupyter)

Open VS Code from WSL

code ~/sionna-workspace/sionna-workspace.code-workspace

On the first launch, VS Code Server is installed automatically inside WSL. If you are already inside the workspace directory, you can also run code sionna-workspace.code-workspace.

If the code command is not found, run wsl --shutdown from PowerShell and restart Ubuntu.

Create a Workspace File

cat > ~/sionna-workspace/sionna-workspace.code-workspace << 'EOF'
{
  "folders": [{ "path": "." }],
  "settings": {
    "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
    "python.terminal.activateEnvironment": true,
    "jupyter.notebookFileRoot": "${workspaceFolder}"
  }
}
EOF

When this workspace file is opened, VS Code automatically uses the ~/sionna-workspace/.venv/bin/python interpreter and sets the Jupyter notebook root to the workspace folder.


7. Verify the Installation

Clone the Official Example Notebooks

cd ~/sionna-workspace
git clone --recursive https://github.com/NVlabs/sionna
cd sionna/notebooks

Suggested Verification Order

Notebook What to check
Part1_Sionna_PHY.ipynb Basic PHY channel simulation
Part2_Sionna_SYS.ipynb Link-level simulation
Ray_Tracing_Introduction.ipynb RT scene rendering and channel generation

RT notebooks may take several minutes on the first run while scenes are compiled. This is normal.

Check the Sionna Version

python -c "import sionna; print(sionna.__version__)"

8. Daily Startup Routine

cd ~/sionna-workspace
source .venv/bin/activate

# For notebook work
jupyter lab --no-browser

# For VS Code work
code .

References

This post is licensed under CC BY 4.0 by the author.

Trending Tags