Kenneth,I cannot replicate this weird behavior with the current version in the trunk. I guess it has been fixed since 1.2.4.
Thanks, george. On Dec 13, 2007, at 6:58 PM, Moreland, Kenneth wrote:
I have found that on rare occasion Allgatherv fails to pass the data toall processes. Given some magical combination of receive counts and displacements, one or more processes are missing some or all of some arrays in their receive buffer. A necessary, but not sufficient,condition seems to be that one of the receive counts is 0. Beyond that I have not figured out any real pattern, but the example program listedbelow demonstrates the failure. I have tried it on OpenMPI version1.2.3 and 1.2.4; it fails on both. However, it works fine with version1.1.2, so the problem must have been introduced since then. -Ken **** Kenneth Moreland *** Sandia National Laboratories *********** *** *** *** email: kmo...@sandia.gov ** *** ** phone: (505) 844-8919 *** fax: (505) 845-0833 #include <mpi.h> #include <stdlib.h> #include <stdio.h> int main(int argc, char **argv) { int rank; int size; MPI_Comm smallComm; int senddata[5], recvdata[100]; int lengths[3], offsets[3]; int i, j; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size != 3) { printf("Need 3 processes."); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < 100; i++) recvdata[i] = -1; for (i = 0; i < 5; i++) senddata[i] = rank*10 + i; lengths[0] = 5; lengths[1] = 0; lengths[2] = 5; offsets[0] = 3; offsets[1] = 9; offsets[2] = 10; MPI_Allgatherv(senddata, lengths[rank], MPI_INT, recvdata, lengths, offsets, MPI_INT, MPI_COMM_WORLD); for (i = 0; i < size; i++) { for (j = 0; j < lengths[i]; j++) { if (recvdata[offsets[i]+j] != 10*i+j) {printf("%d: Got bad data from rank %d, index %d: %d\n", rank, i,j, recvdata[offsets[i]+j]); break; } } } MPI_Finalize(); return 0; } _______________________________________________ users mailing list us...@open-mpi.org http://www.open-mpi.org/mailman/listinfo.cgi/users
smime.p7s
Description: S/MIME cryptographic signature