«УТВЕРЖДАЮ» - Факультет информационных технологий

advertisement
Программа спецкурса
«Языки и методы параллельного программирования»
Курс входит в число обще-профессиональных дисциплин федерального компонента
1. Организационно-методический раздел.
1.1. Цели и задачи курса
Цели курса.
 Изучение языков и методов параллельного программирования прикладных
задач.
 Изучение основных компонент систем параллельного программирования,


Задачи курса
Приобретение навыков распараллеливания алгоритмов, разработки и
отладки параллельных программ для мультикомпьютеров.
Освоение основных технологий разработки параллельных программ.
1.2. Требования к уровню освоения содержания курса (дисциплины).
По окончании изучения указанной дисциплины студент должен
иметь представление
 О способах представления параллельных алгоритмов
 О моделях параллельных вычислений, на которых базируются языки
параллельного программирования
 О моделях управления в языках программирования
знать
 Средства
параллельного
представления
алгоритмов
в
языках
программирования
 Средства задания прямого и потокового управления в языках
программирования
 Средства и методы отладки параллельных программ
 Методы распараллеливания алгоритмов
 Технологии параллельного программирования
 Методы оптимизации параллельных программ
уметь
 Разрабатывать параллельные алгоритмы
 Разрабатывать программы в параллельных языках программирования
 Отлаживать параллельные программы
1.3. Формы контроля
Итоговый контроль. Для контроля усвоения дисциплины учебным планом
предусмотрен зачет по лабораторным работам.
Текущий контроль. В течение семестра выполняются лабораторные работы.
Выполнение лабораторных работ обязательно для всех студентов, их результаты
служат основанием для выставления оценок в ведомость контрольной недели на
факультете.
2. Содержание дисциплины.
2.1. Новизна и актуальность курса
Учебный курс посвящен современным языкам, методам и технологиям
разработки и отладки параллельных программ решения больших задач, в
первую очередь задач математического моделирования.
2.2. Тематический план курса (распределение часов).
Количество
часов
Наименование разделов и тем
Семи Лабора Самосто
Лекции нары торные ятельная
работы работа
Введение.
1
Параллельные компьютеры
3
Системы совместно протекающих 6
8
взаимодействующих процессов
Языковые средства порождения 6
8
процессов
Синхронизация
процессов
и 4
8
совместное
использование
ресурсов. Сети Петри.
Модели параллельных вычислений 4
Языки
SIMDи
MIMD- 4
6
программирования
Коммуникационные библиотеки.
4
4
Непроцедурные
языки 2
программирования
Итого по курсу:
34
34
Всего
часов
1
3
14
14
14
4
10
8
2
68
2.3. Содержание отдельных разделов и тем.
1.Введение. Для чего нужно параллельное программирование? Проблемы
параллельного программирования: корректность, эффективность, анализ и
отладка параллельных программ.
2.Параллельные компьютеры. Классификация параллельных компьютеров по
Flynn (SIMD, MIMD).
3.Системы совместно протекающих взаимодействующих процессов. Процесс.
Проблемы организации выполнения системы взаимодействующих процессов.
Поведение системы взаимодействующих процессов. Понятие прямого и
потокового управления в программе. Средства задания управления.
Синхронизация процессов. Понятие поведения системы взаимодействующих
процессов.
4.Языковые средства порождения процессов. fork…join. Сопрограммы.
parbegin…parend, mpirun. Понятие процесса в языках программирования.
Средства определения процессов в языках программирования
5.Средства синхронизации процессов и совместного использования ресурсов.
Семафоры. Мониторы. Критические интервалы. Процедура удаленного
вызова и передача сообщений.
6. Сети Петри. Поведенческие свойства сетей Петри. Спусковые функции.
Управляющие процедуры. Реализация задачи взаимного исключения и задачи
производитель—потребитель с помощью сетей Петри.
7.Асинхронный параллелизм. Структура MIMD-компьютеров. Синхронизация и
связь в MIMD-компьютерах. Проблемы
асинхронного параллелизма.
Несостоятельные данные. Тупики. Балансировка загрузки.
8.Модели параллельных вычислений. Модель Дейкстры (охраняемые команды).
Модель Хоара.
9. Языки MIMD-программирования. Occam. Ada. Sequent-C. HPFortran. Иня.
Linda. PVM. MPI.
10.Коммуникационные библиотеки. MPI, программирование взаимодействий.
Сравнение PVM и MPI. Отладка multithreading-программ.
11.Языки SIMD-программирования. Fortran 90. C*. Parallaxis. Необходимые
средства в языках для SIMD-архитектур. Fortran 90 и C*. MasPar. Сравнение
синхронного и асинхронного параллелизма, области их применения.
12.Непроцедурные языки программирования. Язык НОРМА. Язык OPAL.
Проблемы реализации непроцедурных языков.
13.Методы и средства отладки параллельных программ. Задача отладки
параллельных программ. Интерактивные отладчики. Событийные и
поведенческие отладчики.
14.Сборочная технология разработки параллельных программ. Перспективы
параллельных вычислений. Принципы сборочной технологии параллельного
программирования. Программное обеспечение сборочной технологии.
Методы реализации больших математических моделей в сборочной
технологии программирования.
Лабораторные работы
1. Изучение системы коммуникационных процедур MPI.
2. Разработка и отладка MPI-программ для заданных алгоритмов.
3. Изучение влияния характеристик коммуникационных сетей и их топологий
на скорость выполнения параллельных программ.
4. Динамическая балансировка загрузки процессоров в параллельном
компьютере. Изучение влияния различных вариантов начальной загрузки
процессоров на скорость исполнения параллельных программ
3. Учебно-методическое обеспечение дисциплины
3.1. Темы рефератов (курсовых работ), если это предусмотрено учебным
планом при освоении дисциплины. Список примерных тем обязательно
прилагается.
3.2. Образцы вопросов для подготовки к экзамену
1. Средства задания прямого управления в программе
2. Поведение параллельной программы, средства его описания
3.3. Список основной и дополнительной литературы
1. В.Э.Малышкин.
Введение
в
параллельное
программирование
мультикомпьютеров. – Новосибирск, 2003. – ИВМ и МГ СО РАН, 268 с
2. К.Е.Афанасьев, С.В.Стуколов. Многопроцессорные вычислительные
системы и параллельное программирование. – Учебное пособие,
Кемеровский госуниверситет, 2003г.
3. В.Э.Вальковский, В.Э.Малышкин. Синтез параллельных программ и систем
на вычислительных моделях. – Наука, Новосибирск, 1988.
4. В.Э.Малышкин. Параллельное программирование мультикомпьютеров.
Учебное пособие. Ярославский государственный университет, Ярославль,
1999.
5. Программирование на параллельных вычислительных системах. Под ред.
Р.Бэбба. Мир, Москва, 1991.
6. Корнеев В.В. Параллельное программирование в MPI. Москва-Ижевск:
институт компьютерных исследований, 2003.
7. В.В.Воеводин, Вл.В.Воеводин. Параллельные вычисления. СПб.: БХВПетербург. 2002. 608с.
8. Грегори Р. Эндрюс. Основы многопоточного, параллельного и
распределенного программирования. Пер. с англ. М: Издат.дом “Вильямс”.
203. 512c.
9. Информационно-аналитические материалы по параллельным вычислениям
http://www.ccas.ru.paral.links.html, http://www.ccas.ru.paral.contents.html,
www.parallel.ru, www.mcs.anl.gov.dbpp
Программу подготовили
д.т.н., профессор
ассистент
Малышкин В.Э.
Киреев С.Е.
Download