Skip to main content

cu3GPPChan Python Bindings

Python interface to the GPU-accelerated cu3gppchan C++/CUDA library via nanobind.

Prerequisites

Component Version
Python 3.10+
CUDA Toolkit 12.x+
GPU SM 8.0+ (Ampere / Hopper)
numpy any
h5py any
pyyaml any
cupy (optional) cupy-cuda13x — required for StatisticalChannel and FadingChannel

The wheel build invokes the repo CMake project and packages both _cu3gppchan*.so and libchanModels.so into the wheel. The target machine must still provide the CUDA driver/runtime and system libraries such as HDF5.

Build a Wheel

# From the repository root:
bash scripts/build_wheel.sh --clean

# Install the generated wheel
python3 -m pip install dist/cu3gppchan-*.whl

# Verify import and basic config construction
python3 scripts/use_python_wheel.py

Set CUDA architectures with:

CU3GPPCHAN_CUDA_ARCHS="80;90" bash scripts/build_wheel.sh --clean

For editable development:

bash scripts/build.sh --python
python3 -m pip install -e python/

Verify:

import cu3gppchan
print(cu3gppchan.__version__)  # 0.1.1

Package Structure

python/
  pyproject.toml
  src/cu3gppchan/
    __init__.py              Public API re-exports
    _cu3gppchan*.so          nanobind C++ extension (built by CMake)
    libchanModels.so         bundled runtime library used by the extension
    statistical_channel.py   StatisticalChannel — system-level SLS wrapper
    fading_channel.py        FadingChannel — link-level TDL/CDL wrapper
    channel_config.py        TdlChannelConfig / CdlChannelConfig
    channel_api_ref.py       3GPP TR 38.901 reference data
    cuda_utils.py            CUDA stream and array helpers

API Overview

Low-Level Bindings (no CuPy needed)

These are direct nanobind wrappers of C++ classes. Use when you manage GPU memory yourself or only need configuration objects.

Class Description
SimConfig Simulation parameters (frequency, bandwidth, run mode)
SystemLevelConfig Scenario, topology (sites, sectors, UTs)
LinkLevelConfig Fading type, delay profile, mobility
ExternalConfig External cell/UT/antenna configuration
TdlConfig / TdlChan TDL channel config and engine
CdlConfig / CdlChan CDL channel config and engine
StatisChanModel System-level stochastic channel engine
GauNoiseAdder AWGN noise on GPU
OfdmModulate / OfdmDeModulate OFDM mod/demod
Scenario Enum: UMa, UMi, RMa, etc.

High-Level Wrappers (require CuPy)

These provide a Pythonic interface with CuPy array I/O and automatic GPU memory management.

StatisticalChannel — System-Level Channel

from cu3gppchan import (
    StatisticalChannel, SimConfig, SystemLevelConfig,
    LinkLevelConfig, ExternalConfig, Scenario,
)

sim_cfg = SimConfig(center_freq_hz=3.5e9, bandwidth_hz=100e6, run_mode=1)
sys_cfg = SystemLevelConfig(scenario=Scenario.UMa, n_site=1, n_ut=10)
link_cfg = LinkLevelConfig(fast_fading_type=2)  # CDL
ext_cfg = ExternalConfig()

chan = StatisticalChannel(sim_cfg, sys_cfg, link_cfg, ext_cfg)

# Run one TTI
chan.run(ref_time=0.0)

FadingChannel — Link-Level TDL / CDL

from cu3gppchan import FadingChannel, TdlChannelConfig

config = TdlChannelConfig(
    n_cell=1, n_ue=1,
    n_bs_ant=4, n_ue_ant=4,
    delay_profile='A',
    delay_spread_ns=30,
    max_doppler_hz=5,
    sc_spacing_hz=30e3,
)

chan = FadingChannel(config)
rx_signal = chan.run(tx_signal, ref_time=0.0, snr_db=20.0)

Configuration Classes

Class Description
TdlChannelConfig TDL channel parameters (profiles A–E, delay spread, Doppler)
CdlChannelConfig CDL channel parameters (antenna arrays, spatial correlation)
CellParam Per-cell parameters (position, antenna panel)
UtParamCfg Per-UT parameters (position, velocity, type)
AntPanelConfig Antenna panel geometry [M_g, N_g, M, N, P] per TR 38.901

Enums

Enum Values
Scenario UMa, UMi, RMa, InH, InF
SensingTargetType ISAC target types
UeType UE mobility types

Running Tests

# Static analysis (flake8 / pylint / mypy)
bash tests/run_static_tests.sh

# Python unit tests
bash tests/run_unit_tests.sh --python_only

Dependencies

Required (installed automatically by pip install):

  • numpy
  • h5py
  • pyyaml

Optional:

  • cupy-cuda13x — for StatisticalChannel, FadingChannel, and GPU array wrappers

License

Apache-2.0. See file headers for details.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cu3gppchan-0.1.1-cp314-cp314t-manylinux_2_34_x86_64.whl (57.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.34+ x86-64

cu3gppchan-0.1.1-cp314-cp314-manylinux_2_34_x86_64.whl (57.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

cu3gppchan-0.1.1-cp313-cp313-manylinux_2_34_x86_64.whl (57.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

cu3gppchan-0.1.1-cp312-cp312-manylinux_2_34_x86_64.whl (57.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

cu3gppchan-0.1.1-cp311-cp311-manylinux_2_34_x86_64.whl (57.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

cu3gppchan-0.1.1-cp310-cp310-manylinux_2_34_x86_64.whl (57.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

cu3gppchan-0.1.1-1-cp314-cp314t-manylinux_2_34_x86_64.whl (57.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.34+ x86-64

File details

Details for the file cu3gppchan-0.1.1-cp314-cp314t-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: cu3gppchan-0.1.1-cp314-cp314t-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 57.1 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for cu3gppchan-0.1.1-cp314-cp314t-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3e4ee2725cefb30db3a8259ca4cfaf1d84954bf5bbf9362d110967b9c6d33641
MD5 14deaf9ce400b45e515575898546d5e0
BLAKE2b-256 6d3156b3e0e700c637b9e0b820243b29ae14a5760e37ee6338d68ded25dae2d5

See more details on using hashes here.

File details

Details for the file cu3gppchan-0.1.1-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: cu3gppchan-0.1.1-cp314-cp314-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 57.1 MB
  • Tags: CPython 3.14, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for cu3gppchan-0.1.1-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e3ad8756dfaf446268303dcd6a635efaea8c9852a7e7406c1fcc03805aa42010
MD5 11d1b96b36e37dc79a53298e24c64dd0
BLAKE2b-256 6817b774af9b22aa86e75cec2900b0d1dcb8fff7f1ec8fede186ef7efcc1b422

See more details on using hashes here.

File details

Details for the file cu3gppchan-0.1.1-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: cu3gppchan-0.1.1-cp313-cp313-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 57.1 MB
  • Tags: CPython 3.13, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for cu3gppchan-0.1.1-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 189b1ff6773355081de310f0c8c8c16a2cf197121f836b2900b86fd3dafc9759
MD5 1018ade42ac0616c57648e878d3b94ce
BLAKE2b-256 b1643e6b6c2f0a5dcaa0d9455a71332987a846e35472860e40ce70fc4427acec

See more details on using hashes here.

File details

Details for the file cu3gppchan-0.1.1-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: cu3gppchan-0.1.1-cp312-cp312-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 57.1 MB
  • Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for cu3gppchan-0.1.1-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 c7e79b01b3a264a8ebc98cdb34832c1ed098786a3ac30392e52fdeab603916ee
MD5 d89e4f761ba2d34dc11000e093c83218
BLAKE2b-256 78ac0a9a80b6f8a2c4b6f28660b17aca303c25f7671be602e99932ceb7926b6c

See more details on using hashes here.

File details

Details for the file cu3gppchan-0.1.1-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: cu3gppchan-0.1.1-cp311-cp311-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 57.1 MB
  • Tags: CPython 3.11, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for cu3gppchan-0.1.1-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 03ead8e13c89423885b7b0b35dddbae034a6413b015387a585274515af35c43d
MD5 03d0c04657f1691f39fc6e85009738bb
BLAKE2b-256 819b9c3594b9da7132a8cbe85f31fe3be0e4e702640eaf2e5cc55c7f788887e2

See more details on using hashes here.

File details

Details for the file cu3gppchan-0.1.1-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: cu3gppchan-0.1.1-cp310-cp310-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 57.1 MB
  • Tags: CPython 3.10, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for cu3gppchan-0.1.1-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e17af39cad80854805e580e0ba647ea7e0214d6906fcb041edbb841950d63bbf
MD5 73026244537f030a2e93ea2af69a4f84
BLAKE2b-256 817d0445cc6587f0ec3e9456f25afe7b814caa1e062cbd70a89502f5bfa6f7da

See more details on using hashes here.

File details

Details for the file cu3gppchan-0.1.1-1-cp314-cp314t-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: cu3gppchan-0.1.1-1-cp314-cp314t-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 57.1 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for cu3gppchan-0.1.1-1-cp314-cp314t-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 2f38d7dee2bb0710859881bf857e7ecee0a6363263ab507f16db7024050cb82a
MD5 bd425ea1039a9e875890dc9187114835
BLAKE2b-256 7a5c039faa6fcaa38eec4daa428c96c3b5670eba73689b060ab4652033116227

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.4

3 files

0.1.3

4 files

0.1.2

6 files

This release

0.1.1 This release

7 files

0.1.0

5 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page