Участник:EasyBreezy/Стабилизированный метод бисопряженных градиентов (BiCGSTAB)
Основные авторы описания:
Содержание
- 1 Свойства и структура алгоритма
- 1.1 Общее описание алгоритма
- 1.2 Математическое описание алгоритма
- 1.3 Вычислительное ядро алгоритма
- 1.4 Макроструктура алгоритма
- 1.5 Схема реализации последовательного алгоритма
- 1.6 Последовательная сложность алгоритма
- 1.7 Информационный граф
- 1.8 Ресурс параллелизма алгоритма
- 1.9 Входные и выходные данные алгоритма
- 1.10 Свойства алгоритма
- 2 Программная реализация алгоритма
- 2.1 Особенности реализации последовательного алгоритма
- 2.2 Локальность данных и вычислений
- 2.3 Возможные способы и особенности параллельной реализации алгоритма
- 2.4 Масштабируемость алгоритма и его реализации
- 2.5 Динамические характеристики и эффективность реализации алгоритма
- 2.6 Выводы для классов архитектур
- 2.7 Существующие реализации алгоритма
- 3 Литература
1 Свойства и структура алгоритма
1.1 Общее описание алгоритма
Стабилизированный метод бисопряженных градиентов, так же известный как BiCGSTAB (Biconjugate gradient stabilized method), был предложен голландским математиком Хенком ван дер Ворстом в 1992 году. Статья, в которой описывался метод, стала самым цитируемым научным трудом в области математики в 1990х годах. Метод появился, как ответ на задачу о построении способа решения систем линейных алгебраических уравнений произвольного вида. На момент появления BiCGSTAB уже существовали методы решения СЛАУ произвольного типа, в том числе и в комплексном пространстве, например метод бисопряженных градиентов. Однако существующие на тот момент методы либо обладали недостаточной скоростью сходимости, либо использовали в вычислениях тяжелые операции, такие как транспонирования матрицы, которые усложняли распараллеливание на многопроцессорных машинах. BiCGSTAB является итерационным методом решения систем линейных алгебраических уравнений. Мощь метода заключается в том, что его можно применять к матрицам общего вида, в том числе с комплексными коэффициентами. В процессе выполнения BiCGSTAB не использует для вычисления плохо распараллеливаемых операций, не допускает накопления погрешностей округления и нестабильного поведения невязки. Эти факторы выгодно отличают его от предшественников: метода бисопряженных градиентов и квадратичного метода сопряженных градиентов, из которого BiCGSTAB фактически и вытекает. К преимуществам так же можно добавить более высокую в общем случае скорость сходимости относительно ближайших конкурентов. Тем не менее, для некоторых видов СЛАУ BiCGSTAB может уступать более простым методам. Благодаря свойствам алгоритма область применения метода весьма широка. Фактически, он используется во всех задачах, где требуется решать СЛАУ, в том числе СЛАУ большой размерности, к которым сводится большое количество численных методов, применяемых при решении задач математического моделирования.
BiCGSTAB относится к классу так называемых проекционных методов. Основная идея методов данного класса: искать итерационным способом наилучшее приближение решения в некотором подпространстве пространства R^n, и чем шире подпространство, в котором ищется приближение решения, тем ближе будет приближенное решение к точному на каждой итерации. В качестве такого подпространства используются пространства Крылова, порожденные матрицей системы и невязкой первого приближения: K^m (A,r^0 )= span (r^0,Ar^0,…,A^(m-1) r^0) Изложим основную идею любого проекционного метода, заложенную в том числе и в BiCGSTAB. Для простоты выкладок и рассуждений здесь и далее будем считать, что матрица системы и ее правая часть вещественны. Без ограничения общности все дальнейшие рассуждения могут быть перенесены и на комплексный случай. Итак, пусть решается система Ax=b с невырожденной матрицей A ∈R^(n × n) и ненулевым вектором b ∈ R^n. Имеются два подпространства K_n и L_n. Требуется найти вектор x ∈ K_n, который обеспечивает решение системы, оптимальное относительно подпространства L, то есть требуется выполнение условия Петрова-Галеркина: (Ax,z)=(b,z),∀ z ∈ L_n В данном случае вектор x называется обобщенным решением системы. Условие Петрова-Галеркина можно записать и через определение невязки. Пусть r=b-Ax, тогда условие перепишется в виде: (b-Ax,z)=(r,z),∀ z ∈ L_n Это равносильно тому, что вектор невязки ортогонален пространству L. Пусть для СЛАУ известно некоторое приближение x^0 точного решения x^*. Данное приближение требуется уточнить поправкой δ:b-Ax^0+ δ ⊥L. Невязка уточненного решения имеет вид: r_new=b-Ax^0+ δ= r^0- Aδ Условие Петрова-Галеркина тогда можно переписать так: (r_(new,) z)= r^0- (Aδ,z)= 0 ∀ z ∈L Пусть dim〖K=dimL=m,〗 V=(v_1… v_m )∈ R^(n × m),W=(w_1… w_m )∈ R^(n ×m), где V и W – матрицы, столбцы которых образуют базисы пространств K и L соответственно. Пусть так же δ=Vy,z=Wq, где y – коэффициенты разложения вектора поправки по базису пространства K, а q – коэффициенты разложения вектора z в пространстве L. Тогда новое приближение рения можно записать в виде: x^1= x^0+ δ= x^0+ Vy Из условия ортогональности Петрова-Галеркина получаем, что: (r-AVy,Wq)=(W^T r^0- AVy,q)= 0 Поскольку q ≠0, то получаем СЛАУ для вектора y: W^T AVy= W^T r^0 Если предположить, что матрица W^T AVy невырождена, то вектор y однозначно определяется и равен: y= W^T AV^(-1) W^T r^0 Подставляя найденные коэффициенты разложения в выражение для первого приближения получаем: x^1= x^0+ δ= x^0+ W^T AV^(-1) W^T r^0 y Общий порядок шагов любого проекционного метода следующий: Выбрать пару подпространств K и L Найти базис V пространства K и базис W пространства L Вычислить невязку Найти y= W^T AV^(-1) W^T r^0 Положить x = x + Vy Если не достигнут критерий остановки итерационного процесса, то повторить алгоритм, начиная с первого шага. Как будет показано далее, в BiCGSTAB не требуется вычислять матрицу W^T AV^(-1) в явном виде.