Время выполнения не выводится

Время выполнения не выводится, вроде ошибок нет Само задание

Реализовать программу с использованием технологии mpi.

В транспьютерной матрице размером 4x4, в каждом узле которой находится один процесс, необходимо выполнить операцию сбора данных (длиной 4 байта) от всех процессов для одного (MPI_GATHER) - процесса с координатами (0,0). Реализовать программу, моделирующую выполнение операции MPI_GATHER на транспьютерной матрице при помощи пересылок MPI типа точка-точка. Получить временную оценку работы алгоритма. Оценить сколько времени потребуется для выполнения операции MPI_GATHER, если все процессы выдали ее одновременно. Время старта равно 100, время передачи байта равно 1 (Ts=100,Tb=1). Процессорные операции, включая чтение из памяти и запись в память, считаются бесконечно быстрыми.

Команды для компиляции программы: mpicc gather.c -o gather mpirun -n 16 ./gather

#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>

#define MATRIX_SIZE 4

int main(int argc, char** argv) {
    int rank, size;
    int data[MATRIX_SIZE][MATRIX_SIZE];
    int recv_data[MATRIX_SIZE*MATRIX_SIZE];
    int i, j;

    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);

    if (rank == 0) {
        printf("Start the timer...\n");
        double start_time = MPI_Wtime();
        
        // Gather data from all processes
        for (i = 0; i < size; i++) {
            MPI_Recv(recv_data+i*MATRIX_SIZE, MATRIX_SIZE, MPI_INT, i, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
        }
        
        double end_time = MPI_Wtime();
        printf("Elapsed time = %lf seconds.\n", end_time - start_time);
    }
    else {
        // Send data to process 0
        for (i = 0; i < MATRIX_SIZE; i++) {
            MPI_Send(data[i], MATRIX_SIZE, MPI_INT, 0, 0, MPI_COMM_WORLD);
        }
    }

    MPI_Finalize();
    return 0;
}

Ответы (0 шт):