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