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

6225

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

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

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

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

ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ ДЛЯ СИСТЕМ С РАСПРЕДЕЛЁННОЙ ПАМЯТЬЮ

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

по выполнению лабораторных работ для обучающихся по дисциплине «Информационные системы в распределенных вычислительных средах»

по направлению подготовки 09.04.02 Информационные системы и технологии, направленность (профиль) Технология разработки информационных систем

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

2022

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

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

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

ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ ДЛЯ СИСТЕМ С РАСПРЕДЕЛЁННОЙ ПАМЯТЬЮ

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

по выполнению лабораторных работ для обучающихся по дисциплине «Информационные системы в распределенных вычислительных средах»

по направлению подготовки 09.04.02 Информационные системы и технологии, направленность (профиль) Технология разработки информационных систем

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

2022

УДК 681.3 (075)

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

Приводятся цели, задания и порядок выполнения лабораторных работ, а также контрольные вопросы в конце каждой лабораторной работы.

Предназначено для обучающихся в ННГАСУ по дисциплине «Параллельное программирование для систем с распределённой памятью» по направлению подготовки 09.04.02 Информационные системы и технологии, направленность (профиль) Технология разработки информационных систем.

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

Лабораторная работа № 1 «Развёртывание MPI-кластера»

Цель работы: Научиться развёртывать MPI-кластер в локальной компьютерной сети на базе свободно распространяемого пакета MPICH2.

Задание 1. Установить на выбранные компьютеры локальной сети программный пакет MPICH2.

Задание 2. Настроить MPICH2, сохранив с помощью утилиты Wmpiregister логин и пароль для mpi-сети в реестре ОС. После установки и настройки MPICH2 на всех выбранных компьютерах с помощью утилиты Wmpiconfig проверьте доступность всех вычислительных узлов созданного кластера.

Задание 3. С помощью утилиты Mpiexec запустить mpi-приложение cpi.exe, поставляемое вместе с пакетом MPICH2, сначала на локальном вычислительном узле (с опцией -localonly), а затем на нескольких вычислительных узлах кластера.

Задание 4. Провести 15 экспериментов, изменяя число процессов и количество элементов интервалов разбиения так, чтобы для каждой конфигурации вычислительной системы (количества процессов) было выполнено по пять вычислений с разным количеством интервалов разбиения. Каждый процесс должен выполняться на одном процессоре (ядре). Количество элементов выбирайте таким образом, чтобы время выполнения алгоритмов составляло не менее 20 секунд. Результаты экспериментов занесите в Таблицу 1. По данным таблицы 1 постройте графики зависимостей ускорения и эффективности от числа интервалов разбиения. На основе полученных данных проанализируйте эффективность параллельного алгоритма.

 

 

 

 

 

Таблица 1

 

 

 

 

 

 

 

Кол-во

Кол-во

Время

Время

Ускор

Эффек

 

процессов /

элемен

выполнения

выполнения

ение

тивнос

 

вычислител

тов

последователь

параллельного

(Sp)

ть (Ep)

 

ьных узлов

вектор

ного

алгоритма

 

 

 

кластера

ов (n)

алгоритма

(Tp), сек

 

 

 

 

 

(T1), сек

 

 

 

 

2/1

 

 

 

 

 

 

2/1

 

 

 

 

 

 

2/1

 

 

 

 

 

 

2/1

 

 

 

 

 

 

2/1

4/2

4/2

4/2

4/2

4/2

6/3

6/3

6/3

6/3

6/3

Контрольные вопросы

1.Какое требование предъявляется к паролю, вводимому на форме «Process Manager Setup», при установке MPICH2 на вычислительные узлы кластера?

2.Как проверить работоспособность на вычислительном узле службы MPICH2 Process Manager?

3.Что означает зелёный и серый цвета фона в списке вычислительных узлов кластера в утилите Wmpiconfig?

4.Как при запуске mpi-приложения из утилиты Mpiexec в строке Application правильно задать путь к запускаемому mpi-приложению, расположенному в общей сетевой папке?

Лабораторная работа № 2

«Создание консольного многопоточного Windows-приложения»

Цель работы: Знакомство со средой Visual Studio С++. Создание консольного многопоточного Windows-приложения на основе технологии MPI.

Задание 1. Написать последовательную программу, выводящую на экран сообщение: “Hello World!”.

Задание 2. Написать параллельную программу, в которой каждый процесс выводит на экран сообщение: “Hello World!”.

Задание 3. Модифицировать программу из Задания 2 так, чтобы процессы выводили на экран сообщение: “Hello World!” и свой порядковый номер, а нулевой процесс дополнительно выводил бы общее количество процессов.

Задание 4. Модифицировать программу из Задания 3 так, чтобы порядковый номер выводился в порядке возрастания.

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

Контрольные вопросы

1.Чем процесс отличается от процессора?

2.Какую функцию Вы использовали для определения номера процесса?

3.С помощью какой функции Вы получаете сообщение от другого процесса?

4.Какую функцию Вы использовали для определения общего количества процессов?

5.Что нужно изменить в функции приёма сообщений, чтобы они принимались в порядке возрастания?

Лабораторная работа № 3 «Изучение работы функции широковещательной рассылки»

Цель работы: Изучение mpi-функций приёма и передачи сообщений между двумя процессами, а также широковещательной рассылки.

Задание 1. Написать последовательную программу, вычисляющую суммы элементов двух n-мерных векторов Ci=Ai+Bi, где 1 ≤ i ≤ n.

Задание 2. Написать параллельную программу на основе технологии MPI, в которой элементы векторов А и В распределяются по процессам и суммируются, при этом n=10, а число процессов равно двум.

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

Задание 4. Провести 15 экспериментов, изменяя число процессов и количество элементов векторов так, чтобы для каждой конфигурации вычислительной системы (количества процессов) было выполнено по пять вычислений с разным количеством элементов векторов. Каждый процесс должен выполняться на одном процессоре (ядре). Количество элементов выбирайте таким образом, чтобы время выполнения алгоритмов составляло не менее 20 секунд. Результаты экспериментов занесите в Таблицу 2. По данным таблицы 2 постройте графики зависимостей ускорения и эффективности от числа процессов. На основе полученных данных проанализируйте эффективность параллельного алгоритма.

 

 

 

 

 

Таблица 2

 

 

 

 

 

 

 

Кол-во

Кол-во

Время

Время

Ускор

Эффек

 

процессов /

элемен

выполнения

выполнения

ение

тивнос

 

вычислител

тов

последователь

параллельного

(Sp)

ть (Ep)

 

ьных узлов

вектор

ного

алгоритма

 

 

 

кластера

ов (n)

алгоритма

(Tp), сек

 

 

 

 

 

(T1), сек

 

 

 

 

2/1

 

 

 

 

 

 

2/1

 

 

 

 

 

 

2/1

 

 

 

 

 

 

2/1

 

 

 

 

 

 

2/1

 

 

 

 

 

 

4/2

4/2

4/2

4/2

4/2

6/3

6/3

6/3

6/3

6/3

Контрольные вопросы

1.Опишите назначение и синтаксис функции широковещательной рассылки.

2.Как с помощью парных функций приёма и передачи сообщений передать массив элементов?

3.Как с помощью функции широковещательной рассылки передать всем процессам коммуникатора массив элементов?

4.Как вычисляется ускорение параллельного алгоритма?

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

Лабораторная работа № 4 «Вычисление числа Пи»

Цель работы: Изучение коллективной операции передачи данных от всех процессов одному процессу (операции редукции) – функция MPI_Reduce ().

Задание 1. Написать последовательную программу, вычисляющую число Пи по формуле:

.

Задание 2. Написать параллельную программу, вычисляющую число Пи, распараллелив выполняемые операции в цикле.

Построить графики зависимости времени выполнения последовательного и параллельного алгоритмов от количества интервалов разбиения (N) и числа процессов. Проанализировать эффективность параллельного алгоритма.

Задание 3. Провести 15 экспериментов, изменяя число процессов и количество интервалов разбиения так, чтобы для каждой конфигурации вычислительной системы (количества процессов) было выполнено по пять вычислений с разным количеством элементов интервалов разбиения. Каждый процесс должен выполняться на одном процессоре (ядре). Количество интервалов выбирайте таким образом, чтобы время выполнения алгоритмов составляло не менее 20 секунд. Результаты экспериментов занесите в Таблицу 3. По данным таблицы 3 постройте графики зависимостей ускорения и эффективности от числа процессов. На основе полученных данных проанализируйте эффективность параллельного алгоритма.

 

 

 

 

 

Таблица 3

 

 

 

 

 

 

 

Кол-во

Кол-во

Время

Время

Ускор

Эффек

 

процессов /

элемен

выполнения

выполнения

ение

тивнос

 

вычислител

тов

последователь

параллельного

(Sp)

ть (Ep)

 

ьных узлов

вектор

ного

алгоритма

 

 

 

кластера

ов (n)

алгоритма

(Tp), сек

 

 

 

 

 

(T1), сек

 

 

 

 

2/1

 

 

 

 

 

 

2/1

 

 

 

 

 

 

2/1

 

 

 

 

 

 

2/1

2/1

4/2

4/2

4/2

4/2

4/2

6/3

6/3

6/3

6/3

6/3

Контрольные вопросы

1.Каким методом Вы определяли площадь подынтегральной кривой f(x)=4/(1+х2)?

2.От чего зависит точность вычисления числа Пи при использовании определённого интеграла?

3.Использовали ли Вы в Вашем алгоритме функцию сбора данных со всех процессов и выполнения над ними операции редукции?

4.При любом ли количестве интервалов разбиения ускорение разработанного Вами параллельного алгоритма было больше 1? От чего это зависит?

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