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

Общая информация о курсе

Предмет: 

  • Информатика

Структурное подразделение: 

Форма проведения курса: 

  • Очно-дистанционная

Общая продолжительность курса: 

132 ак. ч.

Продолжительность очной части курса: 

52 ак. ч.

Продолжительность дистанционной части курса: 

80 ак. ч.

Форма аттестации: 

  • Очная

Стоимость курса: 

14 000 руб.
Расписание занятий

Дата начала курса: 

18.09.14

Дата окончания курса: 

21.12.14

Время проведения занятий: 

очно-заочная, без отрыва от работы
Описание курса

Целевая аудитория курса: 

Преподаватели и студенты, школьники или профессиональные работники

Уровень начальной подготовки: 

для слушателей обязательно знание языка "Си" и навыков программирования на нём, образование не ниже среднего, отличное знание ПК

Характер курса: 

  • Элективный, инновационный

Аннотация курса: 

Учебный курс для студентов посвящен основным принципам, методам и технологиям параллельного программирования, ориентированных на решение ресурсоёмких физических задач. Студенты получат знания о современных высокопроизводительных вычислительных системах и практические навыки работы на них. Будут подробно разобраны такие популярные технологии параллельного программирования как OpenMP и MPI. Практические занятия будут проводиться на базе выделенного учебного кластера, содержащего 14 процессоров Intel Xeon. Завершающим этапом курса является работа над индивидуальным заданием, охватывающим весь материал курса. Курс открывает широкие возможности дальнейшего развития на переднем крае науки.
Современные научные и прикладные исследования в физике часто требуют проведения масштабных ресурсоемких вычислений. Стремительный рост производительности современных вычислительных систем достигается за счет использование параллельно работающих процессоров или многоядерных систем. Традиционные суперкомпьютеры с оригинальной архитектурой значительно повышают производительность вычислений, однако имеют существенный недостаток – большую цену, чем серьёзно уступают кластерным системам. При существенном снижении стоимости производительность кластерной системы в большом классе задач остается весьма высокой. Так, согласно последнему списку наиболее мощных компьютеров мира (www.top500.org, ноябрь 2009), восемьдесят три процента самых производительных вычислительных систем в мире выполнены по кластерной технологии с использованием стандартных вычислительных узлов.
В тоже время стандартный вычислительный узел уже давно не является однопроцессорной машиной, и эффективность использования многопроцессорной/многоядерной архитектуры для решения одной ресурсоемкой задачи зависит от применяемых средств разработки и методов распараллеливания. Технологией ставшей де-факто стандартной в научных ресурсоёмких приложениях является OpenMP, поддерживаемая всеми современными разработчиками компиляторов.
Эффективное использование кластера возможно лишь тогда, когда удается загрузить несколько или все узлы кластера одной параллельно решаемой задачей. Вычислительные кластеры с их относительно низкой пропускной способностью межузловых соединений (скоростью обмена информацией между узлами) предназначены, прежде всего, для выполнения «крупно зернистых» программ, у которых вычислительная нагрузка намного превышает коммуникационные затраты на межузловую передачу данных. Написание таких программ предполагает использование соответствующих алгоритмов и приемов распараллеливания. Наиболее популярной технологией в этом классе является использование библиотек MPI, обеспечивающих хорошую переносимость программ на разные архитектуры и удобство разработки.
В перспективе использование кластера не ограничивается решением только локальных задач. В настоящее время активно создаются проблемно-ориентированные системные коллаборации с применением распределенных высоко¬производительных вычислительных ресурсов ГРИДов.

Преподаватели курса: 

Янышев Денис Николаевич, Елизаров Сергей Георгиевич

Программа курса: 

1. Обзор технологий параллельного программирования.
Два направления параллельного программирования: данные и алгоритм. Базовые принципы создания параллельных программ. Модели вычислений и методы анализа эффективности. Закон Амдала. Проблема использования алгоритмов параллельного программирования. Параллелизм, масштабируемость, локальность, модульность.
2. Введение в архитектуру высокопроизводительных систем.
Принцип фон Неймана. Классификация параллельных компьютеров и систем. Архитектура компьютеров. Общая и распределенная память. Векторно-конвейерные суперкомпьютеры. Симметричные мультипроцессорные системы SMP. Системы с массовым параллелизмом (МРР). Кластерные системы. Технологии интерконнекта. Эволюция высокопроизводительных систем. Современное состояние, тенденции, прогнозы.
3. Операционная система Linux.
Основы ОС Linux. Различия между Linux и другими операционными системами. Базовые концепции UNIX. Учетные записи. Shell и команды. Файловая система. Компиляция и выполнение программ. SSH. FTP. Использование редактора vi. Система X Window. Источники информации по Linux.
4. Введение в технологии параллельного программирования.
Технологии параллельного программирования (расширения существующих языков программирования, специальные языки программирования). Библиотеки и интерфейсы, поддерживающие взаимодействие параллельных процессов. Параллельные прикладные библиотеки. Специализированные пакеты и программные комплексы. Структура, области применения, этапы разработки и характеристики производительности параллельной программы. Сетевой закон Амдала.
5. Технология OpenMP
Основные принципы, общая организация OpenMP. Структура параллельных программ. Основные конструкции и директивы OpenMP (parallel, do/for, sections, single). Директивные предложения. Переменные окружения и функции OpenMP. Синхронизация и дополнительные возможности. Рекомендации но настройке и отладке. Примеры программ: вычисление числа pi, вычисление определённого интеграла, варианты перемножения матриц. Обзор Intel Cluster OpenMP.
6. Интерфейс передачи сообщений MPI.
Общая организация MPI. Терминология и обозначения. Привязка к языку. Типы данных. Базовые функции MPI. Коммуникационные операции типа точка-точка. Коллективные операции. Производные типы данных и передача упакованных данных. Операции с ком¬муни¬каторами и группами. Топология процессов. Реализации интерфейса передачи сооб¬щений MPI. Примеры программ: вычисление числа pi, вычисление определённого интеграла, варианты перемножения матриц. Дополнительные инструменты в MPI-2.0: создание и управление процессами, односторонние взаимодействия, параллельный ввод/вывод.
7. Параллельное программирование с использованием MPI для моделирования физических задач.
Параллельные численные алгоритмы для решения типовых задач физического моделиро¬вания. Методы Монте-Карло. Точечные вычисления для моделирования систем взаимодействующих тел. Сеточные вычисления для приближенных решений дифференциальных уравнений в частных производных: задача Дирихле (явная разностная схема для уравнения Пуассона), решение краевой задачи методом Якоби. Матричные вычисления для решения систем линейных уравнений: параллельные алгоритмы решения систем линейных алгебраических уравнений методом Гаусса. Параллельная реализация преобразования Фурье.. Методы разработки параллельных программ для многопроцессорных систем с распреде¬ленной памятью. Использован6ие библиотек подпрограмм для многопроцессорных вычислительных систем.

Литература и иные материалы курса: 

1) Немнюгин С.А., Стесик О.Л. Параллельное программирование для многопроцессорных вычислительных систем. -СПб.: Петербург, 2002.
2) Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. -СПб: BHV, 2002.
3) А.С.Антонов "Параллельное программирование с использованием технологии MPI", издательстве Московского университета 2004
4) А. А. Букатов, В. Н. Дацюк, А. И. Жегуло. Программирование многопроцессорных вычислительных систем. Ростов-на-Дону. Издательство ООО «ЦВВР», 2003, 208 с
5) Калиткин Н.Н. Численные методы. - М.: Наука, 1978. - 512 с
6) В. Д. Корнеев “Параллельное программирование в MPI”, издательство "Регулярная и хаотическая динамика" 2003 г., - 303 стр.
7) Грегори Р. Эндрюс “Основы многопоточного, параллельного и распределенного программирования”, издательство "Вильямс" 2003 г.- 512 стр.
8) Богачев К.Ю. “Основы параллельного программирования” издательство "Бином. Лаборатория знаний" 2003 г. - 342 стр.
9) Воеводин В.В. Параллельные структуры алгоритмов и программ. - М.: ОВМ АН СССР, 1987. - 148с.
10) http://parallel.ru

Контактная информация

Телефон: 

+7(495)938-21-39

Email: 

Адрес: 

119991, Москва, Ломоносовский пр. д.27 к. 1, комната Г-729