MPI_ERR_TRUNCATE: em transmissão

eu tenho umint Eu pretendo transmitir da raiz (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;
}

Mas parece que eu recebo

[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

Descobri que posso aumentar o tamanho do buffer emBcast

MPI_Bcast(&winner, NUMPROCS, MPI_INT, FIELD, MPI_COMM_WORLD);

OndeNUMPROCS é o número de processos em execução. (na verdade parece que eu só preciso que seja 2). Então corre, mas dá saída inesperada ...

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

Quando eucout awinner, deveria ser-1

questionAnswers(1)

yourAnswerToTheQuestion