I have an int I intend to translate from root ( rank==(FIELD=0) ).
int winner if (rank == FIELD) { winner = something; } MPI_Barrier(MPI_COMM_WORLD); MPI_Bcast(&winner, 1, MPI_INT, FIELD, MPI_COMM_WORLD); MPI_Barrier(MPI_COMM_WORLD); if (rank != FIELD) { cout << rank << " informed that winner is " << winner << endl; }
But it looks like I'm getting
[JM:6892] *** An error occurred in MPI_Bcast [JM:6892] *** on communicator MPI_COMM_WORLD [JM:6892] *** MPI_ERR_TRUNCATE: message truncated [JM:6892] *** MPI_ERRORS_ARE_FATAL: your MPI job will now abort
Found that I can increase the buffer size in Bcast
MPI_Bcast(&winner, NUMPROCS, MPI_INT, FIELD, MPI_COMM_WORLD);
Where NUMPROCS is the number of running processes. (it actually seems that I just need it to be 2). Then it starts, but gives an unexpected result ...
1 informed that winner is 103 2 informed that winner is 103 3 informed that winner is 103 5 informed that winner is 103 4 informed that winner is 103
When I cout winner , it should be -1
c ++ mpi openmpi
Jiew Meng Nov 08 2018-12-12T00: 00Z
source share