Client Installation
Install the AODT C++ and Python client on your platform
The AODT client provides C++ and Python libraries for configuring and running simulations over gRPC. It supports remote data transfer over gRPC and optional CUDA IPC for fast local GPU transfers when the client and worker are colocated.
Transport mode
Transport mode defines how the client and worker exchange simulation data.
In Interactive Mode, channel impulse responses (CIRs) can be read directly from GPU memory through the client APIs. This requires the client and worker to run on the same machine with a shared GPU. AODT refers to this configuration as LOCAL_IPC.
In non-colocated deployments, CIRs are copied from GPU memory to host memory on the worker, then transferred to the client over gRPC. This configuration is referred to as REMOTE.
Platform support
CUDA is detected automatically at configure time. When CUDA is unavailable, the client still works over gRPC in REMOTE mode.
Prerequisites
Complete the Prerequisites for your deployment type before continuing:
- Colocated — Client and worker run on the same machine. Install GPU drivers, Docker, and the NVIDIA Container Toolkit as described on the prerequisites page.
- Non-colocated — Client and worker run on different machines. The client does not require a GPU. Install the OS-specific build dependencies listed in the platform sections below.
Clone the AODT repository
Clone AODT 1.5.0 from GitHub:
This creates an aodt_1.5.0 directory at the clone path. All commands in this documentation use aodt_1.5.0 as the package root, with component paths underneath it:
Note the full path to aodt_1.5.0 on your system — subsequent commands assume you are working from that package root or its subdirectories.
Choose an installation path
Use a source build if any of the following apply:
- You are installing the client natively on macOS or Windows
- Docker is not available on your system
- You are integrating AODT into your own application
- You need a development environment for modifying client code
If you need a source build, skip to Source build on Linux or the section for your platform.
Quickstart via container
On Linux or WSL2, the development container is the fastest way to build and run the client when Docker is available. The image includes all build and runtime dependencies.
No additional client setup is required after a successful container build.
Verify the container installation
The client cannot be exercised until the worker is running. After completing Worker Installation, follow Verify Installation — colocated container test.
Source build on Linux
Use this path to install the client directly on your system. It is the recommended approach for development workflows.
Install dependencies
From the client/ directory:
Optional: CUDA toolkit
CUDA is optional. When present, it enables CUDA IPC for colocated LOCAL_IPC transport. Without CUDA, the client remains fully usable over gRPC.
To enable CUDA for colocated deployments:
Verify with nvidia-smi and nvcc --version. See the CUDA compatibility guide for driver and toolkit version requirements.
Build
From the client/ directory:
The configure step prints a summary of detected features:
Use the Python client
You can run the Python bindings in two ways:
Option 1 — Without installing (development)
Option 2 — System-wide install
After installation, import dt_client and import _config work from any directory without setting PYTHONPATH.
Use the C++ client
From the client/ directory:
Replace localhost:50051 with the worker address for non-colocated deployments.
Verify the installation
The worker must be running before you test the client. Follow Verify Installation — colocated source build test.
Source build on WSL2
WSL2 follows the same build steps as Linux.
Install dependencies
From the client/ directory inside WSL2:
No WSL2-specific transport configuration is required beyond network reachability to the worker address.
Build and run
Source build on macOS
Install dependencies
Build and run
From the client/ directory:
macOS uses gRPC for request, control, and remote memory transfer. CUDA IPC and LOCAL_IPC mode are not supported.
Source build on Windows (MSVC)
Install dependencies
- Visual Studio 2022 with the “Desktop development with C++” workload, or Visual C++ Build Tools from visualstudio.microsoft.com/visual-cpp-build-tools
- CMake from cmake.org/download — select “Add CMake to system PATH” during installation
- Git from git-scm.com/download/win
Install vcpkg and C++ dependencies:
Set up Python. vcpkg installs its own Python — the built modules are only compatible with that Python:
Add vcpkg’s Python to your PATH:
Build and run
From the client/ directory:
Windows uses gRPC for request, control, and remote memory transfer. CUDA IPC and LOCAL_IPC mode are not supported.
Next steps
After the client is installed and verified:
- Complete Worker Installation if you have not already started the worker.
- Install the Viewer to visualize simulation results.
- Follow the Quickstart guide to run your first simulation.