Вычислительный центр им. А.А. Дородницына РАН    

Раздел виртуального курса
Параллельное программирование в интерфейсе MPI


Лабораторная работа № 4:
MPI коллективный обмен сообщениями I


Содержание


Предварительные требования

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


Цели

Упражнение 1 лабораторной работы ознакомит вас с основными функциями коллективной коммуникации: операциями широкой рассылки (broadcast), сбора (gather) и глобального приведения (global reduction).

В упражнении 2 требуется вычислить π.

В упражнении 3 изучается метод Лапласа.


Упражнение 1


Рабочий файл на C: ex1.c
Название рабочего файла на С для записи решения: ex1_solved.c
Название файла С для записи решения C: ex1_c.data
Файл входных данных для программы на C: c.seed
Файл построения C программы: ex1_c.mak

Структура этой программы следующая:

Пожалуйста, при выполнении упражнения следуйте таким шагам :

  1. Просмотрите программу с тем, чтобы идентифицировать какие отделы программы соответствуют каждому элементу структуры, перечисленным выше. Отметьте, в частности, сервисную функцию GetStats, которую используют, чтобы вычислить максимальное значение и стандартное отклонение массива чисел.

  2. Вставьте соответствующие вызовы функций коллективной коммуникации в MPI в указанных точках.

  3. Используя программу WinSCP скопируйте файл ex1_solved.c в вашу директорию на кластерном компьютере.

  4. Откомпилируйте программу, используя командную строку
    mpicc -o ex1_solved.exe ex1_solved.c -lm
    или соответствующий файл построения, например:
    nmake /f ex1_c.mak
    Ключ -lm указывает на необходимость прикрепления математической библиотеки.

  5. Определитесь как много задач вы желаете использовать (от 1 до 8).

  6. С помощью SSH клиента (putty.exe) запустите программу на счет из командной строки
    mpirun -np 4 ex1_solved.exe -maxtime 5
    Здесь выбрано 4 задачи и установлено максимальное время счета, после которого программа будет удалена в случае зацикливания. (Указание максимального допустимого времени счета, это обязательное требование!)

  7. Скопируйте выходной файл на ваш компьютер.


Упражнение 2:

Вычисление π


Краткая аннотация

Существует два примера программ для вычисления π:

Описание проблемы


Параллелная реализация


Инструкции по компиляции и запуску dboard_pi

Files:

Откомпилируйте используя файл построения:

Для C:

nmake /f pi_c.mak

Определитесь с числом узлов для выполнения и исполните одну из учебных программ:

pi_send.exe

or

pi_reduce.exe


Инструкции по компиляции и запуску int_pi

Файлы:


Компиляция кода:

mpicc int_pi2.c -o int_pi2.exe -maxtime 5

или:

nmake /f int_pi_c.mak

Определитесь как много узлов использовать и выполните программу-мастер:

int_pi2.exe

Упражнение 3:

Метод Лапласа


Краткая аннотация

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


Обсуждение задачи

Эта программа использует схему конечных разностей для решения уравнения Лапласа для квадратной матрицы, размерность которой должна быть (4m+2) x (4m+2).


Параллельная реализация

Теперь формируется программа , чтобы сделать матрицу размерности 48x48 разделенной не менее, чем на четыре процессора.

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

Каждый рабочий обменивает краевые значения с его четырьмя соседями. Тогда новые значения рассчитываются для верхнего левого и нижнего правого углов ("красных" углов) матрицы у каждого узла. Рабочие обменивают краевые значения снова. Затем рассчитываются верхний правый и нижний левый углы ("черные" углы) .

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


Инструкции по компиляции и запуску
    файлы C:

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

    nmake /f parallel_laplace.mak

  2. Отпределите 4 процессора для запуска программы (mpirun -np 4 ...)

  3. Выполнить программу parallel_laplace.exe.
    mpirun -np 4 parallel_laplace.exe -maxtime 3
    Результаты запомнить в parallel_laplace.out.

Очистка

После завершения работы программ и отправки решения преподавателю не забудьте очистить ваш рабочий каталог на кластерном компьютере ВЦ РАН. Исходные тексты программ можно хранить на сервере Fast в вашем каталоге.


© 2003 Вычислительный центр им. А.А.Дородницына Все права защищены.
Прочтите наше Copyright руководство.