231000 Параллельное программирование

реклама
1.
Цели и задачи дисциплины
1.1. Цель. Задачи дисциплины, ее место в подготовке бакалавра (с учетом
квалификационных требований ФГОС)
Рабочая программа по дисциплине «Параллельное программирование» составлена в соответствии с
требованиями ФГОС ВПО по направлению 231000 «Программная инженерия» и относится к циклу
дисциплин по выбору (Б3.В.ДВ).
Целью курса «Параллельное программирование» является освоение базовых знаний по вопросам
организации параллельных вычислительных систем, а также основных технологий организации параллельных
вычислений на многопроцессорных вычислительных комплексах с распределенной или общей оперативной
памятью.
Объектами изучения в данной дисциплине являются: основные принципы организации параллельной
обработки данных; модели, методы и технологии параллельного программирования; средства и методы
отладки параллельных приложений; библиотеки, надстройки к компиляторам для создания параллельных
приложений.
Основными задачами изучения дисциплины являются: знакомство с основными направлениями в
области организации параллельных вычислений на многопроцессорных вычислительных системах;
знакомство с технологиями параллельного программирования; приобретение навыков параллельного
программирования с использованием интерфейса передачи сообщений; знакомство с технологией
параллельного программирования на системах с общей оперативной памятью; приобретение навыков
распараллеливания математических алгоритмов.
1.2.
Требования к уровню усвоения дисциплины
Обучающийся должен знать методы параллельных вычислений для задач вычислительной математики
(матричные вычисления, решение систем линейных уравнений, сортировка, обработка графов, уравнения в
частных производных, а также основные подходы к разработке параллельных программ.
Обучающийся должен уметь строить модель выполнения параллельных программ, оценивать
эффективности параллельных вычислений, анализировать сложность вычислений и возможность
распараллеливания разрабатываемых алгоритмов, применять общие схемы разработки параллельных
программ для реализаций собственных алгоритмов, оценивать основные параметры получаемых
параллельных программ, таких как ускорение, эффективность и масштабируемость.
Обучающийся должен владеть навыками составления математических моделей задач для разработки
параллельных алгоритмов; навыками реализации параллельных программ с помощью различных языковых
средств для высокопроизводительных вычислительных систем; навыками использования различных средств
межпроцессного взаимодействия
Обучающийся должен иметь представление о принципах построения параллельных вычислительных
систем, моделирования и анализа параллельных вычислений и технологиях и системах разработки
параллельных программ
У обучающегося должны быть сформированы следующие общекультурные компетенции (ОК) и
профессиональные компетенции (ПК): ПК-2, ПК-6, ПК-9, ПК-10, ПК-11
- способность к формализации в своей предметной области с учетом ограничений используемых
методов исследования (ПК-2)
- способность формализовать предметную область программного проекта и разработать спецификации
для компонентов программного продукта (ПК-6);
- выпускник должен демонстрировать знакомство с архитектурой ЭВМ и систем (ПК-9);
- умение применять основы информатики и программирования к проектированию, конструированию и
тестированию программных продуктов (ПК-10);
- навыки чтения, понимания и выделения главной идеи прочитанного исходного кода, документации
(ПК-11).
1.3.
Связь с другими дисциплинами Учебного плана
Перечень действующих и предшествующих дисциплин
Математический анализ, Математическая логика и
теория алгоритмов, Методы разработки сложных
программных систем, Тестирование программного
обеспечения
Перечень последующих дисциплин, видов работ
Управление программными проектами, Учебноисследовательская работа в семестре
2. Содержание дисциплины, способы и методы учебной
деятельности преподавателя
Методы обучения – система последовательных, взаимосвязанных действий, обеспечивающих усвоение
содержания образования, развитие способностей обучающихся, овладение ими средствами самообразования
и самообучения; обеспечивают цель обучения, способ усвоения и характер взаимодействия преподавателя и
обучающегося; направлены на приобретение знаний, формирование умений, навыков, их закрепление и
контроль.
Монологический (изложение теоретического материала в форме монолога)
М
Показательный (изложение материала с приемами показа)
П
Диалогический (изложение материала в форме беседы с вопросами и ответами)
Д
Эвристический (частично поисковый) (под руководством преподавателя обучающиеся
рассуждают, решают возникающие вопросы, анализируют, обобщают, делают выводы и
решают поставленную задачу)
Э
Проблемное изложение (преподаватель ставит проблему и раскрывает доказательно пути
ее решения)
ПБ
Исследовательский (обучающиеся самостоятельно добывают знания в процессе разрешения
проблемы, сравнивая различные варианты ее решения)
И
Программированный (организация аудиторной и самостоятельной работы обучающихся
осуществляется в индивидуальном темпе и под контролем специальных технических средств)
ПГ
Другой метод, используемый преподавателем (формируется самостоятельно), при этом в п.п.
2.1.-2.4. дается его наименование, необходимые пояснения
Приведенные в таблице сокращения обозначения педагогических методов используются составителем
Рабочей программы для заполнения п.п. 2.1., 2.2. и 2.3. в столбце «Методы».
Реализуемые
компетенции
Вид занятия, модуль, тема и краткое содержание
Методы
в том числе в
интерактивной
форме, час.
Аудиторные занятия (лекции, лабораторные) – очная форма обучения
Кол. час
Неделя
2.1.
Очная форма обучения
1-8
8
8
1-2
2
2
3-4
2
2
5-6
2
2
Лекции
Модуль 1 «Введение в параллельное программирование»
Тема «Параллельное программирование в .NET Framework 4.0»
Определение, назначение параллельного программирования.
Многоядерные вычисления. Множественные потоки команд/данных.
Ускорение. Закон Амдала. Закон Густафсона-Барсиса. Введение в
параллельное программирование .NET Framework 4. Библиотека PFX.
Компоненты библиотеки PFX. Библиотека параллелизма задач и
данных (TPL).
Тема «Многопоточность в .NET Framework»
Определение многопоточности. Основы многопоточной
обработки; Класс Thread; создание вторичных потоков. Назначение
приоритета потока. Управление потоками. Пул потоков CLR.
Тема «Синхронизация потоков»
Оператор lock. Классы синхронизации в .NET Framework;
Interlocked. Класс Monitor. Методы класса Monitor: Wait, Pulse и
П, Д,
Э, ПБ
П, Д,
Э, ПБ
ПК-2,
ПК-6,
ПК-9
ПК-2,
ПК-6,
ПК-9
П, Д,
Э, ПБ
ПК-2,
ПК-9
П, Д,
Э, ПБ
ПК-2,
ПК-6
PulseAll. Класс Mutex. Класс Semaphore.Класс Barrier. Класс
ReaderWriterLockSlim. События синхронизации потоков.
Тема «Введение в асинхронные задачи»
Использование класса Task. Класс TaskFactory. Примеры
различных сортировок массива с использованием принципа
параллелизма.
Модуль 2 «Параллелизм задач, данных, PLINQ-запрос»
П, Д,
Э, ПБ
ПК-2,
ПК-9
П, Д,
Э, ПБ
П, Д,
Э, ПБ
ПК-2,
ПК-6,
ПК-9,
ПК10
ПК-2,
ПК-6
П, Д,
Э, ПБ
П, Д,
Э, ПБ
ПК10
ПК-2,
ПК-6
П, Д,
Э, ПБ
ПК-2,
ПК-6
П, Д,
Э, ПБ
ПК-6,
ПК10
ПГ
ПК10,
ПК11
ПК10,
ПК11
ПК10,
ПК11
ПК10,
ПК11
ПК-
7-8
2
2
9-18
10
10
9-10
2
2
11-12
2
2
13-14
2
2
15-16
2
2
17-18
2
2
1-8
8
8
1-2
2
2
Тема «Параллельное программирование в .NET Framework 4.0»
Разработка приложения «SImpleMultithreadingApplication»
ПГ
3-4
2
2
Тема «Многопоточность в .NET Framework»
Разработка приложения «SimpleMultitaskingApplication»
ПГ
5-6
2
2
Тема «Синхронизация потоков»
Разработка приложения «ParallelForApplication»
ПГ
7-8
2
2
Тема «Введение в асинхронные задачи»
ПГ
Тема «Параллелизм задач»
Определение параллелизма задач. Создание и запуск задачи.
Создание вложенных задач. Ожидание задач. Обработка ошибок в
задачах. Отмена выполнения заданий. Продолжения. Продолжения и
Task <TResult>. Продолжения и дочерние задачи. Несколько
продолжений одной задачи. Планировщики заданий и пользовательский
интерфейс.
Тема «Параллелизм данных»
Класс Parallel. Parallel.Invoke. Parallel.For. Parallel.FoReach.
Тема « Parallel LINQ (PLINQ)»
Описание LINQ. Примеры LINQ – запросов. Работа с простыми
массивами данных. Работа с массивами и коллекциями классов.
Введение в PLINQ. Метод AsParallel. Пример использования PLINQ
запроса.
Перечесление
ParallelExecutionMode.
Метод
WithDegreeOfParallelism. Метод AsOrdered. Метод Range. Метод Repeat.
Метод AsUnordered. Метод AsSequential. Метод WithMergeOptions.
Метод ForAll.
Тема «Параллельные коллекции»
Классы
параллельных
коллекций.
Интерфейс
IProducerConsumerCollection<T>. Пример использования обычной
коллекции с применением параллелизма.
SpinLock;. SpinWait. Параллельные коллекции. ConcurrentQueue.
ConcurrentStack. ConcurrentBag. ConcurrentDictionary. BlockingCollection.
Создание экземпляра класса BlockingCollection. Создание поставщика.
Создание потребителя.
Тема «Отладка приложений в Visual Studio»
Отладка приложения в Visual Studio 2010. Установка точки
останова. Запуск отладчика. Пошаговое выполнение программы. Окно
Autos. Окно Locals.
Введение
в
Concurrency
Visualizer.
Представление
использования
центрального
процессора
(CPU
Utilization).
Представление потоков (Threads). Представление Cores. Секция отчетов.
Лабораторные занятия
Модуль 1 «Введение в параллельное программирование»
Разработка приложения «ParallelForeachApplication»
9-18
10
10
Модуль 2 «Параллелизм задач, данных, PLINQ-запрос»
ПГ
9-10
2
2
Тема «Параллелизм задач»
Разработка приложения «BackgroundWorkerApplication»
Разработка приложения «ParallelStackApplication»
Разработка приложения «ParralelTaskApllication»
ПГ
11-12
2
2
Тема «Параллелизм данных»
Разработка приложения «MultithreadingWinFormApplication»
ПГ
13-14
2
2
Тема « Parallel LINQ (PLINQ)»
Разработка приложения «ThreadsSilverlightApplication»
Разработка приложения «PLINQApplicaions»
ПГ
15-16
2
2
Тема «Параллельные коллекции»
Разработка приложения «BlockingCollectionApplication»
Разработка приложения «ConcurrentQueueApplication»
ПГ
17-18
2
2
Тема «Отладка приложений в Visual Studio»
Разработка приложения «WindowsDebugApplication»
Разработка приложения «VisualizerConsoleApplication»
ПГ
10,
ПК11
ПК10,
ПК11
ПК10,
ПК11
ПК10,
ПК11
ПК10,
ПК11
ПК10,
ПК11
ПК10,
ПК11
6
2
2
2
4
2
Лекции
Тема «Параллельное программирование в .NET Framework 4.0»
Определение,
назначение
параллельного
программирования.
Многоядерные вычисления. Множественные потоки команд/данных.
Ускорение. Закон Амдала. Закон Густафсона-Барсиса. Введение в
параллельное программирование .NET Framework 4. Библиотека PFX.
Компоненты библиотеки PFX. Библиотека параллелизма задач и
данных (TPL).
Тема «Многопоточность в .NET Framework»
Определение многопоточности. Основы многопоточной обработки;
Класс Thread; создание вторичных потоков. Назначение приоритета
потока. Управление потоками. Пул потоков CLR.
Тема «Синхронизация потоков»
Оператор lock. Классы синхронизации в .NET Framework; Interlocked.
Класс Monitor. Методы класса Monitor: Wait, Pulse и PulseAll. Класс
Mutex. Класс Semaphore.Класс Barrier. Класс ReaderWriterLockSlim.
События синхронизации потоков.
Лабораторные занятия
Тема «Параллельное программирование в .NET Framework 4.0»
Разработка приложения «SImpleMultithreadingApplication»
Реализуемые
компетенции
Вид занятия, модуль, тема и краткое содержание
Методы
в том числе в
интерактивной
форме, час.
Кол. час
Неделя
Аудиторные занятия (лекции, лабораторные, практические, семинарские) - заочная форма
обучения, срок подготовки 5 лет
П, Д,
Э, ПБ
ПК-2,
ПК-6,
ПК-9
П, Д,
Э, ПБ
ПК-2,
ПК-9
П, Д,
Э, ПБ
ПК-2,
ПК-6
ПГ
ПК10,
ПК11
Тема «Многопоточность в .NET Framework»
Разработка приложения «SimpleMultitaskingApplication»
2
ПГ
ПК10,
ПК11
4
2
2
4
Лекции
Тема «Параллельное программирование в .NET Framework 4.0»
Определение,
назначение
параллельного
программирования.
Многоядерные вычисления. Множественные потоки команд/данных.
Ускорение. Закон Амдала. Закон Густафсона-Барсиса. Введение в
параллельное программирование .NET Framework 4. Библиотека PFX.
Компоненты библиотеки PFX. Библиотека параллелизма задач и
данных (TPL).
Тема «Многопоточность в .NET Framework»
Определение многопоточности. Основы многопоточной обработки;
Класс Thread; создание вторичных потоков. Назначение приоритета
потока. Управление потоками. Пул потоков CLR.
Лабораторные занятия
Тема «Параллельное программирование в .NET Framework 4.0»
Разработка приложения «SImpleMultithreadingApplication»
Тема «Многопоточность в .NET Framework»
Разработка приложения «SimpleMultitaskingApplication»
2
2
Реализуемые
компетенции
Вид занятия, модуль, тема и краткое содержание
Методы
в том числе в
интерактивной
форме, час.
Кол. час
Неделя
Аудиторные занятия (лекции, лабораторные, практические, семинарские) - заочная форма
обучения, срок подготовки 3 года 6 месяцев (в)
П, Д,
Э, ПБ
ПК-2,
ПК-6,
ПК-9
П, Д,
Э, ПБ
ПК-2,
ПК-9
П, Д,
Э, ПБ
ПК-2,
ПК-6
ПГ
ПК10,
ПК11
4
2
2
4
Лекции
Тема «Параллельное программирование в .NET Framework 4.0»
Определение,
назначение
параллельного
программирования.
Многоядерные вычисления. Множественные потоки команд/данных.
Ускорение. Закон Амдала. Закон Густафсона-Барсиса. Введение в
параллельное программирование .NET Framework 4. Библиотека PFX.
Компоненты библиотеки PFX. Библиотека параллелизма задач и
данных (TPL).
Тема «Многопоточность в .NET Framework»
Определение многопоточности. Основы многопоточной обработки;
Класс Thread; создание вторичных потоков. Назначение приоритета
потока. Управление потоками. Пул потоков CLR.
Лабораторные занятия
Реализуемые
компетенции
Вид занятия, модуль, тема и краткое содержание
Методы
в том числе в
интерактивной
форме, час.
Кол. час
Неделя
Аудиторные занятия (лекции, лабораторные, практические, семинарские) - заочная форма
обучения, срок подготовки 3 года 6 месяцев (с)
П, Д,
Э, ПБ
ПК-2,
ПК-6,
ПК-9
П, Д,
Э, ПБ
ПК-2,
ПК-9
П, Д,
Э, ПБ
ПК-2,
ПК-6
2
2
Тема «Параллельное программирование в .NET Framework 4.0»
Разработка приложения «SImpleMultithreadingApplication»
Тема «Многопоточность в .NET Framework»
Разработка приложения «SimpleMultitaskingApplication»
ПГ
Самостоятельная работа обучающегося – очная форма обучения
Кол. час
4-15
20
1-
40
17
Темы, разделы, вынесенные на самостоятельную подготовку, вопросы к практическим и
лабораторным занятиям; тематика рефератной работы; контрольные, рекомендации по
использованию литературы и ЭВМ и др.
Компет
енции
Неделя
2.2.
Самостоятельное изучение отдельных тем курса:
Численное интегрирование с использованием функций MPI.
Параллельные программы в среде OpenMP.
Агрегирование данных для операций передачи.
Параллельные алгоритмы на массивах.
ПК-2,
ПК-6,
ПК-9,
ПК10
Тематика заданий для индивидуальной работы:
- Написать программу, реализующую умножение матриц: линейное, блочное разбиение
матриц.
- Написать программу, реализующую алгоритм Фокса и Кеннона.
- Написать программу для решения систем линейных уравнений.
- Написать программу, реализующую алгоритмы параллельной сортировки.
- Написать программу для обработки графов: построение минимального охватывающего
дерева, поиск кратчайших путей
ПК-2,
ПК-6,
ПК-9,
ПК10,
ПК11
Предусмотреть обработку исключений, работу с памятью.
Применять функции и
переменные окружения для выполнения принципа параллельности.
118
ПК10,
ПК11
12
Усвоение текущего учебного материала
ПК-2,
ПК-6,
ПК-9,
ПК10,
ПК11
4
4
4
4
4
4
4
4
лабораторным занятиям; тематика рефератной работы; контрольные, рекомендации по
использованию литературы и ЭВМ и др.
Самостоятельное изучение отдельных тем курса:
Введение в асинхронные задачи. Использование класса Task. Класс TaskFactory.
Определение параллелизма задач. Создание и запуск задачи. Создание вложенных
задач. Ожидание задач. Обработка ошибок в задачах. Продолжения и Task <TResult>.
Планировщики заданий и пользовательский интерфейс.
Параллелизм данных. Класс Parallel. Parallel.Invoke. Parallel.For. Parallel.FoReach.
Parallel LINQ (PLINQ). Примеры LINQ – запросов. Работа с простыми массивами
данных. Работа с массивами и коллекциями классов. Введение в PLINQ. Метод AsParallel.
Пример использования PLINQ запроса.
PLINQ. Перечесление ParallelExecutionMode. Метод WithDegreeOfParallelism. Метод
AsOrdered. Метод Range. Метод Repeat. Метод AsUnordered. Метод AsSequential. Метод
WithMergeOptions. Метод ForAll.
Параллельные коллекции. Классы параллельных коллекций. Интерфейс
IProducerConsumerCollection<T>.
Параллельные коллекции. ConcurrentQueue. ConcurrentStack. ConcurrentBag.
ConcurrentDictionary. BlockingCollection. Создание экземпляра класса BlockingCollection.
Создание поставщика. Создание потребителя.
Отладка приложения в Visual Studio 2010. Установка точки останова. Запуск
отладчика. Пошаговое выполнение программы. Окно Autos. Окно Locals
Введение в Concurrency Visualizer. Представление использования центрального
енции
Темы, разделы, вынесенные на самостоятельную подготовку, вопросы к практическим и
Компет
Кол. час
Неделя
Самостоятельная работа обучающегося – заочная форма обучения, срок обучения 5 лет
ПК-2,
ПК-6,
ПК-9,
ПК10
4
4
4
40
процессора (CPU Utilization). Представление потоков (Threads). Представление Cores. Секция
отчетов.
Численное интегрирование с использованием функций MPI.
Параллельные программы в среде OpenMP.
Тематика заданий для индивидуальной работы:
- Написать программу, реализующую умножение матриц: линейное, блочное разбиение
матриц.
- Написать программу, реализующую алгоритм Фокса и Кеннона.
- Написать программу для решения систем линейных уравнений.
- Написать программу, реализующую алгоритмы параллельной сортировки.
- Написать программу для обработки графов: построение минимального охватывающего
дерева, поиск кратчайших путей
ПК-2,
ПК-6,
ПК-9,
ПК10,
ПК11
Предусмотреть обработку исключений, работу с памятью.
Применять функции и
переменные окружения для выполнения принципа параллельности.
10
Усвоение текущего учебного материала
ПК-2,
ПК-6,
ПК-9,
ПК10,
ПК11
2
4
4
4
4
4
4
4
4
4
4
4
40
лабораторным занятиям; тематика рефератной работы; контрольные, рекомендации по
использованию литературы и ЭВМ и др.
Самостоятельное изучение отдельных тем курса:
Оператор lock. Классы синхронизации в .NET Framework; Interlocked. Класс Monitor.
Методы класса Monitor.
Введение в асинхронные задачи. Использование класса Task. Класс TaskFactory.
Определение параллелизма задач. Создание и запуск задачи. Создание вложенных
задач. Ожидание задач. Обработка ошибок в задачах. Продолжения и Task <TResult>.
Планировщики заданий и пользовательский интерфейс.
Параллелизм данных. Класс Parallel. Parallel.Invoke. Parallel.For. Parallel.FoReach.
Parallel LINQ (PLINQ). Примеры LINQ – запросов. Работа с простыми массивами
данных. Работа с массивами и коллекциями классов. Введение в PLINQ. Метод AsParallel.
Пример использования PLINQ запроса.
PLINQ. Перечесление ParallelExecutionMode. Метод WithDegreeOfParallelism. Метод
AsOrdered. Метод Range. Метод Repeat. Метод AsUnordered. Метод AsSequential. Метод
WithMergeOptions. Метод ForAll.
Параллельные коллекции. Классы параллельных коллекций. Интерфейс
IProducerConsumerCollection<T>.
Параллельные коллекции. ConcurrentQueue. ConcurrentStack. ConcurrentBag.
ConcurrentDictionary. BlockingCollection. Создание экземпляра класса BlockingCollection.
Создание поставщика. Создание потребителя.
Отладка приложения в Visual Studio 2010. Установка точки останова. Запуск
отладчика. Пошаговое выполнение программы. Окно Autos. Окно Locals
Введение в Concurrency Visualizer. Представление использования центрального
процессора (CPU Utilization). Представление потоков (Threads). Представление Cores. Секция
отчетов.
Численное интегрирование с использованием функций MPI.
Параллельные программы в среде OpenMP.
Тематика заданий для индивидуальной работы:
- Написать программу, реализующую умножение матриц: линейное, блочное разбиение
матриц.
- Написать программу, реализующую алгоритм Фокса и Кеннона.
- Написать программу для решения систем линейных уравнений.
енции
Темы, разделы, вынесенные на самостоятельную подготовку, вопросы к практическим и
Компет
Кол. час
Неделя
Самостоятельная работа обучающегося – заочная форма обучения, срок обучения 3 года 6
месяцев (в)
ПК-2,
ПК-6,
ПК-9,
ПК10
ПК-2,
ПК-6,
ПК-9,
ПК10,
ПК11
- Написать программу, реализующую алгоритмы параллельной сортировки.
- Написать программу для обработки графов: построение минимального охватывающего
дерева, поиск кратчайших путей
Предусмотреть обработку исключений, работу с памятью.
Применять функции и
переменные окружения для выполнения принципа параллельности.
10
Усвоение текущего учебного материала
ПК-2,
ПК-6,
ПК-9,
ПК10,
ПК11
2
4
4
4
4
4
4
4
4
4
4
4
40
10
лабораторным занятиям; тематика рефератной работы; контрольные, рекомендации по
использованию литературы и ЭВМ и др.
енции
Темы, разделы, вынесенные на самостоятельную подготовку, вопросы к практическим и
Компет
Кол. час
Неделя
Самостоятельная работа обучающегося – заочная форма обучения, срок обучения 3 года 6
месяцев (с)
Самостоятельное изучение отдельных тем курса:
Оператор lock. Классы синхронизации в .NET Framework; Interlocked. Класс Monitor.
Методы класса Monitor.
Введение в асинхронные задачи. Использование класса Task. Класс TaskFactory.
Определение параллелизма задач. Создание и запуск задачи. Создание вложенных
задач. Ожидание задач. Обработка ошибок в задачах. Продолжения и Task <TResult>.
Планировщики заданий и пользовательский интерфейс.
Параллелизм данных. Класс Parallel. Parallel.Invoke. Parallel.For. Parallel.FoReach.
Parallel LINQ (PLINQ). Примеры LINQ – запросов. Работа с простыми массивами
данных. Работа с массивами и коллекциями классов. Введение в PLINQ. Метод AsParallel.
Пример использования PLINQ запроса.
PLINQ. Перечесление ParallelExecutionMode. Метод WithDegreeOfParallelism. Метод
AsOrdered. Метод Range. Метод Repeat. Метод AsUnordered. Метод AsSequential. Метод
WithMergeOptions. Метод ForAll.
Параллельные коллекции. Классы параллельных коллекций. Интерфейс
IProducerConsumerCollection<T>.
Параллельные коллекции. ConcurrentQueue. ConcurrentStack. ConcurrentBag.
ConcurrentDictionary. BlockingCollection. Создание экземпляра класса BlockingCollection.
Создание поставщика. Создание потребителя.
Отладка приложения в Visual Studio 2010. Установка точки останова. Запуск
отладчика. Пошаговое выполнение программы. Окно Autos. Окно Locals
Введение в Concurrency Visualizer. Представление использования центрального
процессора (CPU Utilization). Представление потоков (Threads). Представление Cores. Секция
отчетов.
Численное интегрирование с использованием функций MPI.
Параллельные программы в среде OpenMP.
ПК-2,
ПК-6,
ПК-9,
ПК10
Тематика заданий для индивидуальной работы:
- Написать программу, реализующую умножение матриц: линейное, блочное разбиение
матриц.
- Написать программу, реализующую алгоритм Фокса и Кеннона.
- Написать программу для решения систем линейных уравнений.
- Написать программу, реализующую алгоритмы параллельной сортировки.
- Написать программу для обработки графов: построение минимального охватывающего
дерева, поиск кратчайших путей
Предусмотреть обработку исключений, работу с памятью.
Применять функции и
переменные окружения для выполнения принципа параллельности.
ПК-2,
ПК-6,
ПК-9,
ПК10,
ПК11
Усвоение текущего учебного материала
ПК-2,
ПК-6,
ПК-9,
ПК10,
ПК11
2.3.
Интерактивные технологии и инновационные методы, используемые в образовательном
процессе
№
Наименование основных форм
1.
Компьютерные симуляции
2.
Разбор конкретных ситуаций
3.
Результаты
работы
исследовательских групп
студенческих
Краткое
описание
и
примеры,
использования в темах и разделах, место
проведения
Все практические работы выполняются в
компьютерных классах университета
Разработка
параллельного
кода
на
конкретных примерах
Предоставление отчетов о проделанной
работе группами обучающихся (после
изучения Модуля 2 «Параллелизм задач,
данных, PLINQ-запрос»)
Часы
8
8
2
3. Средства обучения
3.1. Информационно-методические
№
Перечень основной учебной литературы и дополнительной литературы, методических
разработок; с указанием наличия в библиотеке
Основная учебная литература:
1.
Tutorial on MPI: The Message-Passing Interface William Gropp Mathematics and Computer Science
Division Argonne National Laboratory Argonne, IL 60439 www-unix.mcs.anl.gov/mpi/tutorial.
2.
Афанасьев К.Е., Домрачеев В.Г., Ретинская И.В., Скуратов А.К., Стуколов С.В.
Многопроцессорные системы: построение, развитие, обучение: учебно-справочное издание под ред.
Тихонова А.Н. М.: КУДИЦ-ОБРАЗ, 2005. - 224 с.
3.
Афанасьев К.Е., Стуколов С.В. Многопроцессорные вычислительные системы и параллельное
программирование: учебное пособие. Кемеровский госуниверситет. - Кемерово: Кузбассвузиздат,
2003. 233с.
4.
Букатов А.А., Дацюк В.Н., Жегуло А.И. Программирование многопроцессорных
вычислительных систем. - Ростов-на-Дону. Издательство ООО «ЦВВР», 2003. - 208 с.
(http://rsusu1.rnd.runnet.ru/tutor/method/index.html).
5.
Воеводин В.В. Вычислительная математика и структура алгоритмов: Учебник. – М.: Изд-во
МГУ, 2010.
6.
Гергель В.П. Высокопроизводительные вычисления для многопроцессорных многоядерных
систем: Учебник – М.: Изд-во МГУ, 2010.
7.
Линев А.В., Боголепов Д.К., Бастраков С.И. Технологии параллельного программирования для
процессоров новых архитектур: Учебник – Учебник – М.: Изд-во МГУ, 2010.
8.
Немнюгин С.А., Стесик О.Л. Параллельное программирование для многопроцессорных
вычислительных систем. – СПб.: БХВ-Петербург, 2002. - 400с.
9.
Ортега Дж. Введение в параллельные и векторные методы решения линейных систем: Пер. с
англ. М.: Мир, 1991. 367с.
10.
Старченко А.В., Данилкин Е.А., и др. Практикум по методам параллельных вычислений:
Учебник. – М.: Изд-во МГУ, 2010.
11.
Эндрюс Г.Р. Основы многопоточного, параллельного программирования/ Пер. с англ. М.:
Издательский дом “Вильямс”, 2003. - 512с.
Дополнительная литература:
1.
Foster I. Designing and Building Parallel Programs. - Addison Wesley, 1994. [Электронный ресурс]:
[сайт]. URL: http://www.mcs.anl.gov/dbpp
2.
Introduction to Parallel Computing (Teaching Course) [Электронный ресурс]: [сайт]. URL:
http://www.ece.nwu.edu/~choudhar/C58.
3.
Антонов А.С. Параллельное программирование с использованием технологииOpenMP: Учебн.
пособие. – М.: Изд-во МГУ, 2007.[Электронный ресурс]:[сайт].URL:
http://parallel.ru/info/parallel/openmp.
4.
Антонов А.С. Параллельное программирование с использованием технологии MPI: Учебн.
Пособие. – М.: Изд-во МГУ, 2003 [Электронный ресурс]: [сайт].
5.
URL:http://parallel.ru/info/parallel/antonov
6.
Антонов А.С. Параллельное программирование с использованием технологии MPI: Учебное
пособие. // http://rsusu1.rnd.runnet.ru/tutor/antonov/
7.
Афанасьев К.Е., Стуколов С.В. КМГЭ для решения плоских задач гидродинамики и его
реализация на параллельных компьютерах: Учебное пособие / Кемерово: КемГУ, 2001. 208 с.
8.
Бахвалов Н.С. Численные методы. М.: Наука, 1975.
5
5
1
5
5
1
1
1
1
1
1
1
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Березин И.С. Методы вычислений / Березин И.С., Жидков Н.П. М.: Физматгиз, 1966. - Т.1.
Богданов А., Мареев В., Станнова Е., Корхов В. Архитектуры и топологии многопроцессорных
вычислительных систем // электронный учебник http://www.informika.ru/text/teach/topolog/index.htm
Валях Е. Последовательно-параллельные вычисления / Пер. с англ. М.: Мир, 1985. - 456с.
Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. – СПб.:БХВ-Петербург, 2002.
Гергель В.П. Введение в методы параллельного программирования – [Электронный ресурс]:
[сайт].URL:http://www.intuit.ru/department/calculate/inparallprog/.
Гергель В.П. Теория и практика параллельных вычислений. – [Интернет-ресурс] URL:
http://intuit.ru/department/calculate/paralltp/.
Голуб Дж., Ван Лоун Ч. Матричные вычисления: Пер. с англ. – М.: Мир, 1999. - 548 с.
Информационно-аналитические материалы по параллельным вычислениям [Электронный
ресурс]: [сайт]. URL: http://www.parallel.ru.
Информационные материалы рабочей группы IEEE по кластерным вычислениям [Электронный
ресурс]: [сайт]. URL: http://www.ieeetfcc.org.
Информационные материалы Центра компьютерного моделирования Нижегородского
университета [Электронный ресурс]: [сайт]. URL: http://www.software.unn.ac.ru/ccam.
Корнеев В.В. Параллельные вычислительные системы. М: ”Нолидж”, 1999. 320 с.
Материалы информационно-аналитического центра НИВЦ МГУ – www.parallel.ru
Старченко А.В. Параллельные вычисления на многопроцессорных вычислительных системах /
Старченко А.В., Есаулов А.О. - Томск: ТГУ, 2002. - 56 с.
Таненбаум Э. Архитектура компьютера // СПб, Изд-во «Питер», 2002.
Хокни Р., Джессхоуп К. Параллельные ЭВМ. Архитектура, программирование, алгоритмы. –
М.: Радио и связь, 1986.
1
1
1
1
1
1
3.2. Материально-технические
№ ауд.
Компьютерн
ые классы
Основное
оборудование,
стенды,
макеты,
компьютерная техника, наглядные пособия и
другие
дидактические
материалы,
обеспечивающие проведение лабораторных и
практических занятий, научно-исследовательской
работы обучающихся с указанием наличия
Мультимедийный компьютер, локальная сеть,
мультимедиа интерактивное оборудование
Телевизионн
ые аудитории
Компьютер, телевизионная или проекционная
техника
Основное
назначение
(опытное,
обучающее, контролирующее) и краткая
характеристика
использования
при
изучении
явлений
и
процессов,
выполнении расчетов.
Назначение
опытное,
обучающее.
Применяется для создания параллельных
алгоритмов
Назначение обучающее. Применяется
для демонстрации презентаций
4. Текущий, промежуточный контроль знаний обучающихся
№
1.
Тесты (демонстрационный вариант), темы курсовых работ/проектов, вопросы и задания для
текущего контроля, для подготовки к зачету, экзамену
Текущий контроль успеваемости
По Модулю 1 «Введение в параллельное программирование»:
Контрольный письменный опрос по следующим вопросам:
Вариант 1
Теория:
1. Дайте определение параллельного программирования.
2. Опишите пул потоков CLR.
Задачи:
1.
Напишите программный код, реализующий класс Thread.
2.
Приведите фрагмент кода для класса Monitor, реализуйте методы Wait.
3.
Напишите программу сортировки массива с использованием принципа параллелизма.
Вариант 2
1. Опишите библиотеку параллелизма задач и данных (TPL).
2. Дайте определение многопоточности.
Задачи:
1. Напишите программный код, реализующий класс Thread.
2. Приведите фрагмент кода для класса Monitor, реализуйте методы Pulse и PulseAll.
3. Напишите программу сортировки массива с использованием принципа параллелизма.
По Модулю 2 «Параллелизм задач, данных, PLINQ-запрос»:
Контрольный письменный опрос по следующим вопросам:
Вариант 1
1. Дайте определение параллелизма задач.
2. Опишите возможности создания классов параллельных коллекций.
Задачи:
1. Реализуйте программно класс Parallel. Parallel.For.
2. Создайте экземпляр класса BlockingCollection.
Вариант 2
1. Опишите продолжения и дочерние задачи.
2. Дайте определение планировщику заданий и пользовательскому интерфейсу.
Задачи:
1. Приведите пример PLINQ-запроса.
3. Напишите программный код перечисления ParallelExecutionMode.. Метод AsOrdered. Метод
Range. Метод Repeat.
2.
Промежуточная аттестация
Вопросы к зачету:
Теоретические вопросы:
1. Определение, назначение параллельного программирования. Многоядерные вычисления.
2. Множественные потоки команд/данных. Ускорение.
3. Закон Амдала. Закон Густафсона-Барсиса.
4. Библиотека PFX. Компоненты библиотеки PFX.
5. Библиотека параллелизма задач и данных (TPL).
6. Основы многопоточной обработки. Создание вторичных потоков. Назначение приоритета потока.
Управление потоками. Пул потоков CLR.
7. Оператор lock. Классы синхронизации в .NET Framework; Interlocked.
8. Класс Monitor. Класс Mutex. Класс Semaphore.
9. Класс Barrier. Класс ReaderWriterLockSlim.
10. Определение параллелизма задач. Создание и запуск задачи. Создание вложенных задач.
11. Ожидание задач. Обработка ошибок в задачах.
12. Отмена выполнения заданий. Продолжения. Продолжения и Task <TResult>. Продолжения и
дочерние задачи. Несколько продолжений одной задачи.
13. Планировщики заданий и пользовательский интерфейс.
14. Класс Parallel. Метод AsParallel.
15. Классы параллельных коллекций. Интерфейс IProducerConsumerCollection<T>.
16. Создание экземпляра класса BlockingCollection.
17. Отладка приложения в Visual Studio 2010. Установка точки останова. Запуск отладчика. Пошаговое
выполнение программы.
18. Окно Autos. Окно Locals.
19. Concurrency Visualizer. Представление использования центрального процессора. Представление
потоков (Threads).
20. Представление Cores. Секция отчетов.
Задачи:
1. Напишите программный код работы с классом Thread.
2. Реализуйте в программе методы класса Monitor: Wait, Pulse и PulseAll.
3. Приведите примеры использования классов Mutex и Semaphore.
4. Напишите программный код работы с классом Task, TaskFactory.
5. Приведите примеры использования класса Parallel.Invoke.
6. Напишите программный код работы с классом Parallel.For.
7. Приведите примеры использования класса Parallel.FoReach.
8. Метод AsUnordered. Метод AsSequential. Метод WithMergeOptions. Метод ForAll.
9. Реализуйте в программе методы AsOrdered, Range, Repeat.
10. Используя перечисление ParallelExecutionMode и метод WithDegreeOfParallelism, напишите
программу.
11. Приведите пример программы сортировки массива с использованием принципа параллелизма.
12. Напишите программу с обычной коллекцией с применением параллелизма.
13. Реализуйте в программе PLINQ-запрос.
14. Приведите пример работы программы с простыми массивами данных.
15. Реализуйте программный код для обработки массивов и коллекций классов через принцип
параллелизма.
16. Напишите программу по созданию поставщика.
17. Напишите программу по созданию потребителя.
18. Напишите
программный
код
работы
с
параллельной
коллекцией,
используя
ConcurrentQueue,ConcurrentStack, ConcurrentBag.
19. Напишите программный код работы с параллельной коллекцией, используя ConcurrentDictionary.
BlockingCollection.
20. Реализуйте программно интерфейс IProducerConsumerCollection<T>.
5. Дополнения и изменения в рабочей программе на учебный год
_____/______
Следующие записи относятся к п.п.
Автор
Зав. Кафедрой
Принято УМУ__________________________________ Дата:________________
Скачать