Skip to main content

Python interface to the Intel MKL Pardiso library to solve large sparse linear systems of equations

Project description

pypardiso-tests

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-forge version PyPI version
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


Download files

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

Source Distribution

pypardiso_mopt-0.1.0.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

pypardiso_mopt-0.1.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

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

Hashes for pypardiso_mopt-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d21dcaedcfa46454664053043d89867df270139255bb63741749ccc55f067074
MD5 eb86184a52fad5b0036fd27f270a698c
BLAKE2b-256 b53ea6884c3ca7980aae6d8ca24e52d0431d7ffdb115bf5cfda7f3aaaefbfe88

See more details on using hashes here.

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

Hashes for pypardiso_mopt-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 daf61d8402268e06924b409285ee00bda5510b8c9c826f856bfd26c46a64b667
MD5 454739593ce39c61ef88ef1591296d97
BLAKE2b-256 39371586e380e93eeb7949e1b8b66e95e21b79d0fd365261e4347690fa41b12d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page