- •Федеральное агенство связи Поволжская государственная академия телекоммуникаций и информатики
- •Введение
- •Реализация и настройка кластера интерфейса mpi в среде ms Windows 9x/nt/xp
- •Рекомендуемая литература
- •Лабораторная работа № 1 Компиляция программ, использующих интерфейс mpi
- •Подготовка к работе
- •Контрольные вопросы
- •3. Задание
- •4. Методические указания
- •4. Листинг программы
- •5. Примечания
- •Лабораторная работа № 2 Использование функции групповой рассылки данных
- •Подготовка к работе
- •Контрольные вопросы
- •3. Задание
- •4. Методические указания
- •5. Примечания
- •Лабораторная работа № 3 Вычисление числа π
- •Подготовка к работе
- •Контрольные вопросы
- •Задание
- •4. Методические указания
- •5. Пример выполнения
- •6. Примечания
- •Лабораторная работа № 4 Передача данных отдельным процессам
- •Задание
- •Методические указания
- •Алгоритм
- •Пример выполнения
- •Лабораторная работа № 5 Матричные вычисления
- •Контрольные вопросы
- •Приложение а
- •Приложение в Краткий справочник функций mpi
- •Сообщения «точка-точка»
- •Групповые сообщения
- •Типы пересылаемых данных
- •Аргументы
Рекомендуемая литература
Немнюгин С.А., Стесик О.Л. Параллельное программирование для многопроцессорных вычислительных систем. – Спю.: БХВ-Петербург, 2002.
2. А. С. Антонов «Введение в параллельные вычисления»
http://parallel.ru/tech/tech_dev/antonov.pdf
3. А. С. Антонов «Практический курс MPI»
http://parallel.ru/tech/tech_dev/MPIcourse/
Русскоязычная страница МРI
http://parallel.ru/tech/tech_dev/mpi.html
Стандарт MPI-1.1 (на английском)
http://parallel.ru/docs/Parallel/mpi1.1/mpi-report.html
4. Воеводин Вл.В. Лекция по MPI
http://parallel.ru/vvv/mpi.html
MPICH official page
http.//www-unix.mcs.anl.gov/mpi/mpich/
MPI:The Complete Reference
http://www.netlib.org/utk/papers/mpi-book/mpi-book/html
Лабораторная работа № 1 Компиляция программ, использующих интерфейс mpi
Подготовка к работе
Необходимо иметь в наличие работающий кластер на базе MPICH. Так же необходимо иметь пакет разработки MS Visual C++ 6.0 или более новую версию.
Контрольные вопросы
Что должно выполняться на компьютере, чтобы он мог быть хостом кластера?
Чем является хост кластера?
Как происходит настрофка хостов кластера?
Поясните назначение каждой MPI функции в программе Hello world.
Поясните ход работы данной программы.
Зачем данной программе требуется библиотека mpich.lib и заголовок mpi.h ?
Объясните, чем технологически отличается данная программа, от любой другой не MPI программы.
Чем отличается Release версия от Debug и зачем нужно такое разделение?
Что предоставляет SDK из поставки MPICH?
3. Задание
Скомпилировать программу "Hello world" с использованием MPI интерфейса
Программа должна Вывести "Hello world" от каждого процесса. Так же надо будет вывести номер процесса и имя компьютера, на котором этот процесс запущен.
Для этого требуется написать программу с использованием следующих функций MPI:
MPI_Init |
Для запуска MPI интерфейса |
MPI_Comm_size |
Для получения количества процессов в кластере |
MPI_Comm_rank |
Для получения номера процесса в кластере |
MPI_Get_processor_name |
Для получения имени компьютера, на котором находится процесс |
MPI_Finalize |
Для завершения работы с MPI |
Для этого необходимо скомпилировать ниже приведенный листинг программы в пакете MS Visual C++
4. Методические указания
Для компиляции данной программы, мы будем использовать Microsoft Visual С++ 6.0.
Для начала следует создать новый проект.
FileNew… Во вкладке Projects выбирается Win32 console application. После чего пишется название проекта (hello), и путь к файлам.
Выбирается Empty Project.
В проект требуется добавить пустой файл. Нажмите FileNew… выбираем C++ Source File и даем ему имя “hello”.
После этого – переписываем листинг программы в данный файл.
Теперь следует установить пути до файлов mpi.h и до mpich.lib
Заходим в свойства проекта (Alt+F7), выбираем вкладку C/C++, категорию Preprocessor, и в строку Additionals include directories, вводим путь до include файлов. Обычно путь выглядит как %PROGRAMFILES%\mpich\sdk\include\.
Переходим во вкладку Link, в строке Object/library modules необходимо ввести имя библиотеки mpich.lib. В этой библиотеке хранятся все функции вызовов MPI интерфейса.
После, в этом же окне, переходим к вкладке Input. В строке Additional library path: вводим путь к директории с файлами *.lib библиотеки MPICH. Они находятся по тому же пути что и заголовки: %PROGRAMFILES%\mpich\sdk\lib
Далее – запускаем компиляцию проекта. Для этого нажимаем F7. В результате, в окошке Build должно быть примерно следующее:
--------------------Configuration: hello - Win32 Debug--------------------
Compiling...
hello.cpp
Linking...
hello.exe - 0 error(s), 0 warning(s)
Если у вас то же самое – значит программа скомпилирована успешно.
Скопируем файл hello.exe из папки Debug в папке вашего проекта, и скопируем его в общую папку для параллельных программ.
Запускаем данную программу – согласно с указаниями, данными в первой л/р.
Настройте и скомпилируйте Release вариант программы. Данный релиз не должен содержать никакой отладочной информации, а так же должен быть максимально оптимизирован
