Offhand, your code looks fine.

Can you send a small, self-contained example?


On Nov 8, 2012, at 9:42 AM, Lim Jiew Meng wrote:

> 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 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 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;
> 
>       }
> 
> 
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users


-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to