> As that ticket notes if REAL*16 <> long double Open MPI should be > disabling redutions on MPI_REAL16. I can take a look and see if I can > determine why that is not working as expected.
Does it really need to be just disabled when the `real(real128)` is actually equivalent to c_long_double? Wouldn't making the explicit interfaces to MPI_Send and others to accept `real(real128)` make more sense? As I wrote in the stackoverflow post, the MPI standard (3.1, pages 628 and 674) is not very clear if MPI_REAL16 corresponds to real*16 or real(real128) if these differ, but making it correspond to real(real128) might be reasonable. Vladimir 2015-10-14 14:40 GMT+01:00 Vladimír Fuka <vladimir.f...@gmail.com>: > 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