Skip to main content

This package boosts a sparse matrix multiplication followed by selecting the top-n multiplication

Project description

sparse_dot_topn

MacOS Linux Windows License ruff

Release_date PyPi Downloads

sparse_dot_topn provides a fast way to performing a sparse matrix multiplication followed by top-n multiplication result selection.

Comparing very large feature vectors and picking the best matches, in practice often results in performing a sparse matrix multiplication followed by selecting the top-n multiplication results.

sparse_dot_topn provides a (parallelised) sparse matrix multiplication implementation that integrates selecting the top-n values, resulting in a significantly lower memory footprint and improved performance. On Apple M2 Pro over two 20k x 193k TF-IDF matrices sparse_dot_topn can be up to 6 times faster when retaining the top 10 values per row and utilising 8 cores. See the benchmark directory for details.

Usage

sp_matmul_topn supports {CSR, CSC, COO} matrices with {32, 64}bit {int, float} data. Note that COO and CSC inputs are converted to the CSR format and are therefore slower. Two options to further reduce memory requirements are threshold and density. Optionally, the values can be sorted such that the first column for a given row contains the largest value. Note that sp_matmul_topn(A, B, top_n=B.shape[1]) is equal to sp_matmul(A, B) and A.dot(B).

If you are migrating from v0.* please see the migration guide below for details.

import scipy.sparse as sparse
from sparse_dot_topn import sp_matmul, sp_matmul_topn

A = sparse.random(1000, 100, density=0.1, format="csr")
B = sparse.random(100, 2000, density=0.1, format="csr")

# Compute C and retain the top 10 values per row
C = sp_matmul_topn(A, B, top_n=10)

# or paralleslised matrix multiplication without top-n selection
C = sp_matmul(A, B, n_threads=2)
# or with top-n selection
C = sp_matmul_topn(A, B, top_n=10, n_threads=2)

# If you are only interested in values above a certain threshold
C = sp_matmul_topn(A, B, top_n=10, threshold=0.8)

# If you set the threshold we cannot easily determine the number of non-zero
# entries beforehand. Therefore, we allocate memory for `ceil(top_n * A.shap[0] * density)`
# non-zero entries. You can set the expected density to reduce the amount pre-allocated
# entries. Note that if we allocate too little an expensive copy(ies) will need to hapen.
C = sp_matmul_topn(A, B, top_n=10, threshold=0.8, density=0.1)

Installation

sparse_dot_topn provides wheels for CPython 3.9 to 3.14 for:

  • Windows (64bit)
  • Linux (64bit)
  • MacOS (x86 and ARM)
pip install sparse_dot_topn

sparse_dot_topn relies on a C++ extension for the computationally intensive multiplication routine. Note that the wheels vendor/ships OpenMP with the extension to provide parallelisation out-of-the-box. If you run into any issues with OpenMP see INSTALLATION.md for help or run the function without specifying the n_threads argument.

Installing from source requires a C++17 compatible compiler. If you have a compiler available it is advised to install without the wheel as this enables architecture specific optimisations.

You can install from source using:

pip install sparse_dot_topn --no-binary sparse_dot_topn

Build configuration

sparse_dot_topn provides some configuration options when building from source. Building from source can enable architecture specific optimisations and is recommended for those that have a C++ compiler installed. See INSTALLATION.md for details.

Distributing the top-n multiplication of two large O(10M+) sparse matrices over a cluster

The top-n multiplication of two large O(10M+) sparse matrices can be broken down into smaller chunks. For example, one may want to split sparse matrices into matrices with just 1M rows, and do the the (top-n) multiplication of all those matrix pairs. Reasons to do this are to reduce the memory footprint of each pair, and to employ available distributed computing power.

The pairs can be distributed and calculated over a cluster (eg. we use a spark cluster). The resulting matrix-products are then zipped and stacked in order to reproduce the full matrix product.

Here's an example how to do this, where we are matching 1000 rows in sparse matrix A against 600 rows in sparse matrix B, and both A and B are split into chunks.

import numpy as np
import scipy.sparse as sparse
from sparse_dot_topn import sp_matmul_topn, zip_sp_matmul_topn

# 1a. Example matching 1000 rows in sparse matrix A against 600 rows in sparse matrix B.
A = sparse.random(1000, 2000, density=0.1, format="csr", dtype=np.float32, random_state=rng)
B = sparse.random(600, 2000, density=0.1, format="csr", dtype=np.float32, random_state=rng)

# 1b. Reference full matrix product with top-n
C_ref = sp_matmul_topn(A, B.T, top_n=10, threshold=0.01, sort=True)

# 2a. Split the sparse matrices. Here A is split into three parts, and B into five parts.
As = [A[i*200:(i+1)*200] for i in range(5)]
Bs = [B[:100], B[100:300], B[300:]]

# 2b. Perform the top-n multiplication of all sub-matrix pairs, here in a double loop.
# E.g. all sub-matrix pairs could be distributed over a cluster and multiplied there.
Cs = [[sp_matmul_topn(Aj, Bi.T, top_n=10, threshold=0.01, sort=True) for Bi in Bs] for Aj in As]

# 2c. top-n zipping of the C-matrices, done over the index of the B sub-matrices.
Czip = [zip_sp_matmul_topn(top_n=10, C_mats=Cis) for Cis in Cs]

# 2d. stacking over zipped C-matrices, done over the index of the A sub-matrices
# The resulting matrix C equals C_ref.
C = sparse.vstack(Czip, dtype=np.float32)

Migrating to v1.

sparse_dot_topn v1 is a significant change from v0.* with a new bindings and API. The new version adds support for CPython 3.12 and now supports both ints as well as floats. Internally we switched to a max-heap to collect the top-n values which significantly reduces memory-footprint. The former implementation had O(n_columns) complexity for the top-n selection where we now have O(top-n) complexity. awesome_cossim_topn has been deprecated and will be removed in a future version.

Users should switch to sp_matmul_topn which is largely compatible:

For example:

C = awesome_cossim_topn(A, B, ntop=10)

can be replicated using:

C = sp_matmul_topn(A, B, top_n=10, threshold=0.0, sort=True)

API changes

  1. ntop has been renamed to topn
  2. lower_bound has been renamed to threshold
  3. use_threads and n_jobs have been combined into n_threads
  4. return_best_ntop option has been removed
  5. test_nnz_max option has been removed
  6. B is auto-transposed when its shape is not compatible but its transpose is.

The output of return_best_ntop can be replicated with:

C = sp_matmul_topn(A, B, top_n=10)
best_ntop = np.diff(C.indptr).max()

Default changes

  1. threshold no longer 0.0 but disabled by default

This enables proper functioning for matrices that contain negative values. Additionally a different data-structure is used internally when collecting non-zero results that has a much lower memory-footprint than previously. This means that the effect of the threshold parameter on performance and memory requirements is negligible. If the threshold is None we pre-compute the number of non-zero entries, this can significantly reduce the required memory at a mild (~10%) performance penalty.

  1. sort = False, the result matrix is no longer sorted by default

The matrix is returned with the same column order as if not filtering of the top-n results has taken place. This means that when you set top_n equal to the number of columns of B you obtain the same result as normal multiplication, i.e. sp_matmul_topn(A, B, top_n=B.shape[1]) is equal to A.dot(B).

Contributing

Contributions are very welcome, please see CONTRIBUTING for details.

Contributors

This package was developed and is maintained by authors (previously) affiliated with ING Analytics Wholesale Banking Advanced Analytics. The original implementation was based on modified version of Scipy's CSR multiplication implementation. You can read about it in a blog (mirror) written by Zhe Sun.

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

sparse_dot_topn-1.2.0.tar.gz (45.6 kB view details)

Uploaded Source

Built Distributions

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

sparse_dot_topn-1.2.0-cp312-abi3-win_amd64.whl (411.3 kB view details)

Uploaded CPython 3.12+Windows x86-64

sparse_dot_topn-1.2.0-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (309.6 kB view details)

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

sparse_dot_topn-1.2.0-cp312-abi3-macosx_12_0_x86_64.whl (496.6 kB view details)

Uploaded CPython 3.12+macOS 12.0+ x86-64

sparse_dot_topn-1.2.0-cp312-abi3-macosx_12_0_arm64.whl (435.5 kB view details)

Uploaded CPython 3.12+macOS 12.0+ ARM64

sparse_dot_topn-1.2.0-cp311-cp311-win_amd64.whl (412.9 kB view details)

Uploaded CPython 3.11Windows x86-64

sparse_dot_topn-1.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (309.7 kB view details)

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

sparse_dot_topn-1.2.0-cp311-cp311-macosx_12_0_x86_64.whl (497.9 kB view details)

Uploaded CPython 3.11macOS 12.0+ x86-64

sparse_dot_topn-1.2.0-cp311-cp311-macosx_12_0_arm64.whl (437.6 kB view details)

Uploaded CPython 3.11macOS 12.0+ ARM64

sparse_dot_topn-1.2.0-cp310-cp310-win_amd64.whl (413.0 kB view details)

Uploaded CPython 3.10Windows x86-64

sparse_dot_topn-1.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (309.8 kB view details)

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

sparse_dot_topn-1.2.0-cp310-cp310-macosx_12_0_x86_64.whl (498.1 kB view details)

Uploaded CPython 3.10macOS 12.0+ x86-64

sparse_dot_topn-1.2.0-cp310-cp310-macosx_12_0_arm64.whl (437.7 kB view details)

Uploaded CPython 3.10macOS 12.0+ ARM64

sparse_dot_topn-1.2.0-cp39-cp39-win_amd64.whl (414.1 kB view details)

Uploaded CPython 3.9Windows x86-64

sparse_dot_topn-1.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (309.9 kB view details)

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

sparse_dot_topn-1.2.0-cp39-cp39-macosx_12_0_x86_64.whl (498.1 kB view details)

Uploaded CPython 3.9macOS 12.0+ x86-64

sparse_dot_topn-1.2.0-cp39-cp39-macosx_12_0_arm64.whl (437.7 kB view details)

Uploaded CPython 3.9macOS 12.0+ ARM64

File details

Details for the file sparse_dot_topn-1.2.0.tar.gz.

File metadata

  • Download URL: sparse_dot_topn-1.2.0.tar.gz
  • Upload date:
  • Size: 45.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sparse_dot_topn-1.2.0.tar.gz
Algorithm Hash digest
SHA256 ff648e3959b00bbe41fbf28ff9d44f13c7972403cb307f4729ef9de903958a68
MD5 f5f3ec9b93301b0297753d7c2d2326ee
BLAKE2b-256 56161b2e3c206184796c3b47c171bbe7353a5b247ed0021a2dc2e9ce4d7c1b5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0.tar.gz:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp312-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 ad75cfe03dd4489de90716b353b265949ee36ff9146892b6d90191185d600104
MD5 257489d2605b4b94ae4cd698fcf88203
BLAKE2b-256 7f03af129ec57b5112495e5bc311d1cde38dc6dca0797ae34b2454a0c5b7748c

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp312-abi3-win_amd64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ccfb3a37b5ecce7ac4380a19eebd3045440ecb9cb2958312b133944452329862
MD5 1dacf02a2658b7fc547067df0581ab77
BLAKE2b-256 5e11a7d64157a43c81b097d8c2b268181944134e981faf85e9ff525454cefa48

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp312-abi3-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp312-abi3-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 b147e3053609caf464825c07a5ff34f93f9c280eb04d277a78d98be1125b1ef3
MD5 9f4abf000bab28af78cddef015b91976
BLAKE2b-256 34f4e1b09566b48d91e67a7d60284faa81b701b54964a0dbe49ce48c5c1d50d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp312-abi3-macosx_12_0_x86_64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp312-abi3-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp312-abi3-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 96c8f005bc59371fd70f9e94df5a8b6f2f082c262af3837d105a9eb5b478ddc2
MD5 cb35a53edaf1d948fe85d52d151e77b7
BLAKE2b-256 2265da9508f752584cf8748871f63496a3070d112c32b09d64233476855f9e7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp312-abi3-macosx_12_0_arm64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6ee1a0f3eb8c3e9d14e7c8059bb6f0dd45f2601c9722b01bcf92f1476dec2033
MD5 3da5c5c3386a97ddcba96299c5882a58
BLAKE2b-256 cd9532ce1807a049e549fd3cf226933e4d1bf741a2d8e2ce697d97a58b59dae3

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp311-cp311-win_amd64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 20816830e53fb0bcc5f55b062c469a05ce72ef4dd56a977814784943611457af
MD5 eae6d36f0918eab73161e216f15cc44f
BLAKE2b-256 aaf8d94e68562d84749636a44d3739d3f90865474c0ae4c7bd8fa56420ea9a8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp311-cp311-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp311-cp311-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 31927392c81b12260ab67691f6fa314eb8f18dc0f21abe45b5f20ba04ed9cc47
MD5 be10454ccc712257d93969f6d5e06a6d
BLAKE2b-256 ac458b8394830e3fd82457d90feca4fc1c8136aa5ed76777328c690134232fb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp311-cp311-macosx_12_0_x86_64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp311-cp311-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp311-cp311-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 122028f90d93c927650bcf09d3272b269fa5d95b72b43f36bc09ec5b0c662d05
MD5 86c608156ef6ecb433ad7db1cceeadb8
BLAKE2b-256 91528252a7f04f77dac3ca63d77a471f2a11b1a2c1eb6530fd7ab8880528d4f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp311-cp311-macosx_12_0_arm64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2ff423734e295d17ee350df7662b5ef9986101d2ac19822bf1f6d33e0eb2842b
MD5 6c886cdf94f6e7def91db873f492e96c
BLAKE2b-256 d0039c68ef56bca8a35b8de57ecb68102222c4be727095195bd1716bb6781817

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp310-cp310-win_amd64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e0f2e0aaf527fd5935dd75743cfed501166a6352fdd744d1be63addbb44a9a01
MD5 df5140dc6ecb2ac04297bc146ce38b68
BLAKE2b-256 d240e350643e157cccd82ce38bd1b340a17cbb8158d0804ab47f828685196c65

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp310-cp310-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp310-cp310-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 07cd59d788938bfc5aea64a1f5023107c8884ec2280d3fb6fd6f19e1b2a81723
MD5 deb4f7a799bba2df9f9334b13e204b40
BLAKE2b-256 438dc0e9f44adad179a74d16b92711b6ddfeef769cbaf91b7d02aa1a2a351a32

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp310-cp310-macosx_12_0_x86_64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp310-cp310-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp310-cp310-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 111a46d258a0fa5919e62dcc56128980f2c6a25bbe7b852b4c5be06e57afe29b
MD5 a90b4cc4789bb780da0a27dfdf9dd5ea
BLAKE2b-256 b52cd7d05523cf1133f8f1ce93af6cc3b59b94bd9d85b6d53be82945c92c57c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp310-cp310-macosx_12_0_arm64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 da415c7fbb527f72281ce1eb090c42d92cacbd48ee7cf517f028fb6ea757259d
MD5 47252e02437cfbf8a82134bd956ad230
BLAKE2b-256 4061e6f8044ff1642a2d10a3493a8e3de04a1e8ea318933ef7077b259c79923f

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp39-cp39-win_amd64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ce1764ae752d4aad305f7079329857564ad4fda311f15c2034315adc4757dbaa
MD5 03f968027e506645701a206b2e38c4e8
BLAKE2b-256 2cdf1ccdfeb2073e5ec59576062f7f2b7e7f1049153a7c7ccad290e832d24f79

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp39-cp39-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp39-cp39-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 60c4ae00bc17231b4dc093789d1fe0cfdc234a0f90d5074b54eef69d54932a73
MD5 d229545787de1c0544622dff76293ace
BLAKE2b-256 b75add8cc7b43e27b455d21e0443f1ac81baa9859d3695e2a13f29ee6b33ea6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp39-cp39-macosx_12_0_x86_64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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

File details

Details for the file sparse_dot_topn-1.2.0-cp39-cp39-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for sparse_dot_topn-1.2.0-cp39-cp39-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 47f15dd824ea20864b320092b96a4affdc1a1da831615450d3314deeeea126a2
MD5 76694b5e7b5e42f61d7d2bde2a9d87f5
BLAKE2b-256 60152867aa9f04a9e513f1f21d449907b2e83b328966125ac315aaf9af8deb32

See more details on using hashes here.

Provenance

The following attestation bundles were made for sparse_dot_topn-1.2.0-cp39-cp39-macosx_12_0_arm64.whl:

Publisher: wheels.yml on ing-bank/sparse_dot_topn

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