Hi,

I tried openmpi-3.0.0rc1.tar.gz using Intel Fortran 2017 and gcc on a current 
MacOS system. For this version, it seems to me that MPI_IN_PLACE returns 
incorrect results (while other MPI implementations, including some past OpenMPI 
versions, work fine).

This can be seen with a simple Fortran example code, shown below. In the test, 
the values of all entries of an array “test_data” should be 1.0d0 if the 
behavior were as intended. However, the version of OpenMPI I have returns 0.d0 
instead.

I’ve seen this behavior on some other compute platforms too, in the past, so it 
wasn’t new to me. Still, I thought that this time, I’d ask. Any thoughts?

Thank you,
Best wishes
Volker

    ! size of test data array
    integer :: n_data
      
    ! array that contains test data for MPI_IN_PLACE
    real*8, allocatable :: test_data(:)

        integer :: mpierr
        
    n_data = 10
    
    allocate(test_data(n_data),stat=mpierr)

    ! seed test data array for allreduce call below
    if (myid.eq.0) then
       test_data(:) = 1.d0
    else
       test_data(:) = 0.d0
    end if

    ! Sum the test_data array over all MPI tasks
    call MPI_ALLREDUCE(MPI_IN_PLACE, &
         test_data(:), &
         n_data, &
         MPI_DOUBLE_PRECISION, &
         MPI_SUM, &
         mpi_comm_global, &
         mpierr )

    ! The value of all entries of test_data should now be 1.d0 on all MPI tasks.
    ! If that is not the case, then the MPI_IN_PLACE flag may be broken.






Volker Blum
Associate Professor
Ab Initio Materials Simulations
Duke University, MEMS Department 
144 Hudson Hall, Box 90300, Duke University, Durham, NC 27708, USA

volker.b...@duke.edu
https://aims.pratt.duke.edu
+1 (919) 660 5279
Twitter: Aimsduke

Office: 1111 Hudson Hall




_______________________________________________
users mailing list
users@lists.open-mpi.org
https://rfd.newmexicoconsortium.org/mailman/listinfo/users

Reply via email to