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

Uploaded CPython 3.12macOS 15.0+ ARM64

alp_graphblas-0.8.28-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.28-cp311-cp311-macosx_15_0_arm64.whl (490.9 kB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

alp_graphblas-0.8.28-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.28-cp310-cp310-macosx_15_0_arm64.whl (490.9 kB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

alp_graphblas-0.8.28-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.28-cp39-cp39-macosx_15_0_arm64.whl (490.9 kB view details)

Uploaded CPython 3.9macOS 15.0+ ARM64

File details

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.28-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5850dbcdb35fa1b0bf157485cfd8147439cb0e97d08c20272781ef89d3f8acd0
MD5 04a00aba3510bace1d7b8c255655c719
BLAKE2b-256 feb04c6329a26b5ed2ea069da82fb1bfbb76f543564bd61f3f08ca627768a33f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.28-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 ca75067ffbfaf4ec120274d9a5cbdec94f28a30d634639fe20c578e49e8cd547
MD5 82fdb9ba9d99250c2327486fd08cd835
BLAKE2b-256 235069a48ea16d7282accd664e83a5374c2ffea2c095798732dbdcfca0d24a9c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.28-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2832b734211a644dbd608a78dc4910b47323d828a100fce8dcbbdee1c2970357
MD5 5af89d2521aadc5a2f96c0fb0c216a99
BLAKE2b-256 e3e5fb317af258b38a680449b5750b81b4baf9b41593b75289ee333edf52cbf1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.28-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 0a9b98e428766fcf911d9730d218e4c8a674f526648a8241f3dee09f26a4aa80
MD5 bb83607bb36edd9164244c9bba550204
BLAKE2b-256 5c564277ae69d8df75848155cf86743de94a5843f29a37ba5078ddb0a2686058

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.28-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ac6e34f780e986515c8e9f07aef7f1012599a5f54b7013d276512833e88b3210
MD5 599eb5b956d40ae1c30586dc51024553
BLAKE2b-256 3c8ab80fb4b5218fba0a5f1f1b82b4e0862ebcb66f1b0ee9ee7221a2153a1446

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.28-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 52baa1a08f6efe39a5e72dc144e39ba308950c0917e1d8fefd788cb7f0813ccc
MD5 8727e65d88ac0a72a38528064dbd278a
BLAKE2b-256 44a5f5b13f9d06b8d855f583587e56e1d476b42b47c03d1fff1c7b2040d3fd5c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.28-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a9a54c5127e78f5a6293829eac865f2a4b91f206675595d6c7448ccb812eec95
MD5 78c1823f25ef1d94d984c8a203d67970
BLAKE2b-256 c5c1b081e42cce55e107a8cf2d54093f84b02f10f07ceb28ef82d829205520fb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.28-cp39-cp39-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 01bb606514f6ce39eca525a07e7f7b369baf86555fb5fef764cd92601660aef3
MD5 770d2442158260c0458deacfec04c321
BLAKE2b-256 1cc5df1fdca7716dd799f6c4a2e4fc0bac5791fc1d9c70a1ce251cb434aeb4da

See more details on using hashes here.

Provenance

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