Skip to main content

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

Project description

rakka-accel (Python)

Python bindings for rakka-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 rakka_accel

with rakka_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/rakka_accel/__init__.py) re-exports the native classes and exception types. Downstream libraries import from rakka_accel and treat rakka_accel._native as private.

Feature flags

The Rust crate matches rakka-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 rakka-accel-py/curand,rakka-accel-py/nvrtc

Public API

Class / function What it wraps
rakka_accel.System.open(name) A rakka_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 rakka-accel and converts replies via errors::map_gpu.
  3. The pure-Python facade at python/rakka_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 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.

rakka_accel-0.2.8-cp310-abi3-win_amd64.whl (631.3 kB view details)

Uploaded CPython 3.10+Windows x86-64

rakka_accel-0.2.8-cp310-abi3-musllinux_1_2_x86_64.whl (903.7 kB view details)

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

rakka_accel-0.2.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (687.9 kB view details)

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

rakka_accel-0.2.8-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 rakka_accel-0.2.8-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: rakka_accel-0.2.8-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 631.3 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 rakka_accel-0.2.8-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 39908ede6b674242318f75fe85d610c8124565188b87ffa91692c6fd0c5dfdec
MD5 0f85e8fc978f8d7eb71f0c7a198da2be
BLAKE2b-256 8fb78ee380efdb7e77e4a3bba5f223eb17d11947f0b6afeecdd66cbb4e75a051

See more details on using hashes here.

Provenance

The following attestation bundles were made for rakka_accel-0.2.8-cp310-abi3-win_amd64.whl:

Publisher: release.yml on rustakka/rakka-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 rakka_accel-0.2.8-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for rakka_accel-0.2.8-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9a14ba6effe4e387cff5f83e4bc062d087e05a8b1a411ca169e91fb06dfc6035
MD5 630482fef0f2dc4e7b5fe72f4f20ca8d
BLAKE2b-256 4e644efffb8ce06023a4f9d0b2335e0b98f76c5fea9d79d0ce21a32b82b84ee4

See more details on using hashes here.

Provenance

The following attestation bundles were made for rakka_accel-0.2.8-cp310-abi3-musllinux_1_2_x86_64.whl:

Publisher: release.yml on rustakka/rakka-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 rakka_accel-0.2.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rakka_accel-0.2.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 05d29ff3c76f826cdb9dd03b6bf55a9c873fa0da50f9bfaff713c625774306b5
MD5 4bd0878f8be98790539bdb424c6946c9
BLAKE2b-256 3a84af33b986e4ff32752b74fb5cc755a788564d6f459b3c0631eb9ea2dada37

See more details on using hashes here.

Provenance

The following attestation bundles were made for rakka_accel-0.2.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on rustakka/rakka-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 rakka_accel-0.2.8-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for rakka_accel-0.2.8-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 5c796ff92e3c88319eb13cd4e8787aba3e4b186c56d7dc1273594a2b60c38f77
MD5 e6d639085b46f0a8dc3d2863532f8898
BLAKE2b-256 03cf91f460e900098454830dcdd15e9becde552439df729686b95f7e5cb6b135

See more details on using hashes here.

Provenance

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

Publisher: release.yml on rustakka/rakka-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