[mpich-discuss] Invalid buffer pointer - Buffers must not be aliased error from MPI_Reduce
Dave Goodell
goodell at mcs.anl.gov
Wed Oct 14 12:50:34 CDT 2009
This looks like a bug to me. Reading the current trunk source shows
that the bug is almost certainly still present, although the code is
slightly different than what was there in 1.0.8.
I'll fix this up shortly. Thanks for reporting it.
-Dave
On Oct 14, 2009, at 12:08 PM, Inghram, Kenneth wrote:
> Running mpich2-1.0.8 on x86_64 on RHEL 5.2
> (2.6.18-124.el5.HOTFIX.IT239760)
>
> Receiving the following error running the code below. The aliased
> pointer check should only occur on the receiving (root) node, should
> it not?
>
> Looked through the changes up to 1.2, but I did not see anything
> that addressed this issue.
>
> Is this a bug in 1.0.8?
>
> -ken
>
>> /opt/mpich2/bin/mpicc mpich2-bug.c -o bug-mpi
>> export MPD_USE_ROOT_MPD=1
>> /opt/mpich2/bin/mpiexec -n 2 ./bug-mpi
>
> Fatal error in MPI_Reduce: Invalid buffer pointer, error stack:
> MPI_Reduce(850): MPI_Reduce(sbuf=0x7fffffff5c60, rbuf=0x7fffffff5c60,
> count=10, MPI_INT, MPI_SUM, root=0, MPI_COMM_WORLD) failed
> MPI_Reduce(808): Buffers must not be aliased[cli_1]: aborting job:
> Fatal error in MPI_Reduce: Invalid buffer pointer, error stack:
> MPI_Reduce(850): MPI_Reduce(sbuf=0x7fffffff5c60, rbuf=0x7fffffff5c60,
> count=10, MPI_INT, MPI_SUM, root=0, MPI_COMM_WORLD) failed
> MPI_Reduce(808): Buffers must not be aliased
>
> The simple work around is to change the MPI_Reduce line...
>
> from
>
> MPI_Reduce(a,a,SIZE,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD);
>
> to
>
> MPI_Reduce(a,NULL,SIZE,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD);
>
>
> ------ mpich2-bug.c
>
> #include <stdio.h>
> #include <mpi.h>
>
> #define SIZE 10
>
> int main( int argc, char *argv[])
> {
>
> MPI_Init( &argc, &argv);
>
> int rank, size;
>
> MPI_Comm_size( MPI_COMM_WORLD, &size);
> MPI_Comm_rank( MPI_COMM_WORLD, &rank);
>
> printf( "Hello from %4d of %4d\n", rank, size);
>
> int i, a[SIZE];
>
> for( i = 0; i < SIZE; i++)
> a[i] = 1;
>
> if( rank == 0)
> MPI_Reduce(MPI_IN_PLACE,a,SIZE,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD);
> else
> MPI_Reduce(a,a,SIZE,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD);
>
> if ( rank == 0)
> for( i = 0; i < SIZE; i++)
> printf( "%3d %6d %6d\n", i a[i], i * size);
>
> MPI_Finalize();
>
> return 0;
> }
> _______________________________________________
> mpich-discuss mailing list
> mpich-discuss at mcs.anl.gov
> https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss
More information about the mpich-discuss
mailing list