Lis (linear algebra library)
{{Short description|Parallel software library for linear algebra}}
{{Infobox software
| name = Lis
| title =
| logo = Irises screen 1.jpg
| logo size = 160px
| logo caption =
| screenshot =
| caption =
| collapsible =
| author =
| developer =
| released =
| discontinued =
| latest release version = 2.1.7
| latest release date = {{Start date|2024|12|17}}
| latest preview version =
| latest preview date =
| operating system = Cross-platform
| platform =
| size =
| genre = Software library
| license = New BSD License
| website = [https://www.ssisc.org/lis/index.en.html www.ssisc.org/lis/]
}}
Lis (Library of Iterative Solvers for linear systems; pronounced lis]) is a scalable parallel software library to solve discretized linear equations and eigenvalue problems that mainly arise from the numerical solution of partial differential equations using iterative methods.{{Cite book
|author=Akira Nishida
|year=2010
|chapter=Experience in Developing an Open Source Scalable Software Infrastructure in Japan
|title=Computational Science and Its Applications – ICCSA 2010
|volume=6017
|series=Lecture Notes in Computer Science 6017
|pages=87–98
|publisher=Springer
|doi=10.1007/978-3-642-12165-4_36
|isbn=978-3-642-12164-7
|author1=Hisashi Kotakemori |author2=Hidehiko Hasegawa |author3=Tamito Kajiyama |author4=Akira Nukada |author5=Reiji Suda |author6=Akira Nishida |name-list-style=amp |year=2008
|chapter=Performance Evaluation of Parallel Sparse Matrix-Vector Products on SGI Altix 3700
|title=OpenMP Shared Memory Parallel Programming
|series=Lecture Notes in Computer Science 4315
|pages=153–163
|publisher=Springer
|doi=10.1007/978-3-540-68555-5_13
|isbn=978-3-540-68554-8
|author1=Hisashi Kotakemori |author2=Hidehiko Hasegawa |author3=Akira Nishida |name-list-style=amp |year=2005
|chapter=Performance Evaluation of a Parallel Iterative Method Library using OpenMP
|title=Proceedings of the 8th International Conference on High Performance Computing in Asia Pacific Region (HPC Asia 2005)
|pages=432–436
|publisher=IEEE
|doi=10.1109/HPCASIA.2005.74
|isbn=0-7695-2486-9
|s2cid=6402585 }} 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 is written as follows:
- include
- 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
Installing Lis requires a C compiler. If you wish to use the Fortran interface, a Fortran compiler is needed, and the algebraic multigrid preconditioner requires a Fortran 90 compiler.{{Cite book
|author1=Akihiro Fujii |author2=Akira Nishida |author3=Yoshio Oyanagi |name-list-style=amp |year=2005
|chapter=Evaluation of Parallel Aggregate Creation Orders : Smoothed Aggregation Algebraic Multigrid Method
|title=High Performance Computational Science and Engineering
|pages=99–122
|publisher=Springer
|doi=10.1007/0-387-24049-7_6
|isbn=1-4419-3684-X
|s2cid=118053459 }}
For parallel computing environments, an OpenMP or MPI library is necessary. Lis supports both the Matrix Market and Harwell-Boeing formats for importing and exporting user data.
Packages that use Lis
- Gerris
- OpenModelica
- [http://www.opengeosys.org/ OpenGeoSys]
- [http://www.sicopolis.net/ SICOPOLIS]
- [http://stomp.pnnl.gov/ STOMP]
- [http://dl.acm.org/citation.cfm?id=2634291 Diablo]
- [https://kiva.readthedocs.io/en/latest/ Kiva]
- [https://notus-cfd.org/ Notus]
- [https://www.hamady.org/solis.html Solis]
- [https://web.tecgraf.puc-rio.br/gema/ GeMA]
- [https://www.opencfs.org/ openCFS]
- [https://www.numgeo.de/ numgeo]
- [https://github.com/nikola-m/freeCappuccino freeCappuccino]
- [https://github.com/WildSmilodon/Andromeda Andromeda]
- [https://palma-ice.github.io/yelmo-docs/ Yelmo]
See also
References
{{reflist}}
External links
- {{Official website|https://www.ssisc.org/lis/index.en.html}}
- [https://github.com/anishida/lis/tree/develop Development repository on GitHub]
- [http://www.netlib.org/utk/people/JackDongarra/la-sw.html Prof. Jack Dongarra's freely available linear algebra software page]
- [http://www.netlib.org/linalg/lis Netlib repository] (Courtesy of Netlib Project)
- [https://rpms.remirepo.net/rpmphp/zoom.php?rpm=lis Fedora packages] (Courtesy of Fedora Project)
- [http://packages.gentoo.org/package/sci-libs/lis Gentoo packages] (Courtesy of Gentoo Linux Project)
- [https://aur.archlinux.org/packages/lis/ AUR packages] (Courtesy of Arch Linux Community)
- [https://codeberg.org/FreeBSD/freebsd-ports/src/math/lis FreeBSD packages] (Courtesy of FreeBSD Project)
- [https://github.com/brewsci/homebrew-science/blob/master/Formula/lis.rb Packages for macOS (Homebrew)] (Courtesy of Homebrew Project)
- [https://ports.macports.org/port/lis/summary Packages for macOS (MacPorts)] (Courtesy of MacPorts Project)
- [http://sourceforge.net/projects/whpc/files/ Packages for Windows] (Courtesy of WHPC Project)
- [https://github.com/msys2/MINGW-packages/tree/master/mingw-w64-lis Packages for Mingw-w64] (Courtesy of Mingw-w64 Project)
- [https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/lis/package.py Spack packages] (Courtesy of Lawrence Livermore National Laboratory)
{{Numerical linear algebra}}
Category:Numerical linear algebra
Category:Scientific simulation software
Category:C (programming language) libraries
Category:Free simulation software