МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Саратовский государственный университет имени Н.Г. Чернышевского Факультет компьютерных наук и информационных технологий УТВЕРЖДАЮ _______________________ "_____"__________________20___ г. ПРОГРАММА УЧЕБНОЙ ДИСЦИПЛИНЫ Параллельное программирование. Специальность 090301 – Компьютерная безопасность Специализация Математические методы защиты информации Форма обучения Очная Саратов 2012 2 1. Цели освоения дисциплины Целью освоения данной дисциплины является изучение принципов построения параллельных вычислительных систем, основ теории параллельных вычислений, принципов параллельного и распределенного программирования, а также методов, способов и средств разработки программ для многопроцессорных вычислительных систем в рамках параллельного и распределенного программирования. 2.Место дисциплины в структуре ООП Данная учебная дисциплина входит в раздел «Профессиональный цикл. Дисциплины по выбору» ФГОС-3. Для изучения дисциплины необходимы компетенции, знания, умения и готовности, сформированные у обучающихся в результате освоения курсов «Информатика», «Математическая логика и теория алгоритмов», «Языки программирования», «Методы программирования», «Дискретная математика», «Теория автоматов», «Операционные системы», «Компьютерные сети». 3 Компетенции обучающегося, формируемые в результате освоения дисциплины Данная дисциплина способствует формированию следующих компетенций: Способность к логически-правильному мышлению, обобщению, анализу, критическому осмыслению информации, систематизации, прогнозированию, постановке исследовательских задач и выбору путей их решения на основе принципов научного познания (ОК-9); Способность учитывать современные тенденции развития информатики и вычислительной техники, компьютерных технологий в своей профессиональной деятельности (ПК-7); Способность работать с программными средствами прикладного, системного и специального назначения (ПК-8); Способность к самостоятельному построению алгоритма, проведению его анализа и реализации в современных программных комплексах (ПК-12). В результате освоения дисциплины обучающийся должен: Знать: принципы построения параллельных вычислительных систем; модели вычислений и методы повышения эффективности параллельных алгоритмов; модели функционирования параллельных программ; принципы распараллеливания вычислений на основе многопоточности для высокопроизводительных симметричных мультипроцессорных систем с общей памятью, и в частности, стандарт OpenMP; 3 принципы разработки параллельных программ для высокопроизводительных кластерных систем с распределенной памятью на основе передачи сообщений, и в частности, стандарт MPI; Уметь: выполнять анализ моделей вычислений с целью разработки эффективных версий параллельных алгоритмов; разрабатывать параллельные алгоритмы и программы (в частности, для решения типовых задач вычислительной математики) для высокопроизводительных вычислительных систем на основе технологий OpenMP и MPI; использовать при этом параллельные версии стандартных библиотек поддержки высокопроизводительных вычислений; Владеть навыками разработки эффективных версий параллельных алгоритмов; современными средствами разработки программного обеспечения, поддерживающими технологию распараллеливания вычислений OpenMP; технологией распараллеливания вычислений МPI; навыками их эффективного применения для решения научнотехнических и прикладных задач. 4 4. Структура и содержание дисциплины Общая трудоемкость дисциплины составляет 3 зачетныx единицы, 108 часов (60 часов аудиторных). № Раздел дисциплины п / п 1 2 3 4 5 Принципы построения параллельных вычислительных систем. Функционирование параллельных программ и их модели Распараллеливание на основе многопоточности для симметричных мультипроцессорных систем с общей памятью. C++ и технология OpenMP Разработка параллельных программ для высокопроизводительн ых кластерных систем с распределенной памятью на основе передачи сообщений. C++ и технология MPI. Библиотеки поддержки высокопроизводительн ых вычислений, существенно использующие технологии OpenMP и MPI ИТОГО Сем естр Неделя семестра Виды учебной работы, включая самостоятельную работу студентов и трудоемкость (в часах) СP:3 Формы текущего контроля успеваемости (по неделям семестра) Формы промежуточно й аттестации (по семестрам) Тест № 1 10 1 Л:2 10 2-3 Л:3 Лаб:2 СР:6 Тест № 1 10 3-7 Л:9 Лаб:12 СР:15 Тест № 1 10 8-14 Л:14 Лаб:14 СР:21 Тест № 2 10 15 Л:2 Лаб:2 СР:3 Тест № 2 Промежуточная аттестация 30 30 48 Зачет Раздел 1. «Принципы построения параллельных вычислительных систем». Классификация параллельных вычислительных систем. 5 Мультипроцессоры и параллельные вычислительные системы с общей памятью. Симметричные мультипроцессорные системы с общей памятью. Мультикомпьютеры и параллельные вычислительные системы с распределенной памятью. Кластерные системы. Самостоятельная работа: ознакомление с характеристиками типовых симметричных мультипроцессорных вычислительных систем с распределенной памятью и кластерных систем ведущих производителей. Раздел 2. «Функционирование параллельных программ и их модели». Показатели эффективности параллельных вычислений: ускорение, эффективность, масштабируемость. Закон Амдала. Модель алгоритма в форме графа. Параллельная форма графа алгоритма: ярусы, высота, ширина и оценка наименьших затрат времени. Концепция неограниченного параллелизма и ее недостатки. Анализ возможности распараллеливания с точки зрения макроопераций. Организация параллелизма на основе разделения данных. Проблема балансировки нагрузки при ограниченном числе процессоров. Представление параллельной программы как системы параллельно выполняемых процессов или потоков. Синхронизация. Обеспечение взаимоисключения при использовании разделяемых ресурсов. Блокировки. Семафоры и мониторы. Критические секции. Барьерная синхронизация. Графовая модель «процесс-ресурс» параллельных программ и теорема об отсутствии циклов. Лабораторные работы: построение и анализ параллельных форм графов типовых алгоритмов. Построение параллельных вариантов для блочных алгоритмов линейной алгебры и для обработки графов (охват графа и поиск кратчайшего пути). Построение графовой модели «процесс-ресурс» типовых параллельных программ. Самостоятельная работа: Операционный подход к изучению информационной структуры программ. Преобразователи и распознаватели. Графовые модели программ. Изучение средств взаимодействия между процессами и потоками операционной системы и их синхронизации в системных вызовах ОС UNIX/Linux и вызовах Win32 API OC Windows (XP/Vista/7/2003/2008). Раздел 3. «Распараллеливание на основе многопоточности для симметричных мультипроцессорных систем с общей памятью. C++ и технология OpenMP». Многопоточность современных операционных систем как основа для разработки параллельных программ для симметричных мультипроцессорных систем с общей памятью. Стандарт OpenMP и директивы компилятора C/C++. Переменные окружения. Модель параллельной программы OpenMP и ее выполнение. Параллельные и последовательные области: директива parallel, переменные среды и вспомогательные функции, директива single, директива master. Модель данных OpenMP. Распределение работы между потоками. Низкоуровневое распараллеливание. Параллельные циклы. Параллельные секции. Неитеративный параллелизм и директива sections. Распараллеливание в стиле «портфель задач» и директива tasks. Синхронизация. Барьеры. Директива 6 ordered. Критические секции. Директива atomic. Блокировки. Директива flush. Дополнительные переменные среды и функции OpenMP. Лабораторные работы: Системные таймеры OpenMP. Организация параллельных и последовательных областей. Динамическое изменение числа потоков OpenMP. Организация вложенных параллельных областей. Однократное выполнение фрагмента кода в пределах параллельной области. Код, выполняемый лишь основным потоком OpenMP. Локальные и общие переменные для потоков OpenMP. Параллельные циклы. Директива sections и организация неитеративного параллелизма. Организация барьеров. Организация блоков внутри цикла с требуемым порядком операций. Организация критических секций. Директива atomic и корректное изменение общих для всех потоков переменных. Блокировки. Исследование эффективности распараллеливания типовых вычислительных алгоритмов линейной алгебры. Самостоятельная работа: Ознакомление с особенностями реализаций OpenMP версий 2.0-3.1 в современных версиях компиляторов Microsoft/GNU/Intel C/C++. Исследование автораспараллеливающих возможностей компилятора Intel C++. Раздел 4. «Разработка параллельных программ для высокопроизводительных кластерных систем с распределенной памятью на основе передачи сообщений. C++ и технология MPI». MPMD-модель вычислений и параллельное программирование на основе передачи сообщений. Способы запуска приложений MPI (реализации MPICH2 и OpenMPI). Парные межпроцессные обмены. Операции блокирующей передачи и блокирующего приема: блокирующая передача, данные в сообщении, атрибуты сообщения, блокирующий прием, возвращаемая статусная информация. Соответствие типов данных и преобразование данных: правила соответствия типов данных, преобразование данных. Коммуникационные режимы. Семантика парного обмена между процессами. Распределение и использование буферов. Неблокирующий обмен: коммуникационные объекты, инициация и завершение обмена, семантика неблокирующих коммуникаций, множественные завершения. Проба и отмена сообщений. Совмещенные прием и передача сообщений. Производные типы данных: конструкторы типа данных, адресные функции и функции экстентов, маркеры верхней и нижней границ, объявление и удаление объектов типа данных, использование универсальных типов данных. Коллективные взаимодействия процессов: барьерная синхронизация, широковещательный обмен, сбор данных, рассылка, сбор для всех процессов, общие по всем процессам рассылка и сбор данных. Глобальные операции редукции: функция Reduce, предопределенные операции редукции (вычисление сумм, произведений, логические операции и т.д.), нахождение глобального минимума/максимума и его индекса, функции All-Reduce, Reduce-Scatter, Scan. Группы процессов и коммуникаторы, базовые концепции. Управление группой: средства доступа в группу, конструкторы и деструкторы групп. Управление коммуникаторами: 7 доступ к коммуникаторам, конструкторы и деструкторы коммуникаторов. Виртуальная топология и топологические конструкторы. Конструктор декартовой топологии и распределение процессоров по размерностям декартовой топологии. Конструктор топологии в форме графа. Топологические функции запроса. Сдвиг в декартовых координатах. Декомпозиция декартовых структур. Практические работы: Определение номера процесса в коммуникаторе и числа процессов в коммуникаторе. Определение характеристик системного таймера. Проверка масштабирования по числу процессоров при суммировании медленно сходящихся рядов. Передача сообщения процессу с последующим номером. Передача сообщения с буферизацией. Передача сообщения и ожидание ответа между двумя процессами в группе. Передача сообщений от процессов с четными номерами процессам с последующим номером. Определение структуры приходящего сообщения. Определение базовых характеристик коммуникационной сети параллельной вычислительной системы при помощи последовательного обмена сообщениями между двумя процессами. Обмен сообщениями с ближайшими соседями при помощи неблокирующих операций. Организация коммуникационной схемы «ведущий процесс-ведомые процессы». Применение неблокирующих операций для транспонирования матрицы, распределенной между процессами по столбцам. Организация и использование отложенных запросов на операции двунаправленного обмена между соседними процессами. Разрешение тупиковых ситуаций при операциях двунаправленного обмена с соседними процессами. Исследование эффективности барьерной синхронизации. Рассылка фрагментов массива всем запущенным процессам приложения. Сравнение эффективности глобальных операций MPI_REDUCE и схемы сдваивания с пересылками данных типа «точка-точка». Задание пользовательской функции в качестве глобальной операции. Разбиение процессов приложения на группы. Создание нового коммуникатора с обратной нумерацией процессов. Создание коммуникаторов для групп процессов. Создание периодической по обоим измерениям декартовой виртуальной топологии. Создание виртуальной топологии графа с коммуникационной схемой «ведущий процесс-ведомые процессы». Использование производных типов данных. Упаковка и распаковка данных. Самостоятельная работа: ознакомление с протоколами высокопроизводительных локальных компьютерных сетей (Myrinet, Gigabit Ethernet, SCI, InfiniBand), используемых для построения кластерных систем. Ознакомление с особенностями реализации технологии MPI основных производителей (MPICH2, OpеnMPI, Microsoft MPI, Intel MPI). Раздел 5. «Библиотеки поддержки высокопроизводительных вычислений, существенно использующие технологии OpenMP и MPI». Реализация многопоточных версий блочных алгоритмов решения базовых задач линейной алгебры с плотно заполненными матрицами в наиболее распространенных вариантах библиотек BLAS/LAPACK (ATLAS 8 BLAS/LAPACK, GotoBLAS2/LAPACK, Intel MKL, AMD ACML). Многопоточные версии алгоритмов дискретного преобразования Фурье (FFTW3, Intel MKL, ACML). Кластерное расширение пакетов BLAS/LAPACK: пакеты BLACS и SCALAPACK. Пакет анализа графов METIS и его параллельная версия PARMETIS. Лабораторные работы: компиляция, сборка и тестирование параллельных версий свободно распространяемых пакетов ATLAS BLAS/LAPACK, GotoBLAS2/LAPACK, FFTW3, BLACS, SCALAPACK, METIS и PARMETIS. Самостоятельная работа: Исследование масштабирования вычислительного процесса по числу процессоров на основе технологий OpenMP и MPI при выполнении дискретного преобразования Фурье. 5. Образовательные технологии При проведении занятий планируется использование таких активных и интерактивных форм занятий, как перекрестный опрос, мультимедийные презентации, обсуждение результатов выполнения лабораторных работ. Предполагается активное использование постоянно обновляемых образовательных ресурсов веб-сайта Лаборатории параллельных информационных технологий НИВЦ МГУ им. М.В. Ломоносова: www.parallel.ru. 6. Учебно-методическое обеспечение самостоятельной работы студентов. Оценочные средства для текущего контроля успеваемости, промежуточной аттестации по итогам освоения дисциплины. 7. Учебно-методическое и информационное обеспечение дисциплины а) основная литература: 1. Воеводин В. В., Воеводин В. В. Параллельные вычисления – СПб. : БХВПетербург, 2004. – 599 с. 2. Гергель В. П. Теория и практика параллельных вычислений – М. : Интернет-Ун-т Информ. Технологий : БИНОМ. Лаб. знаний, 2007. - 423 с. б) дополнительная литература: 3. Эндрюс Г. Р. Основы многопоточного, параллельного и распределённого программирования /Под ред. А. Б. Ставровского. – М.; СПб.; Киев : Вильямс, 2003. - 505 с. 4. Ведущие российские производители высокопроизводительных компьютеров [Электронный ресурс]/ НИВЦ МГУ. – Электрон. дан. – 2012. – Режим доступа: http://www.parallel.ru/computers/rus_vendors.html, свободный – Загл. с экрана. 5. Ведущие производители высокопроизводительных компьютеров[Электронный ресурс]/ НИВЦ МГУ. – Электрон. дан. – 2012. – Режим доступа: http://www.parallel.ru/computers/vendors.html, свободный – Загл. с экрана. 6. Таненбаум Э.С. Современные операционные системы. - М. ; СПб.: Питер, 9 2007. – 1037 с. 7. Windows Development[Электронный ресурс]/ Microsoft . – Электрон. дан. – 2012. – Режим доступа: http://msdn.microsoft.com/ENUS/library/ee663300(v=VS.85,d=hv.2).aspx, свободный – Загл. с экрана. 8. Антонов А. С. Параллельное программирование с использованием технологии OpenMP: Учебное пособие. – М.: Изд-во МГУ, 2009. – 77 с. 9. Chapman B., Jost B., Van der Pas R. Using OpenMP: Portable Shared Memory Parallel Programming. – Gambridge, London: The MIT Press, 2008. – 353 p. 10. OpenMP Application Program Interface. Version 3.0 May 2008. [Электронный ресурс]/ OpenMP Architecture Rewiew Board. – Электрон. дан. – 2010 – Режим доступа: http://www.openmp.org/mpdocuments/spec30.pdf, свободный – Загл. с экрана. 11. OpenMP in Visual C++ [Электронный ресурс]/ Microsoft. – Электрон. дан. – 2012. – Режим доступа: http://msdn.microsoft.com/ENUS/library/tt15eb9t(v=VS.110,d=hv.2).aspx, свободный – Загл. с экрана. 12. Intel C++ Compiler XE 12.1 User and Reference Guides [Электронный ресурс]/ – Intel. – Электрон. дан. – 2012 – Режим доступа: http://software.intel.com/sites/products/documentation/hpc/composerxe/enus/2011Update/cpp/lin/index.htm, свободный – Загл. с экрана. 13. The GNU OpenMP Implementation[Электронный ресурс]/ Free Software Foundation. – Электрон. дан. – 2012 – Режим доступа: http://gcc.gnu.org/onlinedocs/gcc-4.7.1/libgomp.pdf, свободный – Загл. с экрана. 14. Хьюз Т., Хьюз К. Параллельное и распределенное программирование на C++. –М. : Издательский дом Вильямс, 2004. – 672 с. 15. Антонов А.С. Параллельное программирование с использованием технологии MPI: Учебное пособие. – М.: Изд-во МГУ, 2004. – 71 с. 16. Корнеев В.Д. Параллельное программирование в MPI. – 2-е изд. – Новосибирск: Изд-во ИВМиМГ СО РАН, 2002. – 215 с. 17. Шпаковский Г.И., Серикова Н.В. Программирование для многопроцессорных систем в стандарте MPI. – Минск: БГУ, 2002. – 323 с. 18. Решения Mellanox InfiniBand FDR 56 Gb/s для серверов и хранилищ[Электронный ресурс]/ Mellanox Technologies. – Электрон. дан. – – 2011. – Режим доступа: http://www.dscon.ru/docs_mellanox/WP_InfiniBand_FDR_RU_Web.pdf, свободный – Загл. с экрана. 19. Qlogic 12800 Director Class Series 40 Gb/s (QDR) InfiniBand Switch[Электронный ресурс]/Qlogic. – Электрон. дан. – . – 2012. – Режим доступа: http://www.dscon.ru/qlogicdocs/12800_Datasheet.pdf, свободный – Загл. с экрана. 20. MPICH2 User’s Guide. Version 1.4.1 [Электронный ресурс]/ Argonne National Laboratory. – Электрон. дан. – – 2011. – Режим доступа: http://www.mcs.anl.gov/research/projects/mpich2/documentation/files/mpich21.4.1-userguide.pdf, свободный – Загл. с экрана. 10 21. OpenMPI v. 1.6.1 Documentation [Электронный ресурс]/ Indiana University. – Электрон. дан. – 2012. – Режим доступа: http://www.openmpi.org/doc/v1.6/, свободный – Загл. с экрана. 22. Intel Math Kernel Library Reference Manual [Электронный ресурс]/ Intel. – Электрон. дан. – 2012. – Режим доступа: http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/mklma n.pdf, свободный – Загл. с экрана. 23. Frigo M., Johnson S.G. FFTW for version 3.3.2 [Электронный ресурс]/ Massachusetts Institute of Technology. – Электрон. дан. – 2012. – Режим доступа: http://www.fftw.org/fftw3.pdf, свободный – Загл. с экрана. в) программное обеспечение и Интернет-ресурсы: Комплект компиляторов Microsoft Visual С++ /Intel С++ для ОС Windows либо свободно распространяемые комплекты компиляторов GNU/Intel С++ для ОС Linux. Свободно распространяемые библиотеки поддержки высокопроизводительных вычислений Atlas BLAS, GotoBLAS2, LAPACK, BLACS, SCALAPACK, FFTW3, METIS, PARMETIS. Веб-сайт Лаборатории параллельных информационных технологий НИВЦ МГУ им. М.В. Ломоносова: www.parallel.ru. 8. Материально-техническое обеспечение дисциплины Мультимедийная лекционная аудитория. Компьютерный класс факультета компьютерных информационных технологий с выходом на высокопроизводительных вычислений ПРЦНИТ СГУ. наук и кластер 11 Программа составлена в соответствии с требованиями ФГОС ВПО с учетом рекомендаций и Примерной ООП ВПО по cпециальности 090301 – «Компьютерная безопасность» и специализации «Математические методы защиты информации». Автор профессор ___________ Д. К. Андрейченко Программа одобрена на заседании кафедры математического обеспечения вычислительных комплексов и информационных систем от «___» _______ 2012 года, протокол № ____. Зав. кафедрой математического обеспечения вычислительных комплексов и информационных систем, профессор ___________ Д. К. Андрейченко Декан факультета КНиИТ, доцент ___________ А. Г. Федорова