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

Uploaded CPython 3.12macOS 15.0+ ARM64

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

Uploaded CPython 3.11macOS 15.0+ ARM64

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

Uploaded CPython 3.10macOS 15.0+ ARM64

alp_graphblas-0.8.30-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.30-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.30-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alp_graphblas-0.8.30-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 512a19a2d7fced989215ecf1b13298d768b4672d6b210adc4c28f8592f4b44e4
MD5 7567aa064f65716e2fc43037bbf2043e
BLAKE2b-256 d247b98de7257239655ab347fec5d064948bcd46b2a370fa7ad577f83e223a53

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.30-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 13045315354b0e746c7281390ad2e85cba233855f77eff6298e15fec596dd969
MD5 da35e30f017b07b8a1ec0542e61b5c58
BLAKE2b-256 afbf4c2917849f8568aed802fa10e58b0ef8df220b529ba36bfca9c794b4adab

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.30-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2f018233036bdd7a96c24e9c1f400adbf9f8a667bc0ef022fc79262e25ecef23
MD5 4160ff0cf58835001884ece1940e9c1a
BLAKE2b-256 82c9c423ae70d13a091eea1558b632569daa5ed8261e4b412955b8b0193961b4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.30-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 1cad4126d3ad9f44a0c24f1778a644e71774c55057b09986e86b527a3957d624
MD5 a0fde3952269860f93da5ddb47fb4f95
BLAKE2b-256 899dd2e1732a9e08427b0aeab1e55a4a0651f82909e2d872448ef243804dc297

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.30-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 22950893c1b62062646e30c6ba2463a6bf1bc7038a5a628053583f90227bb9d7
MD5 2e0e55f5e73c0fd3e9ffcac769de8aa8
BLAKE2b-256 fedfcfafe6a5168e729bcffdf944efa29be519b3897ff8588fed44efaee851ce

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.30-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 890d04bc50b757c1505b2666ebe6e7d933abb539efbbb394f4ad437089ddda0f
MD5 a9d7f3dd243037b60bd8c1ea2d1a220a
BLAKE2b-256 32a5f7b6cb3d19c1243f680d87934bf48d101428b39f82b8037f1bfd6d68e647

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.30-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e5efa6dc8bc5434455d6bdf02ed13f0b531e4af1c6529722f95d7955c30b6c4b
MD5 df70f6b37dab9ffa18659d3ae59adf28
BLAKE2b-256 fe0d64505d519cec6350076536cec9b8a3049a94437daaa290e7fe37b39f8efe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alp_graphblas-0.8.30-cp39-cp39-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 ad28589ac74705bf9b0f5666762e093ab7e39b78c73e7ca24592edee5b4bfc80
MD5 0f069b99dc25545f81e6b0232ba98640
BLAKE2b-256 1935d5685decb50a2b5f3f577a054271f1839311b6c57cdf760b122f7b0355fe

See more details on using hashes here.

Provenance

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