МИНОБРНАУКИ РОССИИ
федеральное государственное бюджетное образовательное учреждение высшего образования
«Алтайский государственный университет»

Методы параллельных вычислений

рабочая программа дисциплины
Закреплена за кафедройКафедра дифференциальных уравнений
Направление подготовки01.03.02. Прикладная математика и информатика
ПрофильМатематическое и компьютерное моделирование в природных и индустриальных системах
Форма обученияОчная
Общая трудоемкость4 ЗЕТ
Учебный план01_03_02_Прикладная математика и информатика_МКМПиИС-2022
Часов по учебному плану 144
в том числе:
аудиторные занятия 56
самостоятельная работа 88
Виды контроля по семестрам
зачеты: 8

Распределение часов по семестрам

Курс (семестр) 4 (8) Итого
Недель 12
Вид занятий УПРПДУПРПД
Лекции 24 24 24 24
Практические 32 32 32 32
Сам. работа 88 88 88 88
Итого 144 144 144 144

Программу составил(и):

Рецензент(ы):

Рабочая программа дисциплины
Методы параллельных вычислений

разработана в соответствии с ФГОС:
Федеральный государственный образовательный стандарт высшего образования - бакалавриат по направлению подготовки 01.03.02 Прикладная математика и информатика (приказ Минобрнауки России от 10.01.2018 г. № 9)

составлена на основании учебного плана:
01.03.02 Прикладная математика и информатика
утвержденного учёным советом вуза от 29.10.2021 протокол № 1/1.

Рабочая программа одобрена на заседании кафедры
Кафедра дифференциальных уравнений

Протокол от 29.06.2022 г. № 11
Срок действия программы: 2022-2023 уч. г.

Заведующий кафедрой
Папин Александр Алексеевич


Визирование РПД для исполнения в очередном учебном году

Рабочая программа пересмотрена, обсуждена и одобрена для
исполнения в 2023-2024 учебном году на заседании кафедры

Кафедра дифференциальных уравнений

Протокол от 29.06.2022 г. № 11
Заведующий кафедрой Папин Александр Алексеевич


1. Цели освоения дисциплины

1.1.Формирование у студентов практических навыков разработки параллельных программ и многопоточных приложений с использования средств операционных систем Windows и объектно-ориентированного языка программирования С++;
Получение практических навыков создания параллельных процессов и работы с ними;
Получение практических навыков программной реализации многопоточных приложений;
Получение практических навыков программной реализации методов синхронизации параллельных процессов и потоков;
Получение практических навыков построения и использования сетей Петри.

2. Место дисциплины в структуре ООП

Цикл (раздел) ООП: Б1.В.01

3. Компетенции обучающегося, формируемые в результате освоения дисциплины

ПК-3 Способен разрабатывать и применять математические методы, системное и прикладное программное обеспечение, автоматизированные систем вычислительных комплексов, сервисы, операционные системы и распределенные базы данных для решения задач производственно-технологический деятельности
В результате освоения дисциплины обучающийся должен
3.1.Знать:
3.1.1.Принципы построения архитектуры программного обеспечения (ПО) и виды архитектуры программного обеспечения
3.2.Уметь:
3.2.1.Разрабатывать многопоточные приложения
3.3.Иметь навыки и (или) опыт деятельности (владеть):
3.3.1.Навыками параллельного программирования

4. Структура и содержание дисциплины

Код занятия Наименование разделов и тем Вид занятия Семестр Часов Компетенции Литература
Раздел 1. Многопроцессорные вычислительные системы
1.1. Тема 1 Системы параллельной обработки данных и архитектура процессоров Виды вычислительных систем. Системы параллельной обработки данных. Конвейер и матрица. Классификация Флинна. Пути повышения производительности: законы Мура, Гроша, Амдала и гипотеза Минского. Архитектуры с сокращенным набором команд, со сверхдлинным командным словом. Векторные архитектуры. Многопроцессорные синхронные вычислительные системы. Конвейерные системы. Матричные системы. Систолические системы. Лекции 8 3 ПК-3 Л2.3, Л1.1, Л1.2, Л2.2
1.2. Тема 2 Параллельное выполнение процессов Понятие процесса. Создание параллельных процессов и работы с ними в операционной системе Windows средствами языка программирования С++. Использование объектов синхронизации для обмена данными между процессами. Лекции 8 3 ПК-3 Л2.1, Л1.1, Л1.2
1.3. Тема Программирование параллельных вычислительных процессов Программная реализация создания и работы двух параллельных процессов. Синхронизация работы параллельных процессов с помощью средств операционной системы Windows. Практические 8 9 ПК-3 Л1.4, Л2.2
1.4. Подготовка к практическим занятиям Сам. работа 8 6 ПК-3 Л2.1, Л1.2, Л2.2
1.5. Изучение теоретических разделов дисциплины Сам. работа 8 8 ПК-3 Л2.3, Л1.2
1.6. Выполнение, оформление и подготовка к защите лабораторной работы 1 Сам. работа 8 8 ПК-3 Л2.1, Л1.2
Раздел 2. Разработка многопоточных приложений
2.1. Тема 3 Загрузка и выполнение параллельных потоков Понятие потока. Средства языка программирования С++ для создания потоков и работы с ними. Создание многопоточных программ и применение семафоров в операционной системе Windows. Лекции 8 2 ПК-3 Л1.1, Л1.2
2.2. Тема 4 Разработка многопоточных программ Распараллеливание рекурсивных подпрограмм. Преобразование рекурсивных подпрограмм в многопоточные приложения. Многопоточный метод сдваивания. Лекции 8 2 ПК-3 Л2.1, Л1.1, Л1.2, Л1.3
2.3. Тема Методы распараллеливания рекурсивных подпрограмм Программная реализация создания параллельных потоков и работы с ними. Разработка параллельных программ с помощью многопоточного метода сдваивания и многопоточного метода перебора с возвратом. Практические 8 6 ПК-3 Л1.1, Л2.2
2.4. Подготовка к практическим занятиям Сам. работа 8 6 ПК-3 Л2.3, Л1.2, Л1.4
2.5. Изучение теоретических разделов дисциплины Сам. работа 8 8 ПК-3 Л1.4, Л2.2
2.6. Выполнение, оформление и подготовка к защите лабораторной работы 2 Сам. работа 8 8 ПК-3 Л2.3, Л1.4
Раздел 3. Классические задачи синхронизации
3.1. Тема 5 Семафоры и события Проблема взаимного исключения. Постановки классических задач синхронизации и методы их решения. Понятие семафора. Понятие события. Алгоритм Деккера для решения задач синхронизации. Алгоритм Петерсона для решения задач синхронизации. Применение семафоров для решения задачи сериализации. Разработка многопоточных приложений с использованием событий. Лекции 8 8 ПК-3 Л2.1, Л1.1, Л1.2, Л1.4, Л1.3, Л2.2
3.2. Тема Решения проблемы сериализации с помощью семафоров Разработка многопоточного приложения , в котором синхронизация работы потоков осуществляется с помощью семафоров. Практические 8 12 ПК-3 Л2.3, Л1.1, Л1.2
3.3. Подготовка к практическим занятиям Сам. работа 8 6 ПК-3 Л1.3, Л2.2
3.4. Изучение теоретических разделов дисциплины Сам. работа 8 6 ПК-3 Л2.1, Л1.2
3.5. Выполнение, оформление и подготовка к защите лабораторной работы 3 Сам. работа 8 10 ПК-3 Л1.4
Раздел 4. Моделирование параллельных вычислений
4.1. Тема 6 Сети Петри и их применение. Волновые системы Определение и примеры сетей Петри. Асинхронные системы переходов. Расслоенные критические секции. Задача о читателях и писателях. Задача о производителе и потребителе. Задача о философах и ситуация отталкивания. Использование сетей Петри и волновых систем для моделирования работы параллельных программ. Построение параллельных программ с помощью сетей Петри. Разработка класса канала на основе решения задачи о производителе и потребителе. Лекции 8 6 ПК-3 Л1.1, Л1.2, Л1.4, Л1.3
4.2. Тема Построение и программирование волновых систем с помощью сетей Петри Моделирование волновых систем с помощью сетей Петри. Программирование волновых систем. Использование классаканала, построенного на основе решения задачи о производителе и потребителе. Практические 8 5 ПК-3 Л1.1, Л1.4
4.3. Подготовка к практическим занятиям Сам. работа 8 6 ПК-3 Л2.1, Л1.1
4.4. Изучение теоретических разделов дисциплины Сам. работа 8 6 ПК-3 Л2.3, Л2.1, Л1.3
4.5. Выполнение, оформление и подготовка к защите лабораторной работы 4 Сам. работа 8 10 ПК-3 Л1.2, Л2.2

5. Фонд оценочных средств

5.1. Контрольные вопросы и задания для проведения текущего контроля и промежуточной аттестации по итогам освоения дисциплины
Лабораторная работа 1
«Программирование параллельных вычислительных процессов»
Задание. Разработать программу, запускающую параллельно работающие процессы. Первый процесс выводит графические объекты согласно варианту (прямоугольники) в левое окно, а второй выводит графические объекты согласно варианту (треугольники) в правое окно. Варианты заданий приведены в таблице 7.
Пояснение. Область вывода состоит из двух окон: верхнего и нижнего в нечетных вариантах или левого и правого в четных вариантах. Каждый процесс выводит в свое окно фигуры заданного вида, у которых случайно изменяются цвет, размеры и положение.
Например, в варианте 15, процессы выводят геометрические фигуры в верхнее и нижнее окна, поскольку 15 – нечетное число. Первый процесс выводит в верхнее окно закрашенные круги. Второй процесс выводит в нижнее окно отрезки, у которых изменяются координаты концов.
Таблица 7 – Варианты заданий
Прямоугольник Окружность Отрезок Закрашенный круг Закрашенный прямоугольник
Прямоугольник - 1 3 5 7
Окружность 2 - 9 11 13
Отрезок 4 6 - 15 17
Закрашенный круг 8 10 12 - 19
Закрашенный прямоугольник 14 16 18 20 -
Эллипс 21 22 23 24 25

Лабораторная работа 2
«Методы распараллеливания рекурсивных подпрограмм»
Задание . Разработать программу, решающую данную задачу с помощью рекурсивной функции. Преобразовать эту функцию и главную программу в многопоточную программу. Потоковые функции выполняются со
случайной задержкой.

Лабораторная работа 3
«Решения проблемы сериализации с помощью семафоров»
Задание. Разработать многопоточную программу для вычисления заданного логического выражения, состоящего из поразрядных операций, арифметического выражения или приближенного значения интеграла. Недостающие данные можно вводить с помощью генератора случайных чисел.
Программа должна запускать n потоков. Параллельные вычисления в потоках производятся с небольшими случайными задержками. Проверить результат вычисления с помощью подпрограммы, состоящей из одного цикла.

Лабораторная работа 4
«Построение и программирование волновых систем с помощью сетей Петри»
Задание. Разработать программу, которая, согласно варианту, загружает потоки, реализующие волновую систему. Привести сеть Петри этой волновой системы.
5.2. Темы письменных работ для проведения текущего контроля (эссе, рефераты, курсовые работы и др.)
Не предусматривается.
5.3. Фонд оценочных средств для проведения промежуточной аттестации
Защита лабораторных работ.
Приложения
Приложение 1.   ФОС МПВ.doc

6. Учебно-методическое и информационное обеспечение дисциплины

6.1. Рекомендуемая литература
6.1.1. Основная литература
Авторы Заглавие Издательство, год Эл. адрес
Л1.1 Богачев, К. Ю. Основы параллельного программирования : учебное пособие: учебное пособие Лаборатория знаний, 2020 https://znanium.com/catalog/ php?
Л1.2 Борзунов, С. В. Практикум по параллельному программированию: Учебное пособие БХВ-Петербург, 2017 https://znanium.com/catalog/ php?
Л1.3 Колдаев, В. Д Основы алгоритмизации и программирования: Учебное пособие ИД ФОРУМ: ИНФРА–М, 2015 www.znanium.com
Л1.4 Воеводин, В. В Параллельные вычисления: Учебное пособие БХВ-Петербург, 2015 https://znanium.com/catalog/ php?
6.1.2. Дополнительная литература
Авторы Заглавие Издательство, год Эл. адрес
Л2.1 Кэйт Грегори, Эйд Миллер C++ AMP: построение массивно параллельных программ с помощью Microsoft Visual C++: Учебное пособие Издательство "ДМК Пресс", 2013 e.lanbook.com
Л2.2 Батчер, П Семь моделей конкуренции и параллелизма за семь недель: Учебное пособие Раскрываем тайны потоков, 2015
Л2.3 Гома Х. UML. Проектирование систем реального времени, параллельных и распределенных приложений: Учебное пособие М.: ДМК Пресс, 2007 e.lanbook.com
6.2. Перечень ресурсов информационно-телекоммуникационной сети "Интернет"
6.3. Перечень программного обеспечения
Microsoft Imagine Premium;
OpenOffice;
Visual Studio Community 2017.Microsoft Office 2010 (Office 2010 Professional, № 4065231 от 08.12.2010), (бессрочно);
Microsoft Windows 7 (Windows 7 Professional, № 61834699 от 22.04.2013), (бессрочно);
Chrome (http://www.chromium.org/chromium-os/licenses), (бессрочно); 7-Zip (http://www.7-zip.org/license.txt), (бессрочно);
AcrobatReader (http://wwwimages.adobe.com/content/dam/Adobe/en/legal/servicetou/Acrobat_com_Additional_TOU-en_US-20140618_1200.pdf), (бессрочно);
ASTRA LINUX SPECIAL EDITION (https://astralinux.ru/products/astra-linux-special-edition/), (бессрочно);
LibreOffice (https://ru.libreoffice.org/), (бессрочно);
Веб-браузер Chromium (https://www.chromium.org/Home/), (бессрочно);
Антивирус Касперский (https://www.kaspersky.ru/), (до 23 июня 2024);
Архиватор Ark (https://apps.kde.org/ark/), (бессрочно);
Okular (https://okular.kde.org/ru/download/), (бессрочно);
Редактор изображений Gimp (https://www.gimp.org/), (бессрочно)
6.4. Перечень информационных справочных систем
Информационно-аналитический центр по параллельному программированию http://www.parallel.ru ;
Национальный открытый университет ИНТУИТ http://www.intuit.ru.

7. Материально-техническое обеспечение дисциплины

Аудитория Назначение Оборудование
107Л лаборатория информационных технологий - компьютерный класс - учебная аудитория для проведения занятий семинарского типа (лабораторных и(или) практических); проведения групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации Учебная мебель на 18 посадочных мест; компьютеры: марка HP, модель ProOne 400 - 18 единиц; проектор: марка SMART, модель UF70 - 1 единица; интерактивная доска: марка SMART Board модель SMB680 - 1 единица
203Л лаборатория информационных технологий - компьютерный класс - учебная аудитория для проведения занятий семинарского типа (лабораторных и(или) практических); проведения групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации Учебная мебель на 14 посадочных мест; компьютеры: марка ASUS модель i5-6500 - 14 единиц
Учебная аудитория для проведения занятий всех видов (дисциплинарной, междисциплинарной и модульной подготовки), групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации, курсового проекта (работы), проведения практики Стандартное оборудование (учебная мебель для обучающихся, рабочее место преподавателя, доска, мультимедийное оборудование стационарное или переносное)

8. Методические указания для обучающихся по освоению дисциплины

1. Для успешного освоения содержания дисциплины необходимо посещать лекции, принимать активное участие в работе на практическом занятии, а также выполнять задания, предлагаемые преподавателем для самостоятельного изучения.
2. Лекция.
-На лекцию приходите не опаздывая, так как это неэтично.
- На лекционных занятиях необходимо конспектировать изучаемый материал.
- Для систематизации лекционного материала, который будет полезен при подготовке к итоговому контролю знаний, записывайте на каждой лекции тему, вопросы для изучения, рекомендуемую литературу.
- В каждом вопросе выделяйте главное, обязательно запишите ключевые моменты (определение, факты, законы, правила и т.д.), подчеркните их.
- Если по содержанию материала возникают вопросы, не нужно выкрикивать, запишите их и задайте по окончании лекции или на семинарском занятии.
- Перед следующей лекцией обязательно прочитайте предыдущую, чтобы актуализировать знания и осознанно приступить к освоению нового содержания.
3.Практическое занятие – это форма работы, где студенты максимально активно участвуют в обсуждении темы.
- Для подготовки к практическому занятию необходимо взять план занятия (у преподавателя).
- Самостоятельную подготовку к занятию необходимо начинать с изучения понятийного аппарата темы. Рекомендуем использовать справочную литературу, учебники.
- Важно запомнить, что любой источник должен нести достоверную информацию, особенно это относится к Internet-ресурсам. При использовании Internet - ресурсов в процессе подготовки не нужно их автоматически «скачивать», они должны быть проанализированы. Не нужно «скачивать» готовые рефераты, так как их однообразие преподаватель сразу выявляет, кроме того, они могут быть сомнительного качества.
- В процессе изучения темы анализируйте несколько источников. Используйте научные специальные журналы.
- Полезным будет работа с электронными учебниками и учебными пособиями в Internet-библиотеках. Зарегистрируйтесь в них: университетская библиотека Онлайн (http://www.biblioclub.ru/) и электронно-библиотечная система «Лань» (http://e.lanbook.com/).
- При возникновении трудностей в процессе подготовки взаимодействуйте с преподавателем, консультируйтесь по самостоятельному изучению темы.
4. Самостоятельная работа.
- При изучении дисциплины не все вопросы рассматриваются на лекциях и практических занятиях, часть вопросов рекомендуется преподавателем для самостоятельного изучения.
- Поиск ответов на вопросы и выполнение заданий для самостоятельной работы позволит вам расширить и углубить свои знания по курсу, применить теоретические знания в решении задач практического содержания, закрепить изученное ранее.
- Эти задания следует выполнять не «наскоком», а постепенно, планомерно, следуя порядку изучения тем курса.
- При возникновении вопросов обратитесь к преподавателю в день консультаций на кафедру.
- Выполнив их, проанализируйте качество их выполнения. Это поможет вам развивать умения самоконтроля и оценочные компетенции.
5. Итоговый контроль.
- Для подготовки к зачету/экзамену возьмите перечень примерных вопросов у преподавателя.
- В списке вопросов выделите те, которые были рассмотрены на лекции, практических занятиях. Обратитесь к своим записям, выделите существенное. Для более детального изучения изучите рекомендуемую литературу.
- Если в списке вопросов есть те, которые не рассматривались на лекции, на практическом занятии, изучите их самостоятельно. Если есть сомнения, задайте вопросы на консультации перед экзаменом.
- Продумайте свой ответ на экзамене, его логику. Помните, что ваш ответ украсит ссылка на источник литературы, иллюстрация практики применения теоретического знания, а также уверенность и наличие авторской аргументированной позиции как будущего субъекта профессиональной деятельности.