Jump to content

Алгоритм 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̃ = .

Как только все X   ( t )
j
 
и X   ( б )
j
 
найдены, все X j можно восстановить с идеальным параллелизмом с помощью

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

[ редактировать ]

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

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

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

Рекурсивный ШИП

[ редактировать ]

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

[ редактировать ]

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

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

|поворот| > 0 ε А 1 .

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

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

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

[ редактировать ]
Двухраздельный случай
[ редактировать ]

В двухраздельном случае, т. е. когда p = 2 , приведенная система S̃X̃ = имеет вид

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

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

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

Икс   ( т )
1
 
знак равно г   ( т )
1
 
V  ( t )
1
 
х   ( т )
2
 
,
Икс   ( б )
2
 
знак равно г   ( б )
2
 
- Вт   ( б )
2
 
х   ( б )
1
 
.
Случай с несколькими разделами
[ редактировать ]

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

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

где

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

S̃ знак равно 1 2 .

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

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

С̃ 2 = Д̃ 2 С̃ 3

и

знак равно 1 2 3 .

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

S̃ знак равно 1 d −1 d ,

где у S̃ d всего два шипа. Приведенная система будет тогда решена через

=   −1
d
 
  −1
d −1
 
  −1
1
 
г.

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

  1. ^ NVIDIA, по состоянию на 28 октября 2014 г. Документация по набору инструментов CUDA, версия 6.5: cuSPARSE, http://docs.nvidia.com/cuda/cusparse .
  2. ^ Венетис, Иоаннис; Собчик, Александрос; Курис, Александрос; Накос, Александрос; Николуцакос, Николаос; Галлопулос, Эфстратиос (3 сентября 2015 г.). «Общий трехдиагональный решатель для сопроцессоров: адаптация g-Spike для Intel Xeon Phi» ​​— через ResearchGate .
  1. ^ Полицци, Э.; Самех, АХ (2006). «Решатель параллельной гибридной полосовой системы: алгоритм SPIKE». Параллельные вычисления . 32 (2): 177–194. дои : 10.1016/j.parco.2005.07.005 .
  2. ^ Полицци, Э.; Самех, АХ (2007). «SPIKE: параллельная среда для решения полосовых линейных систем». Компьютеры и жидкости . 36 : 113–141. doi : 10.1016/j.compfluid.2005.07.005 .
  3. ^ Миккельсен, CCK; Мангуоглу, М. (2008). «Анализ алгоритма усеченного SPIKE». СИАМ Дж. Матричный анал. Прил. 30 (4): 1500–1519. CiteSeerX   10.1.1.514.8748 . дои : 10.1137/080719571 .
  4. ^ Мангуоглу, М.; Самех, АХ; Шенк, О. (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 .
  5. ^ «Адаптивный решатель Intel на основе шипов — сеть программного обеспечения Intel» . Проверено 23 марта 2009 г.
  6. ^ Самех, АХ; Кук, диджей (1978). «Об устойчивых решателях параллельных линейных систем» . Журнал АКМ . 25 : 81–91. дои : 10.1145/322047.322054 . S2CID   17109524 .
  7. ^ Венетис, IE; Курис, А.; Собчик А.; Галлопулос, Э.; Самех, А.Х. (2015). «Прямой трехдиагональный решатель, основанный на вращении Гивенса для архитектур графических процессоров». Параллельные вычисления . 25 : 101–116. дои : 10.1016/j.parco.2015.03.008 .
  8. ^ Чанг, Л.-В.; Страттон, Дж.; Ким, Х.; Хву, В.-М. (2012). «Масштабируемый, численно стабильный, высокопроизводительный трехдиагональный решатель с использованием графических процессоров». Учеб. Международный Конф. Высокопроизводительные вычисления, сетевое хранение и анализ (SC'12) . Лос-Аламитос, Калифорния, США: IEEE Computer Soc. Пресса: 27:1–27:11. ISBN  978-1-4673-0804-5 .

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

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 628a5eadfd9802e43304e200fbebeb44__1692709140
URL1:https://arc.ask3.ru/arc/aa/62/44/628a5eadfd9802e43304e200fbebeb44.html
Заголовок, (Title) документа по адресу, URL1:
SPIKE algorithm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)