> 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

Reply via email to