Федеральное государственное бюджетное образовательное
учреждение высшего образования 
Московский государственный университет имени М.В. Ломоносова
Факультет вычислительной математики и кибернетики

УТВЕРЖДАЮ
декан факультета вычислительной математики и кибернетики
______________/И.А. Соколов /
«___» ________________20___г.

РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ
Наименование дисциплины:
Средства и системы параллельного программирования
Уровень высшего образования:
бакалавриат
Направление подготовки / специальность:
01.03.02 «Прикладная математика и информатика» (3++)
Направленность (профиль):
Системное программирование и компьютерные науки
Форма обучения:
очная

Москва 2023

Рабочая программа дисциплины (модуля) разработана в соответствии с самостоятельно установленным МГУ образовательным стандартом (ОС МГУ) для реализуемых основных профессиональных образовательных программ высшего образования по направлению подготовки 01.03.02, 01.04.02 "Прикладная математика и информатика" программы бакалавриата  Утвержден приказом МГУ от 30 августа 2019 года № 1041 (в редакции приказов МГУ от 11 сентября 2019 года № 1109, от 10 июня 2021 года № 609, от 7 октября 2021 года № 1048, от 21 декабря 2021 года № 1404, от 2 ноября 2022 года № 1299)  

1.	Дисциплина относится к вариативной  части ОПОП ВО 

2. Входные требования для освоения дисциплины (модуля): учащиеся должны владеть знаниями по алгоритмам и алгоритмическим языкам, основам архитектур компьютеров  в объеме, соответствующем программе первых двух лет  обучения, численным методам в объеме, соответствующем программе второго года обучения, основных образовательных программ бакалавриата по укрупненным группам направлений и специальностей 01.00.00 «Математика и механика», 02.00.00 «Компьютерные и информационные науки».

3. Результаты обучения по дисциплине (модулю), соотнесенные с требуемыми компетенциями выпускников.

•	ОПК-1.Б  Способность применять и адаптировать существующие математические и компьютерные методы для разработки и реализации алгоритмов решения актуальных задач в области фундаментальной и прикладной математики
•	СПК-ССПП-1Б. Способность применять в профессиональной деятельности современные средства разработки программного обеспечения и методы параллельной обработки данных, реализовывать отдельные этапы разработки системного и прикладного программного обеспечения, систем обработки и анализа данных
Планируемые результаты обучения по дисциплине (модулю):

Знать:
1.	базовые принципы организации параллельной обработки данных на уровне процессора;
2.	системы сбора аппаратных данных о производительности  процессоров;
3.	технологии параллельного программирования для систем с общей памятью Pthreads и OpenMP;
4.	методы построения параллельных программ с использованием технологии MPI;
5.	подходы к  оценке времени выполнения функций передачи данных для вычислительных систем с распределенной памятью;
6.	системы отладки эффективности параллельных программ; 
7.	основы разработки параллельных алгоритмов на примере матрично-векторных алгоритмов, методы оценки эффективности параллельных программ;
8.	технологии процесса разработки и отладки параллельных программ в рамках UNIX-подобных операционных систем.

Уметь:
1.	применять технологии параллельного программирования Pthreads, OpenMP и MPI для разработки параллельных программ; 
2.	разрабатывать и отлаживать параллельные программы;
3.	оценивать эффективность разрабатываемых параллельных программ. 

Владеть:
1.	навыками владения технологиями параллельного программирования;
2.	навыками разработки и отладки параллельных программ для многоядерных систем и высокопроизводительных многопроцессорных вычислительных систем.

4.Формат обучения: лекции проводятся с использованием компьютерных презентаций и презентационного оборудования, выполнение практических заданий проводится в режиме удаленного доступа суперкомпьютеры МГУ 

5. Объем дисциплины (модуля) составляет 4 з.е., в том числе 72 академических часа, отведенных на контактную работу обучающихся с преподавателем, 72 академических часов на самостоятельную работу обучающихся. 

6. Содержание дисциплины (модуля), структурированное по темам (разделам) с указанием отведенного на них количества академических часов и виды учебных занятий.
Наименование и краткое содержание разделов и тем дисциплины (модуля),

Форма промежуточной аттестации по дисциплине (модулю)	Всего
(часы)	В том числе	
		Контактная работа 
(работа во взаимодействии с преподавателем)
Виды контактной работы, часы	Самостоятель-ная работа обучающегося,
 часы 
	
		Занятия лекционного типа*	Занятия семинарского типа*	Всего		
1.	Введение в предмет.	6	2	2	4	2	
2.	Организация параллельной обработки данных на уровне процессора	12	4	4	8	4	
3.	Архитектура и программное обеспечение суперкомпьютеров МГУ	12	4	4	8	4	
4.	Средства разработки параллельных программ для систем с общей памятью	18	6	6	12	6	
5.	Технологии разработки параллельных программ для систем с распределенной памятью.	42	14	14	28	14	
6.	Базовые параллельные алгоритмы линейной алгебры	18	6	6	12	6	
7.	Модели параллельных вычислений	6	2	2	4	2	
8.	Итоговая аттестация	36	0	0	0	36	
Итого	144	36	36	72	72	

7. Фонд оценочных средств (ФОС) для оценивания результатов обучения по дисциплине (модулю)

7.1. Типовые контрольные задания или иные материалы для проведения текущего контроля успеваемости.

Итоговая оценка по курсу выставляется на основе трех компонент: оценки за теоретическую часть, оценка за выполнение лабораторных работ и оценки за выполнение контрольных заданий по курсу.
Оценка за выполненные задания выставляется на каждом занятии. Оценка за задание выставляется на основании представляемого в электронной форме отчета по заданию и сдачи задания непосредственно преподавателю на семинарском занятии. Задание выполняется в отведенные для самостоятельной работы часы. Сдача теоретической части курса может проводиться как в виде устного экзамена, так и с использованием системы «Сигма».

Вопросы к экзамену по курсу «Средства и системы параллельного программирования»
1.	Понятия: параллельная вычислительная модель, параллельная программа. Основные характеристики модели передачи сообщений.  Схема  и режимы выполнения операций передачи сообщений MPI.
2.	Основные функции передачи сообщений «точка-точка» MPI. Режимы реализации передачи сообщений. Оценка времени выполнения двухточечных операций. 
3.	Неблокирующие и отложенные операции передачи сообщений MPI. Назначение, примеры использования. Примеры тупиковых ситуаций, возникающих при передаче данных с использованием двухточечных операций. Методы ликвидации тупиковых ситуаций. 
4.	Коллективные операции MPI.  Назначение, особенности реализации. Примеры реализации пользовательских коллективных функций. 
5.	Производные типы данных MPI. Основной сценарий работы с производными типами данных. Конструкторы производных типов. Примеры использования.
6.	Понятие группы процессов MPI. Основные операции над группами процессов. Примеры использования.
7.	Виртуальные топологии MPI. Типы виртуальных топологий. Основные функции для работы с топологиями типа многомерных решеток.
8.	Графовые виртуальные топологии MPI. Особенности реализации в MPI-3. 
9.	 Параллельные алгоритмы матричного умножения. Блочные алгоритмы Фокса и Кеннона. Оценка эффективности алгоритма Кеннона.
10.	Параллельные алгоритмы матричного умножения: 3D и 2.5D алгоритмы. Схема алгоритмов, оценка эффективности.
11.	Организация параллельной работы с файлами в MPI. Понятия элементарного типа, файлового вида. Базовый алгоритм параллельного доступа к файлам. Основные функции для параллельной работы с файлами.  
12.	 Типы данных MPI: распределенный массив и подмассив. Назначение, примеры их использования для параллельной работы с файлами.  
13.	Проблемы синхронизации доступа параллельных процессов к файлам. Методы реализации. Примеры.
14.	Организация односторонних передач данных в MPI. Основные функции. Примеры использования.
15.	Способы синхронизации доступа к данным при использовании односторонних функций MPI. 
16.	Общая характеристика аппаратной архитектуры  Blue Gene/P. Расширения библиотеки MPI, учитывающие особенности Blue Gene/P.
17.	Параллельные научные библиотеки. Структура библиотеки BLAS. Назначение и основные функции библиотеки PBLACS. Примеры использования.
18.	 Методы организации параллельных вычислений с использованием библиотеки ScaLapack. Общая характеристика. Организация хранения данных. Основные функции. Примеры.
19.	Понятие PRAM модели параллельных вычислений. Типы PRAM- моделей. Примеры реализации параллельных алгоритмов с использованием PRAM- моделей.
Понятие LogP и BSP модели параллельных вычислений.

Задание . 
Тема.   Параллельные методы матричного умножения.

Постановка задачи.
Исследовать эффективность параллельных вычислений для задачи C=AB, 
где A – матрица mxn, B – матрица  nxq,  С – матрица mxq.
Значения m,n,q задаются в командной строке.
Вычислительные системы: Регата, Blue Gene/P, «Ломоносов».
Начальные значения матриц A и B задавать в программе таким образом, чтобы можно было проверить результат (вычисленные значения  матрицы С).
Тип данных: double
Параметры    m n q  передаются в командной строке.
Например:
mxm    1024 1024 1024 
Варианты, которые должны быть представлены в отчете:
Количество процессоров p :         1,  16,32,128
Размеры матриц (n*n):       1024х1024,    4096х4096,  8192х8192, 16384*16384,  и т.д. до максимально возможного по представлению в памяти матриц.  
Методы:   ленточный (построчное ленточное распределение матриц) Fox,  Cannon
Для каждого из методов должна быть построены 3 таблицы, значения элементов которых должны быть равны: время (таблица 1), ускорение (таблица 2), эффективность (таблица 3).
 Например: для Blue Gene/P
Таблица 1.  Алгоритм Фокса. Время работы.

	1	8	16	32	128	
 1024						
1024*4						
1024*8						
1024*16						

Формат отчета.

Отчет должен включать:
1. Краткое описание алгоритмов и полученных результатов.
В отчете необходимо представить графическое представление таблиц (Диаграммы или графики).
2. Исходные тексты программ
3. make файл или строка компиляции (описать в отчете)

ШКАЛА И КРИТЕРИИ ОЦЕНИВАНИЯ результатов обучения (РО) по дисциплине (модулю)  
	
Оценка
РО и
соответствующие виды оценочных средств 	2	3	4	5	
Знания
экзамен	Отсутствие знаний	Фрагментарные знания	Общие, но не структурированные знания	Сформированные систематические знания	
Умения
экзамен	Отсутствие умений	В целом успешное, но не систематическое умение	В целом успешное, но содержащее отдельные пробелы умение (допускает неточности непринципиального характера)	Успешное и систематическое умение	
Навыки 
(владения, опыт деятельности)
Зачет 	Отсутствие навыков (владений, опыта)	Наличие отдельных навыков (наличие фрагментарного опыта)	В целом, сформированные навыки (владения), но используемые не в активной форме	Сформированные навыки (владения), применяемые при решении задач	

Соответствие результатов обучения и компетенций, в развитии которых участвует дисциплина (модуль)	
Результаты обучения	Компетенция, с частичным формированием которой связано достижение результата обучения	
Знать:
1.	основы разработки параллельных алгоритмов на примере матрично-векторных алгоритмов, методы оценки эффективности параллельных программ;
2.	технологии процесса разработки и отладки параллельных программ в рамках UNIX-подобных операционных систем.	
ОПК-1.Б	
Знать:
1.	базовые принципы организации параллельной обработки данных на уровне процессора;
2.	системы сбора аппаратных данных о производительности  процессоров;
3.	технологии параллельного программирования для систем с общей памятью Pthreads и OpenMP;
4.	методы построения параллельных программ с использованием технологии MPI;
5.	подходы к  оценке времени выполнения функций передачи данных для вычислительных систем с распределенной памятью;
6.	системы отладки эффективности параллельных программ; 
Уметь:
1.	применять технологии параллельного программирования Pthreads, OpenMP и MPI для разработки параллельных программ; 
2.	разрабатывать и отлаживать параллельные программы;
3.	оценивать эффективность разрабатываемых параллельных программ. 

Владеть:
1.	навыками владения технологиями параллельного программирования;
2.	навыками разработки и отладки параллельных программ для многоядерных систем и высокопроизводительных многопроцессорных вычислительных систем.

СПК-ССПП-1Б	

8. Ресурсное обеспечение:
Основная литература:
1.	Антонов А.С. Технологии параллельного программирования MPI и OpenMP: Учеб. пособие. Предисл.: В.А.Садовничий. - М.: Издательство Московского университета, 2012.-344 с.-(Серия «Суперкомпьютерное образование»).
2.	Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002. - 608 с.

Дополнительная литература:
1.	А.С.Антонов. Параллельное программирование с использованием технологии MPI.-М.: Изд-во МГУ, 2004.-71с. (http://parallel.ru/info/parallel/)
2.	Антонов А.С. Параллельное программирование с использованием технологии OpenMP: Учебное пособие.-М.: Изд-во МГУ, 2009. - 77 с. (http://parallel.ru/info/parallel/)

Информационные справочные системы:

Материалы информационно-аналитического центра Parallel.ru

Материально-техническкое обеспечение:

Программные средства
Программное обеспечение рабочих мест (персональных компьютеров, рабочих станций) для удаленного доступа (утилиты putty, wincp для операционной системы Windows или протоколы ssh и scp для UNIX-подобных операционных систем).
Установленные на высокопроизводительных системах библиотеки MPI. Желательна установка одной из свободно распространяемых систем для профилировки и настройки эффективности (наример, системы TAU или Scalasca). Для изучения темы 8 («Параллельные математические библиотеки») необходима установка на целевой платформе библиотеки Scalapack. 

Для проведения лекций требуется аудитория, оснащенная презентационной техникой (проектор, экран, компьютер/ноутбук). Для демонстрации изучаемых технологий на примере  работы параллельных программ во время  чтения лекций требуется подключение лекционного ноутбука к удаленным высокопроизводительным системам. Для проведения семинарских занятий и выполнение лабораторных работ требуется компьютерный класс с установленным программным обеспечением, необходимым для удаленного доступа на суперкомпьютерные системы.  Выполнение лабораторных работ и практических заданий по курсу используются суперкомпьютеры Blue Gene/P, «Ломоносов», высокопроизводительная система Polus. Для обеспечения удаленного доступа на суперкомпьютерные системы требуется оформление необходимых ресурсов и прав доступа к системам.

9. Язык преподавания - русский.

10. Преподаватели:  Доцент Н.Н.Попова, Аспиранты кафедры

11. Авторы программы:  Доцент Н.Н.Попова