8654
.pdfМинистерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
«Нижегородский государственный архитектурно-строительный университет»
Д. И. Кислицын
ОСНОВЫ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ MPI
Учебно-методическое пособие
по выполнению лабораторных работ для обучающихся по дисциплине «Основы параллельных вычислений для систем с распределённой памятью» по направлению подготовки 09.03.02 Информационные системы и технологии, без профиля
Нижний Новгород
2016
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
«Нижегородский государственный архитектурно-строительный университет»
Д. И. Кислицын
ОСНОВЫ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ MPI
Учебно-методическое пособие
по выполнению лабораторных работ для обучающихся по дисциплине «Основы параллельных вычислений для систем с распределённой памятью» по направлению подготовки 09.03.02 Информационные системы и технологии, без профиля
Нижний Новгород ННГАСУ
2016
УДК
Кислицын Д. И./ Основы параллельного программирования с использованием технологии MPI [Электронный ресурс]: учеб. – метод. пос./ Д. И. Кислицын; Нижегор. гос. архитектур. – строит. ун-т – Н. Новгород: ННГАСУ, 2016. - ___ с. 1 электрон. опт. диск (CD-R)
В методических указаниях представлены задания и пояснения к выполнению лабораторных работ в среде разработки Microsoft Visual С++ с поддержкой технологии MPI в рамках курса «Основы параллельных вычислений для систем с распределённой памятью».
Д. И. КислицынННГАСУ. 2016.
Введение
В настоящее время технология MPI (The Message Passing Interface –
Интерфейс передачи сообщений) является основным средством программирования для кластерных систем и компьютеров с распределённой памятью. MPI является библиотекой функций обмена данными между процессами, реализованная для языков С и Fortran. Головной организацией проекта MPI является Аргонская национальная лаборатория США [1]. После появления первой версии стандарта MPI в мае 1994 года MPI получил широкое распространение в мире. В настоящее время стандарт MPI адаптирован для большинства суперЭВМ и кластеров, в том числе и в России [2]. Благодаря простоте технической реализации кластеров на базе локальных сетей сотни университетов используют MPI для учебных и научных целей.
Настоящие методические указания ориентированы на работу в сетях персональных ЭВМ под управлением операционной системы Windows с использованием языка С++.
Дополнительную информацию о стандарте MPI можно найти в работах Воеводина В.В. [3], Антонова А.С. [4] и Немнюгина С.А. [5], а также на тематической странице Научно-исследовательского вычислительного центра МГУ в сети Интернет (http://www.parallel.ru).
Требования к выполнению работ
При подготовке к лабораторной работе студенту необходимо изучить соответствующие разделы лекционного курса. Сводный перечень некоторых MPIфункций приведён в ПРИЛОЖЕНИИ 4. В ходе выполнения каждой лабораторной работы студент должен подготовить письменный отчет, включающий:
номер, тему и цель лабораторной работы;
перечень заданий работы;
входные и выходные данные для каждого задания;
блок-схему последовательной программы;
тексты последовательной и параллельной программ;
таблицу и графики с результатами вычислений;
общие выводы по результатам лабораторной работы.
ЛАБОРАТОРНАЯ РАБОТА № 1
Тема: Создание простейшего консольного многопоточного Windowsприложения в среде Visual С++ 2010 для систем с распределённой памятью.
Цель работы: Знакомство со средой Visual С++ 2010. Создание консольного многопоточного Windows-приложения в среде Visual С++ 2010 на основе технологии MPI.
Лабораторная работа состоит из шести последовательно выполняемых заданий.
1.Создать пустой проект консольного Windows – приложения в среде Visual
С++.
2.Написать последовательную программу, выводящую на экран сообщение: “Hello World!”.
3.Написать параллельную программу, в которой каждый процесс выводит на экран сообщение: “Hello World!”.
4.Модифицировать программу из Задания 3 так, чтобы процессы выводили на экран сообщение: “Hello World!” и свой порядковый номер, а нулевой процесс дополнительно выводил бы общее количество процессов.
5.Модифицировать программу из Задания 4 так, чтобы порядковый номер выводился в порядке возрастания.
6.Запустить параллельную программу на нескольких вычислительных узлах кластера.
Порядок выполнения работы
1.Создание нового проекта.
1.1.Запустить среду разработки MS Visual Studio 2010.
1.2.Создать новый проект, используя следующие пункты меню: Файл – Создать – Проект (File - New - Project) см. рис.1.
Рис. 1. Создание нового проекта
1.3.Указать тип нового проекта: Visual С++ (рис. 2.).
|
Рис. 2. Выбор типа проекта |
|
|
1.4. Указать |
шаблон, |
на |
основе |
которого создаётся проект: Консольное приложение Win32 (Win32Console Application).
1.5.Ввести имя (Name) создаваемого проекта: WindowsApplication_N , где N – идентификатор пользователя (например, фамилия). При необходимости кнопкой Browse можно изменить расположение (Location) файлов проекта на диске. Рекомендуется сохранять в папку с номером Вашей группы.
1.6.После нажатия кнопки ОК появится окно мастера настройки проекта (рис. 3) – нажмите кнопку Далее (Next).
Рис. 3. Мастер настройки проекта
1.7. В окне настройки параметров приложения укажите Консольное приложение (Console application) и Пустой проект (Empty project) и нажмите кнопку Готово (Finish) см. рис. 4.
Рис. 4. Настройка проекта
1.8. В появившемся окне Обозревателя решений (Solution Explorer) на рис. 5 добавьте новый cpp-файл в Файлы исходного кода (Source Files) через контекстное меню Добавить – Создать элемент (Add – New Item) см. рис. 6. В
открывшемся окне выберите C++ File, укажите имя создаваемого файла и нажмите кнопку Добавить (Add) см. рис. 7.
Рис. 5. Дерево проекта
Рис. 6. Добавление нового файла
Рис. 7. Указание типа и имени файла
2. Написание последовательной программы, выводящей на экран сообщение: “Hello World!”.
2.1. Для вывода сообщений на экран воспользуемся функцией printf(). Для этого командой include подключим библиотеку stdio.h:
#include <stdio.h>
2.2. Вывод сообщения опишем в функции main():
int main () {
printf("Hello World!\n");
}
2.3. Сборка программы выполняется командой Построить решение (Build Solution) из меню Построение (Build) см. рис. 8.