Hi George

I did some extra digging and found that (for some reason) the MPI_IN_PLACE parameter is not being recognized as such by mpi_reduce_f (reduce_f.c:61). I added a couple of printfs:

    printf(" sendbuf = %p \n", sendbuf );

    printf(" MPI_FORTRAN_IN_PLACE = %p \n", &MPI_FORTRAN_IN_PLACE );
    printf(" mpi_fortran_in_place = %p \n", &mpi_fortran_in_place );
    printf(" mpi_fortran_in_place_ = %p \n", &mpi_fortran_in_place_ );
printf(" mpi_fortran_in_place__ = %p \n", &mpi_fortran_in_place__ );

And this is what I get on node 0:

 sendbuf = 0x50920
 MPI_FORTRAN_IN_PLACE = 0x17cd30
 mpi_fortran_in_place = 0x17cd34
 mpi_fortran_in_place_ = 0x17cd38
 mpi_fortran_in_place__ = 0x17cd3c

This makes OMPI_F2C_IN_PLACE(sendbuf) fail. If I replace the line:

sendbuf = OMPI_F2C_IN_PLACE(sendbuf);

with:

    if ( sendbuf == 0x50920 ) {
      printf("sendbuf is MPI_IN_PLACE!\n");
      sendbuf = MPI_IN_PLACE;
    }

Then the code works and gives the correct result:

sendbuf is MPI_IN_PLACE!
 Result:
 3. 3. 3. 3.

So my guess is that somehow the MPI_IN_PLACE constant for fortran is getting the wrong address. Could this be related to the fortran compilers I'm using (ifort / g95)?

Ricardo

---
Prof. Ricardo Fonseca

GoLP - Grupo de Lasers e Plasmas
Instituto de Plasmas e Fusão Nuclear
Instituto Superior Técnico
Av. Rovisco Pais
1049-001 Lisboa
Portugal

tel: +351 21 8419202
fax: +351 21 8464455
web: http://cfp.ist.utl.pt/golp/

On Jul 28, 2009, at 17:00 , users-requ...@open-mpi.org wrote:

Message: 1
Date: Tue, 28 Jul 2009 11:16:34 -0400
From: George Bosilca <bosi...@eecs.utk.edu>
Subject: Re: [OMPI users] OMPI users] MPI_IN_PLACE in Fortran with
        MPI_REDUCE / MPI_ALLREDUCE
To: Open MPI Users <us...@open-mpi.org>
Message-ID: <c0f59401-0a63-4eb8-804b-51d290712...@eecs.utk.edu>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed; delsp=yes

Reply via email to