Skip to main content

Actor-shaped face for compute-acceleration backends (NVIDIA CUDA shipping; ROCm / Metal / oneAPI / Vulkan future), on the atomr actor runtime.

Project description

atomr-accel (Python)

Python bindings for atomr-accel — drive an actor-supervised NVIDIA CUDA pipeline directly from Python without juggling streams, contexts, or hand-rolled retry loops.

import numpy as np
import atomr_accel

with atomr_accel.System.open("my-app") as sys:
    dev = sys.spawn_device(device_id=0)         # real CUDA device

    # Allocate two N×N f32 buffers on-device.
    n = 256
    a = dev.allocate_f32(n * n)
    b = dev.allocate_f32(n * n)
    c = dev.allocate_f32(n * n)

    # Upload from numpy.
    dev.copy_from_numpy(a, np.ones(n * n, dtype=np.float32))
    dev.copy_from_numpy(b, np.full(n * n, 2.0, dtype=np.float32))

    # Run cuBLAS SGEMM — the call blocks until the kernel finishes.
    dev.sgemm(a, b, c, m=n, n=n, k=n, alpha=1.0, beta=0.0)

    # Pull the result back into a fresh numpy array.
    result = dev.copy_to_numpy(c)
    print(result.reshape(n, n))

For hosts without a GPU, pass mock=True to spawn_device and the device replies Unrecoverable("...mock mode") for any kernel call — useful for testing the surrounding plumbing in CI.

Install

The wheel builds with maturin:

# from this directory
pip install maturin pytest numpy
maturin develop --release       # builds + installs into the active venv
pytest tests/                    # runs the no-GPU smoke suite

For a release wheel:

maturin build --release --no-default-features --features extension-module
# wheel lands in target/wheels/

The pure-Python facade (python/atomr_accel/__init__.py) re-exports the native classes and exception types. Downstream libraries import from atomr_accel and treat atomr_accel._native as private.

Feature flags

The Rust crate matches atomr-accel's feature gating so the wheel can be built minimal or full:

Feature Adds
(default) System, Device, GpuBuffer, exceptions
curand RngGenerator
nvrtc NvrtcKernel
cudnn / cufft / cusolver / cublaslt / nccl placeholder; future Python surfaces
core-libs / training-libs / full-cuda aggregates
maturin develop --features atomr-accel-py/curand,atomr-accel-py/nvrtc

Public API

Class / function What it wraps
atomr_accel.System.open(name) A atomr_core::actor::ActorSystem lifetime
system.spawn_device(id, mock=) A DeviceActor (real or mock)
device.allocate_f32(len) DeviceMsg::AllocateF32GpuBuffer
device.copy_from_numpy(buf, np) H2D CopyFromHostF32
device.copy_to_numpy(buf) D2H CopyToHostF32 → numpy float32 array
device.sgemm(a,b,c,m,n,k,...) cuBLAS SGEMM via BlasActor
device.stats() DeviceMsg::StatsDeviceLoad
GpuBuffer.is_stale() Generation token check vs. DeviceState
GpuRuntimeError (and subclasses) Typed GpuError mapping

Every method blocks the calling thread until the underlying actor replies (the GIL is released for the duration via py.allow_threads). Async wrappers can be layered later via pyo3_async_runtimes::tokio::future_into_py.

How it works

Three pieces:

  1. A shared tokio runtime. The first call to System.open(...) initializes a multi-threaded scheduler; every subsequent call reuses it. Implemented in src/runtime.rs via pyo3-async-runtimes::tokio::init.
  2. The _native extension module. src/lib.rs registers System, Device, GpuBuffer, exceptions, and (feature-gated) RngGenerator / NvrtcKernel. Each Python class wraps a typed ActorRef<...> from atomr-accel and converts replies via errors::map_gpu.
  3. The pure-Python facade at python/atomr_accel/__init__.py. Hides _native; documents the API; gives downstream libraries a stable import path.

See docs/python-bridge.md for the full architecture write-up.

License

Apache-2.0.

Project details


Download files

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

Source Distribution

atomr_accel-0.1.0.tar.gz (376.6 kB view details)

Uploaded Source

Built Distributions

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

atomr_accel-0.1.0-cp310-abi3-win_amd64.whl (631.2 kB view details)

Uploaded CPython 3.10+Windows x86-64

atomr_accel-0.1.0-cp310-abi3-musllinux_1_2_x86_64.whl (902.4 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

atomr_accel-0.1.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (686.7 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

atomr_accel-0.1.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (1.2 MB view details)

Uploaded CPython 3.10+macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file atomr_accel-0.1.0.tar.gz.

File metadata

  • Download URL: atomr_accel-0.1.0.tar.gz
  • Upload date:
  • Size: 376.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for atomr_accel-0.1.0.tar.gz
Algorithm Hash digest
SHA256 71b2ad5397e55dda2f99756f65466c750b16a38d6df38691a3c587acb53ec9c4
MD5 7b89bafb1e01f0cd73020cec8aa20626
BLAKE2b-256 96a89c2009df073e59c7a59e1b8f191e3444e20696ee7020d25a957c600ae50c

See more details on using hashes here.

Provenance

The following attestation bundles were made for atomr_accel-0.1.0.tar.gz:

Publisher: release.yml on rustakka/atomr-accel

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atomr_accel-0.1.0-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: atomr_accel-0.1.0-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 631.2 kB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for atomr_accel-0.1.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 37e4393687af5efdb546b840feeace9cc7e0c909419561b1f1124611ea3d0604
MD5 b3252675a8e90b1ca67b75d70907030c
BLAKE2b-256 dbfb77b4f77e8238e6f95dd2d621ddd2d526dbc5cced0dd5d7934272e21f871f

See more details on using hashes here.

Provenance

The following attestation bundles were made for atomr_accel-0.1.0-cp310-abi3-win_amd64.whl:

Publisher: release.yml on rustakka/atomr-accel

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atomr_accel-0.1.0-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for atomr_accel-0.1.0-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cec460a7d5cf811c26d1b970c836424e5721eb5a3cb508b65697b1841662dacb
MD5 69ef25abcc4b0f8a7297055128f8aabb
BLAKE2b-256 750b882eeb3a2992c4962f9b4ca2a5276d530c7e91ec554e9516d4be70e2c1c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for atomr_accel-0.1.0-cp310-abi3-musllinux_1_2_x86_64.whl:

Publisher: release.yml on rustakka/atomr-accel

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atomr_accel-0.1.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for atomr_accel-0.1.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 380d2bb1e591b927dcb9a5fbc5945754a5eb979cd991368009064563b2fd336e
MD5 da33f6b6be16981aaa105242ebb93804
BLAKE2b-256 33ab744e8e8cf843c76013300401004ce099930bb10525ba85b216ed1a25c6dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for atomr_accel-0.1.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on rustakka/atomr-accel

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atomr_accel-0.1.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for atomr_accel-0.1.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 c95e7297f710ed7200defe87e85ae6537b38002a5a6479dfacce1d42835a94de
MD5 c9d4775cb98330c9ad71adc5bbd32678
BLAKE2b-256 bdb7951883a659e898bef176ec4c13ab8f34701dc690decb2e46debd42a106da

See more details on using hashes here.

Provenance

The following attestation bundles were made for atomr_accel-0.1.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: release.yml on rustakka/atomr-accel

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page