Участник:EasyBreezy/Стабилизированный метод бисопряженных градиентов (BiCGSTAB): различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
Строка 4: Строка 4:
  
 
=== Общее описание алгоритма ===
 
=== Общее описание алгоритма ===
Стабилизированный метод бисопряженных градиентов, так же известный как BiCGSTAB (Biconjugate gradient stabilized method), был предложен голландским математиком Хенком ван дер Ворстом в 1992 году. Статья, в которой описывался метод, стала самым цитируемым научным трудом в области математики в 1990х годах.
+
:Стабилизированный метод бисопряженных градиентов, так же известный как BiCGSTAB (Biconjugate gradient stabilized method), был предложен голландским математиком Хенком ван дер Ворстом в 1992 году. Статья, в которой описывался метод, стала самым цитируемым научным трудом в области математики в 1990х годах.
Метод появился, как ответ на задачу о построении способа решения систем линейных алгебраических уравнений произвольного вида. На момент появления BiCGSTAB уже существовали методы решения СЛАУ произвольного типа, в том числе и в комплексном пространстве, например метод бисопряженных градиентов. Однако существующие на тот момент методы либо обладали недостаточной скоростью сходимости, либо использовали в вычислениях тяжелые операции, такие как транспонирования матрицы, которые усложняли распараллеливание на многопроцессорных машинах.
 
BiCGSTAB является итерационным методом решения систем линейных алгебраических уравнений. Мощь метода заключается в том, что его можно применять к матрицам общего вида, в том числе с комплексными коэффициентами. В процессе выполнения BiCGSTAB не использует для вычисления плохо распараллеливаемых операций, не допускает накопления погрешностей округления и нестабильного поведения невязки. Эти факторы выгодно отличают его от предшественников: метода бисопряженных градиентов и квадратичного метода сопряженных градиентов, из которого BiCGSTAB фактически и вытекает. К преимуществам так же можно добавить более высокую в общем случае скорость сходимости относительно ближайших конкурентов. Тем не менее, для некоторых видов СЛАУ BiCGSTAB может уступать более простым методам.
 
Благодаря свойствам алгоритма область применения метода весьма широка. Фактически, он используется во всех задачах, где требуется решать СЛАУ, в том числе СЛАУ большой размерности, к которым сводится большое количество численных методов, применяемых при решении задач математического моделирования.  
 
  
BiCGSTAB относится к классу так называемых проекционных методов. Основная идея методов данного класса: искать итерационным способом наилучшее приближение решения в некотором подпространстве пространства R^n, и чем шире подпространство, в котором ищется приближение решения, тем ближе будет приближенное решение к точному на каждой итерации. В качестве такого подпространства используются пространства Крылова, порожденные матрицей системы и невязкой первого приближения:
+
:Метод появился, как ответ на задачу о построении способа решения систем линейных алгебраических уравнений произвольного вида. На момент появления BiCGSTAB уже существовали методы решения СЛАУ произвольного типа, в том числе и в комплексном пространстве, например метод бисопряженных градиентов. Однако существующие на тот момент методы либо обладали недостаточной скоростью сходимости, либо использовали в вычислениях тяжелые операции, такие как транспонирования матрицы, которые усложняли распараллеливание на многопроцессорных машинах.
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, то есть требуется выполнение условия Петрова-Галеркина:
+
:BiCGSTAB является итерационным методом решения систем линейных алгебраических уравнений. Мощь метода заключается в том, что его можно применять к матрицам общего вида, в том числе с комплексными коэффициентами. В процессе выполнения BiCGSTAB не использует для вычисления плохо распараллеливаемых операций, не допускает накопления погрешностей округления и нестабильного поведения невязки. Эти факторы выгодно отличают его от предшественников: метода бисопряженных градиентов и квадратичного метода сопряженных градиентов, из которого BiCGSTAB фактически и вытекает. К преимуществам так же можно добавить более высокую в общем случае скорость сходимости относительно ближайших конкурентов. Тем не менее, для некоторых видов СЛАУ BiCGSTAB может уступать более простым методам.
(Ax,z)=(b,z),z L_n
+
 
В данном случае вектор x называется обобщенным решением системы.
+
:Благодаря свойствам алгоритма область применения метода весьма широка. Фактически, он используется во всех задачах, где требуется решать СЛАУ, в том числе СЛАУ большой размерности, к которым сводится большое количество численных методов, применяемых при решении задач математического моделирования.
Условие Петрова-Галеркина можно записать и через определение невязки. Пусть r=b-Ax, тогда условие перепишется в виде:  
+
 
(b-Ax,z)=(r,z),z L_n
+
:BiCGSTAB относится к классу так называемых проекционных методов. Основная идея методов данного класса: искать итерационным способом наилучшее приближение решения в некотором подпространстве пространства R^n, и чем шире подпространство, в котором ищется приближение решения, тем ближе будет приближенное решение к точному на каждой итерации. В качестве такого подпространства используются пространства Крылова, порожденные матрицей системы и невязкой первого приближения: <math>K^m (A, r^0) = span(r^0, Ar^0, A^2r^0, ..., A^{m-1} r^0).</math>
Это равносильно тому, что вектор невязки ортогонален пространству L.
+
 
Пусть для СЛАУ известно некоторое приближение x^0 точного решения x^*. Данное приближение требуется уточнить поправкой
+
:Изложим основную идею любого проекционного метода, заложенную в том числе и в BiCGSTAB. Для простоты выкладок и рассуждений здесь и далее будем считать, что матрица системы и ее правая часть вещественны. Без ограничения общности все дальнейшие рассуждения могут быть перенесены и на комплексный случай. Итак, пусть решается система <math>Ax=b</math> с невырожденной матрицей  <math>A \in R^{n \times n}</math> и ненулевым  вектором  <math>b \in R^n</math>.  Имеются  два подпространства <math>K_n</math> и <math>L_n</math>. Требуется найти вектор <math>x \in K_n</math>, который обеспечивает решение  системы, оптимальное относительно подпространства  L, то есть требуется выполнение условия Петрова-Галеркина: <math>(Ax,z)=(b,z), \forall z \in L_n</math>. В данном случае вектор x называется обобщенным решением системы.  
δ:b-Ax^0+ δ ⊥L.
+
 
Невязка уточненного решения имеет вид:
+
:Условие Петрова-Галеркина можно записать и через определение невязки. Пусть <math>r = b - Ax</math>, тогда условие перепишется в виде: <math>(b - Ax, z)=(r, z),\forall z \in L_n</math>. Это равносильно тому, что вектор невязки ортогонален пространству L.
r_new=b-Ax^0+ δ= r^0-
+
 
Условие Петрова-Галеркина тогда можно переписать так:
+
:Пусть для СЛАУ известно некоторое приближение <math>x^0</math> точного решения <math>x^*</math>. Данное приближение требуется уточнить поправкой <math> \delta: b - Ax^0 + \delta \perp L</math>. Невязка уточненного решения имеет вид: <math>r_{new} = b - Ax^0 + \delta = r^0- A\delta</math>. Условие Петрова-Галеркина тогда можно переписать так: <math>(r_{new}, z)= r^0 - (A\delta, z) = 0, \forall z \in L</math>
(r_(new,) z)= r^0- (,z)= 0 z ∈L
+
 
Пусть dim⁡〖K=dim⁡L=m,V=(v_1… v_m )R^(n × m),W=(w_1… w_m )R^(n ×m), где V и W – матрицы, столбцы которых образуют базисы пространств K и L соответственно.
+
:Пусть <math> dim K = dim L = m, V = (v_1, ..., v_n) \in R^{n \times m}, W = (w_1, ... w_n) \in R^{n \times m}</math>, где V и W – матрицы, столбцы которых образуют базисы пространств K и L соответственно. Пусть так же <math> \delta = Vy, z = Wq</math>, где y – коэффициенты разложения вектора поправки по базису пространства K, а q – коэффициенты разложения вектора z в пространстве L. Тогда новое приближение решения можно записать в виде: <math>x^1 = x^0 + \delta= x^0 + Vy</math>. Из условия ортогональности Петрова-Галеркина получаем, что: <math>(r - AVy, Wq) = (W^Tr^0 - AVy, q) = 0</math>. Поскольку <math>q \neq 0</math>, то получаем СЛАУ для вектора y: <math>W^TAVy = W^Tr^0</math>. Если предположить, что матрица <math>W^TAVy</math> невырождена, то вектор y однозначно определяется и равен: <math>y = W^TAV^{-1}W^Tr^0</math>. Подставляя найденные коэффициенты разложения в выражение для первого приближения получаем: <math>x^1 = x^0 + \delta = x^0 + W^TAV^{-1}W^Tr^0y</math>
Пусть так же δ=Vy,z=Wq, где y – коэффициенты разложения вектора поправки по базису пространства K, а q – коэффициенты разложения вектора z в пространстве L.
+
 
Тогда новое приближение рения можно записать в виде:
+
:Подведем итог. Общий порядок шагов любого проекционного метода следующий:
x^1= x^0+ δ= x^0+ Vy
+
#Выбрать пару подпространств K и L
Из условия ортогональности Петрова-Галеркина получаем, что:
+
#Найти базис V пространства K и базис W пространства L;
(r-AVy,Wq)=(W^T r^0- AVy,q)= 0
+
#Вычислить невязку
Поскольку q ≠0, то получаем СЛАУ для вектора y:
+
#Найти <math>y = W^T AV^{-1} W^T r^0</math>
W^T AVy= W^T r^0
+
#Положить <math>x = x + Vy</math>
Если предположить, что матрица W^T AVy невырождена, то вектор y однозначно определяется и равен:
+
#Если не достигнут критерий остановки итерационного процесса, то повторить алгоритм, начиная с первого шага.
y= W^T AV^(-1) W^T r^0
+
 
Подставляя найденные коэффициенты разложения в выражение для первого приближения получаем:
+
:Как будет показано далее, в BiCGSTAB не требуется вычислять матрицу  W^T AV^{-1} в явном виде.
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) в явном виде.
 
  
 
=== Математическое описание алгоритма ===
 
=== Математическое описание алгоритма ===

Версия 20:46, 14 октября 2016

Основные авторы описания:

Содержание

1 Свойства и структура алгоритма

1.1 Общее описание алгоритма

Стабилизированный метод бисопряженных градиентов, так же известный как BiCGSTAB (Biconjugate gradient stabilized method), был предложен голландским математиком Хенком ван дер Ворстом в 1992 году. Статья, в которой описывался метод, стала самым цитируемым научным трудом в области математики в 1990х годах.
Метод появился, как ответ на задачу о построении способа решения систем линейных алгебраических уравнений произвольного вида. На момент появления BiCGSTAB уже существовали методы решения СЛАУ произвольного типа, в том числе и в комплексном пространстве, например метод бисопряженных градиентов. Однако существующие на тот момент методы либо обладали недостаточной скоростью сходимости, либо использовали в вычислениях тяжелые операции, такие как транспонирования матрицы, которые усложняли распараллеливание на многопроцессорных машинах.
BiCGSTAB является итерационным методом решения систем линейных алгебраических уравнений. Мощь метода заключается в том, что его можно применять к матрицам общего вида, в том числе с комплексными коэффициентами. В процессе выполнения BiCGSTAB не использует для вычисления плохо распараллеливаемых операций, не допускает накопления погрешностей округления и нестабильного поведения невязки. Эти факторы выгодно отличают его от предшественников: метода бисопряженных градиентов и квадратичного метода сопряженных градиентов, из которого BiCGSTAB фактически и вытекает. К преимуществам так же можно добавить более высокую в общем случае скорость сходимости относительно ближайших конкурентов. Тем не менее, для некоторых видов СЛАУ BiCGSTAB может уступать более простым методам.
Благодаря свойствам алгоритма область применения метода весьма широка. Фактически, он используется во всех задачах, где требуется решать СЛАУ, в том числе СЛАУ большой размерности, к которым сводится большое количество численных методов, применяемых при решении задач математического моделирования.
BiCGSTAB относится к классу так называемых проекционных методов. Основная идея методов данного класса: искать итерационным способом наилучшее приближение решения в некотором подпространстве пространства R^n, и чем шире подпространство, в котором ищется приближение решения, тем ближе будет приближенное решение к точному на каждой итерации. В качестве такого подпространства используются пространства Крылова, порожденные матрицей системы и невязкой первого приближения: [math]K^m (A, r^0) = span(r^0, Ar^0, A^2r^0, ..., A^{m-1} r^0).[/math]
Изложим основную идею любого проекционного метода, заложенную в том числе и в BiCGSTAB. Для простоты выкладок и рассуждений здесь и далее будем считать, что матрица системы и ее правая часть вещественны. Без ограничения общности все дальнейшие рассуждения могут быть перенесены и на комплексный случай. Итак, пусть решается система [math]Ax=b[/math] с невырожденной матрицей [math]A \in R^{n \times n}[/math] и ненулевым вектором [math]b \in R^n[/math]. Имеются два подпространства [math]K_n[/math] и [math]L_n[/math]. Требуется найти вектор [math]x \in K_n[/math], который обеспечивает решение системы, оптимальное относительно подпространства L, то есть требуется выполнение условия Петрова-Галеркина: [math](Ax,z)=(b,z), \forall z \in L_n[/math]. В данном случае вектор x называется обобщенным решением системы.
Условие Петрова-Галеркина можно записать и через определение невязки. Пусть [math]r = b - Ax[/math], тогда условие перепишется в виде: [math](b - Ax, z)=(r, z),\forall z \in L_n[/math]. Это равносильно тому, что вектор невязки ортогонален пространству L.
Пусть для СЛАУ известно некоторое приближение [math]x^0[/math] точного решения [math]x^*[/math]. Данное приближение требуется уточнить поправкой [math] \delta: b - Ax^0 + \delta \perp L[/math]. Невязка уточненного решения имеет вид: [math]r_{new} = b - Ax^0 + \delta = r^0- A\delta[/math]. Условие Петрова-Галеркина тогда можно переписать так: [math](r_{new}, z)= r^0 - (A\delta, z) = 0, \forall z \in L[/math]
Пусть [math] dim K = dim L = m, V = (v_1, ..., v_n) \in R^{n \times m}, W = (w_1, ... w_n) \in R^{n \times m}[/math], где V и W – матрицы, столбцы которых образуют базисы пространств K и L соответственно. Пусть так же [math] \delta = Vy, z = Wq[/math], где y – коэффициенты разложения вектора поправки по базису пространства K, а q – коэффициенты разложения вектора z в пространстве L. Тогда новое приближение решения можно записать в виде: [math]x^1 = x^0 + \delta= x^0 + Vy[/math]. Из условия ортогональности Петрова-Галеркина получаем, что: [math](r - AVy, Wq) = (W^Tr^0 - AVy, q) = 0[/math]. Поскольку [math]q \neq 0[/math], то получаем СЛАУ для вектора y: [math]W^TAVy = W^Tr^0[/math]. Если предположить, что матрица [math]W^TAVy[/math] невырождена, то вектор y однозначно определяется и равен: [math]y = W^TAV^{-1}W^Tr^0[/math]. Подставляя найденные коэффициенты разложения в выражение для первого приближения получаем: [math]x^1 = x^0 + \delta = x^0 + W^TAV^{-1}W^Tr^0y[/math]
Подведем итог. Общий порядок шагов любого проекционного метода следующий:
  1. Выбрать пару подпространств K и L
  2. Найти базис V пространства K и базис W пространства L;
  3. Вычислить невязку
  4. Найти [math]y = W^T AV^{-1} W^T r^0[/math]
  5. Положить [math]x = x + Vy[/math]
  6. Если не достигнут критерий остановки итерационного процесса, то повторить алгоритм, начиная с первого шага.
Как будет показано далее, в BiCGSTAB не требуется вычислять матрицу W^T AV^{-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.2.1 Локальность реализации алгоритма

2.2.1.1 Структура обращений в память и качественная оценка локальности
2.2.1.2 Количественная оценка локальности
2.2.1.3 Анализ на основе теста Apex-Map

2.3 Возможные способы и особенности параллельной реализации алгоритма

2.4 Масштабируемость алгоритма и его реализации

2.4.1 Масштабируемость алгоритма

2.4.2 Масштабируемость реализации алгоритма

2.5 Динамические характеристики и эффективность реализации алгоритма

2.6 Выводы для классов архитектур

2.7 Существующие реализации алгоритма

3 Литература