Модели, языки и системы параллельного...

23
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Государственное образовательное учреждение высшего профессионального образования «Новосибирский государственный университет» Факультет информационных технологий УТВЕРЖДАЮ _______________________ "_____"__________________200__ г. Рабочая программа дисциплины (модуля) Модели, языки и системы параллельного программирования (Наименование дисциплины (модуля)) Направление подготовки 230100 – ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА Квалификация (степень) выпускника Бакалавр Новосибирск 2011

Upload: others

Post on 28-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение высшего профессионального образования

«Новосибирский государственный университет»

Факультет информационных технологий

УТВЕРЖДАЮ

_______________________

"_____"__________________200__ г.

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

(Наименование дисциплины (модуля))

Направление подготовки 230100 – ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА

Квалификация (степень) выпускника Бакалавр

Новосибирск 2011

Page 2: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

Программа дисциплины «Модели, языки и системы параллельного программирования»

составлена в соответствии с требованиями ФГОС ВПО к структуре и результатам освоения основных образовательных программ бакалавриата по «профессиональному» циклу по направлению подготовки «Информатика и вычислительная техника», а также задачами, стоящими перед Новосибирским государственным университетом по реализации Программы развития НГУ.

Автор (авторы)__ д.т.н., профессор Малышкин В.Э., ст. препод. Арыков С.Б. _

Факультет информационных технологий

Кафедра параллельных вычислений

Page 3: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

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

Целями освоения дисциплины (модуля) «Модели, языки и системы параллельного программирования» являются:

обеспечение фундаментальной теоретической подготовки в области параллельного программирования;

изучение формальных моделей параллельных вычислений;

формирование у студентов понимания взаимосвязи между теоретическими моделями параллельных вычислений и их практической реализацией;

изучение современных систем параллельного программирования, основанных на различных формальных моделях параллельных вычислений;

формирование практических навыков параллельного программирования.

Указанные цели в полной мере отвечают основным целям данной бакалаврской программы:

Подготовка специалистов для научно-исследовательской деятельности в организации распределённых и высокопроизводительных вычислений, геоинформационных систем, в моделировании и анализе результатов фундаментальных физических экспериментов, а так же для применения современных информационных технологий для науки, экономики на основе фундаментального образования, позволяющего выпускникам быстро адаптироваться к меняющимся потребностям общества.

Развитие у студентов личностных качеств и формирование общекультурных и профессиональных компетенций в соответствии с ФГОС ВПО по данному направлению подготовки.

2. Место дисциплины в структуре магистерской программы Дисциплина является вариативной частью профессионального цикла ООП по

направлению подготовки 230100 «Информатика и вычислительная техника». С другими частями образовательной программы соотносится следующим образом.

Дисциплины, предшествующие по учебному плану: «Операционные системы» «Программирование» «Математическая логика и теория алгоритмов» «Основы параллельного программирования».

Дисциплина является логическим продолжение курса «Основы параллельного программирования» и позволяет студентам более глубоко разобраться в проблемах, с которыми сталкиваются разработчики параллельных программ при использовании различных средств параллельного программирования.

Для успешного освоения данной дисциплины учащийся должен:

знать теорию алгоритмов, теорию множеств, основы программирования на языках C# и Java;

Page 4: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

уметь разрабатывать простейшие параллельные программ с помощью MPI и OpenMP для вычислителей с общей и распределённой памятью;

владеть языками программирования C/C++, инструментами отладки и профилировки параллельных программ, английским языком на уровне, достаточном для чтения технической документации.

Дисциплины, последующие по учебному плану: логические основы программирования.

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

В результате освоения дисциплины обучающийся должен: знать формальные модели параллельного программирования (взаимодействующие

последовательные процессы, модель акторов, асинхронную модель вычислений и др.), различные способы задания управления в параллельных программах (операторами, сетями Петри, строгим частичным порядком и др.), подходы к реализации формальных моделей в современных инструментах параллельного программирования.

уметь разрабатывать параллельные программы с необходимой степенью непроцедурности для решения разного класса задач на компьютерах с распределенной и общей памятью с использованием современных языков и систем параллельного программирования.

владеть теоретическими знаниями в области моделей параллельного программирования, средствами параллельного программирования Charm++, OpenTS, Аспект, ALF.

В результате освоения дисциплины у учащегося формируются следующие компетенции:

общекультурные компетенции: владеет культурой мышления, способен к обобщению, анализу, восприятию

информации, постановке цели и выбору путей ее достижения (ОК-1); умеет логически верно, аргументировано и ясно строить устную и письменную

речь (ОК-2); стремится к саморазвитию, повышению своей квалификации и мастерства

(ОК-6); осознает социальную значимость своей будущей профессии, обладает высокой

мотивацией к выполнению профессиональной деятельности (ОК-8); использует основные законы естественнонаучных дисциплин в

профессиональной деятельности, применяет методы математического анализа и моделирования, теоретического и экспериментального исследования (ОК-10);

осознает сущность и значение информации в развитии современного общества; владеет основными методами, способами и средствами получения, хранения, переработки информации (ОК-11);

имеет навыки работы с компьютером как средством управления информацией (ОК-12);

способен работать с информацией в глобальных компьютерных сетях (ОК-13).

Page 5: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

профессиональные компетенции: понимает основные принципы организации и функционирования компьютеров

с общей и распределенной памятями (ПК-41); владеет основными методами и средствами разработки параллельных программ

для компьютеров с общей и распределенной памятью (ПК-42); владеет методами эффективного программирования для компьютеров с общей

и распределенной памятями (ПК-43). инструментальные компетенции:

имеет навыки использования инструментальных средств программирования для ОС семейства Unix (ИК-1);

имеет навыки решения типовых задач программирования и владеет основными моделями и методами их решения (ИК-5).

4. Структура и содержание дисциплины (модуля) модели, языки и системы параллельного программирования

Общая трудоемкость дисциплины составляет 3 зачетных единицы 108 часов. Аудиторные занятия: 32, в том числе:

Лекции (Л): 24 Практические занятия (ПЗ): 6 Зачет (З): 2

Самостоятельная работа (СР): 76

№ п/п

Раздел Дисциплины

Семестр

Неделя

семестра

Виды учебной работы, включая самостоятельную

работу студентов и трудоемкость (в

часах)

Формы текущего контроля

успеваемости (по неделям семестра)

Форма промежуточной аттестации (по

семестрам) Л C ПЗ СР

1 Взаимодействующие последовательные процессы

5 1-3 4 1 16 КР* (4)

2 Модель акторов 5 4-7 6 1 18 КР (8)

3 Асинхронная модель вычислений

5 8-10 4 1 12 КР (11)

4 Параллельная редукция графов

5 11-14 6 1 16 КР (15)

5 Технология фрагментированного программирования

5 15-16 4 2 14 З (16)

КР* - контрольная работа. Проводится после изучения темы.

Page 6: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

Темы лекционных занятий разделов дисциплины 1. Взаимодействующие последовательные процессы

1.1. Процессы. Параллельные процессы 1.2. Математическая теория детерминированных процессов 1.3. Недетерминизм. Взаимодействие 1.4. Математическая теория недетерминированных процессов 1.5. Разделяемые ресурсы

2. Модель акторов 2.1. Неформальное введение. Основные решения. 2.2. Формальная модель 2.3. Подходы к решению известных проблем (дедлоки, взаимная блокировка и др.) 2.4. Композиция в модели акторов

3. Асинхронная модель вычислений 3.1. Простая асинхронная модель 3.2. Асинхронная модель с массовыми вычислениями 3.3. Асинхронная модель с управлением на основе строгого частичного порядка

4. Параллельная редукция графов 4.1. Лямбда-выражения. Вычисление лямбда-выражений 4.2. Лямбда-исчисление де Брейна. 4.3. Представление лямбда-выражений в виде графов 4.4. Правила редукции графов 4.5. Параллельная редукция графов

5. Технология фрагментированного программирования 5.1. Фрагметированное представление алгоритмов 5.2. Фрагментация численных задач

Темы и задания практических занятий разделов дисциплины

1. Язык Occam. Синтаксис и семантика основных конструкций. Методы программирования в системе KRoC (реализация компилятора Occam).

Задания для практической работы: Освоить работу с компилятором Occam (реализация KroC). Изучить основные конструкции языка программирования Occam версии 2.1. Изучить подпрограммы языка Occam для работы с внешними устройствами. Реализовать алгоритм умножения матриц. Реализовать алгоритм сортировки массива. Реализовать классический алгоритм Хаффмана. Реализовать адаптивный алгоритм Хаффмана.

2. Система Charm++. Язык Charm++: синтаксис и семантика основных конструкций. Методы программирования в системе Charm++.

Задания для практической работы: Освоить работу с транслятором Charm++. Изучить основные конструкции языка программирования Charm++. Реализовать алгоритм вычисления чисел Фибоначчи. Реализовать алгоритм умножения матриц. Реализовать алгоритм решения системы линейных уравнений методом Якоби

Page 7: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

для одно, двух и трёхмерных случаев. Реализовать алгоритм решения системы линейных уравнений методом Гаусса-

Зейделя. Реализовать алгоритм LU-разложения матриц.

3. Система ALF. Структура программной системы. Основные подпрограммы библиотеки ALF. Методы программирования в ALF.

Задания для практической работы Освоить работу с библиотекой ALF (подключение, настройка, запуск

программ). Изучить основные конструкции библиотеки ALF. Реализовать алгоритм вычисления чисел Фибоначчи. Реализовать алгоритм умножения матриц. Реализовать алгоритм решения системы линейных уравнений методом Якоби

для одномерного случая. Реализовать алгоритм LU-разложения матриц.

4. Система OpenTS. Язык T++: синтаксис и семантика основных конструкций. Методы программирования в системе OpenTS.

Задания для практической работы Освоить работу с системой OpenTS (настройка, запуск программ). Изучить основные конструкции языка T++. Реализовать алгоритм вычисления чисел Фибоначчи. Реализовать алгоритм умножения матриц. Реализовать алгоритм решения системы линейных уравнений методом Якоби

для одно, двух и трёхмерных случаев. Реализовать алгоритм решения системы линейных уравнений методом Гаусса-

Зейделя. Реализовать алгоритм LU-разложения матриц.

5. Библиотека PLASMA. Архитектура библиотеки. Решение задач с использованием библиотеки PLASMA.

Задания для практической работы Освоить работу с библиотекой PLASMA (подключение, настройка, запуск

программ). Выполнить тестирование задач умножения и LU-разложения, решенных с

применением библиотечных функций PLASMA. 6. Система программирования Аспект. Язык Аспект: синтаксис и семантика основных

конструкций. Методы программирования в системе Аспект. Задания для практической работы

Освоить работу с системой Аспект (настройка, запуск программ). Изучить основные конструкции языка Аспект. Реализовать алгоритм вычисления чисел Фибоначчи. Реализовать алгоритм умножения матриц.

Page 8: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

Реализовать алгоритм решения системы линейных уравнений методом Якоби для одно, двух и трёхмерных случаев.

Реализовать алгоритм решения системы линейных уравнений методом Гаусса-Зейделя.

Реализовать алгоритм LU-разложения матриц. Задания для самостоятельной работы

Тема 1. Взаимодействующие последовательные процессы 1. Реализовать игру «Жизнь». 2. Изучить реализацию модели взаимодействующих последовательных процессов в

библиотеке JCSP для языка Java. Реализовать на этом языке алгоритм умножения матриц.

3. Сравнить способы реализации алгоритма умножения матриц на языках Occam и JCSP (соответствие языковых средств модели взаимодействующих последовательных процессов, удобство программирования, производительность), подготовить отчёт.

Тема 2. Модель акторов 1. Изучить дополнительные возможности Charm++ по работе с массивами

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

2. Изучить возможности Charm++ по автоматической балансировке нагрузки. Разработать пример программы, моделирующей дисбаланс нагрузки. Исследовать поведение системы Charm++ на этом примере.

3. Изучить возможности Charm++ по созданию контрольных точек. Разработать пример программы, демонстрирующий эти возможности.

4. Изучить реализацию модели акторов в языке программирования Phantom. Реализовать на этом языке задачу умножения матриц.

5. Сравнить способы реализации задачи умножения матриц на языках Phantom и Charm++ (соответствие языковых средств модели акторов, удобство программирования, производительность), подготовить отчёт.

Тема 3. Асинхронная модель вычислений 1. Реализовать алгоритм решения системы линейных уравнений методом Гаусса-

Зейделя. 2. Изучить подходы к параллельному программированию с типами управления и алгебру

регулярных сетей Петри. 3. Изучить реализацию асинхронной модели вычислений в системе программирования

SMP superscalar. Реализовать на этом языке задачи умножения матриц и LU-разложения.

Тема 4. Параллельная редукция графов 1. Реализовать игру «Жизнь» на T++. 2. Изучить реализацию параллельной редукции графов в языке программирования

Glasgow Parallel Haskell (GPH). Реализовать на этом языке задачи вычисления чисел Фибоначчи, умножения матриц и LU-разложения.

3. Сравнить способы реализации задач вычисления чисел Фибоначчи, умножения

Page 9: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

матриц на языках T++ и GPH (языковые средства, удобство программирования, производительность), подготовить отчёт.

4. Реализовать алгоритм быстрой сортировки массива (2 варианта) на Haskell. 5. Разработать распознаватель простых арифметических выражений на Haskell.

Тема 5. Технология фрагментированного программирования 1. Реализовать на языке Аспект алгоритм умножения матриц двумя способами,

отличными от способа, использованного на практических занятиях. 2. Реализовать на языке Аспект алгоритм QR-разложения. 3. Реализовать на языке Аспект алгоритм решения уравнения Пуассона для двумерного

случае. 4. Изучить реализацию технологии фрагментированного программирования в языке

программирования LuNA. Реализовать на этом языке задачу умножения матриц и LU-разложения. Сравнить способы реализации задач на языках Аспект и Luna (соответствие языковых средств модели асинхронных вычислений, удобство программирования, производительность), подготовить отчёт.

5. Образовательные технологии Для освоения дисциплины «Модели, языки и системы параллельного

программирования» используются следующие основные образовательные методы и технологии. Метод кейс-стади (метод анализа конкретных ситуаций)

Для организации обучения используются описания конкретных ситуаций. Учащимся предлагается осмыслить реальную задачу параллельного программирования, описание которой одновременно отражает не только какую-либо практическую проблему, но и актуализирует определенный комплекс знаний, который необходимо усвоить при разрешении данной проблемы. При этом сама задача не имеет однозначных решений.

Метод является интерактивным методом обучения. Он позволяет студентам проявить инициативу, почувствовать самостоятельность в освоении теоретических положений и овладении практическими навыками, способствует их взрослению, формирует интерес и позитивную мотивацию к учебе.

Кейс-метод используется: на лекционных занятиях — при обсуждении достоинств и недостатков различных

формальных моделей вычислений; на практических занятиях — при решении одной и той же задачи с помощью

различных систем параллельного программирования. Метод кейс-стади направлен не столько на освоение конкретных знаний или умений,

сколько на развитие общего интеллектуального и коммуникативного потенциала учащегося. Метод «малых групп»

Этот метод рассчитан на решение познавательной задачи в рамках локализованной группы, когда студент имеет возможность принять участие в постановке проблемы и поиске ее решения.

Метод «Малых групп» используется на практических занятиях – для иллюстрации возможности решения одной и той же

задачи различными методами;

Page 10: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

во время самостоятельной работы — при подготовке отчёта о сравнительном тестировании различных систем параллельного программирования группой студентов.

Работа в малых группах позволяет создать особую эмоциональную атмосферу, которая предполагает включенность каждого учащегося в образовательный процесс. Технология модульного обучения

Модульная технология преобразует образовательный процесс так, что учащийся самостоятельно (полностью или частично) обучается по целевой индивидуализированной программе. Основа модульного обучения — учебный модуль, включающий: законченный блок информации, целевую программу действий учащегося; рекомендации (советы) преподавателя по ее успешной реализации.

Технология модульного обучения используется для самостоятельное изучение нового языка программирования, который базируется на той же модели вычислений, что и язык программирования, рассмотренный на практических занятиях.

Модульная технология обеспечивает индивидуализацию обучения: по содержанию обучения, по темпу усвоения, по уровню самостоятельности, по методам и способам учения, по способам контроля и самоконтроля. Метод индивидуально-дифференцированного обучения

Метод реализуется с использованием сети Интернет. Индивидуально с каждым студентом осуществляется взаимодействие в виде:

Вопросов-ответов, связанных с дополнительными самостоятельными заданиями или индивидуальными нестандартными (более сложными) заданиями.

Выдачи дополнительных заданий или нестандартных (более сложных) заданий. Контроля выполнения заданий и усвоения материала.

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

При проведении лекционных занятий используются следующие приёмы активизации познавательной деятельности:

нетрадиционное начало лекции (видеофрагмент, интересная задача, эпиграф); использование электронных презентаций, фрагментов электронных учебных пособий.

Практические занятия При проведении практических занятий используются следующие приёмы активизации

познавательной деятельности: В начале каждого аудиторного занятия проводится разбор и объяснение в

интерактивной форме дополнительного теоретического материала, необходимого для выполнения практического задания.

Разбор и подробное обсуждение практических заданий осуществляются в активной форме вопросов-ответов.

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

Page 11: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

Самостоятельные работы При организации самостоятельной работы используются следующие приёмы

активизации познавательной деятельности: Обсуждение и разбор самостоятельных работ осуществляется в активной форме

вопросов-ответов при проведении аудиторных занятий или с использованием сети Internet.

Освоение разделов тем для написания рефератов и обсуждения на семинарах. Обсуждение и разбор рефератов осуществляется в активной форме при проведении аудиторных занятий или с использованием сети Internet. При этом проводятся консультации по выбору темы реферата, подбору литературы, детализации планов рефератов и ответов на возникающие вопросы.

6. Учебно-методическое обеспечение самостоятельной работы студентов. Оценочные средства для текущего контроля успеваемости, промежуточной аттестации по итогам освоения дисциплины. Виды самостоятельных работ

Самостоятельная работа студентов подразделяется на четыре части: А). Темы, аналогичные темам практических заданий, расширенных усложненными

заданиями, либо изучение дополнительных возможности языков программирования, рассмотренных на практических занятиях.

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

В). Подготовка отчётов сравнительного тестирования численных задач, реализованных в системах программирования, основанных на различных моделях вычислений.

Г). Подготовка реферата.

Темы рефератов Реферат 1. Сравнительный анализ модели взаимодействующих последовательных

процессов и модели акторов. а) Модель взаимодействующих последовательных процессов б) Модель акторов в) Сравнительный анализ моделей на примере выбранной численной задачи

Реферат 2. Сравнительный анализ модели взаимодействующих последовательных процессов и асинхронной модели вычислений.

а) Модель взаимодействующих последовательных процессов б) Асинхронная модель вычислений в) Сравнительный анализ моделей на примере выбранной численной задачи

Реферат 3. Сравнительный анализ модели взаимодействующих последовательных процессов и параллельной редукции графов.

а) Модель взаимодействующих последовательных процессов б) Параллельная редукция графов в) Сравнительный анализ моделей на примере выбранной численной задачи

Реферат 4. Сравнительный анализ модели акторов и асинхронной модели вычислений а) Модель акторов

Page 12: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

б) Асинхронная модель вычислений в) Сравнительный анализ моделей на примере выбранной численной задачи

Реферат 5. Сравнительный анализ модели акторов и параллельной редукции графов а) Модель акторов б) Параллельная редукция графов в) Сравнительный анализ моделей на примере выбранной численной задачи

Реферат 6. Сравнительный анализ асинхронной модели вычислений и параллельной редукции графов

а) Асинхронная модель вычислений б) Параллельная редукция графов в) Сравнительный анализ моделей на примере выбранной численной задачи

Реферат 7. Язык и система программирования mpC а) Неформальное описание языка mpC и модели вычислений, лежащей в его основе б) Основные конструкции языка mpC в) Примеры разработки параллельных программы

Реферат 8. Язык программирования Fantom а) Неформальное описание языка Fantom и модели вычислений, лежащей в его основе б) Основные конструкции языка Fantom в) Примеры разработки параллельных программ

Реферат 9. Система программирования SMPSuperscalar а) Неформальное описание системы SMPSuperscalar и модели вычислений, лежащей в её основе б) Методы программиварония в SMPSuperscalar в) Примеры разработки параллельных программ

Реферат 10. Язык программирования Parallel Haskell (GHC и GPH реализации) а) Неформальное описание языка Parallel Haskell и модели вычислений, лежащей в его основе б) Основные конструкции Parallel Haskell в) Отличия реализаций GHC и GPH г) Примеры разработки параллельных программ

Учебно-методическое обеспечение самостоятельной работы студентов На сайте кафедры выставлены все темы практических и самостоятельных работ и

указан план поэтапного выполнения каждой работы и оформления результатов работы. Порядок выполнения работы является следующим:

разработать параллельный алгоритм решения задачи и создать соответствующую программу;

отладить параллельную программу; протестировать разработанную параллельную программу на разных входных

данных (4-5 вариантов), а так же при запуске программы на разном количестве процессоров (3-4 варианта);

проанализировать полученные результаты; построить графики временной характеристики параллельного алгоритма от размеров

входных данных (3-4 варианта), а так же от количества процессоров (3-4 варианта), на котором реализовывалась программа;

Page 13: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

сравнить время выполнения построенной параллельной программы алгоритма, реализуемой на N процессорах (3-4 варианта) и построенной последовательной программы того же самого алгоритма (реализуемой на одном процессоре) на одних и тех же входных данных (3-4 варианта), и, таким образом, определить ускорение параллельной программы;

сформулировать выводы по работе; составить пояснительную записку (формат пояснительной записки приведен в

приложении 1). Пример оформления реферата приведен в приложении 2.

Оценочные средства для текущего контроля успеваемости В течение семестра проводится несколько промежуточных и в конце семестра итоговый

контроль усвоения материала. Контроль проводится в письменной форме по билетам. Затем в процессе аудиторных занятий осуществляется разбор и оценка ответов на вопросы.

В течение семестра проводится в соответствии с календарным планом два промежуточных аудиторных занятия по контролю своевременных сдач и оценке выполненных практических работ за предыдущий интервал времени, а в конце семестра выделяется аудиторное занятие (одно или два) для сдачи и досдачи всех самостоятельных практических работ.

На контрольном занятии каждый студент после сдачи программной части защищает свой отчет (в виде пояснительной записки) по каждому заданию и отвечает на теоретические вопросы. Результирующая оценка работы находится как среднее арифметическое от оценок за программную часть и отчет с соответствующими весовыми коэффициентами каждой части.

Оценочные средства для текущего контроля успеваемости представляют собой контрольные вопросы к самостоятельным и практическим работам по теме каждого из разделов.

Тема 1. Взаимодействующие последовательные процессы 1. Основные ключи компилятора KRoC. Комипляция исполяемых файлов и библиотек. 2. Типы данных, переменные и значения в языке Occam. 3. Примитивные и сложные процесс в языке Occam. 4. Каналы и протоколы в языке Occam. 5. Выражения и процедуры в языке Occam. 6. Какая структура данных использована для описания бесконечной доски с конечным

числом процессов в игре «Жизнь»? Какие особенности Occam повлияли на выбор этой структуры?

7. Как распределить каналы, связывающие процессы в игре «Жизнь»? 8. Как задаётся нумерация каналов ввода в игре «Жизнь»? 9. Назначение и основные функции пакета org.jcsp.lang в языке JCSP. 10. Назначение и основные функции пакета org.jcsp.net в языке JCSP.

Тема 2. Модель акторов 1. Основные сущности языка Charm++ (последовательные объекты, сообщения, чары,

массивы и группы чаров).

Page 14: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

2. Общая структура Charm++ программы. Entry-методы и их атрибуты. 3. Сообщения (понятие, создание и удаление сообщений). Упаковка сообщений.

Сообщения переменной длины. Порядок доставки сообщений. 4. Массивы. Расширенные возможности по созданию и инициализации массивов. Работа

с секциями. 5. Группировка объектов и узлов. 6. Управление динамической балансировкой. Стратегии балансировки. Сбор статистики

исполнения. 7. Редукция. Встроенные редукционные типы данных. Создание собственных

редукционных типов данных. 8. Сериализация и десериализация данных. 9. Механизм контрольных точек в Charm++. 10. Язык программирования Fantom: реализация акторов, сообщений и управления в

параллельной программе. Тема 3. Асинхронная модель вычислений

1. Библиотека ALF: назначение и основные возможности. 2. Подходы к распределению данных в библиотеке ALF. 3. Типы буферов, поддерживаемых подсистемой времени исполнения ALF. 4. Использование различных типов блоков в ALF. 5. Типы управления: назначение и использование в программировании. 6. Алгебра регулярных сетей Петри как формальный базис для описания типов

управления. 7. Программирование с использованием SMP superscalar. Выбор и планирование задач. 8. Программирование с использованием SMP superscalar. Ожидание данных.

Редукционные операции. 9. Отладка и трассировка приложений в SMP superscalar. 10. Сравните подход к разработке асинхронных программ в системах ALF и SMP

superscalar. Чем они похоже? Какие существенные отличия? Какой подход, на ваш взгляд, является более перспективным и почему?

Тема 4. Параллельная редукция графов 1. Структура Т++ программы. Компиляция и запуск программ над общей и

распределённой памятью в системе OpenTS. 2. Семантика языка T++. Т-переменные и Т-функции: объявление и использование. 3. Семантика языка T++. Т-указатели. Функции tdrop и twait. 4. Управление производительностью Т-программ посредством изменения размера

гранулы параллелизма. 5. Язык программирования Haskell. Концепция типов и классов. 6. Язык программирования Haskell. Определение функций. 7. Язык программирования Haskell. Работа со списками. 8. Язык программирования Haskell. Рекурсивные функции.

Page 15: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

9. Язык программирования Haskell. Функции высоких порядков. 10. Язык программирования Haskell. Взаимодействие с пользователем.

Тема 5. Технология фрагментированного программирования 1. Архитектура и принцип работы библиотеки PLASMA. 2. Архитектура и принцип работы системы программирования Аспект. 3. Язык программирования Аспект. Определение фрагментов данных и данных задачи. 4. Язык программирования Аспект. Определение фрагментов кода и фрагментов

вычислений. 5. Язык программирования Аспект. Задание управления на множестве фрагментов

вычислений. 6. Язык программирования LuNA. Определение фрагментов данных и данных задачи. 7. Язык программирования LuNA. Определение фрагментов кода и фрагментов

вычислений. 8. Язык программирования LuNA. Задание управления на множестве фрагментов

вычислений. 9. Перечислите основные способы задания управления в параллельных программах.

Приведите пример для каждого способа. В каких случаях целесообразно использовать тот или иной способ?

10. Сравните фрагментированное программирования с другими подходами к разработке параллельных программ. В чём его преимущество? В чём недостатки?

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

Тема 1. Взаимодействующие последовательные процессы 1. Поясните смысл основных понятий теории взаимодействующих последовательных

процессов (процесс, префикс, рекурсия, выбор). Приведите примеры. 2. Законы тождественности процессов с одинаковыми алфавитами. 3. Протоколы. Операции над протоколами. Реализация протоколов. 4. Взаимодействие процессов. Законы взаимодействия. 5. Параллелизм. Законы для расширенной операции параллельной композиции. 6. Способ задания группы процессов, обладающих сходным поведением. 7. Недетерминированный выбор: законы, реализация, протоколы. 8. Генеральный выбор: законы, реализация, протоколы. 9. Сокрытие: законы, реализация, протоколы. 10. Поочередное использование. Общая память. 11. Планирование ресурсов. Алгоритм поликлиники (алгоритм булочной).

Тема 2. Модель акторов 12. Понятие актора. Поведение актора. 13. Глобальная синхронизация и асинхронность. 14. Взаимодействие между акторами (разделяемые переменные, коммуникации). 15. Подходы к программированию с использованием акторов (описание поведения,

Page 16: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

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

топология). 17. Проблемы распределённых вычислений в модели акторов (бесконечные циклы,

дедлоки, взаимное исключение). Тема 3. Асинхронная модель вычислений

18. Простая асинхронная модель вычислений. 19. Структурные операции: определение, назначение, реализация. 20. Асинхронная модель вычислений с массовыми операциями 21. Асинхронная модель вычислений с управлением на основе строго частичного

порядка. 22. Подходы к формализации управляющих операторов. 23. Алгоритмы преобразования асинхронной модели вычислений с управлением на

основе строгого частичного порядка в асинхронную модель вычислений с управлением на основе управляющих операторов.

Тема 4. Параллельная редукция графов 24. Определение λ-выражений. Вычисление λ-выражений. 25. Порядок редукции и нормальные формы. Теорема Черча-Россера (без доказательства).

Теорема стандартизации (без доказательства). 26. β-редукция и проблема конфликта имён. Обход проблемы конфликта имён. 27. Эффект разделения. 28. λ-исчисление де Брейна. 29. Представление λ-выражений в виде графов (с примерами). 30. Правила редукции графов (λ-применение, подстановка аргументов, комирование λ-

тела и др.). 31. Алгоритм редукции графа. 32. Проблема свободных переменных. 33. Параллельная редукция графов.

Тема 5. Технология фрагментированного программирования 34. Основные принципы технологии фрагментированного программирования. 35. Методы задания управления в параллельных программах. 36. Типовые управляющие схемы параллельного программирования. 37. Особенности фрагментации задачи умножения матриц (3 способа). 38. Особенности фрагментации задач LU-разложения и QR-разложения. 39. Особенности фрагментации задач, решаемых методом конечных разностей. 40. Особенности фрагметации задач, решаемых методом частицы-в-ячейках.

7. Учебно-методическое и информационное обеспечение дисциплины (модуля)

Page 17: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

а) основная литература: 1. Хоар Ч. Взаимодействующие последовательные процессы. – М.: Мир, 1989. –

264 с. – ISBN 5-03-001043-2. 2. Джоунз Г. Программирование на языке Оккам. – М.: Мир, 1989. – 208 с. – ISBN

5-03-001155-2. 3. Agha G. ACTORS: A Model of Concurrent Computation in Distributed Systems.

– MIT press, 1986. 4. Kale L. V., Krishnan S. Charm++: Parallel Programming with Message-Driven

Objects. Book Chapter in "Parallel Programming using C++", by Gregory V. Wilson and Paul Lu. MIT Press, 1996. pp 175-213.

5. Котов В. Е. О практической реализации асинхронных параллельных вычислений // В кн. Системное и теоретическое программирование. – Новосибирск: ВЦ СО АН СССР, 1972. – С. 110–125.

6. Арыков С. Б. Асинхронное программирование численных задач // Труды международной научной конференции «Параллельные вычислительные технологии (ПаВТ’2010)». Челябинск: Изд. ЮУрГУ, 2010. С. 28–39.

7. Котов В. Е. Параллельное программирование с типами управления // – Кибернетика. – 1979. – № 3. – С. 1–13.

8. Филд А., Харрисон П. Функциональное программирование. – М.: Мир, 1993. – 5-03-001870-0.

9. Graham Hutton. Programming in Haskell. – Cambridge University Press, 2007. – ISBN 978-0-521-87172-3. – 184 p.

10. Арыков С. Б., Малышкин В. Э. Система асинхронного параллельного программирования «Аспект» // Вычислительные методы и программирование. – 2008. – Т. 9. – № 1. – С. 205–209.

б) дополнительная литература: 1. Roscoe A.W. The theory and practice of concurrency. – Prentice Hall, 1998. – ISBN 0-

13-6774409-5. – 565 pp. 2. Вальковский В. А., Малышкин В. Э. Синтез параллельных программ и систем на

вычислительных моделях. – Новосибирск: Наука, 1988. – 129 с. 3. Malyshkin V.E., Perepelkin V.A. Optimization of Parallel Execution of Numerical

Programs in Luna Fragmented Programming System - Methods and Tools of Parallel Programming Multicomputers, LNCS 6083 - pp. 1-10, Springer, 2010.

4. Малышкин В.Э., Корнеев В.Д. Параллельное программирование мультикомпьютеров. – Изд-во НГТУ, 2006 г.

5. Топорков В.В. Модели распределенных вычислений. – М.: ФИЗМАТЛИТ, 2004. – 320 c. – ISBN 5-9221-0495-0.

в) программное обеспечение и Интернет-ресурсы: 1. The Kent Retargetable Occam Compiler (KroC).

URL: http://www.cs.kent.ac.uk/projects/ofa/kroc/ 2. The CSP archive. URL: http://formalmethods.wikia.com/wiki/CSP. 3. Occam 2.1 reference manual.

URL: http://www.wotug.org/occam/documentation/oc21refman.pdf 4. Programming in Occam.

URL: http://www.comlab.ox.ac.uk/people/geraint.jones/publications/book/Pio1/

Page 18: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

5. Communicating Sequential Processes for Java (JCSP). URL: http://www.cs.kent.ac.uk/projects/ofa/jcsp/

6. Программная модель актеров. URL: http://blogs.msdn.com/b/ru-hpc/archive/2009/11/25/9928475.aspx

7. Charm++. URL: http://charm.cs.uiuc.edu/research/charm/ 8. Fantom Programming Language. URL: http://fantom.org/ 9. SMP Superscalar (SMPSs) User’s Manual. URL: http://www.bsc.es/media/3833.pdf 10. Система параллельного программирования OpenTS.

URL: http://www.opents.net/index.php/ru 11. Glasgow Parallel Haskell. URL: http://www.macs.hw.ac.uk/~dsg/gph/

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

программирование» Лекции читаются в специальной лекционной аудитории, обеспеченной средствами

отображения презентаций и других лекционных материалов на экран. Лабораторные работы проводятся в терминальных классах с отдельными рабочими

местами для каждого студента. Задания выполняются на вычислительной системе, состоящей из 24 процессорных ядер. Имеется доступ к более мощным вычислительным системам НГУ и ИВМиМГ СО РАН.

Самостоятельные работы выполняются либо дома (при наличии у студента соответствующего аппаратного и программного обеспечения), либо в терминальных класса в согласованное с преподавателем время.

Рецензент (ы) Программа одобрена на заседании Методической комиссии ФИТ от «___» _________ 2011 года, протокол № ____.

Page 19: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

ПРИЛОЖЕНИЕ 1

ОБЩИЕ ЗАМЕЧАНИЯ ПО ВЫПОЛНЕНИЮ И ОФОРМЛЕНИЮ

ПРАКТИЧЕСКИХ РАБОТ 1. Текст задания (условие задачи) должен быть переписан в пояснительную записку

практической работы полностью, со всеми рисунками и числовыми значениями для своего варианта.

2. Каждый этап практической работы должен быть озаглавлен. 3. Работа должна быть написана только на одной стороне листа, при этом следует оставлять

поля шириной не менее 4 см для замечаний преподавателя. 4. В пояснительной записке требуемые расчеты и построенные графики должны

сопровождаться словесными пояснениями. Нельзя приводить только расчетные формулы и конечные результаты. Работы, в которых вычисления и словесные пояснения приводятся крайне сокращенно, к защите не допускаются и возвращаются студентам на переработку.

5. Работа должна быть подготовлена в одном из трёх допустимых форматов: *.doc, *.docx, *.odt. В конце расчетно-графической работы должны быть указаны источники литературы и подпись выполнившего работу.

6. На титульном листе пояснительной записки обязательно должны быть написаны фамилия и инициалы студента, номер варианта и группа.

7. Таблицы, графики, не следует размещать среди текста. Они должны быть выполнены на отдельных листах.

8. На графиках обязательно указывать название изображаемых величин. Масштабы подбирать так, чтобы было удобно пользоваться графиком или диаграммой. В соответствии с выбранными масштабами подписываются шкалы графиков и диаграмм.

9. Везде у параметров, имеющих определенные размерности, писать в окончательных результатах соответствующие единицы измерения.

Page 20: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

Образец титульного листа пояснительной записки

Министерство образования и науки РФ

Новосибирский государственный университет Кафедра параллельных вычислений

(Практическая/самостоятельная) Работа № ___ по курсу ОПП

_____________________________________________

Вариант № ______

Выполнил студент группы ____ ______________ (Ф.И.О.) Принял преподаватель ____________ (Ф.И.О.)

Новосибирск, 201_

Page 21: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

Образец содержания пояснительной записки

1. Описание параллельного алгоритма и описания взаимодействий между ветвями параллельной программы.

2. Графики зависимости (4 графика) временной характеристики параллельного алгоритма от размеров входных данных и размеров вычислительной системы.

3. График, демонстрирующий ускорение параллельной программы.

4. Краткие выводы по работе, включающие анализ полученных результатов. 5. Код параллельной программы.

Page 22: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

ПРИЛОЖЕНИЕ 2

Образец титульного листа реферата

Министерство образования и науки РФ Новосибирский государственный университет

Кафедра параллельных вычислений

Реферат № ___ по курсу ОПП

______________________________________________

Вариант № ______

Выполнил студент группы ____ ______________ (Ф.И.О.) Принял преподаватель ______________ (Ф.И.О.)

Новосибирск, 201_

Page 23: Модели, языки и системы параллельного программированияfit.nsu.ru/data_/courses/niu/02pv.pdf · Программа дисциплины

Пример оформления реферата.

Тема: Язык программирования Fantom (Указывается на титульном листе). Аннотация. 1. Введение. 2. Неформальное описание языка Fantom и модели вычислений, лежащей в его основе

2.1. Краткое описание модели акторов 2.2. Реализация сущностей модели акторов в языке Fantom 2.3. Пример простейшей программы

3. Основные конструкции языка Fantom 3.1. Структура Fantom-программы 3.2. Основные типы 3.3. Выражения 3.4. Управляющие конструкции 3.5. Функции и замыкания 3.6. Конструкции для параллельного программирования

4. Примыры разработки параллельных программ 4.1. Задача умножения матриц 4.2. Задача LU-разложения 4.3. Явная разностная схема

5. Заключение