Программа спецкурса «Языки и методы параллельного программирования» Курс входит в число обще-профессиональных дисциплин федерального компонента 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 Программу подготовили д.т.н., профессор ассистент Малышкин В.Э. Киреев С.Е.