Содержание
Введение 5
1. Постановка задачи 6
2. Постановка задачи на выпускную квалификационную работу 7
3. Методы численного решения дифференциальных уравнений 8
3.1. Дискретизация дифференциального уравнения 8
3.1.1 Разностная сетка для одномерной задачи 8
3.1.2 Разностная сетка для трехмерной задачи 9
3.1.3. Явные разностные схемы 10
3.2. Метод Эйлера для явной схемы 11
3.3. Метод Рунге-Кутты для явной схемы 11
3.4. Метод Эйлера для неявной схемы 14
3.5. Алгоритм Якоби решения СЛАУ 15
3.6. Переход к матричному виду 16
3.6.1. Метод Рунге-Кутта 17
3.6.2. Метод Эйлера 17
5. Технологии параллельного программирования 19
5.1. OpenMP 19
5.2. MPI 19
5.3. Intel OneAPI 20
5.3.1. DPC++ 20
5.3.1. OneMKL 20
6. Технологии разработки 21
6.1. Введение 21
6.2. Система контроля версий 21
6.3. Кроссплатформенный генератор решения 21
6.4. Сборщик решения 21
6.5. Тестирование 21
6.6. Система автоматического тестирования 21
7. Описание программы 22
7.1. Структура решения 22
7.2. Конфигурация решения 23
7.3. Состав и структура входных данных 23
7.4. Объем исходного кода 23
7.5. Схема работы программы 24
7.6. Состав и структура выходных данных 25
7.7. Схема распараллеливания при использовании MKL 25
7.8 Схема распараллеливания при использовании DPC 25
7.9 Схема распараллеливания при использовании OpenMP 26
7.10 Схема распараллеливания при использовании MPI 26
7.10.1 Введение 26
7.10.2 Одномерная модель 26
7.10.3 Трехмерная модель 27
8. Результаты вычислительных экспериментов 29
8.1. Характеристики вычислительной системы (аппаратная конфигурация, состав ПО) 29
8.2. Сравнение точности работы алгоритмов 29
8.2.1. Цель выполнения эксперимента 29
8.2.2. Описание проведения эксперимента 29
8.2.3. Результаты экспериментов 29
Для трехмерной задачи подготовлены следующие диаграммы: 30
8.2.4 Выводы по результатам 31
8.3. Оценка производительности реализаций алгоритмов 31
8.3.1. Цель выполнения эксперимента 31
8.3.2. Описание проведения эксперимента 31
8.3.3. Результаты экспериментов 31
8.3.4 Выводы по результатам 33
8.4. Оценка масштабируемости реализаций алгоритмов 33
8.4.1. Цель выполнения эксперимента 33
8.4.2. Описание проведения эксперимента 33
8.4.3. Результаты экспериментов 33
8.4.4 Выводы по результатам 36
Заключение 37
Литература 38
Приложение A. Rooflines 39
Приложение 1 (Roofline MKL Матричный вариант метода Эйлера) 39
Приложение 2 (Roofline MKL Матричный вариант метода Рунге-Кутта) 39
Приложение 2 (Roofline MKL решение неявного метода Эйлера) 39
Приложение B. Фрагменты исходного кода 40
Приложение 1 (Base_3d) 40
Приложение 2 (Получение разреженной матрицы 40
Приложение 3 (MKL Matrix Euler) 41
Приложение 4 (MKL Matrix RK) 41
Приложение 4 (MKL Jacobi) 42
Приложение 5 (DPC Euler) 42
Приложение 6 (DPC Matrix Euler) 43
Приложение 7 (DPC Jacoby) 43
Приложение 8 (DPC RK) 43
Приложение 8 (DPC Matrix RK) 43