High-level interface for solving linear systems with hypre, providing a user-friendly way to leverage its functionalities. Key features are:
- YAML Input: Accepts configuration parameters written in the structured and human-readable YAML format.
- Intuitive Interface: Offers a clear and concise API that encapsulates the functionalities of hypre.
- Prototyping: Establishes a quick prototyping framework various solver/preconditioner combinations.
- Testing: Enables the construction of an integrated testing framework, accommodating problems from applications built on hypre.
The instructions for building hypredrive using CMake are given below:
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${PWD}/install \
-B build -S .
cmake --build build --parallel
cmake --build build --target check
cmake --install buildNotes:
- hypre is automatically fetched and built from source if not found.
To use a pre-built HYPRE, specify
-DHYPRE_ROOT=<path>. - To download example datasets, use
cmake --build build --target data. - For full documentation and installation options, see the user's manual.
The user's manual has a detailed section about running examples. For a quick-start, try running the first example from the top-level folder:
$ mpirun -np 1 ./hypredrive examples/ex1.yml
Date and time: YYYY-MM-DD HH:MM:SS
Using HYPRE_DEVELOP_STRING: HYPRE_VERSION_GOES_HERE
Running on 1 MPI rank
------------------------------------------------------------------------------------
general:
use_millisec: on
linear_system:
rhs_filename: data/ps3d10pt7/np1/IJ.out.b
matrix_filename: data/ps3d10pt7/np1/IJ.out.A
solver: pcg
preconditioner: amg
------------------------------------------------------------------------------------
====================================================================================
Solving linear system #0 with 1000 rows and 6400 nonzeros...
====================================================================================
STATISTICS SUMMARY:
+------------+-------------+-------------+-------------+-------------+-------------+
| | LS build | setup | solve | relative | |
| Entry | times [ms] | times [ms] | times [ms] | res. norm | iters |
+------------+-------------+-------------+-------------+-------------+-------------+
| 0 | 2.706 | 2.846 | 1.361 | 4.98e-08 | 6 |
+------------+-------------+-------------+-------------+-------------+-------------+
Date and time: YYYY-MM-DD HH:MM:SS
${HYPREDRIVE_PATH}/hypredrive done!
Check hypredrive's manual here.
Please read CONTRIBUTING for details on contributing to hypredrive, including the process for submitting pull requests to us.
If you are referencing hypredrive in a publication, please cite the following paper:
Magri, V. A. P. (2024). Hypredrive: High-level interface for solving linear systems
with hypre. Journal of Open Source Software,
9(98), 6654. https://doi.org/10.21105/joss.06654
You can easily obtain the citation in APA or BibTeX format directly from GitHub. Navigate to the "Cite this repository" option located in the "About" section. Alternatively, you can find the raw BibTeX format in the comments section of the CITATION file.
This project is licensed under the MIT License - see the LICENSE file for details. All new contributions must be made under this license.
SPDX-License-Identifier: MIT
LLNL-CODE-861860