Sparse-dense operators implementation for Paddle
This module implements coo, csc and csr matrix formats and their inter-ops with dense matrices.
Feel free to open an issue when you feel that something is incorrect.
Requirements
It only needs paddle. It is tested on paddle >= 2.1.0, <= 2.2.0rc1, but should work for any recent paddle versions.
Usage
Most functions are implemented within classes that encapsulate sparse formats: COO, CSR and CSC.
Cross-format operators are implemented in dedicated sub-modules: spgemm and batching.
Supported operations
Conversion
coo -> csc, csr, dense
csc -> coo
csr -> coo
Batch MVP (Matrix-Vector Product) or SpMM (Sparse-Dense Matmul)
Note that in this library, the batch dimensions are appended instead of prepended to the dot dimension (which makes batch MVP essentially regular matmul). Use utils.swap_axes or paddle.transpose when necessary.
coo, dense -> dense
Point-wise
Supports broadcast on the dense side.
coo + coo -> coo
coo * scalar -> coo
coo * dense -> coo (equiv. coo @ diag(vec) if dense is a vector)
SpGEMM (Sparse-Sparse Matmul)
coo, csr -> coo (via row-wise mixed product)
Batching and unbatching
Many batched operations can be efficiently represented via operation on block-diagonal sparse matrix. We also provide batching and unbatching operations for homogeneously-shaped sparse matrices.
For COO matrices, this is constructing (destructing) a block-diagonal COO matrix given (into) several small COO matrices.
If you know the expected shapes of matrices after unbatching you may construct it explicitly by calling BatchingInfo(shapes: [n, 2] numpy array of int). Otherwise: 1) most operations keep shapes, and there is no need to change BatchingInfo; 2) batch_info_dot is provided, for merging info between two batches of matrices that go through SpGeMM to obtain a final batch of matrices.
batch [coo] -> coo
unbatch coo -> [coo]
Installation
pip install paddle-sparse-dense
Caveats
Currently all stuff is implemented with pure python and no CUDA code has been written. As a result, the routines have good run-time performance in general but have a memory overhead of order O(nnz/n).
Metadata
Release files for paddle-sparse-dense 0.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| paddle_sparse_dense-0.0.5-py3-none-any.whl | Python 3 | none | any | Details for paddle_sparse_dense-0.0.5-py3-none-any.whl |
Release files / paddle_sparse_dense-0.0.5-py3-none-any.whl
| Download URL | paddle_sparse_dense-0.0.5-py3-none-any.whl |
|---|---|
| Size | 10.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3af56c574b41246f15b191d16bc67967fc2e510fb7f55d0bcfcf1a796d5d15f9
|
|
BLAKE2b-256 checksum How to use checksums |
6094abb11b82ca96afa7700ac2413552867d0fc41fb43674e7930600882881ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.1 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5
|
Security for paddle-sparse-dense 0.0.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.