МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Институт математики и компьютерных наук Кафедра программного обеспечения Захарова Ирина Гелиевна АЛГОРИТМЫ И ТЕХНОЛОГИИ РАЗРАБОТКИ ПАРАЛЛЕЛЬНЫХ ПРОГРАММ Учебно-методический комплекс. Рабочая программа для студентов направления 02.04.03 Математическое обеспечение и администрирование информационных систем. Магистерская программа «Высокопроизводительные вычислительные системы» (очная форма обучения) Тюменский государственный университет 2014 Захарова И.Г. Алгоритмы и технологии разработки параллельных программ. Учебно-методический комплекс. Рабочая программа для студентов направления 02.04.03 Математическое обеспечение и администрирование информационных систем, магистерская программа «Высокопроизводительные вычислительные системы» (очная форма обучения). Тюмень, 2014, 22 стр. Рабочая программа составлена в соответствии с требованиями ФГОС ВО с учетом рекомендаций и ПрОП ВО по направлению подготовки. Рабочая программа дисциплины опубликована на сайте ТюмГУ: Алгоритмы и технологии разработки параллельных программ [электронный ресурс] / Режим доступа: http://www.umk3plus.utmn.ru, свободный. Рекомендовано к изданию кафедрой программного обеспечения. Утверждено директором Института математики и компьютерных наук. ОТВЕТСТВЕННЫЙ РЕДАКТОР: Захарова И.Г., д.п.н., профессор. © Тюменский государственный университет, 2014. © Захарова И.Г., 2014. 2 1. Пояснительная записка. 1.1. Цели и задачи дисциплины Цель дисциплины: сформировать у обучающихся понятие об основных алгоритмах параллельных вычислений и ведущих технологиях разработки параллельных программ. Задачи дисциплины: - сформировать умение выстраивать и анализировать параллельные алгоритмы решения основных задач вычислительной математики; - развить навыки определения технологии оптимальных решений для различных вычислительных систем; - обеспечить овладение целостным представлением о сущности программирования для высокопроизводительных вычислительных систем. 1.2. Место дисциплины в структуре основной образовательной программы направления 02.04.03 Математическое обеспечение и администрирование информационных систем. Дисциплина «Алгоритмы и технологии разработки параллельных программ» относится к вариативной части блока 1 федерального государственного образовательного стандарта высшего образования направления 02.04.03 Математическое обеспечение и администрирование информационных систем. В соответствии с учебным планом образовательной программы изучение данной дисциплины предусмотрено в 1-2 семестрах и логически взаимосвязано с параллельно изучающимися дисциплинами. Дисциплина «Алгоритмы и технологии разработки параллельных программ» опирается на материалы таких дисциплин как «Архитектура многопроцессорных вычислительных систем», «Современные технологии программирования», расширяя представления о сущности и методах современных технологий программирования и программного обеспечения многопроцессорных вычислительных систем. Таблица 1. Разделы дисциплины и междисциплинарные связи с обеспечиваемыми (последующими) дисциплинами № п/ п 1 2 3 4 Наименование обеспечиваемых (последующих) дисциплин Методология научных исследований Производственная практика Научно-исследовательская работа Выполнение ВКР Темы дисциплины необходимые для изучения обеспечиваемых (последующих) дисциплин 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.3. Компетенции обучающегося, формируемые в результате освоения данной дисциплины. 3 В результате освоения дисциплины «Алгоритмы и технологии разработки параллельных программ» выпускник должен обладать следующими компетенциями: - владение навыками использования метода системного моделирования при исследовании и проектировании систем (ПК-2); - владение теоретическими основами информатики как науки; знание проблем современной информатики, ее категории и связи с другими научными дисциплинами, понимание основных этапов и тенденции развития программирования (ОПК-4); - владение навыками разработки моделирующих алгоритмов и реализации их на базе языков и пакетов прикладных программ моделирования (ОПК-9). 1.4. Перечень планируемых результатов обучения по дисциплине: В результате освоения дисциплины обучающийся должен: Знать: основные понятия параллельного программирования, структуру, методы и свойства классов, используемых в многопоточном программировании, возможные сферы их приложений при решении практических задач, основы построения программ для систем с общей и распределенной памятью. Уметь: разрабатывать программы для решения задач прикладного характера из различных разделов прикладной математики. Владеть: алгоритмами и технологиями параллельного программирования на основе стандартов OpenMP, MPI, библиотек классов для многопоточного программирования .NET (Thread, Task, Parallel). 2. Структура и трудоемкость дисциплины. Таблица 2. Вид учебной работы Контактная работа: Аудиторные занятия (всего) В том числе: Лекции Практические занятия (ПЗ) Семинары (С) Лабораторные работы (ЛР) Иные виды работ Самостоятельная работа (всего) Общая трудоемкость Всего часов 186,2 174 1 79,65 72 2 106,55 102 70 36 34 36 7,65 28,35 3 108 экзамен 68 4,55 37,45 4 144 экзамен 104 12,2 65,8 зач. ед. 7 часов 252 Вид промежуточной аттестации 4 Семестры 3. Тематический план. 1 1 Из них в интерактивной форме СРС Лаб Сем Лекции Виды учебной работы и СРС (в часах) Неделя семестра № Тема Итого часов по теме Таблица 3. 2 3 4 5 6 7 8 Модуль 1. Параллельные вычисления для систем с общей памятью Введение в дисциплину 1 2 4 6 Формы контроля 9 10 2 Моделирование и анализ 2-3 параллельных вычислений. Оценки трудоемкости параллельных алгоритмов 4 4 4 12 2 Опрос при сдаче лабораторной работы 3 Основы OpenMP 6 4 4 14 2 Опрос при сдаче лабораторной работы 12 8 12 32 4 технологии 4-6 Всего Модуль 2. Алгоритмы параллельных вычислений для матричных операций 4 Параллельные алгоритмы 7-8 умножения матрицы на вектор. 4 6 4 14 2 Опрос при сдаче лабораторной работы 5 Параллельные алгоритмы 9матричного умножения 10 4 4 4 12 1 Опрос при сдаче лабораторной работы 6 Параллельные алгоритмы 11решения систем линейных 12 алгебраических уравнений 4 4 4 12 1 Опрос при сдаче лабораторной работы Всего 12 14 12 38 4 5 Модуль 3. Параллельные вычисления для систем с разделенной памятью 7 Параллельное 13программирование в среде 14 Microsoft Visual Studio 4 6 4 14 2 Опрос при сдаче лабораторной работы 8 Основы технологии MPI. 15Стандарт MPI. Обмен 16 сообщениями 4 4 4 12 1 Опрос при сдаче лабораторной работы 9 Стандартные и 17пользовательские типы 18 данных. Виртуальные топологии в MPI. 4 4 4 12 1 Опрос при сдаче лабораторной работы Всего 12 14 12 38 4 Итого за 1 семестр 36 36 36 108 12 Курсовая работа 3 Из них в интерактивной форме 1 4 8 12 Модуль 1. Технологии параллельного программирования GPU Введение в технологию 1-2 4 8 4 10 CUDA 2 Программирование GPU- 3-4 систем 4 8 4 16 2 3 Взаимодействие OpenMP, MPI 2 4 6 16 4 10 20 14 42 6 CUDA, 5 Всего Модуль 2. Параллельные методы и алгоритмы дискретной оптимизации 4 Принципы распараллеливания сортировки. 5 Параллельные сортировки 6-7 4 8 4 18 4 методы 8-9 4 8 4 16 2 6 Контрольная работа 6 Параллельные методы на 10графах 11 4 8 6 14 2 Всего 12 24 14 48 8 Контрольная работа Модуль 3. Параллельные методы и алгоритмы решения дифференциальных уравнений 7 Постановка и 12параллельные методы 13 решения задачи Дирихле 4 8 4 18 2 8 Постановка и проведение 14вычислительных 16 экспериментов 6 12 4 18 4 9 Сравнительный анализ 17 моделей и технологий параллельного программирования. 2 4 6 18 4 Всего 12 24 14 54 8 Итого за 2 семестр 34 68 42 144 24 Из них в интерактивной форме 4 20 Контрольная работа 24 4. Содержание дисциплины. Семестр 1 1. Введение в дисциплину. Принципы построения параллельных вычислительных систем. Примеры и классификация вычислительных систем. Типовые схемы коммуникации в многопроцессорных вычислительных системах. 2. Моделирование и анализ параллельных вычислений. Модели вычислений. Оценки трудоемкости параллельных алгоритмов. Коммуникационная трудоемкость параллельных алгоритмов. Показатели эффективности и анализ масштабируемости параллельных вычислений. 3. Основы технологии OpenMP. Модель «fork-join». Классификация переменных. Основные директивы и их опции. Распараллеливание по данным и по операциям. Решение проблемы синхронизации. Отладка программ. 4. Параллельные алгоритмы умножения матрицы на вектор. Принципы распараллеливания. Разделение данных. Разделение данных по строкам. Разделение данных по столбцам. Блочное разделение данных. 7 5. Параллельные алгоритмы матричного умножения. Принципы распараллеливания. Разделение данных. Ленточная схема разделения данных. Блочное разделение данных (алгоритмы Фокса и Кэннона). 6. Параллельные алгоритмы решения систем линейных алгебраических уравнений. Алгоритм Гаусса. Масштабирование и распределение подзадач. Метод сопряженных градиентов. Последовательный и параллельный алгоритмы. 7. Параллельное программирование в среде Microsoft Visual Studio. Многопоточная обработка. Параллелизм задач. Параллелизм данных. Класс Parallel; методы Parallel.Invoke; Parallel.For; Parallel.Foreach 8. Основы технологии MPI. Стандарт MPI. Модель MPI. Процессы. Обмен сообщениями. Группы и коммуникаторы. Типы сообщений. Функции передачи и приемы сообщений. 9. Стандартные и пользовательские типы данных. Создание пользовательских типов данных. Использование пользовательских типов данных при обмене сообщениями. Виртуальные топологии в MPI. Функции определения виртуальной топологии. Семестр 2 1. Введение в технологию CUDA. Многоядерные вычислительные системы. Массивнопараллельные процессоры. Модель программирования CUDA. 2. Программирование GPU-систем. Потоки команд. Основы OpenCL. Организация потоков данных. Доступ к памяти. 3. Взаимодействие CUDA, OpenMP, MPI. Программирование для гибридных систем с графическими ускорителями. Реализации CUDA+(thread, OpenMP, MPI). 4. Принципы распараллеливания сортировки. Основные последовательные алгоритмы сортировки данных. Масштабирование параллельных вычислений. 5. Параллельные методы сортировки. Пузырьковая сортировка. Сортировка Шелла. Быстрая сортировка. Обобщенный алгоритм. Сортировка с использованием регулярного набора образцов. 6. Параллельные методы на графах. Задача поиска кратчайших путей. Задача нахождения минимального охватывающего дерева. Задача оптимального разделения графов. 7. Постановка и параллельные методы решения задачи Дирихле. Последовательные методы решения. Параллельные вычисления для системы с общей памятью (технология OpenMP). Параллельные вычисления для системы с распределенной памятью (технология MPI). 8. Постановка и проведение вычислительных экспериментов. Пошаговое и последовательное проведение вычислительных экспериментов. Выполнение серии вычислительных экспериментов. Модельные и реальные вычислительные эксперименты. 9. Сравнительный анализ моделей и технологий параллельного программирования. Критерии сравнения. Удобство программирования. Реализация типовых численных методов. Зависимость от коммуникационного оборудования. 5. Планы семинарских занятий. Семинарские занятия учебным планом не предусмотрены 8 6. Темы лабораторных работ. Семестр 1 1. Моделирование и анализ параллельных вычислений. Выполнение оценки трудоемкости параллельных алгоритмов на примере стандартных схем суммирования. Выполнение оценки коммуникационной трудоемкости параллельных алгоритмов. 2. Основы технологии OpenMP. Практическая реализация параллельных алгоритмов обработки массивов на языке С++ в среде Microsoft Visual Studio. Распараллеливание по данным и по операциям. Решение проблемы синхронизации. Отладка программ. 3. Программная реализация параллельных алгоритмов умножения матрицы на вектор на языке С++ в среде Microsoft Visual Studio с помощью технологии OpenMP. Разделение данных. Разделение данных по строкам. Разделение данных по столбцам. Блочное разделение данных. 4. Программная реализация параллельных алгоритмов матричного умножения на языке С++ в среде Microsoft Visual Studio с помощью технологии OpenMP. Принципы распараллеливания. Разделение данных. Ленточная схема разделения данных. Блочное разделение данных (алгоритмы Фокса и Кэннона). 5. Программная реализация параллельных алгоритмов решения систем линейных алгебраических уравнений на языке С++ в среде Microsoft Visual Studio с помощью технологии OpenMP. Алгоритм Гаусса. Масштабирование и распределение подзадач. Метод сопряженных градиентов. Последовательный и параллельный алгоритмы. 6. Параллельное программирование в среде Microsoft Visual Studio. Разработка приложений, реализующих многопоточную обработку данных. Программная реализация параллелизма задач и параллелизма данных. Использование методов класса Parallel (Parallel.Invoke; Parallel.For; Parallel.Foreach). 7. Основы технологии MPI. Установка MPI. Запуск и отладка MPI-программ на языке С++ в среде Microsoft Visual Studio. Программная реализация параллельных алгоритмов обработки двумерных массивов с использованием стандартных и пользовательских типов данных. Семестр 2 1. Введение в технологию CUDA. Программирование GPU-систем. Основы OpenCL. Организация потоков данных. Доступ к памяти. Программная реализация параллельных алгоритмов обработки двумерных массивов. 2. Разработка программных приложений, реализующих взаимодействие технологий CUDA, OpenMP, MPI. Программирование для гибридных систем с графическими ускорителями на примере программной реализации параллельных алгоритмов обработки двумерных массивов. Реализации CUDA+(thread, OpenMP, MPI). 3. Принципы распараллеливания сортировки. Основные последовательные алгоритмы сортировки данных. Программная реализация параллельных методов сортировки с помощью технологии MPI. Пузырьковая сортировка. Сортировка Шелла. Быстрая 9 сортировка. Обобщенный алгоритм. Сортировка с использованием регулярного набора образцов. Программная реализация параллельных методов с помощью технологии MPI. 4. Параллельные методы на графах. Задача поиска кратчайших путей. Задача нахождения минимального охватывающего дерева. Задача оптимального разделения графов. Программная реализация параллельных методов с помощью технологии MPI. 5. Постановка и параллельные методы решения задачи Дирихле. Последовательные и параллельные методы решения. Программная реализация параллельных методов с помощью технологий OpenMP и MPI. 6. Постановка и проведение вычислительных экспериментов на многопроцессорной вычислительной системе. Пошаговое и последовательное проведение вычислительных экспериментов. Выполнение серии вычислительных экспериментов. Постановка и проведение модельных и реальных вычислительных экспериментов. 7. Примерная тематика курсовых работ 1. Сравнительный анализ моделей параллельного программирования. 2. Сравнительный анализ технологий параллельного программирования. 3. Обзор процессорных и сетевых решений, применяемых в современных кластерах. 4. Технологии параллельного программирования и метакомпьютинг. 5. Технологии программируемой логики. 6. Обзор API поточной обработки. 7. Приемы многопоточной обработки. 8. Обзор основных проблем параллельного программирования. 9. Поточная обработка на многоядерных процессорах Intel. 10. Обзор продуктов Intel для разработки параллельных программ. 11. Обзор Parallel LINQ (Microsoft Visual Studio). 12. Обзор возможностей класса Task для разработки параллельных программ (Microsoft Visual Studio). 13. Синхронизация потоков в .NET Framework. 14. Отладка многопоточных приложений (Microsoft Visual Studio). 15. Параллельные методы решения задач исследования операций. 16. Параллельные методы решения задач многоэкстремальной оптимизации. 8. Учебно-методическое обеспечение и планирование самостоятельной работы студентов Таблица 5. Планирование самостоятельной работы студентов № Модули и темы Виды СРС обязательные дополнит. Неделя семестра Объем часов 1 4 Модуль 1. Параллельные вычисления для систем с общей памятью 1 Введение в дисциплину Работа с литературой, 10 2 3 Моделирование и анализ параллельных вычислений. Оценки трудоемкости параллельных алгоритмов Основы технологии OpenMP источниками Интернет Работа с литературой, источниками Интернет, разработка приложений Работа с литературой, источниками Интернет, разработка приложений Вычислитель ный эксперимент Вычислитель ный эксперимент 2-3 4 4-6 4 Всего 12 Модуль 2. Алгоритмы параллельных вычислений для матричных операций 4 5 6 Параллельные алгоритмы умножения матрицы на вектор. Параллельные алгоритмы матричного умножения Параллельные алгоритмы решения систем линейных алгебраических уравнений Работа с литературой, источниками Интернет, разработка приложений Анализ статей по выбору, разработка приложений Работа с литературой, источниками Интернет, разработка приложений Вычислитель ный эксперимент Вычислитель ный эксперимент Вычислитель ный эксперимент 7-8 4 9-10 4 11-12 4 Всего 12 Модуль 3. Параллельные вычисления для систем с разделенной памятью 7 Параллельное программирование в среде Microsoft Visual Studio Работа с литературой, источниками Интернет, разработка приложений 11 Вычислитель ный эксперимент 13-14 4 8 9 Основы технологии MPI. Стандарт MPI. Обмен сообщениями Стандартные и пользовательские типы данных. Виртуальные топологии в MPI. Работа с литературой, источниками Интернет, разработка приложений Работа с литературой, источниками Интернет, разработка приложений Вычислитель ный эксперимент Вычислитель ный эксперимент 15-16 4 17-18 4 Всего 12 Итого за 1 семестр 36 Модуль 1. Технологии параллельного программирования GPU 1 2 3 Введение CUDA в технологию Программирование систем Взаимодействие OpenMP, MPI GPU- CUDA, Работа с литературой, источниками Интернет, разработка приложений Работа с литературой, источниками Интернет, разработка приложений Работа с литературой, источниками Интернет, разработка приложений Вычислитель ный эксперимент Вычислитель ный эксперимент Вычислитель ный эксперимент 1-2 4 3-4 4 5 6 Всего 14 Модуль 2. Параллельные методы и алгоритмы дискретной оптимизации 4 5 Принципы распараллеливания сортировки. Параллельные сортировки методы Работа с литературой, источниками Интернет Анализ статей по выбору, 12 Вычислитель ный эксперимент Вычислитель ный эксперимент 6-7 4 8-9 4 6 Параллельные графах методы на разработка приложений Работа с литературой, источниками Интернет, разработка приложений Вычислитель ный эксперимент 10-11 Всего 6 14 Модуль 3. Параллельные методы и алгоритмы решения дифференциальных уравнений 7 8 9 Постановка и параллельные методы решения задачи Дирихле Постановка и проведение вычислительных экспериментов Сравнительный анализ моделей и технологий параллельного программирования. Работа с литературой, источниками Интернет, разработка приложений Работа с литературой, источниками Интернет, разработка приложений Работа с литературой, источниками Интернет, разработка приложений Всего Вычислитель ный эксперимент Вычислитель ный эксперимент Вычислитель ный эксперимент 12-13 4 14-16 4 17 6 14 Итого за 2 семестр 42 Примерные варианты контрольных работ: Контрольная работа №1 Выполнить вычислительный эксперимент для оценки эффективности параллельных вычислений (обработка двумерного массива: перестановки, умножение матриц и векторов) с распараллеливанием вычислений с помощью технологии OpenMP (MPI, CUDA. Контрольная работа №2 Выполнить вычислительный эксперимент для оценки эффективности параллельных вычислений (алгоритмы сортировки) с распараллеливанием вычислений с помощью технологии OpenMP (MPI, CUDA, гибридной). Контрольная работа №3 13 Выполнить вычислительный эксперимент для оценки эффективности параллельных вычислений (численное решение краевой задачи для уравнения в частных производных) с распараллеливанием вычислений с помощью технологии OpenMP (MPI, CUDA, гибридной). 9. Фонд оценочных средств для проведения промежуточной аттестации по итогам освоения дисциплины 14 9.1. Перечень компетенций с указанием этапов их формирования в процессе освоения образовательной программы (выдержка из семестр матрицы компетенций): 1 ОПК-4 -владение теоретическими основами информатики как науки; знание проблем современной информатики, ее категории и связи с другими научными дисциплинами, понимание основных этапов и тенденции развития программирования, математического обеспечения и информационных, технологий Б1 История и методология компьютерных наук Б1 Методика преподавания компьютерных наук 2 3 4 Б1 Алгоритмы и технологии разработки параллельных программ Б1 Системы компьютерной математики Б1 Вычислительный эксперимент c использованием пакета MatLab Б1 Дополнительные главы дискретной математики Б1 Дополнительные главы математической логики Б1 Современные технологии программирования Б1 Алгоритмы и технологии разработки параллельных программ Б1 Современные технологии программирования Б1 Распределенные хранилища данных Б1 Построение информационных приложений на базе промышленных СУБД Б1 Системы имитационного моделирования Б1 Задачи оптимального управления Б1 Открытые технологии разработки программного обеспечения Б1 Разработка мобильных приложений ОПК-9 - владение навыками разработки моделирующих алгоритмов и реализации их на базе языков и пакетов прикладных программ моделирования Дисциплины учебного плана Б1 Алгоритмы и технологии разработки параллельных программ Б1 Дополнительные главы дискретной математики ПК-2 - владение навыками использования метода системного моделирования при исследовании и проектировании систем Б1 Алгоритмы и технологии разработки параллельных программ Б2 Научно-исследовательская работа Б2 Научно-исследовательская работа Б1 Алгоритмы и технологии разработки параллельных программ Б2 Курсовая работа по направлению Б2 Научно-исследовательская работа Б1 Алгоритмы и технологии разработки параллельных программ Б2 Научно-исследовательская работа Б1 Управление проектами Б2 Научно-исследовательская работа Б1 Методология научных исследований Б2 Научно-исследовательская работа Б2 Преддипломная практика Код компетенции 9.2. Описание показателей и критериев оценивания компетенций на различных этапах их формирования, описание шкал оценивания ОПК4 Результаты обучения в целом Результаты обучения по уровням освоения материала Минимальный (удовл.) Базовый (хор.) Повышенный (отл.) Знает: содержание основных этапов и тенденции развития алгоритмов, языков и технологий параллельного программирования. Знает: содержание основных этапов и тенденции развития алгоритмов, языков и технологий параллельного программирования. Знает: содержание и взаимосвязи основных этапов и тенденции развития алгоритмов, языков и технологий параллельного программирования. Знает: содержание и взаимосвязи основных этапов, проблемы и тенденции развития алгоритмов, языков и технологий параллельного программирования. Умеет: выбрать модель и язык программирования, подходящие для программной реализации алгоритма решения конкретной прикладной задачи. Умеет: выбрать модель и язык программирования для программной реализации алгоритма решения конкретной прикладной задачи. Умеет: выбрать возможные модели и языки программирования, подходящие для программной реализации алгоритма решения конкретной прикладной задачи. Владеет: навыками практического программирования Владеет: навыками практического программирования для программной реализации типовых Владеет: навыками практического программирования для программной реализации 16 Умеет: выбрать оптимальные модель и язык программирования из нескольких возможных, подходящие для программной реализации алгоритмов решения определенного класса прикладных задач. Владеет: навыками практического программирования для программной реализации и модификации параллельных Виды занятий Оценочные средства Лекции, лаборат орные работы Опрос на лекциях Проекты по разработке программного продукта Экзамен ОПК9 для программной реализации типовых параллельных алгоритмов. параллельных алгоритмов. типовых параллельных алгоритмов на нескольких платформах. алгоритмов решения определенного класса прикладных задач. Знает: содержание типовых алгоритмов и технологий параллельного программирования. Знает: содержание типовых алгоритмов и технологий параллельного программирования. Знает: содержание и отличия типовых алгоритмов и технологий параллельного программирования. Знает: содержание и особенности использования алгоритмов и технологий параллельного программирования. Умеет: выбрать параллельный алгоритм решения конкретной прикладной задачи, технологию, язык программирования и среду разработки для программной реализации. Умеет: выбрать и модифицировать параллельный алгоритм решения конкретной прикладной задачи, технологию, обосновать выбор языка программирования и среды разработки для программной реализации. Умеет: разработать параллельный алгоритм решения конкретного класса прикладных задач, технологию, язык программирования и среду разработки для программной реализации. Владеет: навыками тестирования типовых параллельных алгоритмов в вычислительном эксперименте. Владеет: навыками тестирования типовых и модифицированных параллельных алгоритмов в вычислительном эксперименте. Умеет: выбрать параллельный алгоритм решения конкретной прикладной задачи, технологию, язык программирования и среду разработки для программной реализации. Владеет: навыками тестирования типовых параллельных алгоритмов в вычислительном эксперименте. 17 Владеет: навыками планирования реальных и модельных вычислительных экспериментов и проведения тестирования параллельных алгоритмов Лекции, лаборат орные работы Опрос на лекциях Проекты по разработке программного продукта Экзамен ПК-2 Знает: принципы проектирования и разработки программных продуктов на основе метода системного моделирования. Знает: проблемы проектирования и разработки программных продуктов на основе метода системного моделирования . Знает: проблемы проектирования и разработки программных продуктов и подходы к их решению на основе метода системного моделирования . Умеет: построить модель для программной реализации решения конкретной прикладной задачи. Умеет: построить модель для программной реализации решения конкретной прикладной задачи. Умеет: построить различные модели для программной реализации решения конкретной прикладной задачи . Умеет: построить различные модели, наиболее подходящие для программной реализации алгоритмов решения определенного класса прикладных задач. Владеет: навыками практического применения метода системного моделирования для программной реализации решения конкретной прикладной задачи. Владеет: навыками практического применения метода системного моделирования для программной реализации решения конкретной прикладной задачи. Владеет: навыками практического применения и самостоятельного освоения методов системного моделирования для программной реализации решения конкретной прикладной задачи. Владеет: навыками практического применения, модификации и самостоятельного освоения методов системного моделирования для программной реализации алгоритмов решения определенного класса прикладных задач. 18 Знает: проблемы проектирования и разработки программных продуктов и способы их решения на основе метода системного моделирования. Лекции, лаборат орные работы Опрос на лекциях Проекты по разработке программного продукта Экзамен 9.3. Типовые контрольные задания или иные материалы, необходимые для оценки знаний, умений, навыков и (или) опыта деятельности, характеризующей этапы формирования компетенций в процессе освоения образовательной программы Требования к проектам, выполняющимся на лабораторных занятиях (п. 6) При выполнении проекта разработки программного продукта обучающийся должен показать уровень сформированности компетенций в ходе реализации основных этапов лабораторной работы: 1. Построить и обосновать на основе подходов к системному моделированию программных продуктов модель для программной реализации решения конкретной прикладной задачи. Описать общую структуру программы (функции, модули, классы, интерфейсы и т.п.), пользовательские типы данных. При реализации объектно-ориентированного подхода описать основные классы. – ПК-2 2. Выбрать и обосновать модели программирования, подходящие для программной реализации алгоритма решения конкретной прикладной задачи. – ПК-2 3. Выбрать и обосновать параллельный алгоритм решения конкретной прикладной задачи, технологию (OpenMP, MPI, multithreading), язык программирования и среду разработки для программной реализации. – ОПК-4, ОПК-9 4. Выполнить тестирование последовательных и параллельных алгоритмов в вычислительном эксперименте, варьируя размерность задачи и количество потоков (процессов). – ОПК-9 Вопросы к экзамену Семестр 1 1. Принципы построения параллельных вычислительных систем. 2. Классификация вычислительных систем. 3. Типовые схемы коммуникации в многопроцессорных вычислительных системах. 4. Моделирование параллельных вычислений. 5. Оценки трудоемкости параллельных алгоритмов. 6. Коммуникационная трудоемкость параллельных алгоритмов. 7. Показатели эффективности параллельных вычислений. 8. Основы технологии OpenMP. Модель «fork-join». 9. Основные директивы OpenMP. Распараллеливание по данным и по операциям. 10. Решение проблемы синхронизации в OpenMP. 11. Параллельные алгоритмы умножения матрицы на вектор. 12. Параллельные алгоритмы матричного умножения. 13. Параллельные алгоритмы решения систем линейных алгебраических уравнений. 14. Параллельное программирование в среде Microsoft Visual Studio. Многопоточная обработка. 15. Класс Parallel; методы Parallel.Invoke; Parallel.For; Parallel.Foreach 16. Основы технологии MPI. Стандарт MPI. 17. Модель MPI. Процессы. Обмен сообщениями. 18. Стандартные и пользовательские типы данных MPI. 19. Виртуальные топологии в MPI. Семестр 2 1. Введение в технологию CUDA. Модель программирования. 2. Программирование GPU-систем. 3. Программирование для гибридных систем с графическими ускорителями. 4. Параллельные методы сортировки. Пузырьковая сортировка. Сортировка Шелла. 5. Параллельные методы сортировки. Быстрая сортировка. Обобщенный алгоритм. 6. Параллельные методы на графах. Задача поиска кратчайших путей. 7. Параллельные методы на графах. Задача нахождения минимального охватывающего дерева. 8. Параллельные методы на графах. Задача оптимального разделения графов. 9. Постановка и параллельные методы решения задачи Дирихле. Параллельные вычисления для системы с общей памятью (технология OpenMP). 10. Постановка и параллельные методы решения задачи Дирихле. Параллельные вычисления для системы с распределенной памятью (технология MPI). 11. Постановка и проведение вычислительных экспериментов. 12. Сравнительный анализ моделей и технологий параллельного программирования. Критерии сравнения. 9.4. Методические материалы, определяющие процедуры оценивания знаний, умений, навыков и (или) опыта деятельности характеризующих этапы формирования компетенций. Форма промежуточной аттестации – экзамен (1, 2 семестры): Для сдачи экзамена студент должен явиться на экзамен. Экзамен проводится в устнописьменной форме (на усмотрение преподавателя). Билет содержит 1 вопрос. Для получения положительной оценки необходимо дать ответ с практической иллюстрацией. В 1 семестре дополнительно необходимо выполнить курсовую работу по дисциплине. При выставлении итоговой оценки учитывается качество выполненных в течение семестра лабораторных работ. При необходимости экзаменатор может задавать вопросы по существу выполненных и(или) невыполненных работ. В случае, если в течение семестра студент не сдал курсовую работу до экзамена или не явился на сдачу экзамена во время сессии, сдача курсовой работы и пересдача осуществляются только в сроки, установленные учебной частью института. 10. Образовательные технологии. Для реализации компетентностного подхода используются как традиционные формы и методы обучения, так и интерактивные формы (круглый стол, взаиморецензированиие, представление и обсуждение проектных разработок), направленные на формирование у магистрантов навыков коллективной работы, умения анализировать алгоритмы и технологии для оптимального их использования при разработке программных продуктов. 11. Учебно-методическое и информационное обеспечение дисциплины. 20 11.1. Основная литература: 1. Зайцева, С.С. Дискретная математика: учеб. пособие/ С. С. Зайцева, А. А. Виноградова; Тюм. гос. ун-т. - Тюмень: Изд-во ТюмГУ, 2011. - 160 с. 2. Кариев, Ч. А. Разработка Windows-приложений на основе Visual C#: учеб. пособие/ Ч. А. Кариев. - Москва: Интернет-Университет Информационных Технологий: Бином. Лаборатория знаний, 2011. - 767 с. 3. Шевцов, Г. С. Численные методы линейной алгебры / Г. С. Шевцов, О. Г. Крюкова, Б. И. Мызникова. - 2-е изд., испр. и доп.. - Санкт-Петербург: Лань, 2011. - 496 с. 11.2. Дополнительная литература: 1. Алабужев А.А. Основы параллельного программирования: учеб.-метод. пособие/ А. А. Алабужев; Перм. гос. ун-т. - Пермь: Изд-во ПГУ, 2007. - 100 с. 2. Барский А.Б. Параллельные информационные технологии: учеб. пособие/ А. Б. Барский. - Москва: Бином. Лаборатория знаний, 2007. - 503 с. 3. Гергель В.П. Теория и практика параллельных вычислений: учеб. пособие/ В. П. Гергель. - Москва: Интернет-Университет Информационных Технологий: БИНОМ. Лаборатория знаний, 2007. - 423 с. 4. Информационные технологии (периодическое издание, выпуски 2012-2014 гг.). 5. Тель, Жерар. Введение в распределенные алгоритмы/ Ж. Тель. - Москва: Изд-во МЦНМО, 2009. - 616 с. 11.3. Программное обеспечение и Интернет – ресурсы: 1. CUDA Education & Training [Электр. ресурс] Режим доступа https://developer.nvidia.com/cuda-education-training (дата обращения: 26.12.2014). 2. MSDN Academic Alliance. Библиотека учебных курсов [Электр. ресурс]. – Режим доступа http://www.microsoft.com/Rus/msdnaa/curricula/default.mspx (дата обращения: 26.12.2014). 3. Научный сервис в сети Интернет: поиск новых решений: Труды Международной суперкомпьютерной конференции (17-22 сентября 2012 г., г. Новороссийск). - М.: Изд-во МГУ, 2012. - 752 с. [Электр. ресурс]. – Режим доступа http://agora.guru.ru/display.php?conf=abrau2012&page=item011&PHPSESSID=hr0h54220 qguriuftabhvssgp2 (дата обращения: 26.12.2014). 4. Параллельное программирование с использованием технологии OpenMP [Электр. ресурс].- Режим доступа www.intuit.ru/studies/courses/1112/232/info (дата обращения: 26.12.2014) Фундаментальные и прикладные исследования в области параллельных вычислений [Электр. ресурс]. – Режим доступа http://parallel.ru/research (дата обращения: 26.12.2014). 12. Технические средства и материально-техническое обеспечение дисциплины: Для чтения лекций используется аудитория, оборудованная мультимедиа проектором и персональным компьютером. Для выполнения лабораторных работ используется компьютерное оборудование (виртуальный компьютер не ниже 16 ядер) с установленными программными продуктами Microsoft Visual Studio (версия не ниже 2010), MPI (версия не ниже 2.0). 21 Дополнения и изменения к рабочей программе на 201 / 201 учебный год В рабочую программу вносятся следующие изменения: _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ Рабочая программа пересмотрена и одобрена на заседании кафедры программного обеспечения « » _______________ 201 г. Заведующий кафедрой ___________________/___________________/ Роспись 22 Ф.И.О.