Высокопроизводительные вычисления на кластерах. Беликов Д.А - 159 стр.

UptoLike

159
где А обозначает матричное представление линейного оператора, b
вектор правых частей, х вектор решения. Во время решения мо-
гут быть выбраны конкретные способы решения и связанные с ними
опции.
Комбинация метода подпространств Крылова (KSP) и предобу-
славливателя (PC preconditioner) находится в центре самых совре-
менных программ для решения линейных систем итерационными
методами.
Модуль KSP предоставляет многие популярные итерационные
методы на основе подпространств Крылова: Conjugate Gradient,
GMRES, CG-Squared, Bi-CG-Stab и др.
Модуль РС включает разнообразные предобуславливатели:
Block Jacobi, Overlapping Additive Schwarz, ICC, ILU via
BlockSolve95, ILU(k), LU (прямой метод, работает только на одном
процессоре), Arbitrary matrix и др.
Использование модуля KSP задается процедурой:
SUBROUTINE KSPCreate(comm, ksp, ierr)
KSP ksp
INTEGER comm, ierr
Заметим, что решатель имеет тип KSP. Перед решением линей-
ной системы с помощью KSP необходимо вызвать следующую
процедуру, чтобы задать матрицы, связанные с линейной системой:
Сall KSPSetOperators(ksp, A1, A2,
$ DIFFERENT_NONZERO_PATTERN, ierr)
KSP ksp
MAT A1, A2
INTEGER ierr
A1 – матрица, определяющая линейную систему;
A2 – предобуславливающая матрица.
Установить метод решения можно либо из командной строки,
добавив в программу вызов следующей процедуры:
SUBROUTINE KSPSetFromOptions(ksp, ierr)
KSP ksp
INTEGER ierr
и воспользовавшись опцией -ksp_type, допустимые значения:
richardson, chebychev, cg, gmres, bcgs (полный список можно
посмотреть, запустив программу с опцией -help) либо
непосредственно в программе с помощью процедуры
Call KSPSetType(ksp, type, ierr)