2

I have a problem with mpi_Bcast. I want to sent an array of calculate how many numbers are per process to another process and the random process don't recive anything and crash(the process rank 2 and last-1).The number per process can be differ aboout 1. Can anybody help my ?

#include <stdio.h>          // printf
#include <mpi.h>
#include <stdlib.h>         
#include <time.h>  
#include <iostream>
#include "EasyBMP.h"

using namespace std;

int main(int argc, char **argv) {

    MPI_Init(&argc, &argv);
    int rank, size;

    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);

    int* per_process = new int[size];

    for (int i = 0; i < size; i++){
            per_process[i] = 0;
        }

    if (rank == 0){


        for (int i = 0; i < size; i++){
            int default_for_process = 12 / size;
            int rest = 12 % size;

            if (i < rest){
                default_for_process++;

            }
            per_process[i] = default_for_process;
        }

    }


    MPI_Bcast(&per_process, size, MPI_INT, 0, MPI_COMM_WORLD);


    for (int i = 0; i < size; i++){
        cout <<rank<<" "<< per_process[i];
    }
    cout << endl;

    MPI_Finalize();
    return 0;
}
Przemysław Zamorski
  • 741
  • 2
  • 14
  • 31

0 Answers0