УДК 519.688
РЕАЛИЗАЦИЯ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ ПРИ РАЗНОСТНОМ РЕШЕНИИ УРАВНЕНИЙ МАТЕМАТИЧЕСКОЙ ФИЗИКИ
© 2000 Д.Л. Головашкин1, В.А. Сойфер2, В.А. Шустов3
'Институт систем обработки изображений РАН, г. Самара 2Самарский государственный аэрокосмический университет 3Самарский научный центр РАН
Рассмотрены различные алгоритмы распараллеливания при решении сеточных уравнений явных, явно-неявных и неявных разностных схем, построенных для одномерных и двумерных задач математической физики. Приведенные результаты показывают как на эффективность распараллеливания влияет размерность задачи и тип разностной схемы.
Введение
Решение разностных уравнений требует больших временных затрат, которые иногда становятся неприемлемыми в силу срочности задачи или ограниченности доступа к вычислительной технике. Поэтому актуальна проблема построения алгоритмов, обеспечивающих поддержку параллельных вычислений и тем самым позволяющих ускорить вычисления .
В ИСОИ РАН установлен кластер, составленный из четырех двухпроцессорных компьютеров Репйит 2, с оперативной памятью 512 Мб каждый и тактовой частотой 400 МГ ц и 450 МГ ц (по два компьютера соответственно), соединенных сетью со скоростью 100Мбит. При данной конфигурации целесообразно нагружать один процессор не более, чем одним процессом и пользоваться разделенной памятью, когда процессу соответствует область памяти, которой никакой другой процесс пользоваться не может. Взаимодействие между процессами осуществляется пересылкой данных.
Разностные схемы, применяемые для решения временных задач математической физики, по способу определения искомой функции на некотором временном слое делятся на явные [1] (функция определяется через значения на предыдущем временном слое) и неявные (функция определяется через значения на текущем временном слое). Т акже авторы рассматривают явно-неявные схемы для решения систем дифференциаль-
ных уравнений, когда значение одной из искомых функций определяется через значения других искомых функций как явно, так и неявно.
Распараллеливание явной схемы
В качестве примера распараллеливания явной схемы рассмотрим схему, составленную для решения уравнения теплопроводности [1], записанного в одномерной декартовой системе координат. В качестве характеристик такой схемы можно отметить явность, одномерность, отсутствие времени ожидания процессами результатов работы других процессов и малые вычислительные затраты. При распараллеливании авторы использовали очевидный метод распределения сеточной области по процессам (рис.1), при котором каждому процессу отводится своя часть сетки по направлению оси 7.
Нахождение очередной строки сетки (временной слой) происходит в два этапа: сначала процессы обмениваются значениями в крайних узлах своей области сетки (рис.1) с соседними процессами, а затем вычисляют значения в узлах следующей строки.
В примере использовалась область с
первый второй последний
процесс процесс процесс 2
СЮ— ■ О оо- ■ ■ -о —>
Вычисление значений температуры на временном шаге Т+Д1
Рис. 1. Реализация явной схемы.
Т - текущее время, - шаг по времени
количество процессов
Рис. 2. Зависимость времени работы программы от числа процессов для явной разностной схемы
количество параллельных процессов
Рис. 3. Зависимость ускорения программы от числа процессов для явной разностной схемы
к
Т1
“ ускорения т N ?
а коэффициент эффективности
к
к
ускорения
где Т1- время работы программы без распараллеливания (один процесс), Тк- время работы параллельной программы с числом процессов равным N.
Некоторые авторы вводят эффективность как [3]
Л
вычислений
вычислений обмена простоя
(3)
где X „ - время, которое программа по-
вычислении ГУ Г ГГ
тратила на вычисления, X , - время, кото-
Г 7 обмена Г 7
рое программа потратила на обмен данными
между процессами и Х с программа ожидала.
Однако учитывая, что 1
время, которое
вычислений
количество параллельных процессов
Рис. 4. Зависимость эффективности программы от числа процессов для явной разностной схемы
N,=1512000. Результаты работы представлены на рис.2-4:
Коэффициент ускорения вычисляется как [3]
эффективности
N
(1)
(2)
ГТ N _ Л .Л .Л
а Т 1 вычислений 1 обмена 1 простоя , легко
приходим к формулам (1), (2). Учитывая сложность работы кластера и невозможность точного определения времени обмена и времени ожидания, авторы предпочитают для определения эффективности использовать формулы (1) и (2).
По рис.3 видно, что ускорение при увеличении числа процессов имеет линейный характер до некоторого предела. Из этого можно сделать вывод о том, что несмотря на минимальное количество передаваемых данных и отсутствие времени простоя, нельзя добиться большего ускорения при увеличении числа процессов начиная с семи.
Существенным недостатком явной схемы является ограничение на шаг дискретизации. Часто таких недостатков лишены неявные схемы.
Распараллеливание явно-неявной схемы
При распараллеливании явно-неявных схем, построенных для решения системы уравнений Максвелла, авторы применяли известный алгоритм реализации продольнопоперечных прогонок [4], в котором использовали только продольные прогонки. Продольной считалась та прогонка, для реализации которой необходим один процесс. Для реализации поперечной прогонки необходи-
первый второй процесс процесс
ряызЙ !1 обратный ное прогонт-л
последний процесс
Рис. 5. Разбиение сеточной области при N <И
2 У
мо задействовать все процессы.
Схемы явно-неявного характера позволяют для нахождения напряженности электрического поля ограничиться только продольной прогонкой. Это является их преимуществом перед неявными схемами. Если сеточная область не квадратная, то появляется свобода в выборе способа распределения памяти при распараллеливании задачи. Так, для минимизации размера пересылаемых данных, а значит и времени пересылок, для количества точек сетки N по направлению Ъ и N по направлению У при N меньше N целесообразно разбивать сеточную область на части по направлению У (рис.5). А при N больше N целесообразно разбивать сеточную область на части по направлению Ъ (рис.6).
В качестве примера рассмотрим область, в которой N=25, N,,= 15120. Используем разбиение по сеточной области, представленное на рис.6.
По рис.7-9 можно заключить о линейном характере ускорения при увеличении
количество процессов
Рис. 7. Зависимость времени работы программы от числа процессов для явно-неявной разностной схемы
числа процессов. Это говорит о том, что можно добиться большей эффективности, увеличивая число процессов.
Распараллеливание неявной схемы
Однако при решении разностных схем переменных направлений не избежать поперечной прогонки. Известная конвейерная схема поперечной прогонки [4] реализуется синхронным алгоритмом распараллеливания с применением правой прогонки. Авторы предлагают использовать асинхронный алгоритм с применением как правой так и левой прогонок [5].
Представим сеточную область в виде строк и столбцов, где каждый процесс будет работать с определенным количеством столбцов. Для четной строки первый процесс будет заканчивать прямой ход левой прогонки и начинать обратный, для нечетной строки последний процесс будет заканчивать прямой ход правой прогонки и начинать обратный ход. Для нечетной строки первый процесс будет начинать прямой ход правой прогонки,
количество параллельных процессов
Рис. 6. Разбиение сеточной области при N >N
Г 2 У
Рис. 8. Зависимость ускорения программы от числа процессов для явно-неявной разностной схемы
К
-1(з +
t.), (5)
где операция [..] есть округление до ближайшего целого.
Таким образом время ожидания асинхронного алгоритма будет меньше, чем у синхронного. Если число строк много больше количества процессов, разница по времени исполнения программ, реализующих пред-
ПЕрЕЫИ ВТЧрОТ!
процесс процесс
последний Процесс
количество параллельных процессов
Рис. 9. Зависимость эффективности программы от числа процессов для явно-неявной разностной схемы
для четной строки последний процесс будет начинать прямой ход левой прогонки. Центральные процессы в зависимости от четности строки и ее положения (верхняя обрабатываемая или нижняя) будут продолжать прямой и обратный ход левой и правой прогонок.
Т ак как объем вычислений и передаваемых данных для синхронного и асинхронного алгоритма будет одинаков, то различие в их эффективности будет определяться различием во времени ожидания. Время ожидания алгоритма будет равно времени ожидания любого процесса (в случае гомогенного кластера). Для синхронного алгоритма время ожидания:
иержки=^-1 )(11+12)+(№1) (13+14), (4)
где ^ - время прямого хода прогонки,
^ - время обратного хода прогонки,
^ - время передачи коэффициентов прогонки,
1;4 - время передачи искомой функции (в предположении, что передача и прием происходят одновременно).
Время ожидания асинхронного алгоритма в случае, когда число строк четно, составит:
Гис. 10. Разбиение сеточной области для минимизации пересылок в случае неявной схемы
ставленные алгоритмы будет почти незаметной, однако при малом числе строк разница весьма существенна. Например для двух процессов, работающих с сеткой из четырех строк, в пренебрежении временем пересылки по формуле (3) эффективность синхронного алгоритма составит 2/3, а эффективность асинхронного 1.
При реализации алгоритма решения разностных уравнений неявных схем [6], построенных для решения уравнений Максвелла, с целью минимизации времени обмена данными необходимо разбить сеточную область таким образом, чтобы вектор поперечной прогонки по размеру превосходил вектор продольной прогонки (рис.10).
Для примера, приведенного в предыдущем пункте, представим результаты работы программы, реализующей асинхронный алгоритм.
В отличие от аналогичных результатов предыдущего пункта ускорение и эффективность значительно ниже, что связано с увеличением объема пересылок в три раза и необходимостью тратить время на ожидание. Однако кривые ускорения и эффективности не
£ 60
3 4 5
количество процессов
Рис. 11. Зависимость времени работы программы от числа процессов для неявной схемы
количество параллельных процессов
Рис. 12. Зависимость ускорения программы от числа процессов для неявной схемы
количество параллельных процессов
Рис. 13. Зависимость эффективности программы от числа процессов для неявной схемы
стогнируют, что позволит добиться лучшего ускорения при увеличении числа процессов.
Заключение
Повышение эффективности распараллеливания происходит при сокращении объема данных, передаваемых между процессами, и времени ожидания при том же объеме вычислений. Для минимизации объема передаваемых данных следует разбивать сеточную область таким образом, чтобы граница разбиения содержала как можно меньше узлов сетки. Время ожидания можно сократить, применяя предложенный асинхронный алгоритм реализации поперечной прогонки, использующий правую и левую прогонки одновременно.
СПИСОК ЛИТЕРАТУРЫ
1. Самарский А.А. Введение в теорию раз-
ностных схем. М. :Наука, 1971.
2. Молчанов И.Н. Введение в алгоритмы параллельных вычислений. Киев: Наукова думка, 1990.
3. Вальковский В.А., Котов В.Е., Марчук А.Г., Миренков Н.Н. Элементы параллельного программирования. М.: Радио и связь, 1983.
4. Миренков Н.Н. Реализация продольнопоперечных прогонок на ВС “Минск-222” // Вычислительные системы. 1968. Вып.30.
5. Самарский А.А., Николаев Е.С. Методы решения сеточных уравнений. М.: Наука. 1978.
6. Головашкин Д.Л., Дегтярев А.А., Сойфер В.А. Моделирование волноводного распространения оптического излучения в рамках электромагнитной теории// Компьютерная оптика. 1997. Т.17.
IMPLEMENTATION OF PARALLEL CALCULATIONS AT DIFFERENCE SOLUTION OF THE EQUATIONS OF MATHEMATICAL PHYSICS
© 2000 D.L. Golovashkin1, V.A. Soifer2, V.A. Shustov3
1 Image Processing System Institute of Russian Academy of Sciences, Samara 2 Samara State Aerospace University 3Samara Science Centre of Russian Academy of Sciences
Are reviewed the different algorithms for parallelizing at solving of the grid equations of evident, evident-nonevident and nonevident difference networks constructed for the unidimensional and bidimensional problems of mathematical physics. The outcomes show how dimension of the task and type of a difference network influence on the effectiveness of a parallelizing.