Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

6414

.pdf
Скачиваний:
0
Добавлен:
21.11.2023
Размер:
785.3 Кб
Скачать

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

«Нижегородский государственный архитектурно-строительный университет»

Д. И. Кислицын

ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ

ДЛЯ СИСТЕМ С ОБЩЕЙ ПАМЯТЬЮ НА ЯЗЫКЕ C/C++

Учебно-методическое пособие

по подготовке к лекциям и практическим занятиям (включая рекомендации по организации самостоятельной работы) для обучающихся по дисциплине «Параллельное программирование для систем с общей памятью на языке C/C++» по направлению подготовки 09.03.02 Информационные системы и технологии, направленность (профиль) «Информационные системы и технологии»

Нижний Новгород

2022

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

«Нижегородский государственный архитектурно-строительный университет»

Д. И. Кислицын

ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ

ДЛЯ СИСТЕМ С ОБЩЕЙ ПАМЯТЬЮ НА ЯЗЫКЕ C/C++

Учебно-методическое пособие

по подготовке к лекциям и практическим занятиям (включая рекомендации по организации самостоятельной работы) для обучающихся по дисциплине «Параллельное программирование для систем с общей памятью на языке C/C++» по направлению подготовки 09.03.02 Информационные системы и технологии, направленность (профиль) «Информационные системы и технологии»

Нижний Новгород ННГАСУ

2022

1

УДК 681.3 (075)

Кислицын Д. И. Параллельное программирование для систем с общей памятью на языке C/C++ : учебно-методическое пособие / Д. И. Кислицын; Нижегородский государственный архитектурно-строительный университет. – Нижний Новгород : ННГАСУ, 2022. - 11 с. - Текст : электронный.

Даются тематика лекций и практических занятий, их краткое содержание, а также методические рекомендации по самостоятельной работе обучающихся по дисциплине «Параллельное программирование для систем с общей памятью на языке C/C++». Указывается необходимая литература и источники, разъясняется последовательность их изучения, выделяются наиболее сложные вопросы и даются рекомендации по их изучению, приводится тематика расчётных работ.

Предназначено для обучающихся в ННГАСУ по дисциплине «Параллельное программирование для систем с общей памятью на языке C/C++» по направлению подготовки 09.03.02 Информационные системы и технологии.

© Д. И. Кислицын, 2022 © ННГАСУ, 2022

2

Учебно-методическое пособие по подготовке к лекциям и практическим занятиям (включая рекомендации по организации самостоятельной работы) по дисциплине «Параллельное программирование для систем с общей памятью на языке C/C++» предназначены для студентов, обучающихся по направлению 09.03.02 Информационные системы и технологии, и содержат программу для проведения лекционных и практических занятий, а также методические рекомендации по самостоятельной работе.

Цель учебно-методического пособия: помочь студентам при изучении учебной программы с использованием лекционных материалов и рекомендуемой учебно-методической литературы при формировании необходимых компетенций дисциплины «Параллельное программирование для систем с общей памятью на языке C/C++».

Целями освоения дисциплины «Параллельное программирование для систем с общей памятью на языке C/C++» являются изучение архитектур параллельных вычислительных систем. Формирование практических навыков по разработке программ для систем с общей памятью на языке C/C++.

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

На лекциях по дисциплине «Параллельное программирование для систем с общей памятью на языке C/C++» широко используются активные формы проведения занятий. Такие формы организации образовательного процесса, способствуют разнообразному (индивидуальному, групповому, коллективному) изучению учебных вопросов (проблем), активному взаимодействию студентов и преподавателя, живому обмену мнениями между ними, нацеленному на выработку правильного понимания содержания изучаемой темы и способов ее практического использования.

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

Самостоятельная работа направлена на развитие компетенций дисциплины:

-ПК-1. Способность выполнять интеграцию программных модулей и компонент;

-ПК-2. Способность выполнять работы по созданию (модификации) и сопровождению информационных систем.

3

Виды и формы самостоятельной работы студентов по дисциплине:

-систематическая проработка лекций, основной и дополнительной литературы;

-выполнение расчётно-графической работы;

-подготовка к экзамену.

Содержание разделов дисциплины «Параллельное программирование для систем с общей памятью на языке C/C++» представлено в таблице 1.

Таблица 1 Содержание разделов дисциплины

 

 

 

 

Аудиторные занятия

 

 

 

 

 

 

 

(в часах)

 

 

Перечень

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Самост

компетенций,

 

 

 

 

 

Лабораторные

 

семинар,Практика

Наименование раздела

Всего

Лекции

 

оятельн

формируемых в

п/п

дисциплины

часов

 

ая

процессе

 

 

 

 

 

 

 

 

 

 

 

 

работа

освоения

 

 

 

 

 

 

 

 

 

раздела

 

 

 

 

 

 

 

 

 

 

 

Принципы

построения

 

 

 

 

 

 

 

1

параллельных

 

7

3

 

 

 

5

ПК-1, ПК-2

 

вычислительных систем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Технология

разработки

 

 

 

 

 

 

ПК-1, ПК-2

 

параллельных

программ

 

 

 

 

 

 

 

2

для многопроцессорных

34

6

 

 

 

12

 

 

систем с общей памятью

 

 

 

 

 

 

 

 

(стандарт OpenMP)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Модели вычислений и

 

 

 

 

 

 

ПК-1, ПК-2

3

методы

анализа

38

6

 

 

 

12

 

 

эффективности

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Анализ

 

 

 

 

 

 

 

ПК-1, ПК-2

 

коммуникационной

 

 

 

 

 

 

 

4

трудоемкости

 

14

6

 

 

 

11

 

 

параллельных

 

 

 

 

 

 

 

 

 

алгоритмов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

Принципы

разработки

7

3

 

 

 

12

ПК-1, ПК-2

параллельных методов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

Параллельные

 

 

 

 

 

 

 

численные

алгоритмы

 

 

 

 

 

 

 

для

решения

типовых

 

 

 

 

 

 

6

задач

вычислительной

46

8

 

32

64

ПК-1, ПК-2

 

математики

для

 

 

 

 

 

 

 

многопроцессорных

 

 

 

 

 

 

 

систем с общей памятью

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

Целями выполнения РГР при изучении дисциплины «Параллельное программирование для систем с общей памятью на языке C/C++» являются:

-самостоятельное углублённое изучение отдельных разделов курса;

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

Общее задание на РГР: разработать консольное OpenMP-приложение, которое в соответствии с вариантом задания обрабатывает введённый пользователем массив исходные данных. Приложение должно содержать поясняющие текстовые надписи, в т. ч. фамилию, имя, отчество, № группы и текст задания. В течение курса со студентами проводятся индивидуальные и групповые консультации по вопросам выполнения РГР, а также по общетеоретическим вопросам, возникающим при самостоятельной работе студентов при подготовке к занятиям и выполнении РГР. Результатом выполнения РГР является пояснительная записка, описывающая проектирование приложения и программный код. При выставлении оценки (от 2,0 до 5,0 баллов) за РГР оценивается способность студента составлять алгоритм в соответствии с индивидуальным заданием и разрабатывать на его основе консольное OpenMPприложение.

В конце семестра студенты проходят электронное тестирование по всем разделам курса. В конце тестирования студент видит, в каких разделах и сколько ошибочных ответов он дал и получает балл в диапазоне от 0,0 до 5,0. Перед зачётом студентам выдаётся список примерных вопросов, по которым можно понять, на что нужно сделать упор при подготовке к экзамену.

Студент допускается к экзамену, если он сдал все лабораторные работы и РГР. При подготовке к экзамену после получения перечня вопросов рекомендуется:

1) внимательно прочитать материал лекций; 2) постараться разобраться с непонятными, в частности, новыми терминами,

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

5

3)просмотреть все лабораторные работы;

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

Перечень примерных вопросов, выносимых на экзамен:

Укажите схемы многопроцессорных систем с однородным и неоднородным доступом.

Опишите основные виды топологии сети.

Что понимается под параллельными вычислениями?

Расскажите принципы построения вычислительной сети для достижения параллелизма?

Что понимается под многозадачным режимом выполнения независимых частей программы?

Для каких параллельных алгоритмов обработка данных при распределённых вычислениях более эффективна?

Что понимается под суперкомпьютером?

Как называется группа компьютеров, объединённых в локальную сеть и способных работать в качестве единого вычислительного ресурса?

Что такое "Beowulf"?

Опишите типы систем по классификации Флинна.

Что понимается под топологией сети передачи данных?

Частным случаем какой топологии является топология "гиперкуб" ?

В каком случае два процессора имеют прямое соединение между собой в топологии "гиперкуб"?

Дайте определение понятиям «диаметр», «связность», «стоимость»?

Что понимается под понятием «паракомпьютер»?

Чему равно минимально возможное время выполнения параллельного алгоритма?

Дайте определение понятию «ускорение (speedup)»

Дайте определение понятию «эффективность (efficiency)»

Дайте определение понятию «стоимость (cost)»

Дайте определение понятию «сверхлинейное (superlinear) ускорение»

Чему равняется идеальная эффективность Ep (в предельном случае) ?

Чему равняется идеальное ускорение Sp ?

Укажите максимально возможное ускорение (согласно закону Амдаля) от использования параллелизма, если алгоритм содержит 20% последовательных команд.

В каком случае параллельный алгоритм называют масштабируемым (scalable)?

Чем характеризуются оптимальные алгоритмы маршрутизации?

Чем характеризуются детерминированные методы выбора маршрута?

Чем характеризуются адаптивные методы выбора маршрута?

Реализация какого метода передачи данных (МПП или МПС) требует

разработки более сложного аппаратного и программного обеспечения сети?

6

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

Какой метод передачи данных (МПП или МПС) в большинстве случаев приводит к более быстрой пересылке данных?

Какой метод передачи данных (МПП или МПС) требует меньший объём буфера памяти для хранения пересылаемых данных при организации приёмапередачи сообщений?

Какой архитектуре соответствует стандарт OpenMP?

С какой средой разработки (языки программирования) взаимодействует

OpenMP?

Каковы особенности распараллеливания последовательной программы с использованием OpenMP?

Перечислите принципы организации параллелизма в OpenMP

Какой номер может иметь master поток?

Перечислите все способы для указания числа потоков, которые увидит

OpenMP.

Сколько потоков увидит OpenMP, если специально их количество в программе не определять?

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

Опишите назначение и особенности использования директивы #pragma omp sections.

Опишите назначение и особенности совместного использования директив

#pragma omp parallel и #pragma omp for

Опишите назначение и особенности директивы Master

Опишите назначение и особенности директивы Single

Опишите назначение и особенности директивы Critical

Опишите назначение и особенности применения директивы Barrier

Опишите назначение и особенности применения директивы Flush

Какая функция возвращает номер потока?

Перечислите этапы при разработке параллельных алгоритмов .

В каком случае применяется агрегация подзадач на этапе масштабирования?

Может ли выполнить параллельную программу на однопроцессорном (одноядерном) компьютере?

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

Что понимается под очередью сообщений, в которую можно отправлять и извлекать данные в модели «Процессы-каналы»?

Что характерно для уровня декомпозиции с формированием максимально возможного количества подзадач?

Что характерно для уровня декомпозиции с использованием достаточно крупных подзадач?

Опишите особенности синхронного способа взаимодействия

7

Опишите особенности асинхронного способа взаимодействия

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

Что необходимо выполнить для сокращения количества подзадач на этапе масштабирования?

Для каких вычислительных систем возможно «ручное» (программистом) управление распределением нагрузки для процессоров?

Показатели оценки по зачёту представлены в таблице 2.

Таблица 2 Показатели оценки по зачёту

Показатели

Бал-

 

 

 

 

 

 

 

оценивания

 

Оценка

Критерий оценки

лы

 

компетенций

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Результаты

4,5

-

«отлично»

ставится

 

обучающемуся,

освоения

5,0

 

 

показавшему

 

глубокие

дисциплины

 

 

 

систематизированные

знания

соответствует

 

 

 

учебного материала, в полной

требованиям

 

 

 

мере

соответствующие

ФГОС

 

 

 

требованиям

 

к

уровню

 

 

 

 

подготовки

 

обучающегося,

 

 

 

 

проявившему

 

творческие

 

 

 

 

способности

в

понимании,

 

 

 

 

изложении

и

использовании

 

 

 

 

учебного

материала при

 

 

 

 

решении поставленных задач,

 

 

 

 

умеющему

 

 

обобщать

 

 

 

 

информацию,

 

 

 

 

 

 

 

аргументировано

и

 

 

 

 

практически

без

ошибок

 

 

 

 

ответившему на все вопросы.

Результаты

3,5

-

«хорошо»

ставится

 

обучающемуся,

освоения

4,4

 

 

продемонстрировавшему

дисциплины

 

 

 

достаточно

полные

знания

соответствует

 

 

 

учебного материала,

в целом

требованиям

 

 

 

соответствующие

 

ФГОС

 

 

 

требованиям

 

к

уровню

 

 

 

 

подготовки

 

обучающегося,

 

 

 

 

способность

 

 

к

их

 

 

 

 

самостоятельному

 

 

 

 

 

восполнению и обновлению в

 

 

 

 

ходе решения

поставленных

 

 

 

 

задач,

 

 

 

умение

 

 

 

 

систематизировать

 

 

 

 

 

информацию,

допустившему

 

 

 

8

 

 

 

 

 

 

Показатели

 

Бал-

 

 

 

 

 

 

 

 

 

 

оценивания

 

 

Оценка

 

Критерий оценки

 

 

 

лы

 

 

 

 

компетенций

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

негрубые

 

ошибки

и

 

 

 

 

 

 

 

недочеты.

 

 

 

 

 

 

Результаты

 

2,5

-

«удовлетворите

ставится

 

обучающемуся,

 

 

освоения

 

3,4

 

льно»

показавшему уровень знаний

 

 

дисциплины

 

 

 

 

учебного материала в объёме,

 

 

соответствует

 

 

 

 

минимально

необходимом

 

 

требованиям

 

 

 

 

для

решения

поставленных

 

 

ФГОС

 

 

 

 

задач,

знание

 

основ

 

 

 

 

 

 

 

дисциплины,

владеющего

 

 

 

 

 

 

 

навыками

 

логического

 

 

 

 

 

 

 

мышления

и

допустившему

 

 

 

 

 

 

 

непринципиальные

ошибки

 

 

 

 

 

 

 

при ответе на вопросы.

 

 

 

Результаты

 

0,0

-

«не

ставится

 

обучающемуся,

 

 

освоения

 

2,4

 

удовлетворител

показавшему

существенные

 

 

дисциплины

НЕ

 

 

ьно»

пробелы в знании основного

 

 

соответствует

 

 

 

 

учебного

 

материала,

 

 

требованиям

 

 

 

 

допустившему

 

 

 

 

ФГОС

 

 

 

 

принципиальные ошибки при

 

 

 

 

 

 

 

применении знаний,

которые

 

 

 

 

 

 

 

не позволяют ему приступить

 

 

 

 

 

 

 

к

решению

поставленных

 

 

 

 

 

 

 

задач без

дополнительной

 

 

 

 

 

 

 

подготовки.

 

 

 

 

 

Перечень основной и дополнительной учебной литературы, необходимой

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

 

 

 

 

 

 

 

 

 

 

Основная литература:

 

 

 

 

 

 

 

 

 

1.Кислицын Д.И. Параллельное программирование на OpenMP [Электронный ресурс]: учебно-методическое пособие по выполнению лабораторных работ для обучающихся по дисциплине «Параллельное программирование для систем с общей памятью на языке C/C++» по направлению подготовки 09.03.02 Информационные системы и технологии, без профиля. Н. Новгород: ННГАСУ, 2016.

2.Алексеев А. А. Основы параллельного программирования с использованием Visual Studio 2010 : учебное пособие. Москва: ИнтернетУниверситет Информационных Технологий (ИНТУИТ), 2013.

3.Гергель В. П. Intel Parallel Programming Professional (Introduction):

учебное пособие. Москва : Интернет-Университет Информационных Технологий

(ИНТУИТ), 2012.

9

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]