Для решения двумерной задачи диффузии-конвекции,, была построена библиотека двухслойных итерационных методов, предназначенных для решения девятидиагональных сеточных уравнений. Данная библиотека решателей систем линейных алгебраических уравнений (СЛАУ) состоит из:
– метода Якоби [4];
– метода минимальных поправок;
– метода скорейшего спуска;
– метода Зейделя;
– метода верхней релаксации;
– адаптивного МПТМ вариационного типа [1; 2; 6].
Разработанная библиотека итерационных методов была протестирована на модельной задаче диффузии-конвекции-реакции [9; 11]. Задача решена на сетке размером 100×100, шаги по пространственным переменным равны 1 м, коэффициент турбулентного обмена μ=10 м2/с, скорость конвективного переноса равна нулю. Функция, описывающая распределение и интенсивность источников веществ, представлена точечным источником. Для решения модельной задачи использованы схемы с весами, при этом вес схемы задавался равным 0,5. Шаг по временной переменной менялся от 0,001 до 1000 с. Завершение работы решателей СЛАУ происходило при выполнении следующего условия: равномерная норма вектора невязки меньше заданного значения [3].
В таблице 1 приведены зависимости количества итераций, необходимых для решения модельной задачи, от шага по временной переменной.
Из приведенных в таблице значений количества итераций, необходимых для решения модельных задач диффузии-конвекции-реакции, видно, что чем больше шаг по временной переменной, тем больше итераций требуется для решения данной задачи. Это связано с тем, что при увеличении шага по временной переменной уменьшается диагональное преобладание, вследствие чего растет число обусловленности матрицы коэффициентов. Как показано выше, скорость сходимости напрямую зависит от числа обусловленности матрицы коэффициентов. С этим и связан рост числа итераций, необходимых для решения сеточных уравнений итерационными методами.
Таблица 1
Зависимости количества итераций решения сеточных уравнений итерационными методами от шага по временной переменной
Шаг по временной переменной |
Количество итераций |
|||||
Метод Якоби |
Метод минимальных поправок |
Метод скорейшего спуска |
Метод Зейделя |
Метод верхней релаксации |
МПТМ |
|
0.001 |
6 |
6 |
6 |
5 |
43 |
5 |
0.005 |
8 |
8 |
8 |
8 |
43 |
6 |
0.01 |
10 |
10 |
10 |
8 |
45 |
6 |
0.05 |
23 |
23 |
23 |
15 |
56 |
10 |
0.1 |
37 |
36 |
37 |
22 |
61 |
12 |
0.5 |
138 |
134 |
138 |
70 |
60 |
27 |
1 |
256 |
247 |
256 |
126 |
60 |
28 |
5 |
1138 |
1077 |
1138 |
558 |
131 |
50 |
10 |
2233 |
2110 |
2233 |
1073 |
246 |
72 |
50 |
10160 |
9523 |
10160 |
4774 |
1074 |
158 |
100 |
19966 |
18625 |
19966 |
9320 |
2096 |
218 |
500 |
99651 |
92789 |
99651 |
46383 |
10399 |
1281 |
1000 |
199295 |
185529 |
199295 |
92739 |
20781 |
4382 |
Не трудно заметить, что МПТМ является наиболее эффективным из предложенных методов. При больших шагах по временной переменной МПТМ требуется наименьшее количество итераций, по сравнению с остальными методами. Достаточно эффективен и метод верхней релаксации, но при малых шагах по временной переменной его использовать не целесообразно. При решении сеточных уравнений методы Якоби, Зейделя и вариационного типа показали свою эффективность в узком диапазоне задаваемых параметров, однако использовать данные методы при решении плохо обусловленных задач не целесообразно.
Алгоритм параллельной реализации попеременно-треугольного метода
Схему итерационного двухслойного модифицированного попеременно-треугольного метода запишем в виде:
, ,
где xn – вектор решения; – вектор поправки; А – оператор сеточного уравнения; D – диагональная часть оператора A; w – итерационный параметр; R1, R2 – верхняя и нижняя треугольные части оператора A; – вектор невязки; f – правая часть сеточного уравнения.
Для параллельной реализации адаптивного МПТМ использованы методы декомпозиции области по одному направлению. Наиболее трудоемким расчетом с точки зрения построения параллельной программной реализации является расчет вектора поправки, который выполняется в два шага:
1) ,
2) .
На первом шаге рассчитываются элементы вспомогательного вектора снизу вверх, а затем, зная его, на втором шаге находятся элементы вектора поправки сверху вниз. Схемы расчета вспомогательного вектора и вектора поправки представлены на рис. 1 (стрелками показаны направления счета и передачи).
а) б)
Рис. 1. Схемы расчета вспомогательного вектора yn (а) и вектора поправки wn (б).
В схеме для расчета вектора только первый процессор не требует дополнительной информации и может независимо от других процессоров посчитать свою часть области, остальные процессоры ждут от предыдущего передачи элементов, стоящих в начале строки. Передача по одному элементу не оптимальна, так как появляются временные затраты, связанные с их организацией. Суммарное время на накладные расходы можно уменьшить путем увеличения объема передач. Данные рассуждения используются для расчета вектора поправки.
Результаты численных экспериментов
Для решения задачи транспорта МВС использован адаптивный модифицированный попеременно-треугольный метод (МПТМ) минимальных поправок. При параллельной реализации использованы методы декомпозиции сеточных областей для вычислительно трудоемких задач диффузии-конвекции, учитывающие архитектуру и параметры многопроцессорной вычислительной системы. Максимальная производительность МВС составляет 18,8 терафлопс. В качестве вычислительных узлов используются 128 однотипных 16-ядерных Blade-серверов HP ProLiant BL685c, каждый из которых оснащен четырьмя четырехъядерными процессорами AMD Opteron 8356 2.3GHz и оперативной памятью в объеме 32 ГБ. В таблицах 2 и 3 приведены временные затраты выполнения одной итерации методом Якоби и МПТМ соответственно на различных сетках, а также значения ускорения и эффективности для различного числа вычислительных ядер.
Таблица 2
Ускорение и эффективность работы параллельного варианта метода Якоби
|
|
100x100 |
200x200 |
500x500 |
1000x1000 |
2000x2000 |
5000x5000 |
1 |
Время |
0.000271 |
0.00429 |
0.00846 |
0.03608 |
0.138 |
1.633 |
Ускорение |
1 |
1 |
1 |
1 |
1 |
1 |
|
Эффективность |
1 |
1 |
1 |
1 |
1 |
1 |
|
2 |
Время |
0.000074 |
0.00060 |
0.00866 |
0.02193 |
0.08041 |
0.825 |
Ускорение |
3.662 |
7.15 |
0.977 |
1.645 |
1.716 |
1.979 |
|
Эффективность |
1.831 |
3.575 |
0.488 |
0.823 |
0.858 |
0.99 |
|
4 |
Время |
0.000052 |
0.00017 |
0.00341 |
0.00978 |
0.04376 |
0.533 |
Ускорение |
5.212 |
25.235 |
2.481 |
3.689 |
3.156 |
3.064 |
|
Эффективность |
1.303 |
6.309 |
0.62 |
0.922 |
0.788 |
0.766 |
|
8 |
Время |
0.000029 |
0.000089 |
0.00207 |
0.00745 |
0.02924 |
0.188 |
Ускорение |
9.345 |
48.202 |
4.087 |
4.843 |
4.72 |
8.686 |
|
Эффективность |
1.168 |
6.025 |
0.511 |
0.605 |
0.59 |
1.086 |
|
16 |
Время |
0.000025 |
0.000063 |
0.00054 |
0.00628 |
0.01921 |
0.142 |
Ускорение |
10.84 |
68.095 |
15.667 |
5.745 |
7.184 |
11.5 |
|
Эффективность |
0.677 |
4.256 |
0.979 |
0.359 |
0.449 |
0.719 |
|
32 |
Время |
0.000060 |
0.000089 |
0.00018 |
0.00247 |
0.01051 |
0.078 |
Ускорение |
4.517 |
48.202 |
47 |
14.607 |
13.13 |
20.936 |
|
Эффективность |
0.141 |
1.506 |
1.469 |
0.456 |
0.41 |
0.654 |
|
64 |
Время |
0.000125 |
0.000142 |
0.00016 |
0.00110 |
0.00584 |
0.044 |
Ускорение |
2.168 |
30.211 |
52.875 |
32.8 |
23.63 |
37.114 |
|
Эффективность |
0.034 |
0.472 |
0.826 |
0.513 |
0.369 |
0.58 |
|
128 |
Время |
- |
0.000364 |
0.00040 |
0.00048 |
0.00485 |
0.017 |
Ускорение |
- |
11.786 |
21.15 |
75.167 |
28.454 |
96.059 |
|
Эффективность |
- |
0.092 |
0.165 |
0.587 |
0.222 |
0.75 |
|
256 |
Время |
- |
- |
0.000801 |
0.000653 |
0.003215 |
0.00987 |
Ускорение |
- |
- |
10.562 |
55.253 |
42.924 |
165.434 |
|
Эффективность |
- |
- |
0.041 |
0.216 |
0.168 |
0.646 |
|
512 |
Время |
- |
- |
- |
0.001294 |
0.002051 |
0.00715 |
Ускорение |
- |
- |
- |
27.883 |
67.284 |
228.36 |
|
Эффективность |
- |
- |
- |
0.054 |
0.131 |
0.446 |
Из таблиц 2 и 3 видно, что максимальное значение эффективности достигалось на четырех вычислительных узлах и сетках 200х200. При этом возникает «суперлинейное ускорение». Эта аномалия вызвана следующей причиной. С увеличением количества вычислителей растёт суммарный объём их оперативной и кэш-памяти. Поэтому большая часть данных задачи вмещается в оперативной памяти и не требует подкачки с диска и вмещается в кэше.
Таблица 3
Ускорение и эффективность работы параллельного варианта МПТМ
|
|
100x100 |
200x200 |
500x500 |
1000x1000 |
2000x2000 |
5000x5000 |
1 |
Время |
0.001183 |
0.010633 |
0.026031 |
0.10584 |
0.381988 |
3.700073 |
Ускорение |
1 |
1 |
1 |
1 |
1 |
1 |
|
Эффективность |
1 |
1 |
1 |
1 |
1 |
1 |
|
2 |
Время |
0.000446 |
0.003435 |
0.01932 |
0.05579 |
0.264114 |
1.880677 |
Ускорение |
2.652 |
3.095 |
1.347 |
1.897 |
1.446 |
1.967 |
|
Эффективность |
1.326 |
1.548 |
0.674 |
0.949 |
0.723 |
0.984 |
|
4 |
Время |
0.000232 |
0.00106 |
0.005755 |
0.026683 |
0.132585 |
1.2655 |
Ускорение |
5.099 |
10.031 |
4.523 |
3.967 |
2.881 |
2.924 |
|
Эффективность |
1.275 |
2.508 |
1.131 |
0.992 |
0.72 |
0.731 |
|
8 |
Время |
0.000179 |
0.000878 |
0.004379 |
0.023322 |
0.092771 |
0.489768 |
Ускорение |
6.609 |
12.11 |
5.945 |
4.538 |
4.118 |
7.555 |
|
Эффективность |
0.826 |
1.514 |
0.743 |
0.567 |
0.515 |
0.944 |
|
16 |
Время |
0.000231 |
0.000407 |
0.001869 |
0.013105 |
0.085056 |
0.472151 |
Ускорение |
5.121 |
26.125 |
13.928 |
8.076 |
4.491 |
7.837 |
|
Эффективность |
0.32 |
1.633 |
0.87 |
0.505 |
0.281 |
0.49 |
|
32 |
Время |
0.000365 |
0.0005 |
0.001404 |
0.008871 |
0.045913 |
0.318709 |
Ускорение |
3.241 |
21.266 |
18.541 |
11.931 |
8.32 |
11.61 |
|
Эффективность |
0.101 |
0.665 |
0.579 |
0.373 |
0.26 |
0.363 |
|
64 |
Время |
0.000642 |
0.000748 |
0.001557 |
0.004189 |
0.026844 |
0.182296 |
Ускорение |
1.843 |
14.215 |
16.719 |
25.266 |
14.23 |
20.297 |
|
Эффективность |
0.029 |
0.222 |
0.261 |
0.395 |
0.222 |
0.317 |
|
128 |
Время |
- |
0.001612 |
0.002064 |
0.003442 |
0.016437 |
0.076545 |
Ускорение |
- |
6.596 |
12.612 |
30.75 |
23.24 |
48.338 |
|
Эффективность |
- |
0.052 |
0.099 |
0.24 |
0.182 |
0.378 |
|
256 |
Время |
- |
- |
0.005434 |
0.005446 |
0.012521 |
0.06318 |
Ускорение |
- |
- |
4.79 |
19.434 |
30.349 |
58.563 |
|
Эффективность |
- |
- |
0.019 |
0.076 |
0.119 |
0.229 |
|
512 |
Время |
- |
- |
- |
0.009793 |
0.012362 |
0.058805 |
Ускорение |
- |
- |
- |
10.808 |
30.9 |
62.921 |
|
Эффективность |
- |
- |
- |
0.021 |
0.06 |
0.123 |
Из приведенных таблиц также видно, что для каждой из расчетных сеток ускорение принимает наибольшее значение при определенном значении вычислителей, и при дальнейшем увеличении числа вычислительных ядер ускорение только уменьшается. Это связано с временными затратами на обмен данными между вычислителями. Из приведенных результатов расчетов видно, что методы с диагональными предобуславливателями (пример метод Якоби) лучше распараллеливаются, чем методы с треугольными предобуславливателями (пример МПТМ). Несмотря на это, параллельный вариант МПТМ является предпочтительнее метода Якоби для плохообусловленных задач, так как требует значительно меньшего числа итераций. Следует отметить, что адаптивный МПТМ нашел свое применение при решении задач аэродинамики [5; 10; 12] и транспорта донных материалов [7; 8].
Заключение
Работа посвящена параллельной реализации библиотеки итерационных решателей СЛАУ для задачи конвекции-диффузии на основе декомпозиции по одному пространственному направлению. Для решения двумерной задачи диффузии-конвекции была построена библиотека двухслойных итерационных методов, предназначенных для решения девятидиагональных сеточных уравнений. Получены табличные значения количества итераций решения сеточных уравнений итерационными методами от шага по временной переменной.
При параллельной реализации использованы методы декомпозиции сеточных областей по одному направлению для вычислительно трудоемких задач диффузии-конвекции, учитывающие архитектуру и параметры многопроцессорной вычислительной системы. Получены времена выполнения одной итерации методом Якоби и МПТМ соответственно на различных сетках, а также значения ускорения и эффективности параллельного алгоритма, зависящие от времени выполнения арифметической операции, времени передачи данных и латентности. Результаты использования многопроцессорных технологий показали, что максимальное значение эффективности достигалось на четырех вычислительных узлах и сетках 200х200 и равнялось 6,309 (метод Якоби) и 2,508 (метод МПТМ), а максимальное ускорение достигалось на 512 узлах и сетках 5000х5000 и равнялось 228,36 (метод Якоби) и 62,921 (метод МПТМ). Данные результаты расчетов говорят о том, что метод Якоби лучше распараллеливается по сравнению с методом МПТМ, однако, несмотря на это, для решения плохообусловленных задач параллельный МПТМ при больших шагах по временной переменной требует наименьшего числа итераций, что говорит о его предпочтении.
Работа выполнена при частичной финансовой поддержке Задания № 2014/174 в рамках базовой части государственного задания Минобрнауки России, а также при частичной финансовой поддержке РФФИ по проектам № 15-01-08619, № 15-07-08626 и № 15-07-08408.
Рецензенты:
Сухинов А.И., д.ф.-м.н., профессор, декан факультета физики, математики и информатики, ТГПИ им. А.П. Чехова (филиал) РИНХ, Таганрог;
Илюхин А.А., д.ф.-м.н., профессор, профессор кафедры математики, ТГПИ им. А.П. Чехова (филиал) РИНХ, Таганрог.