Hi,

I'm trying to do an MPI_ALLREDUCE with quadruple precision real and MPI_SUM and open mpi does not give me the correct answer (vartemp is equal to vartored instead of 2*vartored). Switching to double precision real works fine.
My version of openmpi is 1.2.7 and it has been compiled with ifort v10.1
and icc/icpc at installation

Here's the simple f90 code which fails:

program test_quad

  implicit none

  include "mpif.h"


  real(kind=16)             :: vartored(8),vartemp(8)
  integer                   :: nn,nslaves,my_index
  integer                   :: mpierror


  call MPI_INIT(mpierror)
  call MPI_COMM_SIZE(MPI_COMM_WORLD,nslaves,mpierror)
  call MPI_COMM_RANK(MPI_COMM_WORLD,my_index,mpierror)

  nn       = 8
  vartored = 1.0_16
  vartemp  = 0.0_16
  print*,"P1 ",my_index,vartored
  call 
MPI_ALLREDUCE(vartored,vartemp,nn,MPI_REAL16,MPI_SUM,MPI_COMM_WORLD,mpierror)
  print*,"P2 ",my_index,vartemp

  stop

end program test_quad

Any idea why this happens?

Many thanks in advance!

J.

Reply via email to