I dabble in Fortran but am not an expert -- is REAL(kind=16) the same
as REAL*16? MPI_REAL16 should be a 16 byte REAL; I'm not 100% sure
that REAL(kind=16) is the same thing...?
On Oct 23, 2008, at 7:37 AM, Julien Devriendt wrote:
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.
_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users
--
Jeff Squyres
Cisco Systems