Should be fixed on *master* now... :)

Sent from my phone. No type good. 

> On Oct 7, 2014, at 2:11 PM, "Nathan Hjelm" <hje...@lanl.gov> wrote:
> 
> Should be fixed on trunk now. There were a couple of minor issues in the
> PSCW path. CMR'd to 1.8.
> 
> -Nathan
> 
>> On Tue, Oct 07, 2014 at 01:09:33PM +0200, Berk Hess wrote:
>>   Hi,
>> 
>>   I am implementing RMA in the Gromacs molecular simulation package and ran
>>   into an issue while using a relatively simple setup with MPI_Put with Open
>>   MPI version 1.8.3. I made a small test program, see attachment, which
>>   reproduces the issue. The issue is that the data passed to MPI_Put arrives
>>   incompletely at the receiver end.
>>   I have been unable to reproduce the issue with version 1.7.2/4 or MPICH
>>   3.1.2.
>>   Note that I have only ran it on a single processor, i.e. using shared
>>   memory.
>> 
>>   Cheers,
>> 
>>   Berk
> 
>> #include "mpi.h"
>> #include "stdio.h"
>> #include "unistd.h"
>> 
>> /* Tests MPI_Win_put with post+start+complete+wait.
>> * It puts to one rank count backward and receives from one rank count 
>> forward,
>> * rank 0 sends to rank nranks-1 (note: issue not affect by cyclic setup).
>> *
>> * With OpenMPI 1.8.3, Linux, gcc 4.7.2 on a single Intel i7-2600
>> * thousands of transfer errors appear with 3 or more ranks.
>> * I would expect this issue is present (at least) any shared memory setup.
>> *
>> * Up till now the problem has not been reproduced with OpenMPI 1.7.2/4
>> * and MPICH 3.1.2.
>> */
>> 
>> #define SIZE     5000
>> 
>> #define NSTEPS 100000
>> 
>> int main(int argc, char *argv[])
>> {
>>    int rank, rank_bw, rank_fw, nranks, *a, *b, prev, i, step;
>>    MPI_Group comm_group, group_bw, group_fw;
>>    MPI_Win win;
>>    int nerrors = 0;
>> 
>>    MPI_Init(&argc,&argv);
>>    MPI_Comm_size(MPI_COMM_WORLD, &nranks);
>>    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
>> 
>>    i = MPI_Alloc_mem(SIZE*sizeof(int), MPI_INFO_NULL, &a);
>>    if (i) {
>>        printf("Can't allocate memory in test program\n");fflush(stdout);
>>        MPI_Abort(MPI_COMM_WORLD, 1);
>>    }
>>    MPI_Alloc_mem(SIZE*sizeof(int), MPI_INFO_NULL, &b);
>> 
>>    MPI_Comm_group(MPI_COMM_WORLD, &comm_group);
>> 
>>    rank_bw = (rank - 1 + nranks) % nranks;
>>    MPI_Group_incl(comm_group, 1, &rank_bw, &group_bw);
>> 
>>    rank_fw = (rank + 1) % nranks;
>>    MPI_Group_incl(comm_group, 1, &rank_fw, &group_fw);
>> 
>>    MPI_Win_create(b, SIZE*sizeof(int), sizeof(int), MPI_INFO_NULL,
>>                   MPI_COMM_WORLD, &win);
>> 
>>    for (step = 0; step < NSTEPS; step++) {
>>        if (rank == 0 && step % 1000 == 0)
>>            printf("step %d\n",step);
>> 
>>        for (i = 0; i < SIZE; i++) {
>>            a[i] = step + 1;
>>        }
>> 
>>        MPI_Win_post(group_fw, 0,win);
>> 
>>        MPI_Win_start(group_bw, 0, win);
>> 
>>        MPI_Put(a, SIZE, MPI_INT, rank_bw, 0, SIZE, MPI_INT, win);
>> 
>>        MPI_Win_complete(win);
>> 
>>        MPI_Win_wait(win);
>> 
>>        /* Check if the last element is not transferred/updated yet */
>>        if (b[SIZE-1] != step + 1) {
>>            printf("step %d, rank %d last element not updated\n",
>>                   step, rank);
>>            nerrors++;
>> #if 0
>>            /* Test if data arrived after one second (is never the case) */
>>            sleep(1);
>>            printf("step %d, rank %d last element updated after 1 second: 
>> %d\n",
>>                   step, rank, (b[SIZE-1] == step + 1));
>> #endif
>>        }
>>    }
>> 
>>    printf("There were %d transfer errors\n", nerrors);
>> 
>>    MPI_Group_free(&group_bw);
>>    MPI_Group_free(&group_fw);
>>    MPI_Group_free(&comm_group);
>>    MPI_Win_free(&win);
>>    MPI_Free_mem(a);
>>    MPI_Free_mem(b);
>> 
>> 
>>    MPI_Finalize();
>> 
>>    return nerrors;
>> }
> 
>> _______________________________________________
>> devel mailing list
>> de...@open-mpi.org
>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>> Link to this post: 
>> http://www.open-mpi.org/community/lists/devel/2014/10/16016.php
> 
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> Link to this post: 
> http://www.open-mpi.org/community/lists/devel/2014/10/16026.php

Reply via email to