
- •Аннотация
- •Abstract
- •Глава 1. Проекционные методы решения слау 8
- •Глава 2. Перезапускаемый метод gmres 20
- •Глава 3. Разработка параллельной модификации метода gmres 28
- •Глава 4. Исследование параллельной модификации перезапускаемого gmres 47
- •Введение
- •Глава 1. Проекционные методы решения слау
- •1.1. Принцип построения проекционных методов
- •1.2. Методы подпространства Крылова
- •1.2.1. Метод полной ортогонализации
- •1.2.2. Метод сопряженных градиентов
- •1.2.3. Метод минимальных невязок
- •1.2.3. Метод обобщенных минимальных невязок
- •1.3. Сравнение проекционных методов
- •1.4. Постановка задачи магистерской диссертации
- •1.5. Выводы по главе 1
- •Глава 2. Перезапускаемый методGmres
- •2.1. Ортогонализация Арнольди
- •2.2. Метод вращений Гивенса
- •2.3. Декомпозиция алгоритмаGmres
- •2.4. Предобуславливание в методеGmres
- •2.5. Выводы по главе 2
- •Глава 3. Разработка параллельной модификации методаGmres
- •3.1. Основные классы параллельных вычислительных систем
- •3.2. Классификация моделей параллельного программирования
- •3.3. Формат хранения разреженных матриц
- •3.4. Разделение данных
- •3.5. Исследование обменных взаимодействий в модели передачи сообщений
- •3.6. Особенности параллельной модификации методаGmres
- •3.6.1. Распределение данных по исполнителям
- •3.6.2. Выполнение параллельных операций
- •3.6.3. Объединение результатов расчетов
- •3.7. Теоретическая оценка трудоемкости
- •3.8. Выводы по главе 3
- •Глава 4. Исследование параллельной модификации перезапускаемогоGmres
- •4.1. Задача аэродинамического обтекания профиля
- •4.2. Исследование эффективности параллельной модификации перезапускаемогоGmres
- •4.3. Выводы по главе 4
- •Заключение
- •Список литературы
- •Приложение
3.6. Особенности параллельной модификации методаGmres
В разделе 2.3 были приведены основные подзадачи перезапускаемого метода обобщенных минимальных невязок. В разработанной модификации алгоритма основное внимание уделено организации параллельных вычислений для выполнения выделенных подзадач.
3.6.1. Распределение данных по исполнителям
При
выполнении параллельного алгоритма
решения систем линейных алгебраических
уравнений необходимо распределить
входные данные наиболее рациональным
способом. Матрица коэффициентов
разбивается на непрерывные горизонтальные
полосы. Распределение вектора правой
части и начального приближения выполнено
по принципу дублирования, т.е. все
элементы векторов скопированы на все
процессоры. Для рассматриваемой задачи
решения СЛАУ такой подход распределения
допустим, т.к. векторы содержат столько
же элементов, сколько и одна строка или
один столбец матрицы коэффициентов.
Если процессор хранит строку матрицы
и одиночные элементы векторов правой
части и начального приближения, то общее
число сохраняемых элементов имеет
порядок
.
Если же процессор хранит строку матрицы
и все элементы векторов, то общее число
сохраняемых элементов также порядка
.
Таким образом, при дублировании и при
разделении векторов требования к объему
памяти из одного класса сложности.
3.6.2. Выполнение параллельных операций
Подзадачи, приведенные в разделе 2.3, можно разделить на 2 группы: операции между матрицей и вектором (например, умножение матрицы на вектор) и операции между двумя векторами (например, скалярное умножение, взвешенная сумма векторов и пр.). Подзадачи умножения константы на вектор и определение нормы вектора будем относить ко второй группе, так как их трудоемкость одного порядка.
Особенности выполнения операций между матрицей и вектором определены способом распределения входных данных. На рис. 3.7 схематично изображен процесс параллельного умножения матрицы на вектор на трех процессорах.
Рис. 3.7. Схема параллельного выполнения операции между матрицей и вектором
Заштрихованные участки соответствуют данным, расположенным в памяти процессора исполнителя. Каждый исполнитель получает свою часть результата выполнения операции.
По схожему принципу организовано параллельное выполнение операций между двумя векторами. Несмотря на то, что каждому процессу доступна полная информация о векторах, вычисления производятся лишь над участком, соответствующим процессу-исполнителю. На рис. 3.8 изображен пример параллельного выполнения операций между двумя векторами.
Рис. 3.8. Схема параллельного выполнения операции между двумя векторами
Таким образом, параллельное выполнение любой из выделенных подзадач привело к распределению вычислительной нагрузки между всеми исполнителями.
3.6.3. Объединение результатов расчетов
Результатом выполнения рассматриваемых операций является, чаще всего, вектор, части которого расположены на участвовавших в вычислениях процессорах. Согласно принятому в пункте 3.6.1 способу хранения векторов, для объединения результатов расчета и получения полного вектора на каждом процессоре вычислительной системы необходимо выполнить операцию сбора данных. На основании исследования видов обменных взаимодействий в модели с распределенной памятью, проведенных в разделе 3.5, в качестве таких операций будут выступать операции массовых коммуникационных обменов. С их помощью каждый процессор передаст свой вычисленный элемент вектора всем остальным процессорам (см. рис. 3.9).
Рис. 3.9. Принцип сбора результатов вычислений