- •Аннотация
- •Оглавление
- •Введение
- •1. Графические ускорители – как эффективный путь повышения производительности вычислительных архитектур
- •1.1. Этапы развития графических ускорителей и их устройство
- •1.1.1. Основная терминология и устройство графического адаптера
- •1.1.2. Архитектура современныхGpu
- •1.2. Подход к использованию графических ускорителей для вычислений общего назначения
- •1.2.1.GpgpUподход
- •1.2.2. Гибридные вычислительные системы
- •1.2.3. Программная модельCuda
- •1.3.OpenAcc. Новейший стандарт разработкиGpgpu-приложений
- •1.3.1. Возможности стандарта
- •1.3.2. Модель выполнения
- •1.3.3. Модель памяти
- •1.4. Выводы по разделу 1
- •2. Постановка задачи магистерской диссертации
- •2.1. Цели и задачи исследования
- •2.2. Математическая постановка задачи решения трехдиагональной системы линейных уравнений методом блочной прогонки
- •2.3. Разработка параллельного алгоритма для решения трехдиагональной системы линейных уравнений
- •2.4. Выводы по разделу 2
- •3. Реализация и исследование разработанного алгоритма
- •3.1. Структура параллельной программы и особенности реализации
- •3.2. Результаты тестирования
- •3.3. Анализ результатов
- •3.4. Выводы по разделу 3
- •Заключение
- •Список использованных источников
- •Приложение 1. История развития графических ускорителей и их устройство
- •1.1. Устройство графического адаптера
- •1.2. Рынок графических адаптеров
- •1.3. АрхитектураGpugt200
- •1.4. Современное положение дел
- •Приложение 2. Основная часть программного кода разработанного приложения
2.3. Разработка параллельного алгоритма для решения трехдиагональной системы линейных уравнений
Пусть нужно решить трехдиагональную систему линейных уравнений
(2.13)
с использованием pпараллельных нитей.
Применим блочный подход к разделению данных: пусть каждая нить обрабатывает m=[n/p]строк матрицыA, т.е.k-ая нить обрабатывает строки с номерами1+(k-1)*m ≤ i ≤ k*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будет не слишком велико, применять для решения вспомогательной системы параллельный метод прогонки нецелесообразно). После того, как эта система будет решена, станут известны значения неизвестных на нижних границах полос разделения данных. Далее можно за один проход найти значения внутренних переменных в каждом потоке.