Алгоритм SPIKE работает с линейной системой ТОПОР = F, куда А это полосатый матрица пропускная способность намного меньше чем , и F является матрица, содержащая правые части. Он разделен на этап предварительной обработки и этап постобработки.
Стадия предварительной обработки
На этапе предварительной обработки линейная система ТОПОР = F разделен на блок трехдиагональный форма
Предположим пока, что диагональные блоки Аj (j = 1,...,п с п ≥ 2) находятся неособый. Определить диагональ блока матрица
D = диаг (А1,...,Ап),
тогда D также неособое. Левое умножение D−1 обеим сторонам системы дает
которое необходимо решить на этапе постобработки. Левое умножение на D−1 эквивалентно решению системы формы
Аj[VjWjграммj] = [BjCjFj]
(опуская 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 логически разделен на два этапа, в вычислительном отношении он состоит из трех этапов:
Каждый из этих этапов может быть выполнен несколькими способами, что позволяет использовать множество вариантов. Два примечательных варианта: рекурсивный СПАЙК алгоритм для не-диагонально-доминантный дела и усеченный шип алгоритм для диагонально-доминирующих случаев. В зависимости от варианта, система может быть решена либо точно, либо приблизительно. В последнем случае SPIKE используется как прекондиционер для итерационных схем, таких как Методы подпространства Крылова и итеративное уточнение.
Рекурсивный СПАЙК
Стадия предварительной обработки
Первым шагом этапа предварительной обработки является факторизация диагональных блоков. Аj. Для численной устойчивости можно использовать ЛАПАК с XGBTRF процедуры для LU факторизовать их с частичным поворотом. В качестве альтернативы их можно также разложить на множители без частичного поворота, но с помощью стратегии «диагонального повышения». Последний метод решает проблему сингулярных диагональных блоков.
Конкретно стратегия диагонального повышения заключается в следующем. Позволять 0ε обозначают конфигурируемый "машинный нуль". На каждом этапе факторизации LU мы требуем, чтобы стержень удовлетворял условию
| стержень | > 0ε‖А‖1.
Если точка поворота не удовлетворяет условию, она увеличивается на
куда ε - положительный параметр, зависящий от округление единицы, и факторизация продолжается с увеличенной точкой поворота. Этого можно добиться с помощью модифицированных версий ScaLAPACK с XDBTRF рутины. После факторизации диагональных блоков вычисляются пики и передаются на этап постобработки.
Этап постобработки
Двухсекционный корпус
В двухраздельном случае, т. Е. Когда п = 2, редуцированная система S̃X̃ = ГРАММ имеет форму
Один раз Икс(б) 1 и Икс(т) 2 найдены, Икс(т) 1 и Икс(б) 2 можно вычислить через
Икс(т) 1 = грамм(т) 1 − V(т) 1Икс(т) 2,
Икс(б) 2 = грамм(б) 2 − W(б) 2Икс(б) 1.
Многосекционный корпус
Предположить, что п является степенью двойки, т.е. п = 2d. Рассмотрим блочно-диагональную матрицу
D̃1 = диаг (D̃[1] 1,...,D̃[1] п/2)
куда
за k = 1,...,п/2. Заметь D̃1 по существу состоит из диагональных блоков порядка 4м извлечен из S̃. Теперь факторизуем S̃ в качестве
S̃ = D̃1S̃2.
Новая матрица S̃2 имеет форму
Его структура очень похожа на структуру S̃2, различаются только количеством шипов и их высотой (ширина остается неизменной на м). Таким образом, аналогичный шаг факторизации может быть выполнен на S̃2 производить
S̃2 = D̃2S̃3
и
S̃ = D̃1D̃2S̃3.
Такие шаги факторизации можно выполнять рекурсивно. После d − 1 шагов, получаем факторизацию
S̃ = D̃1⋯D̃d−1S̃d,
куда S̃d имеет всего два шипа. Уменьшенная система затем будет решена через
ИКС = S̃−1 dD̃−1 d−1⋯D̃−1 1ГРАММ.
Техника блочной LU-факторизации в случае двух разделов может использоваться для обработки шагов решения, включающих D̃1, ..., D̃d−1 и S̃d поскольку они по существу решают несколько независимых систем обобщенных двухраздельных форм.
Обобщение на случаи, когда п не степень двойки, почти тривиально.
Усеченный шип
Когда А диагонально-доминирующая, в редуцированной системе
блоки V(т) j и W(б) j часто незначительны. Без них сокращенная система становится блочно-диагональной.
Усеченный алгоритм 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]
^ Polizzi, E .; Самех, А. Х. (2006). «Решатель параллельной гибридной ленточной системы: алгоритм SPIKE». Параллельные вычисления. 32 (2): 177–194. Дои:10.1016 / j.parco.2005.07.005.
^ Polizzi, E .; Самех, А. Х. (2007). «SPIKE: Параллельная среда для решения полосовых линейных систем». Компьютеры и жидкости. 36: 113–141. Дои:10.1016 / j.compfluid.2005.07.005.
^ Sameh, A.H .; Кук, Д. Дж. (1978). "Об устойчивых параллельных решателях линейных систем". Журнал ACM. 25: 81–91. Дои:10.1145/322047.322054.
^ Venetis, I.E .; Курис, А .; Собчик, А .; Gallopoulos, E .; Самех, А. Х. (2015). «Прямой трехдиагональный решатель, основанный на вращении Гивенса для архитектур GPU». Параллельные вычисления. 25: 101–116. Дои:10.1016 / j.parco.2015.03.008.
^ Chang, L.-W .; Stratton, J .; Kim, H .; Hwu, W.-M. (2012). «Масштабируемый, численно стабильный, высокопроизводительный трехдиагональный решатель с использованием графических процессоров». Proc. Int'l. Конф. Высокопроизводительные вычисления, сетевое хранилище и анализ (SC'12). Лос-Аламитос, Калифорния, США: IEEE Computer Soc. Пресса: 27: 1–27: 11. ISBN978-1-4673-0804-5.