Lis (線形代数ライブラリ)

Lis (Library of Iterative Solvers for linear systems、発音は[lis]) は、離散化された線形方程式および固有値問題を反復法により解くための並列線形計算ライブラリ。実数または複素数を成分とする行列を扱う。並列コンピュータを主な対象としているが、並列処理を意識することなくライブラリを利用することができる。C言語で実装されているが、C++、Fortranからも利用できる。修正BSDライセンスで提供されるオープンソースソフトウェア。
特徴.
Lisの主な特徴は以下の通り。
例.
線形方程式 formula_1 を解くためのプログラム例（C言語版）を示す。
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;