Skip to main content

Python bindings for ALP GraphBLAS (minimal package layout)

Project description

pyalp (packaged)

This directory contains the Python package layout for the pyalp bindings that expose parts of the ALP GraphBLAS project via pybind11.

Quick start

Create and activate a virtual environment, then install the package (example using TestPyPI):

python -m venv venv
source venv/bin/activate
pip install --index-url https://test.pypi.org/simple/ --no-deps pyalp

Basic usage

pyalp (packaged)

This directory contains the Python package layout for the pyalp bindings that expose parts of the ALP GraphBLAS project via pybind11.

Quick start

Create and activate a virtual environment, then install the package (example using TestPyPI):

python -m venv venv
source venv/bin/activate
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple pyalp

Basic usage

The package exposes a small set of helpers and one or more compiled backend modules. Use these helpers to list and select available backends and to read runtime build metadata:

import pyalp
print('pyalp build metadata:', pyalp.get_build_metadata())
print('available backends:', pyalp.list_backends())

# Import a specific backend module (returns the compiled module)
backend = pyalp.get_backend('pyalp_ref')  # or 'pyalp_omp', 'pyalp_nonblocking'
print('backend module:', backend)

Backends and import caveat

Wheels may include multiple compiled backend modules (for example pyalp_ref, pyalp_omp, pyalp_nonblocking). Historically, importing multiple different compiled backends in the same Python process could raise pybind11 registration errors (types duplicated). The bindings now use py::module_local() for core wrapper types, which reduces collisions, but if you encounter issues importing more than one backend in-process, prefer testing each backend in a separate process (the supplied test runner does this).

Runtime metadata

The package provides a metadata module generated at build time by CMake. Use pyalp.get_build_metadata() to access keys such as:

  • version — pyalp package version
  • build_type — CMake build type used (e.g., Release)
  • alp_version — ALP repository version or tag used to build
  • alp_git_commit / alp_git_branch — Git information captured by CI
  • license — detected repository license (e.g. Apache-2.0)

pyalp.get_algorithm_metadata() contains algorithm/backends info and a readme key with packaged README contents.

Minimal example — conjugate gradient (small test)

Save the following as test_cg.py and run python test_cg.py after installing pyalp and numpy. The example shows selecting a backend explicitly via pyalp.get_backend() and then using the backend's Matrix, Vector, and conjugate_gradient API.

#!/usr/bin/env python3
"""
Test script for the pyalp backend (example uses the OpenMP backend name
`pyalp_omp`, but you can use `pyalp_ref` or another available backend).

Usage:
		python test_cg.py

Dependencies:
		- numpy
		- pyalp (installed and providing a backend such as pyalp_omp)
"""

import numpy as np
import pyalp

# Choose the backend module (change name if you want a different backend)
pyalp = pyalp.get_backend('pyalp_omp')  # or 'pyalp_ref', 'pyalp_nonblocking'

# Generate a small sparse linear system using numpy arrays
N, M = 5, 5
idata = np.array([0, 1, 2, 3, 3, 4, 2, 3, 3, 4, 1, 4, 1, 4, 4], dtype=np.int32)
jdata = np.array([0, 1, 2, 3, 2, 2, 1, 4, 1, 1, 0, 3, 0, 3, 4], dtype=np.int32)
vdata = np.array([1, 1, 1, 1, 0.5, 2, 1, 4, 4.4, 1, 0, 3.5, 0, 3, 1], dtype=np.float64)
b = np.array([1.0, 1.0, 1.0, 1.0, 1.0], dtype=np.float64)
x = np.array([1.0, 1.0, 0.0, 0.3, -1.0], dtype=np.float64)
r = np.zeros(5, dtype=np.float64)
u = np.zeros(5, dtype=np.float64)
tmp = np.zeros(5, dtype=np.float64)

# Create the pyalp Matrix and Vector objects
alpmatrixA = pyalp.Matrix(5, 5, idata, jdata, vdata)
alpvectorx = pyalp.Vector(5, x)
alpvectorb = pyalp.Vector(5, b)
alpvectorr = pyalp.Vector(5, r)
alpvectoru = pyalp.Vector(5, u)
alpvectortmp = pyalp.Vector(5, tmp)

maxiterations = 2000
verbose = 1

# Solve the linear system using the conjugate gradient method in the backend
iterations, residual = pyalp.conjugate_gradient(
		alpmatrixA,
		alpvectorx,
		alpvectorb,
		alpvectorr,
		alpvectoru,
		alpvectortmp,
		maxiterations,
		verbose,
)
print('iterations =', iterations)
print('residual =', residual)

# Convert the result vector to a numpy array and print it
x_result = alpvectorx.to_numpy()
print('x_result =', x_result)

# Check if the result is close to the expected solution
assert np.allclose(x_result, np.array([1.0, 1.0, 0.0, 0.13598679, -0.88396565])), 'solution mismatch'

Packaging notes (for maintainers)

  • The CI uses a top-level CMake configure/build to produce the native shared object and a CMake-configured _metadata.py. The packaging setup.py then copies the built .so and _metadata.py into the wheel.
  • The CI passes Git/version information into CMake so the generated metadata is populated even in detached/CI environments.

If you modify the metadata template, update pyalp/src/pyalp/_metadata.py.in.

License

See the repository LICENSE at the project root; the packaging pipeline attempts to detect and embed the license string in runtime metadata.

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.

alp_graphblas-0.8.26-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

alp_graphblas-0.8.26-cp312-cp312-macosx_15_0_arm64.whl (490.6 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

alp_graphblas-0.8.26-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

alp_graphblas-0.8.26-cp311-cp311-macosx_15_0_arm64.whl (490.6 kB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

alp_graphblas-0.8.26-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

alp_graphblas-0.8.26-cp310-cp310-macosx_15_0_arm64.whl (490.6 kB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

alp_graphblas-0.8.26-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

alp_graphblas-0.8.26-cp39-cp39-macosx_15_0_arm64.whl (490.6 kB view details)

Uploaded CPython 3.9macOS 15.0+ ARM64

File details

Details for the file alp_graphblas-0.8.26-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.26-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a75f909b2afb1cce6b7a07a7f45534cd76e1395628f395cdffbbc123cae65689
MD5 7a5f1a597bab10f838eb140913b5b399
BLAKE2b-256 fdb5d1a075e317da1b04b926e682563a49e36e6c52ccddfa5f2e9f295caa7d36

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.26-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: promote-to-pypi.yml on Algebraic-Programming/ALP

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

File details

Details for the file alp_graphblas-0.8.26-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.26-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 d8b823e7bbd548c8e3c2c72267ad5c6d61f89e8d83b7656357c7d7f755316853
MD5 238e5593ca0e9a4261d65f810c6d55e5
BLAKE2b-256 e572b8b085792d9cb871834af5518e858549adcc150aa671de51acafcf959ea9

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.26-cp312-cp312-macosx_15_0_arm64.whl:

Publisher: promote-to-pypi.yml on Algebraic-Programming/ALP

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

File details

Details for the file alp_graphblas-0.8.26-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.26-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f766872c449723432e9d96025cfaf62de483be0d3f6f647e2a27bead9b9e5b38
MD5 bcfc03e11c1df2089d030915c4ac5546
BLAKE2b-256 b709000f89b2ebdcf8da9a7b47e49caf06ec4de1a1bce238a5d2976b6d7fdfe0

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.26-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: promote-to-pypi.yml on Algebraic-Programming/ALP

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

File details

Details for the file alp_graphblas-0.8.26-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.26-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 90db48057ccb434c269a8bd8833c34316c2de17f20328e063c2ef88e91009c87
MD5 bd88520e0b8eff2857a0323d57b1ab48
BLAKE2b-256 bac8ba566c4a7e80548735e326ef41261c6598f7f10e8c522033997eafe479cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.26-cp311-cp311-macosx_15_0_arm64.whl:

Publisher: promote-to-pypi.yml on Algebraic-Programming/ALP

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

File details

Details for the file alp_graphblas-0.8.26-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.26-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4588e1fdbdd66e3089991a985155dfa6f7dc704f884f16e4765795f7d8fd649d
MD5 8291d7b72b1a4df895a11a6f52a93575
BLAKE2b-256 4f60772b58243a67c22ee9a641ffb878c047cf3d7a3d422c8212648e7a9c403c

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.26-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: promote-to-pypi.yml on Algebraic-Programming/ALP

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

File details

Details for the file alp_graphblas-0.8.26-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.26-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 e95db538d571d84791fc22e02d39ed3be685d35c3b151b3dfaba9781f2943585
MD5 bac6834916321b66b905fbba1d290d0a
BLAKE2b-256 4e95090dea0da906f14a29b754db89b70b17beba84d6a20887b43481f5de3b19

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.26-cp310-cp310-macosx_15_0_arm64.whl:

Publisher: promote-to-pypi.yml on Algebraic-Programming/ALP

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

File details

Details for the file alp_graphblas-0.8.26-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.26-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bd44d6d3bbeef976cc0bc7ff1e24993579bb2b7f6ae98176b275faaca0454897
MD5 e5d301e4e90268b9c9f7a44a3987cfdb
BLAKE2b-256 38c8c497b3234b7098fec909ebd3c9b11ef1813fd704359da52b26010319336e

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.26-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: promote-to-pypi.yml on Algebraic-Programming/ALP

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

File details

Details for the file alp_graphblas-0.8.26-cp39-cp39-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.26-cp39-cp39-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3b0f8e0a41c6f7607b2a64410e1d3adb57529a01862b689d6758792980f7b471
MD5 1ebec0a9e47ee31ba6cc84404775502d
BLAKE2b-256 0c80fa0abeeb0514729ca3409c082d62d6ce76675758f54cfa5757239457290f

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.26-cp39-cp39-macosx_15_0_arm64.whl:

Publisher: promote-to-pypi.yml on Algebraic-Programming/ALP

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