Опубликован: 28.07.2007 | Уровень: специалист | Доступ: платный
Лекция 11:

Параллельные методы решения дифференциальных уравнений в частных производных

11.4. Краткий обзор лекции

В лекции рассматриваются вопросы организации параллельных вычислений для решения задач, в которых при математическом моделировании используются дифференциальные уравнения в частных производных. Для численного решения подобных задач обычно применяется метод конечных разностей ( метод сеток ), обладающий высокой вычислительной трудоемкостью. В лекции последовательно разбираются возможные способы распараллеливания сеточных методов на многопроцессорных вычислительных системах с общей и распределенной памятью. При этом большое внимание уделяется проблемам, возникающим при организации параллельных вычислений, анализу причин появления таких проблем и нахождению путей их преодоления. Для наглядной демонстрации излагаемого материала в качестве учебного примера рассматривается проблема численного решения задачи Дирихле для уравнения Пуассона.

В пункте 11.1 приводится краткое описание сеточных методов на примере решения задачи Дирихле.

В пункте 11.2 даются возможные способы организации параллельных вычислений при численном решении дифференциальных уравнений в частных производных для вычислительных систем с общей памятью. В основе излагаемого подхода – технология OpenMP, широко применяемая в настоящее время для разработки параллельных программ. В рамках этой технологии параллельный программный код формируется программистом посредством добавления специальных директив или комментариев в существующие последовательные программы. Как результат, программный код является единым для последовательных и параллельных программ, что делает более простым развитие и сопровождение программного обеспечения.

Следует отметить, что принятая в лекции последовательность представления учебного материала может быть рассмотрена как наглядная демонстрация поэтапной методики разработки программного обеспечения. Такой подход позволяет достаточно быстро получать начальные варианты параллельных программ, которые далее могут совершенствоваться для достижения максимально возможной эффективности параллельных вычислений. В ходе изложения учебного материала в лекции проводится последовательное развитие параллельной программы для решения задачи Дирихле; для каждого очередного варианта программы проводится анализ порождаемых программой параллельных вычислений, определяются причины имеющихся потерь эффективности расчетов и обосновываются пути дальнейшего совершенствования вычислений. Подобный порядок расположения материала позволяет последовательно показать ряд типовых проблем параллельного программирования – излишней синхронизации ( serialization ), состязания потоков ( race condition ), тупиков ( deadlock ) и др. Особое внимание уделяется проблеме возможной неоднозначности результатов последовательных и параллельных вычислений. Для достижения однозначности получаемых результатов расчетов в приводимом учебном материале оценивается возможность применения нескольких различных подходов, последовательный анализ которых приводит к определению методов волновой обработки данных ( wavefront or hyperplane methods ). На примере реализации волновых схем вычислений дается блочная схема представления данных для эффективного использования быстрой кэш- памяти компьютера. В завершение лекции излагается методика организации очередей заданий для равномерной балансировки вычислительной нагрузки процессоров.

В пункте 11.3 вопросы организации параллельных вычислений при численном решении дифференциальных уравнений в частных производных рассматриваются применительно к вычислительным системам с распределенной памятью. Прежде всего отмечается, что многие проблемы параллельного программирования (состязание вычислений, тупики, сериализация) являются общими для систем с общей и распределенной памятью. Основное отличие параллельных вычислений с распределенной памятью состоит в том, что взаимодействие параллельных участков программы на разных процессорах может быть обеспечено только при помощи передачи сообщений ( message passing ). При этом эффективность параллельных вычислений во многом определяется равномерностью распределения обрабатываемых данных между процессорами и достигаемой степенью локализации вычислений.

Изложение учебного материала данного раздела лекции начинается с обсуждения общих принципов распределения данных между процессорами, которые применительно к рассматриваемой учебной задаче Дирихле сводятся к одномерной ( ленточной ) схеме или двумерному ( блочному ) разбиению области расчетов. Последующее рассмотрение вопросов организации параллельных вычислений проводится в основном на примере ленточной схемы; блочный метод разделения данных представлен в более кратком виде. Среди основных тем, выбранных для обсуждения при изложении ленточной схемы: возможные способы выполнения парных и коллективных операций передачи данных между процессорами, особенности реализации волновых схем вычислений в системах с распределенной памятью, возможность совмещения выполняемых вычислений и операций передачи данных. В завершение лекции проводится сравнительная оценка трудоемкости коммуникационных действий и длительности выполнения вычислительных операций.

11.5. Обзор литературы

Дополнительная информация по численным методам решения дифференциальных уравнений в частных производных может быть получена в [ [ 6 ] , [ 13 ] ]. Рассмотрение вопросов организации при численном решении дифференциальных уравнений в частных производных проводится в [ [ 5 ] , [ 51 ] , [ 60 ] , [ 63 ] ].

При рассмотрении вопросов организации памяти компьютеров могут оказаться полезными работы [ [ 14 ] , [ 16 ] ].

Технология MPI для разработки параллельных программ рассмотрена в "Параллельное программирование на основе MPI" .

Более подробное рассмотрение вопросов, связанных с использованием очередей заданий при организации параллельных вычислений, проводится в [ [ 5 ] , [ 76 ] ].

11.6. Контрольные вопросы

  1. Как определяется задача Дирихле для уравнения Пуассона?
  2. В чем состоят основные положения метода конечных разностей?
  3. Какие способы распараллеливания сеточных методов могут быть использованы для многопроцессорных вычислительных систем с общей памятью?
  4. В каких ситуациях необходима синхронизация параллельных вычислений?
  5. Как характеризуется поведение параллельных участков программы при наличии условий состязания потоков?
  6. В чем состоит проблема взаимоблокировки?
  7. Какие методы могут быть использованы для достижения однозначности результатов параллельных вычислений для сеточных методов?
  8. Как изменяется объем вычислений при применении методов волновой обработки данных?
  9. Как повысить эффективность методов волновой обработки данных?
  10. Как очередь заданий позволяет улучшить балансировку вычислительной нагрузки процессоров?
  11. Какие проблемы приходится решать при организации параллельных вычислений на системах с распределенной памятью?
  12. Какие основные схемы распределения данных между процессорами могут быть использованы для сеточных методов?
  13. Какие основные операции передачи данных используются в параллельных методах решения задачи Дирихле?
  14. Каким образом организация множественной волны вычислений позволяет повысить эффективность волновых вычислений в системах с распределенной памятью?

11.7. Задачи и упражнения

  • Выполните реализацию первого и второго вариантов параллельного алгоритма Гаусса – Зейделя для систем с общей памятью. Проведите вычислительные эксперименты и сравните время выполнения разработанных программ.
  • Выполните реализации параллельного алгоритма Гаусса – Зейделя при волновой схеме организации вычислений и блочном представлении обрабатываемых данных. Проведите вычислительные эксперименты при разном размере блоков и сравните получаемые характеристики эффективности параллельных вычислений.
  • Выполните реализацию очереди заданий для параллельного алгоритма Гаусса – Зейделя. Подготовьте несколько разных правил выделения заданий из очереди и проведите оценку эффективности для каждого использованного правила.
Дмитрий Степаненко
Дмитрий Степаненко
Россия
Михаил Бурдаев
Михаил Бурдаев
Россия