Does Open MPI support MPI_REAL16 and MPI_COMPLEX32?
It depends. Note that these datatypes are optional in the MPI standard. Prior to v1.3, Open MPI supported MPI_REAL16 and MPI_COMPLEX32 if a portable C integer type could be found that was the same size (measured in bytes) as Fortran’s REAL*16 type. It was later discovered that even though the sizes may be the same, the bit representations between C and Fortran may be different. Since Open MPI’s reduction routines are implemented in C, calling MPI_REDUCE (and related functions) with MPI_REAL16 or MPI_COMPLEX32 would generate undefined results (although message passing with these types in homogeneous environments generally worked fine). As such, Open MPI v1.3 made the test for supporting MPI_REAL16 and MPI_COMPLEX32 more stringent: Open MPI will support these types only if: • An integer C type can be found that has the same size (measured in bytes) as the Fortran REAL*16 type. • The bit representation is the same between the C type and the Fortran type. Version 1.3.0 only checks for port