I have an int I intend to broadcast 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 appears I get [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 number of running processes. (actually seems like I just need it to be 2). Then it runs, but gives unexpected output ... 1 informed that winner is 1032 informed that winner is 1033 informed that winner is 1035 informed that winner is 1034 informed that winner is 103 When I cout the winner, it should be -1 Whats wrong? In a simple try, it appears to work: MPI_Init(NULL, NULL); MPI_Comm_size(MPI_COMM_WORLD, &numProcs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { srand(time(NULL)); tmp = (rand() % 100) + 1; cout << "generated " << tmp << endl; } MPI_Barrier(MPI_COMM_WORLD); MPI_Bcast(&tmp, 1, MPI_INT, 0, MPI_COMM_WORLD); MPI_Barrier(MPI_COMM_WORLD); if (rank != 0) { cout << rank << " received " << tmp << endl; }