Технологии параллельного программирования на Fortran 2018

Название спецкурса на английском языке
Parallel programming technologies in Fortran 2018
Авторы курса
Рыбакин Борис Петрович
Пререквизиты
Отсутствуют
Целевая аудитория
3-6 курс, магистранты
Подразделение
[Кафедра газовой и волновой динамики]
Семестр
Осень
Тип спецкурса
Спецкурс по выбору студента
Учебный год
2025/26
Список тем
Архитектура фон Неймана. Скалярная и суперскалярная архитектуры. CISC, RISC и VLIW архитектуры. SMP и ccNUMA архитектуры.
Многопроцессорные архитектуры. Кластеры, суперЭВМ. Примеры. Иерархия памяти. Кэш память. Когерентность кэша. Иерархия памяти.
Классификация Флинна. Ускорение вычислений. ЗаконАмдала.
Параллельные ЭВМ с общей и локальной памятью. Топология вычислительных сетей. Примеры топологий. GRID.
Параллельные алгоритмы. Зернистость алгоритма. Граф сдваивания. Компиляторы и эффективность программ.
Технологии параллельного программирования. Последовательная и параллельные модели. Параллелизм данных.
Проектирование коммуникаций. Парадигмы параллельного программирования. «Обедающие философы», «Стена Фокса».
Планирование сообщений. Нити и процессы. Синхронизация нитей. Операции обмена сообщениями. Критические секции.
Технология параллельного программирования OpenMP. Библиотека, директивы и функции OpenMP.
Как откомпилировать любую последовательную программу с включением опций поддержки технологии OpenMP и запустить ее с использованием нескольких нитей. Сколько нитей будет реально исполнять операторы данной программы?
Организация параллельных вычислений с использованием OpenMP.
Определите, сколько процессоров доступно в вашей системе для выполнения параллельной части программы, и займите каждый из доступных процессоров выполнением одной нити в рамках общей параллельной области.
Инициализация OpenMP. Задание числа нитей.
Может ли программа на OpenMP состоять только из параллельных областей? Только из последовательных областей?
Построение параллельных циклов.
Определите, какое максимальное количество нитей позволяет породить для выполнения параллельных областей программы ваша система.
Создание параллельных секций.
Могут ли функции omp_get_thread_num() и omp_get_num_threads() вернуть одинаковые значения на нескольких нитях одной параллельной области?
Синхронизация параллельных вычислений.
Чем отличается нить-мастер от всех остальных нитей?
В каких случаях может быть необходимо использование опции if директивы parallel?
При помощи трёх уровней вложенных параллельных областей породите 8 нитей (на каждом уровне параллельную область должны исполнять 2 нити). Посмотрите, как будет исполняться программа, если запретить вложенные параллельные области.
Чем отличаются директивы single и master?
Может ли нить-мастер выполнить область, ассоциированную с директивой single?
Может ли нить с номером 1 выполнить область, ассоциированную с директивой master?
Можно ли распределить между нитями итерации цикла без использования директивы for (do ... [end do])?
Можно ли одной директивой распределить между нитями итерации сразу нескольких циклов?
Возможно ли, что при статическом распределении итераций цикла нитям достанется разное количество итераций?
Могут ли при повторном запуске программы итерации распределяемого цикла достаться другим нитям? Если да, то при каких способах распределения итераций?
Для чего может быть полезно указывать параметр chunk при способе распределения итераций guided?
Можно ли реализовать параллельные секции без использования директив sections (sections ... end sections) и section?
Как при выходе из параллельных секций разослать значение некоторой локальной переменной всем нитям, выполняющим данную параллельную область?
Список источников
Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. – СПб.: БХВ-Петербург. (2002).
Немнюгин С., Стесик О. Параллельное программирование для многопроцессорных вычислительных систем – СПб.: БХВ-Петербург. (2002).
Гергель В.П. Теория и практика параллельных вычислений. Издательство INTUIT, Нижний Новгород, (2007).
Рыбакин Б.П. Численные методы для многопроцессорных ЭВМ. Издательство МолдГУ, Кишинев, (2008).
Антонов А. C. Параллельное программирование с использованием технологии OpenMP
Артемов И.Л. FORTRAN: основы программирования. Диалог МИФИ, (2007)
Таненбаум Э. Архитектура компьютера. – СПб.: Питер. (2002).
Миллер Р., Боксер Л. Последовательные и параллельные алгоритмы. БИНОМ, (2006).
Богачев К.Ю. Основы параллельного программирования. - М.: БИНОМ. Лаборатория знаний, (2003).
Grama, A., Gupta, A., Kumar V. Introduction to Parallel Computing. – Harlow, England: Addison-Wesley. (2003, 2nd edn.).
Pacheco, P. Parallel Programming with MPI. - Morgan Kaufmann. (1996).
Дополнительная информация

Аудитория 472 1 Гум

Почта для связи rybakin1@mail.ru

День недели
суббота
Время
12:30-14:05
Аудитория
Ещё не назначена
Аудитория первого занятия
Ещё не назначена
Статус курса
Запись открыта
Форма записи на курс
Заполнение формы записи на курс доступно только студентам. Для записи на курс авторизуйтесь, пожалуйста, в студенческом аккаунте.