Python interface to the Intel MKL Pardiso library to solve large sparse linear systems of equations
Project description
PyPardiso
PyPardiso is a python package to solve large sparse linear systems of equations with the Intel oneAPI Math Kernel Library PARDISO solver, a shared-memory multiprocessing parallel direct sparse solver.
PyPardiso provides the same functionality as SciPy's scipy.sparse.linalg.spsolve for solving the sparse linear system Ax=b
. However in many cases it is significantly faster than SciPy's built-in single-threaded SuperLU solver.
PyPardiso is not a python interface to the PARDISO Solver from the PARDISO 7.2 Solver Project and it also doesn't currently support complex numbers. Check out JuliaSparse/Pardiso.jl for these more advanced use cases.
Installation
PyPardiso runs on Linux, Windows and MacOS. It can be installed with conda or pip. It is recommended to install PyPardiso using a virtual environment.
conda-forge | PyPI |
---|---|
conda install -c conda-forge pypardiso |
pip install pypardiso |
Test complex numbers
import pypardiso
import numpy as np
import scipy.sparse as sp
from scipy.sparse.linalg import spsolve
A = sp.rand(10, 10, density=0.5, format='csr')
b = np.random.rand(10)
#x = pypardiso.spsolve(A, b)
x = pypardiso.spsolve(A, b, solver=pypardiso.PyPardisoSolver(mtype=pypardiso.Matrix_type.RNS))
print(x)
A = A.astype(np.cdouble)
b=b.astype(np.cdouble)
x = pypardiso.spsolve(A, b, solver=pypardiso.PyPardisoSolver(mtype=pypardiso.Matrix_type.CNS))
print(x)
A = sp.rand(10, 10, density=0.5, format='csr',dtype=np.cdouble)
x = pypardiso.spsolve(A, b, solver=pypardiso.PyPardisoSolver(mtype=pypardiso.Matrix_type.CNS))
print(x)
x1 = spsolve(A, b)
print(x1)
print(np.max(np.abs(x-x1)))
Basic usage
How to solve the sparse linear system Ax=b
for x
, where A
is a square, sparse matrix in CSR (or CSC) format and b
is a vector (or matrix):
In [1]: import pypardiso
In [2]: import numpy as np
In [3]: import scipy.sparse as sp
In [4]: A = sp.rand(10, 10, density=0.5, format='csr')
In [5]: A
Out[5]:
<10x10 sparse matrix of type '<class 'numpy.float64'>'
with 50 stored elements in Compressed Sparse Row format>
In [6]: b = np.random.rand(10)
In [7]: x = pypardiso.spsolve(A, b)
In [8]: x
Out[8]:
array([ 0.02918389, 0.59629935, 0.33407289, -0.48788966, 3.44508841,
0.52565687, -0.48420646, 0.22136413, -0.95464127, 0.58297397])
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pypardiso_mopt-0.1.0.tar.gz
.
File metadata
- Download URL: pypardiso_mopt-0.1.0.tar.gz
- Upload date:
- Size: 8.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.11.2 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d21dcaedcfa46454664053043d89867df270139255bb63741749ccc55f067074 |
|
MD5 | eb86184a52fad5b0036fd27f270a698c |
|
BLAKE2b-256 | b53ea6884c3ca7980aae6d8ca24e52d0431d7ffdb115bf5cfda7f3aaaefbfe88 |
File details
Details for the file pypardiso_mopt-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: pypardiso_mopt-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.11.2 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | daf61d8402268e06924b409285ee00bda5510b8c9c826f856bfd26c46a64b667 |
|
MD5 | 454739593ce39c61ef88ef1591296d97 |
|
BLAKE2b-256 | 39371586e380e93eeb7949e1b8b66e95e21b79d0fd365261e4347690fa41b12d |