Я не очень разбираюсь в Open MPI. Вот нашла программный код похожего задания, но не знаю как его переделать. Помогите пожалуйста. Вот задание: Написать программу на С, используя Open MPI: Запущено n процессов, каждый из которых знает некоторое магическое число. Требуется обнаружить максимальное из магических чисел и сообщить его пользователю с указанием номера процесса-владельца. Магическое число определить как некоторую произвольную функцию от номера процесса. Решить задачу,используя парадигму «управляющий-рабочий». Максимальное магическое число с номером процесса-владельца в результате должен знать каждый процесс.
Код | #include <mpi.h> #include <stdio.h> #include <cstdlib> #include <ctime>
int main() {
MPI_Init(NULL, NULL); int world_size; MPI_Comm_size(MPI_COMM_WORLD, &world_size); int world_rank; MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); int randoms[world_size]; for(int j = 0; j < world_size; j++) { randoms[j] = rand() % 300; } if(world_rank != 0) { srand(time(0)); int cost = randoms[world_rank]; MPI_Ssend(&cost, 1, MPI_INT, 0, 0, MPI_COMM_WORLD); } int offers[world_size]; int cost; if(world_rank == 0) { for(int i = 1; i < world_size; i++) { MPI_Recv(&cost, 1, MPI_INT, i, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); offers[i] = cost; printf("received cost %d from bidder #%d\n", offers[i], i); } int max_cost = 0; int winner_index = 0;
for(int i = 1; i < world_size; i++) { if(max_cost < offers[i]) { max_cost = offers[i]; winner_index = i; } } printf("\n------\nbidder #%d wins with cost %d$\n", winner_index, max_cost);
} MPI_Finalize();
return 0; }
|
|