Skip to main content

The VPMR Algorithm

Project description

VPMR C++ Implementation

DOI codecov PyPI version Docker

gplv3-or-later

Call For Help

  • more performant parallel SVD algorithm: eigen only provides sequential SVD
  • alternative integration: currently only Gauss-Legendre quadrature is available

What Is This?

This is a C++ implementation of the VPMR algorithm to compute the approximation of arbitrary smooth kernel. A Python package is also provided.

Check the reference paper 10.1007/s10915-022-01999-1 and the original MATLAB implementation for more details.

In short, the algorithm tries to find a summation of exponentials to approximate a given kernel function. In mathematical terms, it looks for a set of $m_j$ and $s_j$ such that

$$ \max_{t\in{}I}\left|g(t)-\sum_jm_j\exp(-s_jt)\right|<\epsilon. $$

In the above, $g(t)$ is the given kernel function and $\epsilon$ is the prescribed tolerance.

Dependency

The following libraries are required:

  1. gmp for multiple precision arithmetic
  2. mpfr for multiple-precision floating-point computations
  3. tbb for parallel computing

The following libraries are included:

  1. mpreal mpreal type C++ wrapper, included
  2. Eigen for matrix decomposition, included
  3. exprtk for expression parsing, included
  4. exprtk-custom-types for mpreal support, included

How To

If the application needs to be compiled on your machine (build the binary from source, python wheels are not available, etc.), you need to install the compiler and three libraries.

  1. On RPM-based Linux distributions (using dnf), you need to sudo dnf install -y gcc-c++ tbb-devel mpfr-devel gmp-devel.
  2. On DEB-based Linux distributions (using apt), you need to sudo apt install -y g++ libtbb-dev libmpfr-dev libgmp-dev.
  3. On macOS, you need to brew install gcc tbb mpfr gmp.

If the binary is available (run the pre-compiled binary, python wheels are available, etc.), you only need the runtimes of three libraries. You can find the exact names on pkgs.org by searching tbb, gmp and mpfr.

[!WARNING] Windows users need to have a working MSYS2 environment. See below for more details. For other environments, you need to figure out how to install gmp and mpfr on your own.

Docker

You can simply pull the image using the following command.

docker pull tlcfem/vpmr
# or using GitHub Container Registry
docker pull ghcr.io/tlcfem/vmpr

Just use it as you would normally do with any other docker images. For example,

docker run tlcfem/vpmr -n 30

To build the image locally, use the provided Dockerfile.

wget -q https://raw.githubusercontent.com/TLCFEM/vpmr/master/https://raw.githubusercontent.com/TLCFEM/vpmr/master/resource/Dockerfile
docker build -t vpmr -f Dockerfile .

Python Package

[!WARNING] The Python module needs external libraries to be installed. See above.

On most platforms (Linux and macOS), wheels are available, simply install the package with pip.

pip install pyvpmr

If the corresponding wheel is not available, the package will be compiled, which takes a few minutes. The execution of the algorithm always requires available gmp, mpfr and tbb libraries.

Jumpstart

import numpy as np

from pyvpmr import vpmr, plot


def kernel(x):
    return np.exp(-x ** 2 / 4)


if __name__ == '__main__':
    m, s = vpmr(n=50, k='exp(-t^2/4)')
    plot(m, s, kernel)

Standalone Binary

All available options are:

Usage: vpmr [options]

Options:

    -n, --max-terms             <int>     number of terms (default: 10)
    -c, --max-exponent          <int>     maximum exponent (default: 4)
    -d, --precision-bits        <int>     number of precision bits (default: 512)
    -q, --quadrature-order      <int>     quadrature order (default: 500)
    -m, --precision-multiplier  <float>   precision multiplier (default: 1.05)
    -e, --tolerance             <float>   tolerance (default: 1E-8)
    -k, --kernel                <string>  file name of kernel function (default uses: exp(-t^2/4))
    -s, --singular-values                 print singular values
    -w, --weights                         print weights
    -h, --help                            print this help message

The minimum required precision can be estimated by the parameter $n$. The algorithm involves the computation of $C(4n,k)$ and $2^{4n}$. The number of precision bits shall be at least $4n+\log_2C(4n,2n)$. In the implementation, this number will be further multiplied by the parameter $m$.

Example

The default kernel is exp(-t^2/4). One can run the application with the following command:

./vpmr -n 30

The output is:

Using the following parameters:
       terms = 30.
    exponent = 4.
   precision = 355.
 quad. order = 500.
  multiplier = 1.0500e+00.
   tolerance = 1.0000e-08.
      kernel = exp(-t*t/4).

[1/6] Computing weights... [60/60]
[2/6] Solving Lyapunov equation...
[3/6] Solving SVD...
[4/6] Transforming (P=+11)...
[5/6] Solving eigen decomposition...
[6/6] Done with 11 final terms.

M = 
+2.3132817597168739e+01-2.8586221856566439e-105j
-1.1577276470339980e+01+1.2090460362812458e+01j
-1.1577276470339980e+01-1.2090460362812458e+01j
-1.5850953326980194e-01+6.1693993683365882e+00j
-1.5850953326980194e-01-6.1693993683365882e+00j
+7.3529603986874903e-01+7.5750538019498470e-01j
+7.3529603986874903e-01-7.5750538019498470e-01j
-6.6807938653881516e-02+1.0261144687127986e-02j
-6.6807938653881516e-02-1.0261144687127986e-02j
+8.8910386408859823e-04+2.2917263647765330e-04j
+8.8910386408859823e-04-2.2917263647765330e-04j
S = 
+2.0729005744773779e+00-0.0000000000000000e+00j
+2.0678104641951456e+00+5.6013828454286663e-01j
+2.0678104641951456e+00-5.6013828454286663e-01j
+2.0525989324387557e+00-1.1331825475504296e+00j
+2.0525989324387557e+00+1.1331825475504296e+00j
+2.0268330855090184e+00+1.7349515936847757e+00j
+2.0268330855090184e+00-1.7349515936847757e+00j
+1.9884211467751960e+00-2.3916428978210722e+00j
+1.9884211467751960e+00+2.3916428978210722e+00j
+1.9308660033206897e+00-3.1676394473339076e+00j
+1.9308660033206897e+00+3.1676394473339076e+00j

Running time: 1987 ms.

exp(-t^2/4)

Arbitrary Kernel

For arbitrary kernel, it is necessary to provide the kernel function in a text file. The file should contain the kernel expressed as a function of variable t.

The exprtk is used to parse the expression and compute the value. The provided kernel function must be valid and supported by exprtk. Check the documentation regarding how to write a valid expression.

For example, to compute the approximation of exp(-t^2/10), one can create a file kernel.txt with the following content:

exp(-t*t/10)

In the following, the kernel function is echoed to a file and then used as an input to the application.

echo "exp(-t*t/10)" > kernel.txt
 ./vpmr -n 60 -k kernel.txt -e 1e-12

exp(-t^2/10)

Performance

The majority of the algorithm is parallelised to extract the maximum performance. The following is a typical performance profile on a i7-10750H platform using the ./vpmr -n 80.

profiling

Compilation

[!WARNING] The application relies on eigen and exprtk, which depend on very heavy usage of templates. The compilation would take minutes and around 2 GB memory. You need to install libraries gmp, mpfr and tbb before compiling.

Windows

Use the following instructions based on MSYS2, or follow the Linux instructions below with WSL.

# install necessary packages
pacman -S git mingw-w64-x86_64-cmake mingw-w64-x86_64-tbb mingw-w64-x86_64-gcc mingw-w64-x86_64-ninja mingw-w64-x86_64-gmp mingw-w64-x86_64-mpfr
# clone the repository
git clone --recurse-submodules --depth 1 https://github.com/TLCFEM/vpmr.git
cd vpmr
# apply patch to enable parallel evaluation of some loops in SVD
cd eigen && git apply --ignore-space-change --ignore-whitespace ../parallelize.patch && cd ..
# configure and compile
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .
ninja

Linux

The following is based on Fedora.

sudo dnf install gcc g++ cmake git tbb-devel mpfr-devel gmp-devel -y
git clone --recurse-submodules --depth 1 https://github.com/TLCFEM/vpmr.git
cd vpmr
cd eigen && git apply --ignore-space-change --ignore-whitespace ../parallelize.patch && cd ..
cmake -DCMAKE_BUILD_TYPE=Release .
make

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyvpmr-260322.tar.gz (2.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyvpmr-260322-cp314-cp314t-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

pyvpmr-260322-cp314-cp314t-musllinux_1_2_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

pyvpmr-260322-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyvpmr-260322-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

pyvpmr-260322-cp314-cp314-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

pyvpmr-260322-cp314-cp314-musllinux_1_2_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

pyvpmr-260322-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyvpmr-260322-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

pyvpmr-260322-cp313-cp313-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pyvpmr-260322-cp313-cp313-musllinux_1_2_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pyvpmr-260322-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyvpmr-260322-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

pyvpmr-260322-cp312-cp312-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pyvpmr-260322-cp312-cp312-musllinux_1_2_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pyvpmr-260322-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyvpmr-260322-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

pyvpmr-260322-cp311-cp311-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pyvpmr-260322-cp311-cp311-musllinux_1_2_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pyvpmr-260322-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyvpmr-260322-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

pyvpmr-260322-cp310-cp310-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pyvpmr-260322-cp310-cp310-musllinux_1_2_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pyvpmr-260322-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyvpmr-260322-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

pyvpmr-260322-cp39-cp39-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pyvpmr-260322-cp39-cp39-musllinux_1_2_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

pyvpmr-260322-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyvpmr-260322-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

pyvpmr-260322-cp38-cp38-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

pyvpmr-260322-cp38-cp38-musllinux_1_2_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

pyvpmr-260322-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyvpmr-260322-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

File details

Details for the file pyvpmr-260322.tar.gz.

File metadata

  • Download URL: pyvpmr-260322.tar.gz
  • Upload date:
  • Size: 2.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyvpmr-260322.tar.gz
Algorithm Hash digest
SHA256 6c8d48836b2908d6805e4411762671c5e4cdac422fcb2d5f3651a8da571f31e9
MD5 df3a1b58e44233b583657b264850bb76
BLAKE2b-256 8b08bd05dafd1345f20429eeaa0050844950989a3e71307f52381ae8d1c8061a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322.tar.gz:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e669d9bc044ed1ca43468aeab6081febadbde2c1fdf9eaa93eb3a734a6fdffc7
MD5 b294911f1e135d6ed78270f410ca7d9b
BLAKE2b-256 f645bc2bd28c1e67d1cca15a07acdac36ed31cd46a95166d8404372584c93655

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 389ec5993781ad528f8ea927742fcf77975f5a334a88002c41e6abea61cfd533
MD5 c0e5589dff0a0d6517932300a9bc7ef0
BLAKE2b-256 08dcce75a6ff484ac7a2511e7c9e410a896d0fb233a9a91883400350e59d181a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp314-cp314t-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f9bdbc6391123feec8bd7526b7f2252a503872c7607406fcccb0f7c94f60b565
MD5 e2c4d09dd87361a74982735c6662af75
BLAKE2b-256 9770400eeb644a78a41cd597c492d143fe2c64dcc91c0ecca79c0e522cd44862

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5be811c0215a2990629dc00210cb7b8ccb17083281668c9d5573e16cca7234d4
MD5 1e4d8e4d5a99b53152235310e4b2dda2
BLAKE2b-256 0c9bb98b45cd38c14608903f288d8e03b9111bec9211eda11d726fc4e1e5596a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 de120d82f9e5b4cb67f019eaad3b1f21a5482a1c0978547e997f876397073ba3
MD5 9ab9f1997b65a737b798f65e730a2f74
BLAKE2b-256 74d042671dfa0f72f5ef24f4210754cc3560765b89e42b0a43f116ffc5f6417e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 318e80b569c053bfa67ac19a84853bfbdaa43ab0c890ff47986441ad6bdd32ec
MD5 9e36d41273ce0a9442bdccfceda0a62b
BLAKE2b-256 498e6d2a435a002b2fffc24786511866485e2d168ff16f07a145e0351c52e5ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp314-cp314-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c235f4c23e0dc72150f7df301363cb3f650f60a49aa1954893cd27de48cb0dc6
MD5 0f3e7098fafc23d7249dc0b56d0bf763
BLAKE2b-256 6ec7bf154b15b7cfce3a3e209181694161bfb32e945d95f7fe35dcac032cdb51

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a54908b945af756cf4de0a9d566dd1f31df02306d22da6bb2d0bb25b7c115abd
MD5 5036b10f36b619f30c5cdc0a99c81025
BLAKE2b-256 a1ca2eb9022f21977d44b80456fd583a6035873edf4a09beb66d4071852f57be

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 168c6f7054534e6a95bbe43afd2baed98eb567f6d5bc4299e9cdc1c5fa878c5a
MD5 a8e9f5986b885ca9b67d7a13faa766d3
BLAKE2b-256 c85b7a5cca71a8d72fde110577318754ee144362a6321e46732f27b2ca98a6fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 18736057c16a3bf8e1dde699ff2d29527091e92ed94d9b742b22a8569c7a80b2
MD5 daf415229aa46907e296f8590de7d624
BLAKE2b-256 0f0f4e1db0443c48200485589031969f3af9e2b9f7b09ca11b060e3bd1b46ad2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9e294289a8357ecb36ca36d067e9cd26c5a73386c33e8d206b846df500a248e7
MD5 6b36b065b30cf342146be7420b80af63
BLAKE2b-256 fdd94031d0b850332c6b3fb73cc1a62b1f96c26fb0a5e14ff1055181f372ad11

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 964a76afe62d39849d7cf3d6b4809b23b7b01a7c52b8bb5cd2237e7e4e7ced94
MD5 5618e7383ae54b42f51c4828ebc19313
BLAKE2b-256 f1a3852c4dd03ab56c4f3443581f188810b128b3107a1933834cf980bbd4a8c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1c5f1b14a2f51115fb397ea3df269fa7eaccb570914a66e74f4f3440e3dda3fc
MD5 7fc12c84faffdcad1da987ef0e096dd4
BLAKE2b-256 a61901e1919afe2f8980758b11fb82127f9c2e37b1e88d7b434cce358c863d78

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ee1d6627724f6555ec595be014b2608efee21ba4f50620cb6dd4cb4892385236
MD5 d911f373e6cd4ade1c7979bf9ad4f787
BLAKE2b-256 ce178490a7fe83a114501e29c28ce8b06cb9946cd802edda1c9d7d395763ff41

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3ca64fa1a747dd54f2de45900f4f3a77acda0ce36445e7b96335d22a77dfeabb
MD5 3480dd09e6acc5a4446445f1f9a485b6
BLAKE2b-256 714f06859b4f4370a8baa534fed11400f3aa83899904a60477aea728dd7d3278

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 10628ea08c6c9253e10d0a08933142ab4fdd7422c4ac60758912ab485c49e070
MD5 9f7da8942d59de4e8ba65f7c8519c1dc
BLAKE2b-256 856cdb90d035a1b28444363442b39b711dc142a7d0b3aeb93fc0a604e9d2c836

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6116bad1cf790f8e723707095cc6c22f6772cfe3fdddd6e5f6968ac594289750
MD5 cb09229ca7ff326ab42f9d84d9493025
BLAKE2b-256 e83e4f65d17082792fd9244d7220b7710c8e5428a6fa1a8399512e5ce076ccd9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 135f9389c57cf29485b6f9ce37992624f031e89d88848fa9c7faf347d3858df5
MD5 55b6265cce860864f2915ae4f89ac117
BLAKE2b-256 8f96d504c4dccb8560a20f2441ab4eea245f662d554cc8e1aa7fb526a8722e12

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ac415835b841bd5659549011fbe8dce3b62b5dc3e912d71a01748ade14f48adf
MD5 690b4feaa521563cac671aad84033f32
BLAKE2b-256 6316ea6f592e68ed6e327273c2dbd4364a768f3783993cbc903fd5f1ce31e677

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e926e3ee8442318292527577cfad123627a2d1554c5c137c95e7b91506147661
MD5 1b17bdcfcf0e33e6cde3e2419f0f311d
BLAKE2b-256 48fd9c420fabc4246d9d5b5248364f1bd77d85ad4a4211fc5766e7a4e16d4cdc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4f7ab6bff46ecc9482b415e839ce6dfc7812a3a53fcae27de2342a323c992f38
MD5 df191c00fa2ceff8f28a3e54826f6952
BLAKE2b-256 4b53d6a5f7a7693329f0fce2a4fa1496b86104604ae45825cc881d171a95eff8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 66f770ed656f13b56c01461333667f654e19377993ceebefc5afec7521f08b16
MD5 304d2fda2fd8b351f9284ce50c857c41
BLAKE2b-256 6c24ab9fdd3fdb00207c2998e1697903b50dc12155e41b002a8be6b808ffb9f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp310-cp310-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3998dfa8ffe57f947fe85715b7f263c10de446ceb6ea0e86f31ed06001d49a07
MD5 639112494edbf7faa7ca4a6edb1c96d9
BLAKE2b-256 f0ac7156ef0782c3a1bffa1f712ae4af629629f5b755ee8e43adb2f84fb4df8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 66d3fb9bc64b084c20a88ed665c8ab6627819b9ad27c17d8f58d2a8292009996
MD5 e242838e82806063bf0c79112839fc23
BLAKE2b-256 f80faa42ae825182a66b42987ad9eb7b7d3490f0ff9bdb4420b0fdce3ce22f54

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8364d41a020a5c755c784d0da2577c004ed753f03980938e6e2a79a6545b997b
MD5 c6c2ea1e8f87371b783f64d573af45b7
BLAKE2b-256 5f348d203dee886156b475b36d48d14661c2017368a18636ba83dd3033c3edcf

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c91aaa59a4440993010c40ef9179293a393905f68cddd832210d19b4bc02be87
MD5 76279794a9bde29ea3e185898c2bc514
BLAKE2b-256 dfdc3d0d6cdf96734d20f1da346ce86663c03c427cc2d187256ed257c9c01795

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp39-cp39-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f659075ebd184ef58e710858f361fc19c421a41e0aaaa558f7aa53659e29fad3
MD5 5c7f30d35103318a556791317274e1a8
BLAKE2b-256 0cc7c255febc0997ad1f5ea6b219d8c65c11a4f6f6183c80f0e5fc06a39d6a73

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9c204edd071366680c9de7fb72e2a58ded1219ef34cd37f27561f4f0f5970878
MD5 1d7b630cdbcf62f4c84cc726b23c3d45
BLAKE2b-256 174df73a17b29b84dd49d9192f8b5d25a80fd631f3d6a944cbd645acf2c90a3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4de458f4954a4a1788b515e83393ae41ca8740a8f6e88443bb4fefce17f1e997
MD5 baf56d9cf71bcdc0847fb9a18ef2fe3a
BLAKE2b-256 a3259b81c74a7c6da240a758a359a50e383da077af8f1e7861b4d20faf63f637

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp38-cp38-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp38-cp38-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 36ecc444d76ce690af7c83d817473bdfae2f45acdbd63a4f53a4193f57ab03a8
MD5 45e46d6f309890d34b0f8308edccbd9f
BLAKE2b-256 124bf56093b43da2d5a4c950767928bc37a4ff1eda8132a246b2b6a7365bd7ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp38-cp38-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 22409ec2cc3609c4f476a253b89a050ccb2fd5b9bb6fa085734d5bb628e4814a
MD5 3a629f7a26889144aad837454699885f
BLAKE2b-256 0db858d37ba61e0545a820f0c23dcdab38facb72147b7ac4344e2f0be8fc8e41

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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

File details

Details for the file pyvpmr-260322-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyvpmr-260322-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 80d43c7fcf4cce4f1fab46e58a42a675475207aa22390188da01c6a4421fa114
MD5 af142e58870859f4d4d228db1fbf3e85
BLAKE2b-256 8827415d0473494f1129944b0d56d540199626f662c0409187299c50c426235a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvpmr-260322-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on TLCFEM/vpmr

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