# Lis (linear algebra library)

Stable release 1.4.49 / July 25, 2014 Active Cross-platform C, Fortran Software library New BSD License www.ssisc.org/lis/

Lis (Library of Iterative Solvers for linear systems, pronounced [lis]) is a scalable parallel library for solving linear equations and eigenvalue problems that arise in the numerical solution of partial differential equations using iterative methods.[1][2][3]

## Features

Lis provides facilities for:

## Example

A C program to solve the linear equation Ax=b 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-1 library is used. Both the Harwell-Boeing and Matrix Market formats are supported to import and export user data.

## 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. Springer. pp. 87–98. doi:10.1007/978-3-642-12165-4_36. ISBN 3-642-12164-0.
2. ^ Hisashi Kotakemori, Hidehiko Hasegawa, Tamito Kajiyama, Akira Nukada, Reiji Suda, and 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 3-540-68554-5.
3. ^ Hisashi Kotakemori, Hidehiko Hasegawa, and 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). Beijing: IEEE. pp. 432–436. doi:10.1109/HPCASIA.2005.74. ISBN 0-7695-2486-9.
4. ^ Akihiro Fujii, Akira Nishida, and 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.