Lis (linear algebra library)

Last updated
Stable release
2.1.10 / April 18, 2025 (2025-04-18)
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 to solve discretized linear equations and eigenvalue problems that mainly arise from the numerical solution of partial differential equations 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

Features

Lis provides facilities for:

Example

A C program to solve the linear equation is written as follows:

#include<stdio.h>#include"lis_config.h"#include"lis.h"LIS_INTmain(LIS_INTargc,char*argv[]){LIS_MATRIXA;LIS_VECTORb,x;LIS_SOLVERsolver;LIS_INTiter;doubletime;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();return0;}

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. [4] 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

See also

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. Vol. 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. S2CID   6402585.
  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. S2CID   118053459.