Lis (linear algebra library)

From Wikipedia the free encyclopedia

Stable release
2.1.7 / December 17, 2024 (2024-12-17)
Operating systemCross-platform
Available inC, Fortran
TypeSoftware library
LicenseNew BSD License
Websitewww.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.

Features

[edit]

Lis provides facilities for:

Example

[edit]

A C program to solve the linear equation 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

[edit]

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

[edit]

See also

[edit]

References

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