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.2

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.2-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.2-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.2-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.2-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.2-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.2-cp310-cp310-manylinux_2_34_x86_64.whl (57.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

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

File metadata

  • Download URL: cu3gppchan-0.1.2-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.2-cp314-cp314t-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 f6e009676a1d7a552acf424a2db2b12eba4f8f9608cfa42e1df0b0dec914a49b
MD5 02455b917b8b36e2a6712fc680f96d6a
BLAKE2b-256 ff65f6cbba461bcae9b5d567eec14a49a7fdc479ca3a332d341c7722a17df17a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cu3gppchan-0.1.2-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.2-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 fb40143f5cc8a7c9acff3607a12b1452700ae6770e4ff251583ebb6405a7a7e9
MD5 741a2904e1f657bf496c6c77a3cd6a70
BLAKE2b-256 c1c9b5ee63deaabbcf575dd153b3ca1556bdec7870eee5c9d4c72cd82d78c44f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cu3gppchan-0.1.2-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.2-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 2eacaad53fb08a05cf48ae073d3ce1507a19769db5d567018901391ceb7730ce
MD5 a5a6883eeea47a6f1e1ea1ebcae3cfb1
BLAKE2b-256 f0e5ae796044a422f81b4e6ef02c7bd38ea660425c589bfe83b6b9a626d13d97

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cu3gppchan-0.1.2-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.2-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 149bef0ee26d0812c4f6b28874e7b434a89741e4a446541b7e913df98078ac48
MD5 32bffaf4483bb3fa112c7a7bf6ab142c
BLAKE2b-256 e56e05d7f7b4393725b9783946b530dca1d8b0884786f77399f112680a85480b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cu3gppchan-0.1.2-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.2-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 33368240288be81ef55ca3491c2d300477146957c2a8d95dff3ee4becf27ecf1
MD5 4d6ded1680d154e2e1b583307fcc0fcd
BLAKE2b-256 b103f25aa45f36debc58673b9409c1aa0a282d0ce65836a11dc3bd4b0a3e4b1b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cu3gppchan-0.1.2-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.2-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3a6c3d5d0a1c74a930350e5ad2e6fa9c7d35c7b4a3f166e0873b9fa7aff65a38
MD5 e19d7425f0befd645fe478cfc7e472dc
BLAKE2b-256 4d325707830baa1b7a87cd948787de211aa1c8c393c2f5410e8b40a59114889a

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.4

3 files

0.1.3

4 files

This release

0.1.2 This release

6 files

0.1.1

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