39
return 0;
MPI_Finalize();}
2.7.4 Алгоритм решения СЛАУ методом Гаусса
Метод Гаусса – широко известный прямой алгоритм решения систем
линейных
уравнений, для которых матрицы коэффициентов являются
плотными. Если система линейных уравнений невырожденна, то метод
Гаусса гарантирует нахождение решения с погрешностью, определяемой
точностью машинных вычислений. Основная
идея метода состоит в
приведении матрицы
A
посредством эквивалентных преобразований к
треугольному виду, после чего значения искомых неизвестных могут быть
получены непосредственно в явном виде.
Метод Гаусса включает последовательное выполнение двух этапов.
На первом этапе – прямой ход метода Гаусса – исходная система
линейных уравнений при помощи последовательного исключения
неизвестных приводится к верхнему треугольному виду
c
Ux
.
На обратном ходе метода Гаусса (второй этап алгоритма)
осуществляется определение значений неизвестных. Из последнего
уравнения преобразованной системы может
быть вычислено значение
переменной
1
n
x
, после этого из предпоследнего уравнения становится
возможным определение переменной
2
n
x
и т.д.
При внимательном рассмотрении метода Гаусса можно заметить, что
все вычисления сводятся к однотипным вычислительным операциям над
строками матрицы коэффициентов системы линейных уравнений. Как
результат, в основу параллельной реализации алгоритма Гаусса может
быть положен принцип распараллеливания по данным. В качестве базовой
подзадачи можно принять тогда все вычисления, связанные с обработкой
одной строки матрицы и соответствующего элемента вектора .
Рассмотрим
общую
схему
параллельных
вычислений
и
возникающие при этом информационные зависимости между базовыми
подзадачами.
Для выполнения прямого хода метода Гаусса необходимо
осуществить
итерацию по
исключению неизвестных для
преобразования матрицы коэффициентов
к верхнему треугольному
виду.
Выполнение итерации ,
, прямого хода метода Гаусса
включает ряд последовательных действий. Прежде всего, в самом начале
итерации
необходимо
выбрать
ведущую
строку,
которая
при
использовании метода главных элементов определяется поиском строки с
40
наибольшим по абсолютной величине значением среди элементов столбца
, соответствующего исключаемой переменной
.
Поскольку строки
матрицы
распределены по подзадачам, для поиска максимального
значения подзадачи с номерами ,
, должны обменяться своими
элементами при исключаемой переменной
.
После сбора всех
необходимых данных в каждой подзадаче может быть определено, какая
из подзадач содержит ведущую строку и какое значение является
ведущим элементом.
Далее для продолжения вычислений ведущая подзадача должна
разослать свою строку матрицы и соответствующий элемент вектора
всем остальным
подзадачам с номерами ,
. Получив ведущую
строку, подзадачи выполняют вычитание строк, обеспечивая тем самым
исключение соответствующей неизвестной .
При выполнении обратного хода метода Гаусса подзадачи
выполняют необходимые вычисления
для
нахождения
значения
неизвестных. Как только какая-либо подзадача ,
, определяет
значение своей переменной , это значение должно быть разослано всем
подзадачам с номерами
. Далее подзадачи подставляют полученное
значение новой неизвестной и выполняют корректировку значений для
элементов вектора .
Выделенные базовые подзадачи характеризуются одинаковой
вычислительной
трудоемкостью
и
сбалансированным
объемом
передаваемых данных. В случае, когда размер матрицы, описывающей
систему
линейных уравнений, оказывается большим, чем число
доступных процессоров (т.е.
), базовые подзадачи можно укрупнить,
объединив в рамках одной подзадачи несколько строк матрицы.
Возможно
использовать
ленточную
циклическую
схему
для
распределения данных между укрупненными подзадачами. В этом случае
матрица делится на наборы (полосы) строк вида (рисунок 2.9):
.
Рис. 2.9. Пример использования ленточной циклической схемы
Достарыңызбен бөлісу: