Hello,

  I have a problem with using the  quadruple (128bit) or extended
(80bit) precision reals in Fortran. I did my tests with gfortran-4.8.5
and OpenMPI-1.7.2 (preinstalled OpenSuSE 13.2), but others confirmed
this behaviour for more recent versions at
http://stackoverflow.com/questions/33109040/strange-result-of-mpi-allreduce-for-16-byte-real?noredirect=1#comment54060649_33109040
. 

  When I try to use REAL*16 variables (or equivalent kind-based
definition) and MPI_REAL16 the reductions don't give correct results
(see the link for the exact code). I was pointed to this issue ticket
https://github.com/open-mpi/ompi/issues/63.

I thought, maybe the underlying long double is 80-bit extended
precision then and I tried to use REAL*10 variables and MPI_REAL16. I
actually received a correct answer from the reduction, but when I
tried to use REAL*10 or REAL(10) I am getting

Error: There is no specific subroutine for the generic 'mpi_recv' at (1)
Error: There is no specific subroutine for the generic 'mpi_ssend' at (1)

That is strange, because I should be able to use even types and array
ranks which I construct myself in point to point send/receives and
which are unknown to the MPI library, so the explicit interface should
not be required.

Is there a correct way how to use the extended or quadruple precision
in OpenMPI? My intended usage is mainly checking if differences seen
numerical computations are getting smaller with increasing precision
and can therefore be attributed to rounding errors. If not they could
be a sign of a bug.

   Best regards,

      Vladimir

Reply via email to