Алгоритм SPIKE - SPIKE algorithm

В Алгоритм SPIKE это гибрид параллельно решатель для полосатый линейные системы разработан Эриком Полицци и Ахмед Самех[1]^ [2]

Обзор

Алгоритм SPIKE работает с линейной системой ТОПОР = F, куда А это полосатый матрица пропускная способность намного меньше чем , и F является матрица, содержащая правые части. Он разделен на этап предварительной обработки и этап постобработки.

Стадия предварительной обработки

На этапе предварительной обработки линейная система ТОПОР = F разделен на блок трехдиагональный форма

Предположим пока, что диагональные блоки Аj (j = 1,...,п с п ≥ 2) находятся неособый. Определить диагональ блока матрица

D = диаг (А1,...,Ап),

тогда D также неособое. Левое умножение D−1 обеим сторонам системы дает

которое необходимо решить на этапе постобработки. Левое умножение на D−1 эквивалентно решению системы формы

Аj[Vj Wj граммj] = [Bj Cj Fj]

(опуская W1 и C1 за , и Vп и Bп за ), которые можно проводить параллельно.

Из-за полосатой природы А, только несколько крайних левых столбцов каждого Vj и несколько крайних правых столбцов каждого Wj может быть ненулевым. Эти столбцы называются шипы.

Этап постобработки

Не теряя общий смысл, предположим, что каждый шип содержит ровно столбцы ( намного меньше чем ) (при необходимости заполните шип колонками с нулями). Разделите шипы на все Vj и Wj в

и

куда V (т)
j
 
, V (б)
j
 
, W (т)
j
 
и W (б)
j
 
имеют размеры . Разделить все аналогично Иксj и граммj в

и

Обратите внимание, что система, созданная на этапе предварительной обработки, может быть сокращена до блока пятиугольник система гораздо меньшего размера (напомним, что намного меньше чем )

которую мы называем редуцированная система и обозначим через S̃X̃ = ГРАММ.

Однажды все Икс (т)
j
 
и Икс (б)
j
 
найдены, все Иксj может быть восстановлен с идеальным параллелизмом через

SPIKE как решатель полиалгоритмических ленточных линейных систем

Несмотря на то, что алгоритм SPIKE логически разделен на два этапа, в вычислительном отношении он состоит из трех этапов:

  1. факторизация диагональные блоки,
  2. вычисление шипов,
  3. решение редуцированной системы.

Каждый из этих этапов может быть выполнен несколькими способами, что позволяет использовать множество вариантов. Два примечательных варианта: рекурсивный СПАЙК алгоритм для не-диагонально-доминантный дела и усеченный шип алгоритм для диагонально-доминирующих случаев. В зависимости от варианта, система может быть решена либо точно, либо приблизительно. В последнем случае SPIKE используется как прекондиционер для итерационных схем, таких как Методы подпространства Крылова и итеративное уточнение.

Рекурсивный СПАЙК

Стадия предварительной обработки

Первым шагом этапа предварительной обработки является факторизация диагональных блоков. Аj. Для численной устойчивости можно использовать ЛАПАК с XGBTRF процедуры для LU факторизовать их с частичным поворотом. В качестве альтернативы их можно также разложить на множители без частичного поворота, но с помощью стратегии «диагонального повышения». Последний метод решает проблему сингулярных диагональных блоков.

Конкретно стратегия диагонального повышения заключается в следующем. Позволять 0ε обозначают конфигурируемый "машинный нуль". На каждом этапе факторизации LU мы требуем, чтобы стержень удовлетворял условию

| стержень | > 0εА1.

Если точка поворота не удовлетворяет условию, она увеличивается на

куда ε - положительный параметр, зависящий от округление единицы, и факторизация продолжается с увеличенной точкой поворота. Этого можно добиться с помощью модифицированных версий ScaLAPACK с XDBTRF рутины. После факторизации диагональных блоков вычисляются пики и передаются на этап постобработки.

Этап постобработки

Двухсекционный корпус

В двухраздельном случае, т. Е. Когда п = 2, редуцированная система S̃X̃ = ГРАММ имеет форму

Из центра можно извлечь еще меньшую систему:

который можно решить с помощью блочная факторизация LU

Один раз Икс (б)
1
 
и Икс (т)
2
 
найдены, Икс (т)
1
 
и Икс (б)
2
 
можно вычислить через

Икс (т)
1
 
= грамм (т)
1
 
V (т)
1
 
Икс (т)
2
 
,
Икс (б)
2
 
= грамм (б)
2
 
W (б)
2
 
Икс (б)
1
 
.
Многосекционный корпус

Предположить, что п является степенью двойки, т.е. п = 2d. Рассмотрим блочно-диагональную матрицу

1 = диаг ( [1]
1
 
,..., [1]
п/2
 
)

куда

за k = 1,...,п/2. Заметь 1 по существу состоит из диагональных блоков порядка 4м извлечен из . Теперь факторизуем в качестве

= 12.

Новая матрица 2 имеет форму

Его структура очень похожа на структуру 2, различаются только количеством шипов и их высотой (ширина остается неизменной на м). Таким образом, аналогичный шаг факторизации может быть выполнен на 2 производить

2 = 23

и

= 123.

Такие шаги факторизации можно выполнять рекурсивно. После d − 1 шагов, получаем факторизацию

= 1d−1d,

куда d имеет всего два шипа. Уменьшенная система затем будет решена через

ИКС =  −1
d
 
 −1
d−1
 
 −1
1
 
ГРАММ
.

Техника блочной LU-факторизации в случае двух разделов может использоваться для обработки шагов решения, включающих 1, ..., d−1 и d поскольку они по существу решают несколько независимых систем обобщенных двухраздельных форм.

Обобщение на случаи, когда п не степень двойки, почти тривиально.

Усеченный шип

Когда А диагонально-доминирующая, в редуцированной системе

блоки V (т)
j
 
и W (б)
j
 
часто незначительны. Без них сокращенная система становится блочно-диагональной.

и может быть легко решена параллельно [3].

Усеченный алгоритм SPIKE может быть заключен в некоторую внешнюю итеративную схему (например, BiCGSTAB или же итеративное уточнение ) для повышения точности решения.

ШИПКА для трехдиагональных систем

Первое разбиение и алгоритм SPIKE были представлены в [4] и был разработан как средство улучшения свойств устойчивости параллельного решателя на основе вращений Гивенса для трехдиагональных систем. Версия алгоритма, называемая g-Spike, основанная на последовательном вращении Гивенса, применяемом независимо к каждому блоку, была разработана для графического процессора NVIDIA. [5]. Алгоритм на основе SPIKE для графического процессора, основанный на специальной стратегии поворота по диагонали блока, описан в [6].

SPIKE как прекондиционер

Алгоритм SPIKE также может функционировать как предварительное условие для итерационных методов решения линейных систем. Решить линейную систему Топор = б с помощью итеративного решателя с предварительным условием SPIKE извлекаются центральные полосы из А сформировать полосатый прекондиционер M и решает линейные системы с участием M в каждой итерации с алгоритмом SPIKE.

Чтобы предварительное кондиционирование было эффективным, обычно требуется перестановка строк и / или столбцов для перемещения «тяжелых» элементов А близко к диагонали, чтобы они были покрыты предобуславливателем. Этого можно добиться, вычислив взвешенная спектральная переупорядоченность из А.

Алгоритм SPIKE можно обобщить, не ограничивая строгую привязку предобуславливателя. В частности, диагональный блок в каждом разделе может быть общей матрицей и, таким образом, обрабатываться прямым решателем общей линейной системы, а не ленточным решателем. Это усиливает предварительную подготовку и, следовательно, увеличивает шансы на сходимость и сокращает количество итераций.

Реализации

Intel предлагает реализацию алгоритма SPIKE под названием Intel Adaptive Spike-based Solver [7]. Трехдиагональные решатели также были разработаны для графического процессора NVIDIA. [8][9] и сопроцессоры Xeon Phi. Метод в [10] является основой трехдиагонального решателя в библиотеке cuSPARSE.[1] Решатель на основе вращений Гивенса также был реализован для графического процессора и Intel Xeon Phi.[2]

Рекомендации

  1. ^ NVIDIA, по состоянию на 28 октября 2014 г. Документация CUDA Toolkit v. 6.5: cuSPARSE, http://docs.nvidia.com/cuda/cusparse.
  2. ^ https://www.researchgate.net/publication/282286515_A_general_tridiagonal_solver_for_coprocessors_Adapting_g-Spike_for_the_Intel_Xeon_Phi
  1. ^ Polizzi, E .; Самех, А. Х. (2006). «Решатель параллельной гибридной ленточной системы: алгоритм SPIKE». Параллельные вычисления. 32 (2): 177–194. Дои:10.1016 / j.parco.2005.07.005.
  2. ^ Polizzi, E .; Самех, А. Х. (2007). «SPIKE: Параллельная среда для решения полосовых линейных систем». Компьютеры и жидкости. 36: 113–141. Дои:10.1016 / j.compfluid.2005.07.005.
  3. ^ Mikkelsen, C.C.K .; Мангуоглу, М. (2008). «Анализ алгоритма усеченного SPIKE». SIAM J. Matrix Anal. Appl. 30 (4): 1500–1519. CiteSeerX  10.1.1.514.8748. Дои:10.1137/080719571.
  4. ^ Manguoglu, M .; Sameh, A.H .; Шенк, О. (2009). «PSPIKE: параллельный гибридный решатель разреженных линейных систем». Конспект лекций по информатике. 5704: 797–808. Bibcode:2009LNCS.5704..797M. Дои:10.1007/978-3-642-03869-3_74. ISBN  978-3-642-03868-6.
  5. ^ "Intel Adaptive Spike-based Solver - Intel Software Network". Получено 2009-03-23.
  6. ^ Sameh, A.H .; Кук, Д. Дж. (1978). "Об устойчивых параллельных решателях линейных систем". Журнал ACM. 25: 81–91. Дои:10.1145/322047.322054.
  7. ^ Venetis, I.E .; Курис, А .; Собчик, А .; Gallopoulos, E .; Самех, А. Х. (2015). «Прямой трехдиагональный решатель, основанный на вращении Гивенса для архитектур GPU». Параллельные вычисления. 25: 101–116. Дои:10.1016 / j.parco.2015.03.008.
  8. ^ Chang, L.-W .; Stratton, J .; Kim, H .; Hwu, W.-M. (2012). «Масштабируемый, численно стабильный, высокопроизводительный трехдиагональный решатель с использованием графических процессоров». Proc. Int'l. Конф. Высокопроизводительные вычисления, сетевое хранилище и анализ (SC'12). Лос-Аламитос, Калифорния, США: IEEE Computer Soc. Пресса: 27: 1–27: 11. ISBN  978-1-4673-0804-5.

дальнейшее чтение