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 PyPI (recommended):

python -m venv venv
source venv/bin/activate
pip install alp-graphblas

If you want to try a pre-release from TestPyPI instead, use the TestPyPI index but install the same package name alp-graphblas (pip will pull the package and its dependencies from the given index):

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

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 published package alp-graphblas from PyPI or TestPyPI as shown above. Note: the import name inside Python remains pyalp (the package provides the pyalp module), so your code still does import pyalp after installation.

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.41-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.41-cp312-cp312-macosx_15_0_arm64.whl (492.9 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

alp_graphblas-0.8.41-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.41-cp311-cp311-macosx_15_0_arm64.whl (492.9 kB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

alp_graphblas-0.8.41-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.41-cp310-cp310-macosx_15_0_arm64.whl (492.9 kB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

alp_graphblas-0.8.41-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.41-cp39-cp39-macosx_15_0_arm64.whl (492.9 kB view details)

Uploaded CPython 3.9macOS 15.0+ ARM64

File details

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.41-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d219038fb289753dd5e0c33ce65149c424aeaa4cc71e65c9058f065413c05a09
MD5 ef14dae0a99b62fbababed3b7e9e3d9f
BLAKE2b-256 48c766352a14493b70a3bbb26f3d3af1cbbd06031680870fe89033fb90275de7

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.41-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.41-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.41-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3771375c2fd833c89a025e81f376511a3b69b8adf35d5268edf77d0c926d96ee
MD5 7c5efcea4f129b772ff6f88dc613e038
BLAKE2b-256 67dc0fdd569725244b3729e4141c616b816d903f9ab6c7ccac1f09809621c78a

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.41-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.41-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.41-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9b138ac51385dd7ffde7a9115addb2d467a127c3f3ded16bb40e37912bce0c91
MD5 2989ceffc23fb63f0eddb8e9185c34dc
BLAKE2b-256 f358b04d05d296ffa118838586296c78ba6b4f556fa3dba01099410f37398b5a

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.41-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.41-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.41-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 f7ee64892501b518cf5042cf23379a5ab1e1e05a4aec4e12c14f19acd462f503
MD5 73f7025b2ab43a7ebe233bf8f0a32aa0
BLAKE2b-256 1361406313a557ad4dd35f1dab644f463a49137f81e7e8c823ea071ec041db72

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.41-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.41-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.41-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 578e1e6ffd81f93bc97ada28f175aeb46287d46c2192b43fcc9fe3a7305ce833
MD5 89c660a4b1c836d26c55856d4ba634a7
BLAKE2b-256 52f85c8313b7e88023b5b30f3c988ba4f8f78af27f1a5558e764bbee436cad92

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.41-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.41-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.41-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 61d02ea78e732c5ffacdf4417b24787feb16ac4e80f7f7f202274a35f1f982cc
MD5 c18412a418fa0d038de19e4fc2dce9ba
BLAKE2b-256 0c249faf5441458dbf27781c5e9001d498856d7f1d38cc7323b057055a0389bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.41-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.41-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.41-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 acef4a9b2d614f111357a03d81075bbbbda002916cb1da1d0c4ecdb5b2329d95
MD5 78fa055ca266d01fbde9dfa469b758fc
BLAKE2b-256 4336055e51be02e068a212d63cdb3a4d90396dd653b69291efe965b785dedfba

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.41-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.41-cp39-cp39-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.41-cp39-cp39-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 14b4806e73480b02a545983f52234654df0765e14b93e65be051df395bed686f
MD5 cc484cd797e79b43bdddea40b94654b7
BLAKE2b-256 6c5f6fd5f3d719ffcf92a442e30f66b449a3d15d40313f7dc3985662b272920c

See more details on using hashes here.

Provenance

The following attestation bundles were made for alp_graphblas-0.8.41-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