Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Исследование параллелизма при решении двухточечной краевой задачи на графических ускорителях NVIDIA (магистерская диссертация).docx
Скачиваний:
66
Добавлен:
28.06.2014
Размер:
1.59 Mб
Скачать

2.3. Разработка параллельного алгоритма для решения трехдиагональной системы линейных уравнений

Пусть нужно решить трехдиагональную систему линейных уравнений

(2.13)

с использованием pпараллельных нитей.

Применим блочный подход к разделению данных: пусть каждая нить обрабатывает m=[n/p]строк матрицыA, т.е.k-ая нить обрабатывает строки с номерами1+(k-1)*m ik*m. Для простоты мы предполагаем, что число уравнений в системе кратно числу нитей, в общем случае изменится только число уравнений в последнем потоке. На рис. 2.1 представлено разделение данных для трех нитей в случае системы из 12 уравнений.

Рисунок 2.1. Блочное разделение данных

В пределах полосы матрицы, обрабатываемой k-ой нитью, можно организовать исключение поддиагональных элементов матрицы (прямой ход метода). Для этого осуществляется вычитание строкиi, умноженной на константуai+1/ci, из строкиi+1с тем, чтобы результирующий коэффициент при неизвестнойxiв(i+1)-ой строке оказался нулевым [10].

Рисунок 2.2. Вид матрицы Апосле исключения поддиагональных элементов

Если исключение первым потоком поддиагональных переменных не добавит в матрицу новых коэффициентов, то исключение поддиагональных элементов в остальных потоках приведет к возникновению столбца отличных от нуля коэффициентов: во всех блоках (кроме первого) число ненулевых элементов в строке не изменится, но изменится структура уравнений. Модификации также подвергнутся элементы вектора правой части. Рисунок 2.2 иллюстрирует данный процесс, чертой сверху отмечены элементы, которые будут модифицированы.

Затем выполняется обратный ход алгоритма – каждая нить исключает наддиагональные элементы, начиная с последнего.

Рисунок 2.3. Вид матрицы Апосле исключения наддиагональных элементов

После выполнения обратного хода матрица стала блочной (см. рис. 2.3). Исключим из нее внутренние строки каждой полосы, в результате получим систему уравнений относительно части исходный неизвестных, частный вид которой представлен на рис. 2.4.

Рисунок 2.4. Вид матрицы Апосле исключения внутренних строк каждой полосы

Данная система будет содержать 2pуравнений, и будет трехдиагональной. Ее можно решить последовательным методом прогонки. После того, как эта система будет решена, станут известны значения неизвестных на границах полос разделения данных. Далее можно за один проход найти значения внутренних переменных.

Можно использовать лучшую стратегию исключения неизвестных, чем в рассмотренном способе распараллеливания. Прямой ход нового алгоритма будет таким же, а во время обратного хода каждая нить исключает наддиагональные элементы, начиная со своего предпоследнего, и заканчивая последним для предыдущей нити [10]. Рисунок 2.5 иллюстрирует данный процесс.

Рисунок 2.5. Модернизированная стратегия исключения неизвестных

Изменение порядка исключения переменных в обратном ходе алгоритма приводит к тому, что можно сформировать вспомогательную задачу меньшего размера. Исключим из матрицы все строки каждой полосы, кроме последней, в результате получим систему уравнения относительно части исходный неизвестных, частный вид которой представлен на рис. 2.6.

Рисунок 2.6. Частный вид системы уравнений после исключения строк из матрицы A

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