KRYLOV — библиотека итерационных решателей больших систем линейных алгебраических уравнений
Библиотека KRYLOV предназначена для решения больших систем линейных алгебраических уравнений (СЛАУ) с разреженными квадратными невырожденными вещественными матрицами на ресурсах кластера НКС-30Т. Библиотека позволяет использовать как решатели с распараллеливанием средствами OpenMP, так и методы, основанные на алгебраической декомпозиции областей и работающие в среде MPI. Возможно решение СЛАУ с одной матрицей и несколькими правыми частями.
Для работы с библиотекой необходимо в памяти одного из MPI-процессов разместить матрицу системы, правые части и начальные приближения. Матрица задается в одном из форматов для хранения разреженных матриц: COO или CSR. Правые части и начальные приближения задаются в виде плотных векторов.
Библиотека KRYLOV установлена в директории /ifs/apps/krylov, доступной на всех узлах кластера. Названия поддиректорий и их содержание типичны для большинства пакетов:
  • doc содержит документацию;
  • examples включает в себя несколько примеров использования библиотеки Krylov, с которыми рекомендуется ознакомиться попутно с документацией;
  • в include находятся заголовочные файлы;
  • lib содержит файлы библиотек, с которыми необходимо собирать конечные программы;
  • versions хранит прежние версии библиотеки и историю изменений.
На данный момент библиотека находится в активной разработке, вследствие чего возможны некоторые изменения функционала. Историю версий, информацию о совместимости и прежние версии можно найти в файле CHANGELOG и поддиректории versions.
В Krylov предоставлены следующие функции для вызова из пользовательских программ:
  • kr_new_handle выделяет дескриптор, описывающий СЛАУ и связанные с ней параметры;
  • kr_set_*param задают параметры решения СЛАУ;
  • kr_setup, kr_schwarz_setup задают матрицу СЛАУ и выполняют построение переобуславливателя;
  • kr_schwarz_worker задействует рабочую часть решателя в случае использования декомпозиции;
  • kr_solve решает СЛАУ с указанными правой частью и начальным приближением;
  • kr_release_handle высвобождает все ресурсы, привязанные к дескриптору;
  • kr_get_*stat позволяют узнать некоторые характеристики итерационного процесса: количество итераций, использование памяти, календарного и процессорного времени.
Подробный синтаксис вызова данных функций представлен в полной версии документации.
Предполагается, что пользователи библиотеки знакомы со стандартом MPI, установленной на НКС-30Т реализацией MPI, системой очередей PBS Pro, компиляторами C/C++ и утилитой GNU make.
Для сборки программ, использующих библиотеку Krylov, следует использовать следующую команду:
$ mpicc -I/ifs/apps/krylov/include file_name.c /ifs/apps/krylov/lib/libkrylov.a -lmkl_core -lmkl_intel_lp64 -lmkl_intel_thread -liomp5 -lstdc++ -lm
Для удобства рекомендуется отредактировать и использовать makefile, сопутствующий примерам в директории examples.
Свои вопросы и предложения можно отправлять авторам по адресу krylovdevteamgmail.com.
Старый сайт