Lis (linear algebra library)

Lis

Stable release|

2.1.0 / March 5, 2023 (2023-03-05)

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.

## Contents

* 1 Features
* 2 Example
* 3 System requirements
* 4 Packages that use Lis
* 5 See also
* 6 References
* 7 External links

## 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

1. ↑ 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.
2. ↑ 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.
3. ↑ 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.
4. ↑ 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)

* v
* t
* e

Numerical linear algebra

Key concepts|

* Floating point
* Numerical stability

Problems|

* System of linear equations
* Matrix decompositions
* Matrix multiplication (algorithms)
* Matrix splitting
* Sparse problems

Hardware|

* CPU cache
* TLB
* Cache-oblivious algorithm
* SIMD
* Multiprocessing

Software|

* MATLAB
* Basic Linear Algebra Subprograms (BLAS)
* LAPACK
* Specialized libraries
* General purpose software

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Lis (linear algebra library). Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Software:Lis_(linear_algebra_library)&oldid=3151911"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template