Copyright © 2009-2021 SNK Std.
All right reserved.
Полезная информация
- Правила работы
- Использование ПО
-
Распараллеливание задач
- Стандарт MPI
- Стандарт OpenMP
- Гибридный метод: MPI + OpenMP
- Использование узлов с GPU
- Использование узлов с Intel Xeon Phi
- Прочее
Краткое описание библиотеки KRYLOV
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.