Параллельное программированиедля ресурсоёмких задач численного моделирования в физике презентация

Содержание

Лекция № 5

Слайд 1Параллельное программирование для ресурсоёмких задач численного моделирования в физике
В.О. Милицин, Д.Н. Янышев,

И.А. Буткарев

Центр компьютерной физики
Кафедра общей физики и волновых процессов
Международный лазерный центр


Слайд 2Лекция № 5


Слайд 3Содержание лекции
Общие рекомендации по программированию с OpenMP
Общие принципы сеточных методов


Слайд 4Зависимость по данным
Для эффективного распараллеливания необходимо обеспечить независимость по данным между

петлями (итерациями) циклов операторов do/for
Если зависимости по данным между петлями циклов отсутствуют, то они называются независимыми по данным
Часто зависимости по данным между петлями циклов могут быть исключены с помощью модификации алгоритмов

Пример рекурсии с зависимостью по данным


Элементарное распараллеливание


Слайд 5Зависимость по данным
Reduction



Распараллеливание осуществляется с помощью применения конструкции reduction к циклу

do

Слайд 6Зависимость по данным
Циклы с условными выходами не распараллеливаются
Вложенные циклы: в следующем

примере




Распараллеливание возможно только на самом верхнем уровне по k

Слайд 7Проблемы отладки OpenMP программ: условия состязательности (race conditions)
При работе программ с

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

Пример




Результат в этом примере зависит от того как и в какой последовательности выполняются параллельные потоки


Слайд 8Проблемы отладки OpenMP программ: мертвая блокировка (deadlock)
В процессе выполнения программ с

общей памятью возможна ситуация, когда поток ожидает освобождения доступа к объекту, который никогда не будет открыт
В следующем примере видно, что такая ситуация возникает, когда объект А заблокирован в одном потоке, а объект В в другом
В случае, если оба объекта заблокированы в одном потоке, то возникает условие состязательности

Пример


Слайд 9Проблемы отладки OpenMP программ: некоторые дополнительные опасные ситуации
Используемые в программах библиотеки

должны быть безопасны с точки зрения потокового выполнения. Стандартные библиотеки всегда удовлетворяют этому требованию
Следует иметь ввиду, что операции ввода/вывода в параллельных потоках завершаются в непредсказуемом порядке
Следует внимательно прослеживать пересечение в параллельных потоках переменных типа private с глобальными переменными
Следует тщательно отслеживать однозначность значений переменных в общей памяти. Для этого при необходимости следует пользоваться функцией FLUSH
Следует помнить, что предложение NOWAIT удаляет неявные барьеры (barriers)
Средства отладки OpenMP программ: Intel Thread Checker и Intel VTune Performance Analyzer (работает под Windows и Linux и позволяет вести отладку с Windows-компьютера на удаленных Linux кластерах)

Слайд 10Настройка программ в OpenMP: основные стратегии
Если есть возможность, то сперва следует

воспользоваться средством авто-распараллеливания программы
Для нахождения наиболее трудоемких участков программы следует воспользоваться возможностью профилирования (profiling)
Затем следует добавить в программу инструкции OpenMP для распараллеливания наиболее затратных участков программы
В случае неэффективного распараллеливания конструкций do/for следует учесть
Высокую стоимость инициализации параллельных потоков (порядка 1000 операций деления)
Неэффективность распараллеливания небольших циклов
Несбалансированность потоков
Многочисленные ссылки к переменным в общей памяти
Ограниченный объем кэша
Высокую стоимость операции синхронизации
Высокую стоимость доступа к удаленной общей памяти (на NUMA-компьютерах)
При распараллеливании вложенных циклов следует сперва распараллеливать внешние петли
При распараллеливании циклов следует иметь в виду, что петли циклов по объему вычислений могут быть зачастую “треугольными” и порождать несбалансированные параллельные потоки. Чтобы избежать несбалансированности при работе программы следует использовать инструкцию schedule

Слайд 11Настройка программ в OpenMP: пример распараллеливания
Исходная программа

Параллельная программа


Слайд 12Настройка программ в OpenMP: автоматическое распараллеливание
Основные современные языки программирования имеют возможности

автоматического распараллеливания программ в OpenMP:
–openmp –parallel – par_report[0|1|2|3] –par_threshold[x], (0<=x<=100)
В автоматическом режиме распараллеливаются только циклы
По результатам автоматического распараллеливания транслятор генерирует сообщения
Следует проанализировать сообщения транслятора и понять почему и по каким причинам некоторые циклы не распараллелены


Слайд 13Настройка программ в OpenMP: иерархия памяти
Современные параллельные системы имеют следующую иерархию

памяти
Регистры
Кэш 1-го уровня
Кэш 2-го уровня
Кэш 3-го уровня
Локальную память
Удаленную память (с доступом через interconnect)
Время доступа к памяти существенно возрастает при движении по иерархии сверху вниз
В связи с этим становиться актуальной задачи эффективности загрузки кэша и регистров, а также минимизация доступа к удаленной памяти
Для более эффективной загрузки кэша следует принимать дополнительные меры по выравниванию строк (в C/C++) или столбцов (в FORTRAN) массивов
Для более эффективного распараллеливания циклов следует по возможности обеспечить независимость петель вложенных циклов


Слайд 14Настройка программ в OpenMP: настройка кэша
Для эффективного использования кэш памяти рекомендуется

использовать многомерные массивы в одномерном виде
Вложенные циклы следует модифицировать так, чтобы обеспечить последовательный быстрый доступ к элементам массива без скачков по индексам
На NUMA (non-uniform memory access) платформах важно учитывать следующие особенности
Где запущены потоки
Какие данные загружены в локальную память
Стоимость доступа к удаленной памяти
Для NUMA платформ вышеперечисленные возможности сильно зависят от архитектуры систем
OpenMP предоставляет следующие возможности по управлению потоками
Запуск потока на определенном процессоре
Размещение данных в определенном месте памяти
Эти задачи решаются с помощью системных инструкций, которые могут быть различными на различных платформах и зависеть от загруженного системного программного обеспечения

Слайд 15Общие принципы сеточных методов


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


Слайд 17Принципы распределения данных
Ленточное разделение области расчетов


Слайд 18Эффект сериализации (serialization)
Причина в интенсивной синхронизации


Слайд 19Эффект состязания потоков (race condition)
Возможность неоднозначности вычислений


Слайд 20Проблема взаимоблокировки


Слайд 21Исключение неоднозначности вычислений
Схема чередования обработки четных и нечетных строк
Шахматное

разбиение

Слайд 22Волновые схемы параллельных вычислений
методов волновой обработки данных
(wavefront или hyperplane methods)



Слайд 23Организация волны вычислений
при ленточной схеме разделения данных



Слайд 24Блочное представление сетки расчетов
Увеличение эффективности использования кэша


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика