Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Параллельное программирование» для направления 231300.62 «Прикладная математика» подготовки бакалавра Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "Высшая школа экономики" Факультет прикладной математики и кибернетики МИЭМ Программа дисциплины «Параллельное программирование» для направления 231300.62 «Прикладная математика» подготовки бакалавра Автор программы: B.В. Морозов, к. ф.-м. н., доцент, [email protected] Одобрена на заседании кафедры прикладной математики «30» июня 2014 г. Зав. кафедрой Карасев М. В. Москва, 2014 Настоящая программа не может быть использована другими подразделениями университета и другими вузами без разрешения кафедры-разработчика программы. Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Параллельное программирование» для направления 231300.62 «Прикладная математика» подготовки бакалавра 1 Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает минимальные требования к знаниям и умениям студента и определяет содержание и виды учебных занятий и отчетности. Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов по направлению 231300.62 «Прикладная математика», обучающихся по программе подготовки бакалавра «Прикладная математика», изучающих дисциплину «Параллельное программирование». Программа разработана в соответствии с: ФГОС 231300 Прикладная математика 62 бакалавр. Рабочим учебным планом университета по направлению 231300.62 «Прикладная математика» подготовки бакалавра по программе «Прикладная математика», утвержденным в 2014г. 2 Цели освоения дисциплины Целями освоения дисциплины «Параллельное программирование» является ознакомление студентов с технологиями параллельного программирования для систем с общей и распределенной памятью, принципами работы современных суперкомпьютеров, включая системы с традиционными процессорами и векторными (графическими) ускорителями, параллельными алгоритмами для решения широкого круга задач математической физики и компьютерного моделирования. В результате выполнения заданий по курсу студенты приобретают навыки: работы на суперкомпьютерных вычислительных комплексах в качестве пользователя; создания параллельных программ для многоядерных процессоров и других систем с общей памятью; создания параллельных программ для суперкомпьютерных кластеров (систем с распределенной памятью); отладки параллельных программ; распараллеливания существующих последовательных программ с помощью специализированных компиляторов и/или библиотек; применения методов дисциплины в актуальных областях физики, химии и биологии. 3 Компетенции обучающегося, формируемые в результате освоения дисциплины В результате освоения дисциплины студент должен: знать теоретических основы параллельных алгоритмов, базовые технологии написания параллельных программ на языках высокого уровня, области применения, архитектуру и основные характеристики современных суперкомпьютерных систем; уметь разрабатывать новые параллельные программы и адаптировать существующие программы для работы на параллельных архитектурах; приобрести опыт создания, отладки и использования параллельных программ; приобрести опыт работы с типовым программным обеспечением суперкомпьютерных кластеров; В результате освоения дисциплины студент осваивает следующие компетенции: А) общекультурные (ОК): владеть культурой мышления, способен к обобщению, анализу, восприятию информации (ОК-1); уметь логически верно, аргументировано и ясно строить устную и письменную речь (ОК-2); готовностью к кооперации с коллегами (ОК-6); Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Параллельное программирование» для направления 231300.62 «Прикладная математика» подготовки бакалавра способностью оформлять, представлять и докладывать результаты выполненной работы (ОК-14); уметь создавать и редактировать тексты профессионального назначения (ОК-15); способностью использовать для решения коммуникативных задач современные технические средства и информационные технологии (ОК-16). 4 Б) профессиональные (ПК): готовность к самостоятельной работе (ПК-1); способность использовать современные прикладные программные средства и осваивать современные технологии программирования (ПК-2); знать основные положения, законы и методы естественных наук (ПК-11); готовность применять математический аппарат для решения поставленных задач (ПК-12); способность самостоятельно изучать новые разделы фундаментальных наук (ПК-14). Место дисциплины в структуре образовательной программы Настоящая дисциплина является дисциплиной по выбору и относится к вариативной части профессионального цикла. Изучение данной дисциплины базируется на следующих дисциплинах: «Дифференциальные уравнения», «Программирование для ЭВМ», «Математический анализ», «Численные методы». Для освоения учебной дисциплины, студенты должны владеть следующими знаниями и компетенциями: навыками работы с компьютером в качестве пользователя; знанием и практическими навыками разработки программ на алгоритмических языках C, С++ или Fortran; начальными знаниями о работе в ОС Linux с интерфейсом командной строки; знаниями основ математического анализа; навыками решения типовых задач курса «Численные методы»; навыками решения типовых задач курса «Дифференциальные уравнения»; Основные положения дисциплины могут быть использованы в дальнейшем при изучении дисциплины «Квантовая информатика». 5 № 1 2 3 4 Тематический план учебной дисциплины Название раздела Принципы работы суперкомпьютеров Технологии программирования систем с общей памятью Технологии программирования систем с распределенной памятью Параллельные алгоритмы Всего Всего часов 18 36 Аудиторные часы ПрактиЛекСемические ции нары занятия 2 6 Самостоятельная работа 10 6 10 20 36 10 6 20 36 126 8 34 3 17 25 75 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Параллельное программирование» для направления 231300.62 «Прикладная математика» подготовки бакалавра 6 Формы контроля знаний студентов Тип контроля Текущий Итоговый 6.1 Форма контроля Отсутствует Экзамен 4 курс 1-й семестр В конце 1-го семестра Параметры Устный экзамен на 120 минут. Включает 5 вопросов по всем темам курса различного уровня сложности. Критерии оценки знаний, навыков Оценки по всем формам текущего контроля выставляются по 10-ти балльной шкале. Порядок формирования оценок по дисциплине Преподаватель оценивает работу студентов на практических занятиях, основываясь на результатах выполнения ими 8-ми обязательных и одного или нескольких дополнительных практических заданий. Успешное выполнение одного задания оценивается в один балл. Самостоятельная работа студентов состоит в создании и программной реализации параллельного алгоритма по индивидуальному заданию, которое каждый из студентов получается в середине семестра. При защите задания на практическом занятии студент должен представить текст программы, продемонстрировать ее работоспособность и предъявить полученные с ее помощью результаты в виде таблиц и графиков. При этом студент должен ответить на вопросы преподавателя о назначении тех или иных блоков кода в тексте программы и объяснить смысл полученных результатов. Накопленная оценка за текущий контроль учитывает результаты студента по текущему контролю следующим образом: 6.2 Онакопленная= 0,7 * Оауд + 0,3 * Осам.работа Способ округления накопленной оценки текущего контроля: в пользу студента. Результирующая оценка за дисциплину рассчитывается следующим образом: Орезульт = 0,5* Онакопл + 0,5 * Оэкз Способ округления накопленной оценки итогового контроля в форме экзамена: в пользу студента. На экзамене студент может получить дополнительный вопрос (дополнительную практическую задачу, решить к пересдаче домашнее задание), ответ на который оценивается в 1 балл. 7 Содержание дисциплины Содержание дисциплины разбито на разделы, каждый включает в себя 3-4 темы, по которым проводится одна или две лекции и одно практическое занятие. 1. Раздел 1. Принципы работы суперкомпьютеров. Тема 1. Применение суперкомпьютеров. Методы компьютерного моделирования в естественных науках. Обзор высокопроизводительных систем в России и за рубежом. Обсуждение последних редакций рейтингов Top-500 и Top-50. Качественный переход от последовательных к массивно-параллельным архитектурам и алгоритмам. Технологические ограничения повышения быстродействия компьютеров, путь к экзафлопсной производительности. Проблемы энергопотребления и надежности суперкомпьютеров. (2 часа, 1 лекция) Тема 2. Классификация вычислительных систем и алгоритмов. Системы с общей и распределенной памятью. Многоядерные процессоры, уровни внутреннего параллелизма. Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Параллельное программирование» для направления 231300.62 «Прикладная математика» подготовки бакалавра Модели взаимодействия с памятью UMA и NUMA. Перспективы наращивания числа ядер, проблема когерентности кэша. (2 часа, 1 лекция) Тема 3. Программное обеспечение суперкомпьютерного кластера. Кластеры типа Beowulf. Системы очередей заданий (PBS, SLURM и др.). Удаленная работа на вычислительных центрах общего пользования. Работа с консольными и графическими приложениями. (2 часа, 1 лекция) Литература по разделу: Основная: 1. Максимов Н. В., Партыка Т.Л., Попов И.И. Архитектура ЭВМ и вычислительных систем. Форум, Инфра-М, 2013. - 512 с. 2. Хорошевский В.Г. Архитектура вычислительных систем. Изд-во МГТУ им. Н. Э. Баумана, 2008. - 519 с. 3. Семенов, С. Суперкомпьютеры : Россия в межстрановом сопоставлении. Экономист, N.2, 2008. - С. 21-30. 4. Сайт Лаборатории параллельных информационных технологий НИВЦ МГУ: http://parallel.ru. Дополнительная: 1. Шпаковский Г. И., Верхотуров А. Е., Серикова Н. В. Руководство по работе на вычислительном кластере. Учебное пособие. Минск.: БГУ, 2004. 2. Раздел 2. Технологии программирования систем с общей памятью. Тема 1. Особенности создания параллельных программ для систем с общей памятью. Поддержка параллелизма на уровне операционной системы. Процессы (process) и потоки (threads). Создание многопоточных программ с использованием базовых средств операционных систем (POSIX Threads). (2 часа, 1 лекция) Тема 2. Проблемы недостаточной синхронизация потоков. Детерминированность результатов работы программы. Локальные и общие переменные потоков, безопасный доступ к общим переменным. Побочные эффекты, реентерабельность процедур. Объекты синхронизации потоков: взаимное исключение, семафор, событие. Избыточная синхронизации потоков, тупики. (2 часа, 1 лекция) Тема 3. Распараллеливание программ с использованием технологии OpenMP. Параллелизм по задачам и по данным. Пример распараллеливания простейших алгоритмов. (2 часа, 1 лекция) Тема 4. Дополнительные возможности OpenMP. Использование высокоуровневых библиотек и параллельных языков программирования. Автоматическое распараллеливанием программ. Отладка параллельных программ. (2 часа, 1 лекция) Тема 5. Обзор методов программирования графических ускорителей с использованием CUDA, OpenCL, OpenACC. Структура внутренней памяти GPU и избежание задержек, связанных с обращением к памяти. (2 часа, 1 лекция) Литература по разделу: Основная: 1. Гергель, В. П. Современные языки и технологии параллельного программирования. М. Изд-во Моск. ун-та, 2012. - 406 с. 2. Антонов, А. С. Технологии параллельного программирования MPI и OpenMP. М. Изд-во Моск. ун-та, 2012. - 339 с. 3. Лупин С.А., Посыпкин М.А. Технологии параллельного программирования. ФОРУМ, 2013. - 205 с. 4. Левин, М. П. Параллельное программирование с использованием OpenMP. М. Интернет-Университет Информационных Технологий, 2012. - 118 с. 5. Сандерс Дж. Кэндрот Э. Технология CUDA в примерах. ДМК Пресс, 2011. - 231с. Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Параллельное программирование» для направления 231300.62 «Прикладная математика» подготовки бакалавра 6. Боресков, А. В. Параллельные вычисления на GPU. М. Изд-во Моск. ун-та, 2012. – 333 с. 7. Официальная документация по OpenMP: http://www.openmp.org (на англ. языке) 8. Введение в OpenMP: https://software.intel.com/ru-ru/blogs/2011/11/21/openmpc?language=ru 9. Учебное пособие по OpenMP http://www.llnl.gov/computing/tutorials/openMP (на англ. языке). Дополнительная: 1. Карпов В.Е., Коньков К.А. Основы операционных систем. М.: Интуит, 2004. 2. Butenhof D.R. Programming with POSIX Threads. Addison-Wesley, 1997. 3. Раздел 3. Технологии программирования систем с распределенной памятью. Тема 1. Технология MPI. Классификация функций MPI и основные понятия. Компиляция и запуск программ на вычислительных кластерах. (2 часа, 1 лекция) Тема 2. Функции двухточечного обмена сообщениями. Блокирующие и неблокирующие функции. Объединение запросов. Синхронизация приема-передачи сообщений. Тема 3. Функции коллективного обмена сообщениями. Группировка процессов. Алгоритмы типа master-slave. (2 часа, 1 лекция) Тема 4. Односторонняя и двухсторонняя модели обмена сообщениями. Дополнительные возможности стандарта MPI-2. Отладка параллельных программ. (2 часа, 1 лекция) Тема 5. Грид-технологии и распределенные вычисления в Интернет (метакомпьютинг). Виртуализация ресурсов, безопасность и аутентификация в Грид, диспетчеризация задач. Облачные вычисления. (2 часа, 1 лекция) Литература по разделу: Основная: 1. Гергель, В. П. Современные языки и технологии параллельного программирования. М. Изд-во Моск. ун-та, 2012. - 406 с. 2. Антонов, А. С. Технологии параллельного программирования MPI и OpenMP. М. Изд-во Моск. ун-та, 2012. - 339 с. 3. Лупин С.А., Посыпкин М.А. Технологии параллельного программирования. ФОРУМ, 2013. - 205 с. 4. Robbins, S. Lessons in grid computing. John Wiley & Sons, 2006. - 363 с. 5. Официальная документация по стандартам MPI: http://www.mcs.anl.gov/mpi 6. Евсеев И. MPI для начинающих: http://www2.sscc.ru/Links/Litera/il/default.htm. Дополнительная: 1. И. Д. Котляров. Сети Грид // Прикладная информатика №1 (13) 2008. 4. Раздел 4. Параллельные алгоритмы. Тема 1. Теоретические основы параллельных алгоритмов. Понятия загруженности, производительности и ускорения. Информационная зависимость операций, графы исполнения, минимальные графы. (2 часа, 1 лекция) Тема 2. Общие принципы выделения параллелизма и распараллеливания алгоритмов по графу информационной зависимости. Декомпозиция данных по процессам. (2 часа, 1 лекция) Тема 3. Простейшие параллельные алгоритмы. Блочное и циклическая распараллеливание циклов. Алгоритмы суммирования, численного интегрирования и выполнения простейших матричных операций. (2 часа, 1 лекция) Тема 4. Параллельные алгоритмы численного решения дифференциальных уравнений в обыкновенных и частных производных. Эффективность распараллеливания для различных методов компьютерного моделирования. (2 часа, 1 лекция) Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Параллельное программирование» для направления 231300.62 «Прикладная математика» подготовки бакалавра Литература по разделу: Основная: 1. Демьянович, Ю. К. Параллельные алгоритмы. Разработка и реализация. М. БИНОМ. Лаборатория знаний, 2012. - 343 с. 2. Иванова, Е. М. Вычислительная математика. М. Моск. гос. ин-т электроники и математики, 2012. - 140 с. 3. Миллер, Р. Последовательные и параллельные алгоритмы. М. БИНОМ. Лаборатория знаний, 2006. - 406 с. 4. Гулд Х, Тобочник Я. Компьютерное моделирование в физике, Ч. 1. 1990. – 349 с. 5. Гулд Х, Тобочник Я. Компьютерное моделирование в физике, Ч. 2. 1990. – 399 с. 6. Головизнин, В. М. Новые алгоритмы вычислительной гидродинамики для многопроцессорных вычислительных комплексов. М. Изд-во Моск. ун-та, 2013. - 467 с. Дополнительная: 1. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. М.: БХВ-СанктПетербург, 2004. 8 Образовательные технологии Курс подразумевает традиционные формы проведения занятий: лекции с разбором практических задач и демонстрацией работы программ, а также практические занятия с интерактивной формой работы со студентами. Лекционный материал представлен в виде презентаций PowerPoint, демонстрируемых на проекторе. Практические занятия и самостоятельная работа проводятся с использованием учебного суперкомпьютерного кластера, к которому студенты получают удаленный доступ на все время преподавания дисциплины. Методические рекомендации преподавателю При предоставлении студентам доступа к учебному суперкомпьютерному кластеру преподаватель должен ознакомить их с правилами безопасной работы и получить расписку от каждого студента об ознакомлении и согласии с приведенными правилами. 8.1 Методические указания студентам Студентам рекомендуется начинать работу над индивидуальным заданием сразу после того, как оно получено и использовать практические занятия для консультации с преподавателем по возникающим вопросам. Постепенная сдача частей индивидуального задания в течении семестра позволяет избежать грубых ошибок и увеличивает объективность оценки работы преподавателем. 8.2 9 Оценочные средства для текущего контроля и аттестации студента 9.1 Тематика заданий текущего контроля Не предусмотрены. 9.2 Вопросы для оценки качества освоения дисциплины 1. Классификация вычислительных систем, таксономия Флинна. Примеры систем различного типа. Параллельные алгоритмы: распараллеливание по задачам и по данным. 2. Параллельные системы с общей памятью (SMP): ограничение на количество процессоров, проблема когерентности кэша. Архитектуры UMA и NUMA. 3. Потоки и процессы в многозадачных операционных системах. Состояния и переключение потоков операционной системой. Выделение памяти и процессорного времени. Основные функции API POSIX Threads. Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Параллельное программирование» для направления 231300.62 «Прикладная математика» подготовки бакалавра 4. Синхронизация потоков. Примеры ошибок, связанных с отсутствием синхронизации (race condition). Объекты синхронизации: взаимное исключение, сигнал, объект condvar. 5. Синхронизация потоков. Тупики (deadlocks) и необходимые условия их возникновения, принципы обнаружения и устранения тупиков. 6. Принцип программирования и компиляция программ с использованием OpenMP. Общие и локальные переменные потоков. Директивы распраллеливания. 7. Блочное и циклическое распараллеливание циклов. Алгоритмы распределения работы по потокам в OpenMP, директивы omp for и omp task. 8. Системы с распределенной памятью (MPP): особенности программирования по сравнению с SMP системами. Типичная аппаратная конфигурация и программное обеспечение вычислительного кластера. Дополнительные функции, предоставляемые кластерным ПО. 9. Общая схема программы с использованием библиотеки MPI. Функции передачи сообщений между двумя процессами. Классификация функций по способу синхронизации. Блокирующие и неблокирующие функции приема-передачи. Способы передача разнородных данных и распределенных данных. 10. Функции коллективного обмена сообщениями в MPI. Группировка процессов. Односторонние коммуникации (MPI-2). 11. Компиляция и запуск MPI-программ. Запуск последовательных и MPI-программ с использованием систем очередей PBS и SLURM. 12. Теория функциональных устройств (ФУ). Определения загруженности, производительности и ускорения для простых и сложных ФУ. Максимально возможное ускорение Критерии эффективности параллельной программы. Законы Амдала. Граф информационной зависимости вычислений. 13. Концепция Грид. Структура Грид: сегмент, сайт, кластер, конечная система. Аутентификация и авторизация в Грид. Понятие виртуальной организации. Типы приложений для Грид. Облачные вычисления (Cloud computing). 14. Использование графических ускорителей (GPU) для научных вычислений. Особенности архитектуры GPU. За счет чего достигается ускорение по сравнению с обычными процессорами? Основные проблемы и ограничения при написании программ для GPU. 15. Принципы распараллеливания программ молекулярной динамики и Монте-Карло. Декомпозиция по частицам и по пространству. Предел распараллеливаемости. Примеры заданий промежуточного /итогового контроля Задания выполняются на практических занятиях. Символом «*» отмечены задания повышенной сложности. 9.3 1. Синхронизация потоков в системах с общей памятью. Добавить функции синхронизации в программу, рассмотренную на лекции № 4, чтобы исключить потенциальную возможность конкуренции потоков («race condition»). Рекомендуется использовать объект синхронизации «условная переменная» (condvar). Скомпилировать и проверить правильность работы полученной программы. Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Параллельное программирование» для направления 231300.62 «Прикладная математика» подготовки бакалавра 2. Блочное распараллеливание на POSIX Threads. Написать программу вычисления определенного интеграла методом трапеций с блочным распараллеливанием, используя POSIX Threads. Убедиться в правильности вычисления интеграла для произвольного числа потоков. Используя утилиту time построить зависимость ускорения от числа потоков. Для уменьшения погрешности результата время работы последовательной программы должно составлять не менее 30 сек. 3. Блочное распараллеливание на OpenMP. Написать программу вычисления определенного интеграла методом трапеций с блочным распараллеливанием, используя OpenMP. Убедиться в правильности вычисления интеграла для произвольного числа потоков. Используя утилиту time построить зависимость ускорения от числа потоков. Для уменьшения погрешности результата время работы последовательной программы должно составлять не менее 30 сек. 4. *Блочно-циклическое распараллеливание на POSIX Threads. Написать программу численного интегрирования, в которой сложность расчета подынтегральной функции зависит от аргумента (пример: f(x) = x*exp(x) при a < x < x0 и f(x) = x*exp(sin(x)*cos(x))/(2+cos(x*x)) при x0 < x < b). Реализовать схему блочно-циклического распараллеливания на POSIX Threads. Построить зависимость ускорения от числа потоков для минимального, промежуточного и максимального размера блока. 5. *Блочно-циклическое распараллеливание на OpenMP. Написать программу численного интегрирования, в которой сложность расчета подынтегральной функции зависит от аргумента (пример: f(x) = x*exp(x) при a < x < x0 и f(x) = x*exp(sin(x)*cos(x))/(2+cos(x*x)) при x0 < x < b). Реализовать схему блочно-циклического распараллеливания на OpenMP. Построить зависимость ускорения от числа потоков для минимального, промежуточного и максимального размера блока. 6. Блочное распараллеливание на MPI. Вычисление определенного интеграла с блочным распараллеливанием на MPI. Необходимо подобрать функцию и число шагов так, чтобы характерное время работы последовательного варианта программы (один процесс) было около 1 минуты. В качестве результата требуется построить график зависимости времени выполнения программы и эффективности распараллеливания от числа процессов в интервале 1-16 процессов. 7. *Блочно-циклическое распараллеливание на MPI. Вычисление определенного интеграла с блочно-циклическим распараллеливанием на MPI. Необходимо подобрать функцию и число шагов так, чтобы характерное время работы последовательного варианта программы (один процесс) было около 1 минуты. В качестве результата требуется построить график зависимости времени выполнения программы и эффективности распараллеливания от числа процессов в интервале 1-16 процессов. Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Параллельное программирование» для направления 231300.62 «Прикладная математика» подготовки бакалавра 10 Учебно-методическое и информационное обеспечение дисциплины 10.1 Базовый учебник Гергель, В. П. Современные языки и технологии параллельного программирования. М. Изд-во Моск. ун-та, 2012. - 406 с. ISBN 978-5-211-06380-8 10.2 Основная литература 1. Антонов, А. С. Технологии параллельного программирования MPI и OpenMP. М. Изд-во Моск. ун-та, 2012. - 339 с. 2. Лупин С.А., Посыпкин М.А. Технологии параллельного программирования. ФОРУМ, 2013. - 205 с. 3. Боресков, А. В. Параллельные вычисления на GPU. М. Изд-во Моск. ун-та, 2012. – 333 с. 4. Левин, М. П. Параллельное программирование с использованием OpenMP. М. Интернет-Университет Информационных Технологий, 2012. - 118 с. 5. Демьянович, Ю. К. Параллельные алгоритмы. Разработка и реализация. М. БИНОМ. Лаборатория знаний, 2012. - 343 с. 6. Гулд, Х, Тобочник Я. Компьютерное моделирование в физике, Ч. 1. 1990. – 349 с. 7. Гулд, Х, Тобочник Я. Компьютерное моделирование в физике, Ч. 2. 1990. – 399 с. 10.3 Дополнительная литература 1. Максимов Н. В., Партыка Т.Л., Попов И.И. Архитектура ЭВМ и вычислительных систем. Форум, Инфра-М, 2013. - 512 с. 2. Хорошевский В.Г. Архитектура вычислительных систем. Изд-во МГТУ им. Н. Э. Баумана, 2008. - 519 с. 3. Семенов, С. Суперкомпьютеры : Россия в межстрановом сопоставлении. Экономист, N.2, 2008. - С. 21-30. 4. Сайт Лаборатории параллельных информационных технологий НИВЦ МГУ: http://parallel.ru 5. Шпаковский Г. И., Верхотуров А. Е., Серикова Н. В. Руководство по работе на вычислительном кластере. Учебное пособие. Минск.: БГУ, 2004. 6. Сандерс Дж. Кэндрот Э. Технология CUDA в примерах. ДМК Пресс, 2011. - 231с. 7. Официальная документация по OpenMP: http://www.openmp.org (на англ. языке) 8. Введение в OpenMP: https://software.intel.com/ru-ru/blogs/2011/11/21/openmpc?language=ru 9. Учебное пособие по OpenMP http://www.llnl.gov/computing/tutorials/openMP (на англ. языке) 10. Карпов В.Е., Коньков К.А. Основы операционных систем. М.: Интуит, 2004. 11. Butenhof D.R. Programming with POSIX Threads. Addison-Wesley, 1997. 12. Robbins, S. Lessons in grid computing. John Wiley & Sons, 2006. - 363 с. 13. Официальная документация по стандартам MPI: http://www.mcs.anl.gov/mpi 14. Евсеев И. MPI для начинающих: http://www2.sscc.ru/Links/Litera/il/default.htm 15. И. Д. Котляров. Сети Грид // Прикладная информатика №1 (13) 2008. 16. Иванова, Е. М. Вычислительная математика. М. Моск. гос. ин-т электроники и математики, 2012. - 140 с. 17. Миллер, Р. Последовательные и параллельные алгоритмы. М. БИНОМ. Лаборатория знаний, 2006. - 406 с. 18. Головизнин, В. М. Новые алгоритмы вычислительной гидродинамики для многопроцессорных вычислительных комплексов. М. Изд-во Моск. ун-та, 2013. - 467 с. 19. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. М.: БХВ-СанктПетербург, 2004. Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Параллельное программирование» для направления 231300.62 «Прикладная математика» подготовки бакалавра 10.4 Справочники, словари, энциклопедии Не используются. 10.5 Программные средства Для успешного освоения дисциплины, студент использует следующие программные средства: 1. PuTTY – свободно-распространяемый пакет для выполнения удаленных команд на вычислительном кластере по протоколу SSH. Сайт проекта: http://www.chiark.greenend.org.uk/~sgtatham/putty/ 2. WinSCP – свободно-распространяемый пакет для передачи файлов между локальным и удаленным компьютером по протоколу SSH. Сайт проекта: http://winscp.net 3. Компиляторы с языков С и Fortran, система очередей PBS, библиотека MPI, среда разработки CUDA а также другое системное программное обеспечение, установленное на учебном суперкомпьютерном кластере. 10.6 Дистанционная поддержка дисциплины Не предусмотрена. 11 Материально-техническое обеспечение дисциплины Для проведения лекций используется персональный компьютер и проектор. Для выполнения практических заданий используется компьютерный класс с компьютерами, на которые предустановлены операционные системы Windows или Linux, программы PuTTY и WinSCP (для ОС Windows), а также учебный суперкомпьютерный кластер, включающий 72 процессорных ядра AMD Opteron 6234, а также 6 графичеких ускорителей Nvidia Tesla C2070.