Physics Informed Preconditioners and Solvers
Project description
High performance Intelligent Preconditioning Operators
Introduction
HIPO, short for High performance Intelligent Preconditioning Operators, is a large-scale linear equation solver package. It supports distributed heterogeneous parallel computing (MPI+CPU/GPU/DCU/...) and provides physics-informed preconditioners for solvers, especially physics-informed AMG preconditioners. It is dedicated to stably and efficiently solving large-scale linear algebraic equations derived from the discretization of mathematical and physical models.
Install
$ pip install hipo
Usage
use the following command to get the help message:
$ python -m hipo help
copy the example out
$ export HIPO_PATH=path_to_hipo
$ cp -r $HIPO_PATH/examples .
then run the example:
$ python solver.py -fnA thermal1.mtx -fnb thermal1_b.mtx solver.json -device cuda:0
to run the distributed verison,
# solve the laplace equation defined by testcase in solver.json
$ $HIPO_PATH/bin/mpirun -n 2 python solver.py solver.json -device cpu
# solve the equation in matrix market format
$ $HIPO_PATH/bin/mpirun -n 2 python solver.py -fnA thermal1.mtx -fnb thermal1_b.mtx solver.json -device cuda:0
The following python script shows the above solver.py. read matrix A and vector b from MatrixMarket files, using CUDA to solve Ax=b.
# solver.py
import hipo
import sys, re, os
#import json
import commentjson as json
fnA = sys.argv[1]
fnb = sys.argv[2]
config = sys.argv[3]
params = json.load(open(config))
A = hipo.ParCSRMatrix()
A.loadFromFile(fnA)
b = hipo.ParMatrix()
b.loadFromFile(fnb)
if b.getSize() == 0:
b.resize(A.getRows(), 1)
b.fill(1)
# transfer the matrix and vector to gpu 0.
dev = hipo.Device("cuda:0")
A = A.toDevice(dev)
b = b.toDevice(dev)
# use gpu 0 to finish the computation.
precond = hipo.createPrecond(params["preconditioner"])
precond.setup(A)
solver = hipo.createSolver(params["solver"])
solver.setup(A)
out = solver.solve(precond, A, b)
Solvers and Preconditioners
use
$ python -m hipo info
to show the builtin solvers, preconditioners, smoothers, level_transfers.
Compatibility
-
OS version
HIPO support Linux, Windows. MacOS version will be available later.
-
PYTHON version
HIPO support python version 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14.
-
GPU/CUDA version
HIPO support NVIDIA GPU, with CUDA Version >= 12.4.
-
DCU version
please contact us to compile the specified version.
-
DISTRIBUTED version
hipo is compiled with MPICH on linux, and MSMPI on windows. HIPO does not depend on vendor MPI directly, but depends on MPI-proxy called proxy_mpi, which is a binary compatible implementation for certern MPI versions. so you can use you own MPI by compile the proxy_mpi for your MPI version:
$ cd $HIPO_PATH/mpi-src
$ bash build.sh
$ cp libhipo_mpi.so $HIPO_PATH/lib/
License
This software is free software distributed under the Lesser General Public License or LGPL, version 3.0 or any later versions. This software distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with HIPO. If not, see http://www.gnu.org/licenses/.
This software optionally depends on HYPRE, their license files are located in the package.
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 Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hipo-1.0.5.20251017-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: hipo-1.0.5.20251017-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 13.6 MB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5ff05ba9b53101eaa6ac0f142f07039b674362866a2467f6d8b92052aeaec68
|
|
| MD5 |
8fb62a9ecb71f4e899e8f312b23c949b
|
|
| BLAKE2b-256 |
9f06e8cc6ea78d9a473a51a300f80e80a5702625caed976a2456374aa616b241
|
File details
Details for the file hipo-1.0.5.20251017-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: hipo-1.0.5.20251017-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 33.2 MB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6ce4a9fec72a903364ccf89fd9cff128abb4eeb464a68ff2e9d741dc170ad45
|
|
| MD5 |
a1a284b54d9d9098fe15e5bd222aca3c
|
|
| BLAKE2b-256 |
dae744d62d13c5d4cab7522e7ab1153b13078ce5e7944a25074b1ba968d61389
|
File details
Details for the file hipo-1.0.5.20251017-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: hipo-1.0.5.20251017-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 13.4 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a96ea77812f48167a954ff30069e74a7b87ae7bb5206a4a4305739f3cd58cbd
|
|
| MD5 |
92ac1e62fc25d89036c4485489f44b65
|
|
| BLAKE2b-256 |
ca1c53f4777dd288eba7bff181dbf20a6a878e7bedb5f5a900f65229c00b87bf
|
File details
Details for the file hipo-1.0.5.20251017-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: hipo-1.0.5.20251017-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 33.2 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd8dd393c03ad75000577d5c5c36e00bd050024c85f1def40673673024717702
|
|
| MD5 |
1186dfa19c768516df47e29b44796c27
|
|
| BLAKE2b-256 |
ff6dd3cc40776e15941a488a88024c49e912fabb9493240eace6ccb41cf5da30
|
File details
Details for the file hipo-1.0.5.20251017-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: hipo-1.0.5.20251017-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 13.4 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d71e09a73edd8a7115b597cd2bb56ea9dd0fb3160b62c6165160ce08bcd42060
|
|
| MD5 |
5b1d09cbef24a0129ad52f719e9dc650
|
|
| BLAKE2b-256 |
8a7c78883b3f44a68b5249be0e67d1134545f3bea0a4515e84611b23b363ed12
|
File details
Details for the file hipo-1.0.5.20251017-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: hipo-1.0.5.20251017-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 33.2 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eea7f3a171f289b510f57633d1b5f31aa08ce02e35805db6c0d55f3512c184bc
|
|
| MD5 |
65a5acfc5174f0bd17f9b98c3bc45787
|
|
| BLAKE2b-256 |
b6811c2003760c89e23f267ef31ae4d5020294e0e09922363f10700c2f72970c
|
File details
Details for the file hipo-1.0.5.20251017-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: hipo-1.0.5.20251017-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 13.4 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbd6cafbafb9fb3cf141aa2545375ba90920bf3270abd9acb2f0643f612acc14
|
|
| MD5 |
2cbf1446dae69ff5b5d4a7a7b8c59248
|
|
| BLAKE2b-256 |
d856fa3fc603034dbb44eeed86997c1c115015bcd309a638aefb7db6bafa13ce
|
File details
Details for the file hipo-1.0.5.20251017-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: hipo-1.0.5.20251017-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 33.2 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6eb02f08b68796a2636002a73a81e962d8f74caddf603660e7b0e00c7f738fcf
|
|
| MD5 |
aebbdd89daac438f4a5a38be2fc7da24
|
|
| BLAKE2b-256 |
36f1601408c30c81383dff73319d884ccb01e9731868b1bb02fbce8c53b01b6d
|
File details
Details for the file hipo-1.0.5.20251017-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: hipo-1.0.5.20251017-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 13.4 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17d85b71c8ccc9186f724985609a32d8423bef31722c0b60a6148a2a2d6bcb4e
|
|
| MD5 |
ec6241e6c4a32396286862269feeefbf
|
|
| BLAKE2b-256 |
a7ccb80eb94c0b08127656d577269d4d09fb5b3d73d8a0adc74185fc381848fa
|
File details
Details for the file hipo-1.0.5.20251017-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: hipo-1.0.5.20251017-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 33.2 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce56e9cdc68499187700825be46fed698ade3b824437bf87c16e2e6d76c217a7
|
|
| MD5 |
292ba4bcb3ed2ffda23371b5e734716a
|
|
| BLAKE2b-256 |
145384b22f585c2de2aa6752d600296abe3efb410f82c5d4bf6c625eee015ade
|
File details
Details for the file hipo-1.0.5.20251017-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: hipo-1.0.5.20251017-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 13.4 MB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de0aeae5345fababb5c7feaa5a0fa9a32f4cd6133e69191f915c86189edee80b
|
|
| MD5 |
c25500ad9ef05536e77e21437c5f32bf
|
|
| BLAKE2b-256 |
63287970f77e62032ed0cf72d127b273b98fe62ba8c5a7a3bc68822b7a6f7fe3
|
File details
Details for the file hipo-1.0.5.20251017-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: hipo-1.0.5.20251017-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 33.2 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
307052d6a37e9e947b7df1220f071525f2e182e3899768af192b7d8269c374c7
|
|
| MD5 |
e68ba144d083c4e6cfe9d6ce9aa87de4
|
|
| BLAKE2b-256 |
403edeebea038e4c3d1a77d1789b3e8edfb81924855b6db6adcf039e4c1fc1b8
|
File details
Details for the file hipo-1.0.5.20251017-cp38-cp38-win_amd64.whl.
File metadata
- Download URL: hipo-1.0.5.20251017-cp38-cp38-win_amd64.whl
- Upload date:
- Size: 13.4 MB
- Tags: CPython 3.8, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91e97e929734fbd1f483ded7ed77c9efbf8476aa098780e9b72740c85b504eeb
|
|
| MD5 |
24a20d40999b22c0e9e0e277ff235d04
|
|
| BLAKE2b-256 |
746b8de7f0426ce96805ee3422b15a9d488a0790d00f6487183cd967196108e1
|
File details
Details for the file hipo-1.0.5.20251017-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: hipo-1.0.5.20251017-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 33.2 MB
- Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2cd8b0e2ad69edd9615b05e7200c22fbf45db2c711ab50d5f08e8470eb3808bd
|
|
| MD5 |
cc23c37a30c26e540651ab9fc31b0236
|
|
| BLAKE2b-256 |
6b51f7cc350757d3804704d94800d1b8fc7f88ae4e6db9837f91fd0a69a3ea35
|