Технология MPI
Задача 1: "Простая программа на MPI"
Входные данные: нет
Выходные данные: выводятся на экран
Создайте параллельную параллельную программу с помощью MPI, в которой
каждый процесс выводит на экран свой номер. Кроме того, процесс с номером 0 должен вывести общее
количество процессов.
Указания:
- Создайте проект в MS Visual Studio согласно
инструкции.
- Чтобы узнать количество процессов в приложении воспользуйтесь функцией
MPI_Comm_size.
- Чтобы узнать номер (ранг) процесса в приложении воспользуйтесь функцией
MPI_Comm_rank.
Входные данные
нет
Выходные данные
От каждого процесса - строка "I'm process <номер_процесса>". От нулевого процесса
- дополнительно строка "Number of processes <количество_процессов>".
Примеры входных и выходных данных
Входные данные |
Выходные данные для 3 процессов |
- |
I'm process 0 I'm process 1 I'm process 2 Number of processes 3 |
Задача 2: "Пинг-Понг"
Входные данные: нет
Выходные данные: выводятся на экран
Напишите параллельную программу, в которой два процесса обмениваются между собой сообщениями следующим образом:
- Первый процесс отправляет второму сообщение. После этого выодит на экран
"I'm process <номер_процесса>. Sent message to <номер_процесса_получателя>".
- Второй процесс принимает сообщение от первого процесса и только после
этого отправляет свое сообщение первому процессу. При этом выводит на экран
"I'm process <номер_процесса>. Received message from <номер_процесса_отправителя>" и
"I'm process <номер_процесса>. Sent message to <номер_процесса_получателя>" после наступления
соответствующих событий.
- Первый процесс принимает сообщение от второго проццесса. После выводит на экран
"I'm process <номер_процесса>. Received message from <номер_процесса_отправителя>"
Указания:
- Для обмена сообщениями воспользуйтесь блокирующей функцией MPI_Send.
Входные данные
нет
Выходные данные
От каждого процесса - строки "I'm process <номер_процесса>.
Sent message to <номер_процесса_получателя>" и "I'm process <номер_процесса>.
Received message from <номер_процесса_отправителя>".
Примеры входных и выходных данных
Входные данные |
Выходные данные |
- |
I'm process 0. Sent message to 1
I'm process 1. Received message from 0
I'm process 1. Sent message to 0
I'm process 0. Received message from 1 |
Задача 3: "Эстафетная палочка"
Входные данные: -
Выходные данные: выводятся на экран
Напишите параллельную программу, в которой N-процессов передают друг
другу сообщение по принципу эстафетной палочки: 0-й отправляет 1-му, 1-й отправляет 2-му, ..., N-1-й отправляет N-му,
N-й отправляет 0-му.
Указания:
- Для обмена сообщениями воспользуйтесь блокирующей функцией MPI_Send или MPI_Sendrecv.