On Sep 23, 2010, at 10:00 AM, Gabriele Fatigati wrote: > to be sure, if i have one processor who does: > > MPI_IBcast(MPI_COMM_WORLD, request_1) // first Bcast > MPI_IBcast(MPI_COMM_WORLD, request_2) // second Bcast > > it means that i can't have another process who does the follow: > > MPI_IBcast(MPI_COMM_WORLD, request_2) // firt Bcast for another process > MPI_IBcast(MPI_COMM_WORLD, request_1) // second Bcast for another process > > Because first Bcast of second process matches with first Bcast of first > process, and it's wrong.
If you did a "waitall" on both requests, it would probably work because MPI would just "figure it out". But if you did something like: proc 0: MPI_IBcast(MPI_COMM_WORLD, request_1) // first Bcast MPI_IBcast(MPI_COMM_WORLD, request_2) // second Bcast MPI_Wait(&request_1, ...); MPI_Wait(&request_2, ...); proc 1: MPI_IBcast(MPI_COMM_WORLD, request_2) // first Bcast MPI_IBcast(MPI_COMM_WORLD, request_1) // second Bcast MPI_Wait(&request_1, ...); MPI_Wait(&request_2, ...); That may/will deadlock. -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/