Алгоритм SPIKE
Алгоритм SPIKE — это гибридный параллельный решатель для полосовых линейных систем, разработанный Эриком Полицци и Ахмедом Самехом. [1] ^ [2]
Обзор
[ редактировать ]Алгоритм SPIKE имеет дело с линейной системой AX = F , где A — полосчатая система. матрица полосы пропускания намного меньше, чем , а F представляет собой матрица, содержащая правые стороны. Он разделен на этап предварительной обработки и этап постобработки.
Этап предварительной обработки
[ редактировать ]На этапе предварительной обработки линейная система AX = F разбивается на блок трехдиагональной формы
Предположим пока, что диагональные блоки A j ( j = 1,..., p с p ≥ 2 ) неособы . Определите блочную диагональную матрицу
- D = диаг( А 1 ,..., А п ) ,
тогда D также неособа. Умножение слева D −1 обеим сторонам системы дает
которая должна быть решена на этапе постобработки. Умножение слева на D −1 эквивалентно решению системы вида
- A j [ V j W j G j ] знак равно [ B j C j F j ]
(опуская W 1 и C 1 для , а также V p и B p для ), что может осуществляться параллельно.
Из-за полосовой природы A только несколько крайних левых столбцов каждого V j и несколько крайних правых столбцов каждого W j могут быть ненулевыми. Эти столбцы называются шипами .
Этап постобработки
[ редактировать ]Без ограничения общности будем считать, что каждый спайк содержит ровно столбцы ( намного меньше, чем ) (при необходимости дополните пик столбцами нулей). Разделите пики во всех V j и W j на
- и
где V ( т )
j , V ( b )
j , Вт ( т )
j и W ( б )
j имеют размеры . Аналогично разбейте все X j и G j на
- и
Заметим, что систему, полученную на этапе предварительной обработки, можно свести к блочной пятидиагональной системе гораздо меньшего размера (напомним, что намного меньше, чем )
которую мы называем приведенной системой и обозначаем S̃X̃ = G̃ .
Как только все X ( t )
j и X ( б )
j найдены, все X ′ j можно восстановить с идеальным параллелизмом с помощью
SPIKE как полиалгоритмический решатель полосовых линейных систем
[ редактировать ]Несмотря на то, что алгоритм SPIKE логически разделен на два этапа, в вычислительном отношении он состоит из трех этапов:
- факторизация диагональных блоков,
- вычисление спайков,
- решение приведенной системы.
Каждый из этих этапов может быть реализован несколькими способами, что допускает множество вариантов. Двумя примечательными вариантами являются рекурсивный алгоритм SPIKE для случаев с недиагональным доминированием и усеченный алгоритм SPIKE для случаев с диагональным доминированием. В зависимости от варианта система может быть решена точно или приближенно. В последнем случае SPIKE используется как предобуславливатель для итерационных схем, таких как методы подпространств Крылова и итеративное уточнение .
Рекурсивный ШИП
[ редактировать ]Этап предварительной обработки
[ редактировать ]Первым шагом этапа предварительной обработки является факторизация диагональных блоков A j . можно использовать LAPACK Для численной стабильности XGBTRF
подпрограммы для LU-факторизации их с частичным поворотом. В качестве альтернативы их можно также факторизовать без частичного поворота, но с помощью стратегии «диагонального повышения». Последний метод решает проблему сингулярных диагональных блоков.
Конкретно стратегия диагонального повышения выглядит следующим образом. Пусть 0 ε обозначает настраиваемый «ноль машины». На каждом этапе LU-факторизации мы требуем, чтобы опорная точка удовлетворяла условию
- |поворот| > 0 ε ‖ А ‖ 1 .
Если опорная точка не удовлетворяет условию, она повышается за счет
где ε машины — положительный параметр, зависящий от единицы округления , и факторизация продолжается с усиленным центром вращения. Этого можно достичь с помощью модифицированных версий ScaLAPACK . XDBTRF
процедуры. После факторизации диагональных блоков пики вычисляются и передаются на этап постобработки.
Этап постобработки
[ редактировать ]Двухраздельный случай
[ редактировать ]В двухраздельном случае, т. е. когда p = 2 , приведенная система S̃X̃ = G̃ имеет вид
Из центра можно извлечь еще меньшую систему:
которое можно решить с помощью блочной LU-факторизации
Однажды Х ( б )
1 и Х ( т )
2 найдено , X ( t )
1 и Х ( б )
2 можно вычислить через
- Икс ( т )
1 знак равно г ( т )
1 − V ( t )
1 х ( т )
2 , - Икс ( б )
2 знак равно г ( б )
2 - Вт ( б )
2 х ( б )
1 .
Случай с несколькими разделами
[ редактировать ]Предположим, что p — степень двойки, т. е. p = 2. д . Рассмотрим блочную диагональную матрицу
- D̃ 1 = диаг( D̃ [1]
1 ,..., Д̃ [1]
п /2 )
где
для к = 1,..., р /2 . Обратите внимание, что D̃ 1 по существу состоит из диагональных блоков порядка 4 m, извлеченных из S̃ . Теперь мы факторизуем S как
- S̃ знак равно D̃ 1 S̃ 2 .
Новая матрица S̃ 2 имеет вид
Его структура очень похожа на структуру S̃ 2 , отличается только количеством шипов и их высотой (их ширина остается неизменной при m ). Таким образом, аналогичный шаг факторизации можно выполнить для S̃ 2, чтобы получить
- С̃ 2 = Д̃ 2 С̃ 3
и
- S̃ знак равно D̃ 1 D̃ 2 S̃ 3 .
Такие этапы факторизации могут выполняться рекурсивно. После d − 1 шагов мы получаем факторизацию
- S̃ знак равно D̃ 1 ⋯ D̃ d −1 S̃ d ,
где у S̃ d всего два шипа. Приведенная система будет тогда решена через
- X̃ = S̃ −1
d D̃ −1
d −1 ⋯ D̃ −1
1 г.
Техника блочной LU-факторизации в случае с двумя разделами может использоваться для обработки шагов решения, включающих D̃ 1 , ..., D̃ d −1 и S̃ d, поскольку они по существу решают несколько независимых систем обобщенных двухраздельных форм.
Обобщение на случаи, когда p не является степенью двойки, почти тривиально.
Усеченный ШИП
[ редактировать ]Когда A является диагонально-доминантным, в приведенной системе
блоки V ( t )
j и W ( б )
j часто пренебрежимо малы. Без них приведенная система становится блочно-диагональной.
и может быть легко решено параллельно [3] .
Усеченный алгоритм SPIKE можно обернуть внутрь какой-нибудь внешней итеративной схемы (например, BiCGSTAB или итеративного уточнения ) для повышения точности решения.
SPIKE для трехдиагональных систем
[ редактировать ]Первое разделение и алгоритм SPIKE были представлены в [4] и был разработан как средство улучшения свойств устойчивости параллельного решателя на основе вращений Гивенса для трехдиагональных систем. Версия алгоритма под названием g-Spike, основанная на последовательном вращении Гивенса, применяемом независимо к каждому блоку, была разработана для графического процессора NVIDIA. [5] . Алгоритм на основе SPIKE для графического процессора, основанный на специальной стратегии диагонального поворота блоков, описан в [6] .
SPIKE как предобуславливатель
[ редактировать ]Алгоритм SPIKE также может выступать в качестве предварительного условия для итерационных методов решения линейных систем. Чтобы решить линейную систему Ax = b с использованием итеративного решателя с предварительной обработкой SPIKE, из A извлекают центральные полосы , чтобы сформировать полосовой предобуславливатель M , и решают линейные системы, включающие M на каждой итерации, с помощью алгоритма SPIKE.
Чтобы предобуславливатель был эффективным, обычно необходима перестановка строк и/или столбцов, чтобы переместить «тяжелые» элементы A близко к диагонали, чтобы они были охвачены предобусловливателем. Это может быть достигнуто путем вычисления переупорядочения A взвешенного спектрального .
Алгоритм SPIKE можно обобщить, не ограничивая предобусловливатель строго полосами. В частности, диагональный блок в каждом разделе может быть общей матрицей и, таким образом, обрабатываться прямым решателем общей линейной системы, а не ленточным решателем. Это расширяет возможности предварительного обуславливателя и, следовательно, повышает вероятность сходимости и уменьшает количество итераций.
Реализации
[ редактировать ]Intel предлагает реализацию алгоритма SPIKE под названием Intel Adaptive Spike-Based Solver. [7] . Трехдиагональные решатели также были разработаны для графического процессора NVIDIA. [8] [9] и сопроцессоры Xeon Phi. Метод в [10] является основой трехдиагонального решателя в библиотеке cuSPARSE. [1] Решатель на основе вращений Гивенса был также реализован для Графический процессор и Intel Xeon Phi. [2]
Ссылки
[ редактировать ]- ^ NVIDIA, по состоянию на 28 октября 2014 г. Документация по набору инструментов CUDA, версия 6.5: cuSPARSE, http://docs.nvidia.com/cuda/cusparse .
- ^ Венетис, Иоаннис; Собчик, Александрос; Курис, Александрос; Накос, Александрос; Николуцакос, Николаос; Галлопулос, Эфстратиос (3 сентября 2015 г.). «Общий трехдиагональный решатель для сопроцессоров: адаптация g-Spike для Intel Xeon Phi» — через ResearchGate .
- ^ Полицци, Э.; Самех, АХ (2006). «Решатель параллельной гибридной полосовой системы: алгоритм SPIKE». Параллельные вычисления . 32 (2): 177–194. дои : 10.1016/j.parco.2005.07.005 .
- ^ Полицци, Э.; Самех, АХ (2007). «SPIKE: параллельная среда для решения полосовых линейных систем». Компьютеры и жидкости . 36 : 113–141. doi : 10.1016/j.compfluid.2005.07.005 .
- ^ Миккельсен, CCK; Мангуоглу, М. (2008). «Анализ алгоритма усеченного SPIKE». СИАМ Дж. Матричный анал. Прил. 30 (4): 1500–1519. CiteSeerX 10.1.1.514.8748 . дои : 10.1137/080719571 .
- ^ Мангуоглу, М.; Самех, АХ; Шенк, О. (2009). «PSPIKE: параллельный гибридный решатель разреженных линейных систем». Параллельная обработка Euro-Par 2009 . Конспекты лекций по информатике. Том. 5704. стр. 797–808. Бибкод : 2009LNCS.5704..797M . дои : 10.1007/978-3-642-03869-3_74 . ISBN 978-3-642-03868-6 .
- ^ «Адаптивный решатель Intel на основе шипов — сеть программного обеспечения Intel» . Проверено 23 марта 2009 г.
- ^ Самех, АХ; Кук, диджей (1978). «Об устойчивых решателях параллельных линейных систем» . Журнал АКМ . 25 : 81–91. дои : 10.1145/322047.322054 . S2CID 17109524 .
- ^ Венетис, IE; Курис, А.; Собчик А.; Галлопулос, Э.; Самех, А.Х. (2015). «Прямой трехдиагональный решатель, основанный на вращении Гивенса для архитектур графических процессоров». Параллельные вычисления . 25 : 101–116. дои : 10.1016/j.parco.2015.03.008 .
- ^ Чанг, Л.-В.; Страттон, Дж.; Ким, Х.; Хву, В.-М. (2012). «Масштабируемый, численно стабильный, высокопроизводительный трехдиагональный решатель с использованием графических процессоров». Учеб. Международный Конф. Высокопроизводительные вычисления, сетевое хранение и анализ (SC'12) . Лос-Аламитос, Калифорния, США: IEEE Computer Soc. Пресса: 27:1–27:11. ISBN 978-1-4673-0804-5 .
Дальнейшее чтение
[ редактировать ]- Галлопулос, Э.; Филипп, Б.; Самех, А.Х. (2015). Параллелизм в матричных вычислениях . Спрингер. ISBN 978-94-017-7188-7 .