Skip to main content

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.

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

hipo-1.0.5.20251017-cp314-cp314-win_amd64.whl (13.6 MB view details)

Uploaded CPython 3.14Windows x86-64

hipo-1.0.5.20251017-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

hipo-1.0.5.20251017-cp313-cp313-win_amd64.whl (13.4 MB view details)

Uploaded CPython 3.13Windows x86-64

hipo-1.0.5.20251017-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

hipo-1.0.5.20251017-cp312-cp312-win_amd64.whl (13.4 MB view details)

Uploaded CPython 3.12Windows x86-64

hipo-1.0.5.20251017-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

hipo-1.0.5.20251017-cp311-cp311-win_amd64.whl (13.4 MB view details)

Uploaded CPython 3.11Windows x86-64

hipo-1.0.5.20251017-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

hipo-1.0.5.20251017-cp310-cp310-win_amd64.whl (13.4 MB view details)

Uploaded CPython 3.10Windows x86-64

hipo-1.0.5.20251017-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

hipo-1.0.5.20251017-cp39-cp39-win_amd64.whl (13.4 MB view details)

Uploaded CPython 3.9Windows x86-64

hipo-1.0.5.20251017-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

hipo-1.0.5.20251017-cp38-cp38-win_amd64.whl (13.4 MB view details)

Uploaded CPython 3.8Windows x86-64

hipo-1.0.5.20251017-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

File details

Details for the file hipo-1.0.5.20251017-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for hipo-1.0.5.20251017-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d5ff05ba9b53101eaa6ac0f142f07039b674362866a2467f6d8b92052aeaec68
MD5 8fb62a9ecb71f4e899e8f312b23c949b
BLAKE2b-256 9f06e8cc6ea78d9a473a51a300f80e80a5702625caed976a2456374aa616b241

See more details on using hashes here.

File details

Details for the file hipo-1.0.5.20251017-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for hipo-1.0.5.20251017-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 d6ce4a9fec72a903364ccf89fd9cff128abb4eeb464a68ff2e9d741dc170ad45
MD5 a1a284b54d9d9098fe15e5bd222aca3c
BLAKE2b-256 dae744d62d13c5d4cab7522e7ab1153b13078ce5e7944a25074b1ba968d61389

See more details on using hashes here.

File details

Details for the file hipo-1.0.5.20251017-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for hipo-1.0.5.20251017-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9a96ea77812f48167a954ff30069e74a7b87ae7bb5206a4a4305739f3cd58cbd
MD5 92ac1e62fc25d89036c4485489f44b65
BLAKE2b-256 ca1c53f4777dd288eba7bff181dbf20a6a878e7bedb5f5a900f65229c00b87bf

See more details on using hashes here.

File details

Details for the file hipo-1.0.5.20251017-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for hipo-1.0.5.20251017-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 dd8dd393c03ad75000577d5c5c36e00bd050024c85f1def40673673024717702
MD5 1186dfa19c768516df47e29b44796c27
BLAKE2b-256 ff6dd3cc40776e15941a488a88024c49e912fabb9493240eace6ccb41cf5da30

See more details on using hashes here.

File details

Details for the file hipo-1.0.5.20251017-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for hipo-1.0.5.20251017-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d71e09a73edd8a7115b597cd2bb56ea9dd0fb3160b62c6165160ce08bcd42060
MD5 5b1d09cbef24a0129ad52f719e9dc650
BLAKE2b-256 8a7c78883b3f44a68b5249be0e67d1134545f3bea0a4515e84611b23b363ed12

See more details on using hashes here.

File details

Details for the file hipo-1.0.5.20251017-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for hipo-1.0.5.20251017-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 eea7f3a171f289b510f57633d1b5f31aa08ce02e35805db6c0d55f3512c184bc
MD5 65a5acfc5174f0bd17f9b98c3bc45787
BLAKE2b-256 b6811c2003760c89e23f267ef31ae4d5020294e0e09922363f10700c2f72970c

See more details on using hashes here.

File details

Details for the file hipo-1.0.5.20251017-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for hipo-1.0.5.20251017-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fbd6cafbafb9fb3cf141aa2545375ba90920bf3270abd9acb2f0643f612acc14
MD5 2cbf1446dae69ff5b5d4a7a7b8c59248
BLAKE2b-256 d856fa3fc603034dbb44eeed86997c1c115015bcd309a638aefb7db6bafa13ce

See more details on using hashes here.

File details

Details for the file hipo-1.0.5.20251017-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for hipo-1.0.5.20251017-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 6eb02f08b68796a2636002a73a81e962d8f74caddf603660e7b0e00c7f738fcf
MD5 aebbdd89daac438f4a5a38be2fc7da24
BLAKE2b-256 36f1601408c30c81383dff73319d884ccb01e9731868b1bb02fbce8c53b01b6d

See more details on using hashes here.

File details

Details for the file hipo-1.0.5.20251017-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for hipo-1.0.5.20251017-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 17d85b71c8ccc9186f724985609a32d8423bef31722c0b60a6148a2a2d6bcb4e
MD5 ec6241e6c4a32396286862269feeefbf
BLAKE2b-256 a7ccb80eb94c0b08127656d577269d4d09fb5b3d73d8a0adc74185fc381848fa

See more details on using hashes here.

File details

Details for the file hipo-1.0.5.20251017-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for hipo-1.0.5.20251017-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 ce56e9cdc68499187700825be46fed698ade3b824437bf87c16e2e6d76c217a7
MD5 292ba4bcb3ed2ffda23371b5e734716a
BLAKE2b-256 145384b22f585c2de2aa6752d600296abe3efb410f82c5d4bf6c625eee015ade

See more details on using hashes here.

File details

Details for the file hipo-1.0.5.20251017-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for hipo-1.0.5.20251017-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 de0aeae5345fababb5c7feaa5a0fa9a32f4cd6133e69191f915c86189edee80b
MD5 c25500ad9ef05536e77e21437c5f32bf
BLAKE2b-256 63287970f77e62032ed0cf72d127b273b98fe62ba8c5a7a3bc68822b7a6f7fe3

See more details on using hashes here.

File details

Details for the file hipo-1.0.5.20251017-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for hipo-1.0.5.20251017-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 307052d6a37e9e947b7df1220f071525f2e182e3899768af192b7d8269c374c7
MD5 e68ba144d083c4e6cfe9d6ce9aa87de4
BLAKE2b-256 403edeebea038e4c3d1a77d1789b3e8edfb81924855b6db6adcf039e4c1fc1b8

See more details on using hashes here.

File details

Details for the file hipo-1.0.5.20251017-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for hipo-1.0.5.20251017-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 91e97e929734fbd1f483ded7ed77c9efbf8476aa098780e9b72740c85b504eeb
MD5 24a20d40999b22c0e9e0e277ff235d04
BLAKE2b-256 746b8de7f0426ce96805ee3422b15a9d488a0790d00f6487183cd967196108e1

See more details on using hashes here.

File details

Details for the file hipo-1.0.5.20251017-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for hipo-1.0.5.20251017-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 2cd8b0e2ad69edd9615b05e7200c22fbf45db2c711ab50d5f08e8470eb3808bd
MD5 cc23c37a30c26e540651ab9fc31b0236
BLAKE2b-256 6b51f7cc350757d3804704d94800d1b8fc7f88ae4e6db9837f91fd0a69a3ea35

See more details on using hashes here.

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