No project description provided
Project description
qumat-qdp
GPU-accelerated quantum state encoding for Apache Mahout Qumat.
Installation
pip install qumat[qdp]
Requires one of:
- NVIDIA GPU (CUDA path via
QdpEngine) - AMD GPU with ROCm (AMD path via
QdpEngine(backend="amd"))
Recommended environment setup:
python -m venv .venv
source .venv/bin/activate
# Install the GPU runtime for your platform first:
# - NVIDIA users: CUDA-compatible torch / triton
# - AMD users: ROCm-compatible torch / triton
uv sync --active --project qdp/qdp-python --group dev
Use --active so uv reuses the environment that already has the correct GPU
runtime stack.
Usage
import qumat.qdp as qdp
import torch
# Initialize the unified QDP engine on GPU 0.
# Choose the backend explicitly.
engine = qdp.QdpEngine(device_id=0, backend="cuda")
# Encode data into quantum state
qtensor = engine.encode([1.0, 2.0, 3.0, 4.0], num_qubits=2, encoding_method="amplitude")
# Zero-copy transfer to PyTorch
tensor = torch.from_dlpack(qtensor)
print(tensor) # Complex tensor on CUDA
AMD ROCm Usage
import qumat.qdp as qdp
import torch
# Unified AMD engine route
engine = qdp.QdpEngine(device_id=0, precision="float32", backend="amd")
qt = engine.encode(torch.randn(8, 4, device="cuda"), 2, "amplitude")
state = torch.from_dlpack(qt)
print(state.device, state.dtype) # cuda:0, complex64
The public QdpEngine is a unified Python facade with explicit backend selection:
backend="cuda"routes to the Rust_qdp.QdpEnginebackend="amd"routes to the Triton AMD engine directly
See qdp/qdp-python/TRITON_AMD_BACKEND.md for Triton AMD setup and validation details.
Encoding Methods
| Method | Description |
|---|---|
amplitude |
Normalize input as quantum amplitudes |
angle |
Map values to rotation angles (one per qubit) |
basis |
Encode integer as computational basis state |
iqp |
IQP-style encoding with full ZZ entanglement |
iqp-z |
IQP encoding with Z-only diagonal (no ZZ pairs) |
phase |
Per-qubit phase product state via H⊗P(x_k) |
Backend support boundary:
- CUDA (
QdpEngine):amplitude,angle,basis,iqp,iqp-z,phasephaseis currently only reachable on the CUDA path via host inputs (Python list / NumPy / file / CPU torch tensor). The Python extension's CUDA-tensor validation does not yet allowlistphase; cuda-resident torch tensors must use.cpu()first when targetingphase. Tracked as a follow-up.
- AMD (
QdpEngine(..., backend="amd")):amplitude,angle,basis,iqp,iqp-z,phase
Pipeline / loader dtype (Rust internals)
QuantumDataLoader and run_throughput_pipeline build a Rust PipelineConfig with an
encoding plus a dtype (float32 vs float64). The prefetch thread can only keep an
end-to-end float32 host batch for encodings whose GPU stack implements the batch f32
path (encode_batch_f32). Today that is amplitude only. Angle and basis still fall back
to float64 for that loop until their batch f32 implementations exist. The eventual full
matrix (e.g. angle/basis under supports_f32 once kernels are wired) is broader than what
the pipeline uses today.
Input Sources
# Python list
qtensor = engine.encode([1.0, 2.0, 3.0, 4.0], 2, "amplitude")
# NumPy array
qtensor = engine.encode(np.array([[1, 2, 3, 4], [4, 3, 2, 1]]), 2, "amplitude")
# PyTorch tensor (CPU or CUDA)
qtensor = engine.encode(torch.tensor([1.0, 2.0, 3.0, 4.0]), 2, "amplitude")
# File formats
qtensor = engine.encode("data.parquet", 10, "amplitude")
qtensor = engine.encode("data.arrow", 10, "amplitude")
qtensor = engine.encode("data.npy", 10, "amplitude")
qtensor = engine.encode("data.pt", 10, "amplitude")
# Remote object storage URLs (requires building with remote-io feature)
qtensor = engine.encode("s3://my-bucket/data.parquet", 10, "amplitude")
qtensor = engine.encode("gs://my-bucket/data.parquet", 10, "amplitude")
Links
License
Apache License 2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qumat_qdp-0.2.0rc2.tar.gz.
File metadata
- Download URL: qumat_qdp-0.2.0rc2.tar.gz
- Upload date:
- Size: 339.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf0b5e6019331766d461effd0d5e84e7a799646a7ab4d7289cdc539707426e64
|
|
| MD5 |
bad4d827746f95e4931163245490e549
|
|
| BLAKE2b-256 |
ebc7899b423fa282c363e667b98d32d97cd0c3a6a83cdcc054b89eed985e7406
|
File details
Details for the file qumat_qdp-0.2.0rc2-cp312-cp312-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: qumat_qdp-0.2.0rc2-cp312-cp312-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 4.8 MB
- Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cba6e0f71756f0a49a34b4e6b8d0594b5cb64476c7c53fb1fe0fb95ce420549d
|
|
| MD5 |
962c235053a2428336b154b8c8e12e26
|
|
| BLAKE2b-256 |
c7897697bce9885128cd7cddf298437495389cb3f67d54cfa2141881008a2a38
|
File details
Details for the file qumat_qdp-0.2.0rc2-cp311-cp311-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: qumat_qdp-0.2.0rc2-cp311-cp311-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 4.8 MB
- Tags: CPython 3.11, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bcb6c0ea06cabbfe0dfc2a6e0bc85db23d8ac4a754b05c5a0b2d5c81eb84a838
|
|
| MD5 |
996e239bc2085f0c57fe953fe57a56ab
|
|
| BLAKE2b-256 |
60dd2bded82cc4ab7e918ef48961ec69563e0dfab91b8172fc5be843df768a27
|
File details
Details for the file qumat_qdp-0.2.0rc2-cp310-cp310-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: qumat_qdp-0.2.0rc2-cp310-cp310-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 4.8 MB
- Tags: CPython 3.10, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55d7fa12c5d1d05371df27020ece07da582cd63df5cf3435cef364f9081e565a
|
|
| MD5 |
f85be72d8425ab617cad4c15158f19d1
|
|
| BLAKE2b-256 |
ca49c7a30fe111065fd78f6ab16be1655e948d61f9c9c6b2c479586c58885cf2
|