Kenneth,
Have you tried the 1.2.5 version?  There were some fixes to the
vector collectives that could have resolved your problem.

On Feb 4, 2008 5:36 PM, George Bosilca <bosi...@eecs.utk.edu> wrote:
> 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
> > to
> > all 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
> > listed
> > below demonstrates the failure.  I have tried it on OpenMPI version
> > 1.2.3 and 1.2.4; it fails on both.  However, it works fine with
> > version
> > 1.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
>
>
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>



-- 
Tim Mattox, Ph.D. - http://homepage.mac.com/tmattox/
 tmat...@gmail.com || timat...@open-mpi.org
    I'm a bright... http://www.the-brights.net/

Reply via email to