Software:Lis (linear algebra library)
Stable release | 2.1.3
/ June 14, 2023 |
---|---|
Operating system | Cross-platform |
Available in | C, Fortran |
Type | Software library |
License | New BSD License |
Website | www.ssisc.org/lis/ |
Lis (Library of Iterative Solvers for linear systems, pronounced [lis]) is a scalable parallel software library for solving discretized linear equations and eigenvalue problems that mainly arise in the numerical solution of partial differential equations by using iterative methods.[1][2][3] Although it is designed for parallel computers, the library can be used without being conscious of parallel processing.
Features
Lis provides facilities for:
- Automatic program configuration
- NUMA aware hybrid implementation with MPI and OpenMP
- Exchangeable dense and sparse matrix storage formats
- Basic linear algebra operations for dense and sparse matrices
- Parallel iterative methods for linear equations and eigenvalue problems
- Parallel preconditioners for iterative methods
- Quadruple precision floating point operations
- Performance analysis
- Command-line interface to solvers and benchmarks
Example
A C program to solve the linear equation [math]\displaystyle{ Ax=b }[/math] is written as follows:
#include <stdio.h> #include "lis_config.h" #include "lis.h" LIS_INT main(LIS_INT argc, char* argv[]) { LIS_MATRIX A; LIS_VECTOR b, x; LIS_SOLVER solver; LIS_INT iter; double time; lis_initialize(&argc, &argv); lis_matrix_create(LIS_COMM_WORLD, &A); lis_vector_create(LIS_COMM_WORLD, &b); lis_vector_create(LIS_COMM_WORLD, &x); lis_input_matrix(A, argv[1]); lis_input_vector(b, argv[2]); lis_vector_duplicate(A, &x); lis_solver_create(&solver); lis_solver_set_optionC(solver); lis_solve(A, b, x, solver); lis_solver_get_iter(solver, &iter); lis_solver_get_time(solver, &time); printf("number of iterations = %d\n", iter); printf("elapsed time = %e\n", time); lis_output_vector(x, LIS_FMT_MM, argv[3]); lis_solver_destroy(solver); lis_matrix_destroy(A); lis_vector_destroy(b); lis_vector_destroy(x); lis_finalize(); return 0; }
System requirements
The installation of Lis requires a C compiler. The Fortran interface requires a Fortran compiler, and the algebraic multigrid preconditioner requires a Fortran 90 compiler.[4] For parallel computing environments, an OpenMP or MPI library is required. Both the Matrix Market and Harwell-Boeing formats are supported to import and export user data.
Packages that use Lis
- Gerris
- OpenModelica
- OpenGeoSys
- SICOPOLIS
- STOMP
- Diablo
- Kiva
- Notus
- Solis
- GeMA
- openCFS
- numgeo
- freeCappuccino
- Andromeda
- Yelmo
See also
- List of numerical libraries
- Conjugate gradient method
- Biconjugate gradient stabilized method (BiCGSTAB)
- Generalized minimal residual method (GMRES)
- Eigenvalue algorithm
- Lanczos algorithm
- Arnoldi iteration
- Krylov subspace
- Multigrid method
References
- ↑ Akira Nishida (2010). "Experience in Developing an Open Source Scalable Software Infrastructure in Japan". Computational Science and Its Applications – ICCSA 2010. Lecture Notes in Computer Science 6017. 6017. Springer. pp. 87–98. doi:10.1007/978-3-642-12165-4_36. ISBN 978-3-642-12164-7.
- ↑ Hisashi Kotakemori; Hidehiko Hasegawa; Tamito Kajiyama; Akira Nukada; Reiji Suda; Akira Nishida (2008). "Performance Evaluation of Parallel Sparse Matrix-Vector Products on SGI Altix 3700". OpenMP Shared Memory Parallel Programming. Lecture Notes in Computer Science 4315. Springer. pp. 153–163. doi:10.1007/978-3-540-68555-5_13. ISBN 978-3-540-68554-8.
- ↑ Hisashi Kotakemori; Hidehiko Hasegawa; Akira Nishida (2005). "Performance Evaluation of a Parallel Iterative Method Library using OpenMP". Proceedings of the 8th International Conference on High Performance Computing in Asia Pacific Region (HPC Asia 2005). IEEE. pp. 432–436. doi:10.1109/HPCASIA.2005.74. ISBN 0-7695-2486-9.
- ↑ Akihiro Fujii; Akira Nishida; Yoshio Oyanagi (2005). "Evaluation of Parallel Aggregate Creation Orders : Smoothed Aggregation Algebraic Multigrid Method". High Performance Computational Science and Engineering. Springer. pp. 99–122. doi:10.1007/0-387-24049-7_6. ISBN 1-4419-3684-X.
External links
- Development repository on GitHub
- Prof. Jack Dongarra's freely available linear algebra software page
- Netlib repository (Courtesy of Netlib Project)
- Fedora packages (Courtesy of Fedora Project)
- Gentoo packages (Courtesy of Gentoo Linux Project)
- AUR packages (Courtesy of Arch Linux Community)
- FreeBSD packages (Courtesy of FreeBSD Project)
- Packages for macOS (Homebrew) (Courtesy of Homebrew Project)
- Packages for macOS (MacPorts) (Courtesy of MacPorts Project)
- Packages for Windows (Courtesy of WHPC Project)
- Packages for Mingw-w64 (Courtesy of Mingw-w64 Project)
- Spack packages (Courtesy of Lawrence Livermore National Laboratory)
Original source: https://en.wikipedia.org/wiki/Lis (linear algebra library).
Read more |