Метод Холецкого (нахождение симметричного треугольного разложения): различия между версиями
[непроверенная версия] | [непроверенная версия] |
Konshin (обсуждение | вклад) |
Konshin (обсуждение | вклад) |
||
Строка 54: | Строка 54: | ||
== Разложение Холецкого, блочный вещественный вариант для разреженной симметричной положительно-определённой матрицы == | == Разложение Холецкого, блочный вещественный вариант для разреженной симметричной положительно-определённой матрицы == | ||
− | + | Иногда разреженную симметричную матрицу бывает удобно представить в блочном виде с блоками небольшого размера <math>M</math>, равного, например, количеству неизвестных функций на узел при конечно-элементной или конечно-разностной аппроксимации уравнений в частных производных. | |
+ | В этом случае структура разреженности хранится сразу для блочной структуры разреженности (что позволяет экономить память на хранении целочисленных массивов). | ||
+ | Если общее количество ненулевых блоков размера <math>M\times M</math> в матрице равно nnz ("number of nonzeros"), то пямять для хранения разреженных данных такой мелкоблочной матрицы в формате CSR при использовании двойной точности составит <math>(2M^2+1)\,{\rm nnz}+n/M+1</math>. | ||
+ | |||
+ | В некоторых случаях, размер блока <math>M</math> может выбираться искуственно, например, для повышения эффективности работы процедур нижнего уровня за счет приема разворачивания циклов (''loop unrolling''). | ||
+ | |||
+ | Алгоритмы, необходимые при выполнении разложения Холецкого для матриц, рассмотренных в этом разделе, могут быть получены комбинацией уже рассмотренных идей | ||
+ | [[Разложение_Холецкого_(метод_квадратного_корня)#Разложение Холецкого, блочный вещественный вариант для плотной симметричной положительно-определённой матрицы|блочности]] и [[Разложение_Холецкого_(метод_квадратного_корня)#Разложение Холецкого, точечный вещественный вариант для разреженной симметричной положительно-определённой матрицы|разреженности]]. | ||
== Разложение Холецкого для эрмитовой матрицы == | == Разложение Холецкого для эрмитовой матрицы == |
Версия 16:08, 18 марта 2015
Содержание
- 1 Разложение Холецкого (метод квадратного корня), базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы
- 2 Разложение Холецкого, блочный вещественный вариант для плотной симметричной положительно-определённой матрицы
- 3 Разложение Холецкого, точечный вещественный вариант для разреженной симметричной положительно-определённой матрицы
- 4 Разложение Холецкого, блочный вещественный вариант для разреженной симметричной положительно-определённой матрицы
- 5 Разложение Холецкого для эрмитовой матрицы
- 6 Использование разложения Холецкого в итерационных методах
- 7 Использование разложения Холецкого в параллельных итерационных алгоритмах
- 7.1 Переупорядочивания для выделения блочности
- 7.2 Разложение в независимых блоках
- 7.3 Разложение в сепараторах
- 7.4 Иерархические и вложенные алгоритмы
- 7.5 Блочный метод Якоби (без перекрытия блоков, Block Jacobi - BJ)
- 7.6 Адитивный метод Шварца (Additive Schwarz - AS)
- 7.7 Блочный метод неполного обратного разложения Холецкого (BIIC)
- 8 Решение линейной системы с треугольной матрицей
- 8.1 Решение системы с плотной верхнетреугольной матрицей
- 8.2 Решение системы с плотной нижнетреугольной матрицей
- 8.3 Решение системы с разреженной верхнетреугольной матрицей
- 8.4 Решение системы с разреженной нижнетреугольной матрицей
- 8.5 Решение системы с комплексной треугольной матрицей
- 8.6 Решение систем с блочноокаймленными треугольными матрицами
1 Разложение Холецкого (метод квадратного корня), базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы
Разложение Холецкого (метод квадратного корня), базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы.
2 Разложение Холецкого, блочный вещественный вариант для плотной симметричной положительно-определённой матрицы
Можно также рассмотреть блочный вариант разложения Холецкого. Предположим, что n=MN, тогда исходную матрицу A размера n\times n можно представить как блочную матрицу размера N\times N с блоками размера M\times M. Все формулы, используемые для получения точечного разложения Холецкого, для блочной матрицы А останутся практически без изменений. Вместо явного обращения диагональных блоков, эффективнее будет хранить их в факторизованном виде D_{ii}=L_{ii}L^T_{ii}, а вместо точечной операции деления использовать операции решения треугольных систем. Общее количество арифметических операций при этом останется практически неизменным, но зато существенно возрастет локальность вычислений. Размер блока M выбирают таким образом, чтобы все блоки, участвующие в операции исключения, помещались в кэш первого или второго уровня. В этом случае подкачки данных в память будут минимальными.
Аналогичный прием понадобится также и для эффективной реализации параллельной версии разложения Холецкого, что позволит минимизировать как общее количество обменов, так и количество пересылаемой между процессорами информации. Полезным побочным эффектом использования блочной версии разложения Холецкого может стать повышение скалярной эффективности алгоритма за счет явного использования размера блока M во внутренних циклах (прием "разворачивания цикла" или "loop unrolling").
3 Разложение Холецкого, точечный вещественный вариант для разреженной симметричной положительно-определённой матрицы
Если исходная матрица A представлена в разреженном виде, то для экономии памяти, а также арифметических операций, необходимо учитывать ее разреженность.
3.1 Основные отличия от случая плотной матрицы
В этом разделе необходимо рассмотреть три следующие виды разреженности:
1. ленточная матрица - матрица,ненулевые элементы которой сосредоточены внутри ленты шириной 2d+1, т.е. когда a_{ij}=0, если |i-j|\gt d. В этом случае, при проведении разложения Холдецкого новые ненулевые элементы (если внутри ленты имеются нулевые элементы) могут образовываться только внутри этой же ленты. Количество ненулевых элементов в исходной матрице A, а также в нижнетреугольном множителе L будет около (d+1)n, а арифметичекие затраты соcтавят приблизительно d^2n. Случай, когда матрица состоит всего из нескольких диагоналей (например, при конечно-разностной аппроксимации уравнений в частных производных на регулярной сетке) здесь отдельно не рассматривается, т.к. заполнение в нижнетреугольном множителе L все-равно будет определяться исключительно наличием самой внешней (дальней) диагонали.
2. профильная матрица - в более общем случае, заполнение в каждой строке треугольного множителе L будет определяться позицией первого ненулевого элемента. Сумма по всем строкам растояний от первого ненулевого элемента строки до главной диагонали и сотавляет "профиль" матрицы и определяет количество ненулевых элементов в нижнетреугольном множителе L.
3. матрица общей структуры разреженности. Верхней границей заполнения треугольного множителя L, конечно же, будет значение "профиля" матрицы, но учет особенностей структуры ненулевых элементов внутри профиля иногда может дать дополнительный эффект в повышении эффективности вычислений.
Для рассмотрения общего случая разреженности необходимо выбрать формат хранения разреженных данных. Таковым может быть, например, формат построчного сжатия данных ("compressed sparse row" или CSR формат). В первом вещественном массиве, подряд (обычно в порядке возрастания номером столбцов) хранятся ненулевые элементы матрицы, во втором, в том же порядке хранятся номера столбцов, в третьем, отдельно сохраняется начало каждой строки. Если общее количество ненулевых элементов в матрице равно nnz ("number of nonzeros"), то пямять для хранения разреженных данных такой матрицы в формате CSR при использовании двойной точности составит 3\,{\rm nnz}+n+1. Оценку количества орифметических операций в общем случае невозможно, т.к. помимо количества ненулевых элементов в исходной матрице оно существенно зависит от структуры ее разреженности.
Для реализации разложения Холецкого в этом случае понадобятся несколько операций с разреженными строками:
а) копирование из одной разреженной строки в другую (или во временный "плотный" вектор, распаковка данных);
б) выполнение операции исключения для одного из элементов строки;
в) вставление в строку нового ненулевого элемента ("fill-in");
г) сжатие данных с копированием из временного плотного вектора в сжатый разреженный (упаковка данных).
3.2 Переупорядочивания для уменьшения количества новых ненулевых элементов
Структура треугольного множителя L, а также объем памяти им занимаемый, зависят от упорядочивания строк и столбцов исходной матрицы A, в котором проводится разложение. Существуют алгоритмы, минимизирующие заполнение матрицы L.
- ) В первую очередь это алгоритм RCM (reversed Cuthill–McKee), который предназначен для уменьшения профиля матрицы. Одновременно с уменьшением профиля происходит и уменьшение заполнения треугольного множителя L. Это очень широко применяемый, быстрый, но не самый эффективный алгоритм. Русского аналога название этого алгоритма не имеет.
- ) Алгоритм вложенных сечений (Nested Dissection, ND) - служит именно для минимизации заполнения множителя L. В некоторых частных случаях доказана его ассимптотическая оптимальность.
В общем случае, проблема поиска перестановки минимизирующей заполнение множителя L является NP-полной задачей.
4 Разложение Холецкого, блочный вещественный вариант для разреженной симметричной положительно-определённой матрицы
Иногда разреженную симметричную матрицу бывает удобно представить в блочном виде с блоками небольшого размера M, равного, например, количеству неизвестных функций на узел при конечно-элементной или конечно-разностной аппроксимации уравнений в частных производных. В этом случае структура разреженности хранится сразу для блочной структуры разреженности (что позволяет экономить память на хранении целочисленных массивов). Если общее количество ненулевых блоков размера M\times M в матрице равно nnz ("number of nonzeros"), то пямять для хранения разреженных данных такой мелкоблочной матрицы в формате CSR при использовании двойной точности составит (2M^2+1)\,{\rm nnz}+n/M+1.
В некоторых случаях, размер блока M может выбираться искуственно, например, для повышения эффективности работы процедур нижнего уровня за счет приема разворачивания циклов (loop unrolling).
Алгоритмы, необходимые при выполнении разложения Холецкого для матриц, рассмотренных в этом разделе, могут быть получены комбинацией уже рассмотренных идей блочности и разреженности.
5 Разложение Холецкого для эрмитовой матрицы
Эрмитовой (или комплексно-самосопряженной) матрицей называют такую квадратную комплексную матрицу A, для элементов которой выполняется соотношение a_{ij}=\overline{a_{ji}} (здесь, если z=a+{\rm i}b и {\rm i}^2=-1, то \overline z=a-{\rm i}b). В матричном виде это можно записать как A=\overline{A^T} или A=A^Н.
5.1 Точечный вариант
Как естественное обобщение разложения Холецкого для точечной симметричной положительно-определеной матрицы может быть рассмотрено разложение Холецкого для эрмитовой матрицы. Все формулы для вычисления разложения остаются прежними, только теперь вместо операций над вещественными числами выполняются аналогичные комплексные операции.
В отличие от вещественного варианта, для выполнении комплексных операций потребуется считывать из памяти вдвое больше данных и производить над ними примерно вчетверо больше арифметических операций, что должно не только несколько улучшыть локальность вычислений, но и повысить их эффективность.
5.2 Блочный вариант
Реализация блочного варианта разложения Холецкого для эрмитовых матриц будет аналогична рассмотрему выше блочному варианту для вещественных матриц.