1
1

mpiext/shortfloat: Add MPIX_C_FLOAT16 datatype

`MPIX_C_FLOAT16` is defined as a synonym for `MPIX_SHORT_FLOAT`
if the C compiler supports `_Float16`, which is defined in
ISO/IEC JTC 1/SC 22/WG 14 N1945 (ISO/IEC TS 18661-3:2015).
This name and meaning are same as that of MPICH. This may be
a transitional datatype until the MPI Forum decides a proper
name for the type.

Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
Этот коммит содержится в:
KAWASHIMA Takahiro 2018-12-26 14:43:01 +09:00
родитель c44599ec13
Коммит f8a441957a
7 изменённых файлов: 29 добавлений и 0 удалений

Просмотреть файл

@ -14,6 +14,7 @@ ompi_f08_mpi_byte
ompi_f08_mpi_c_bool
ompi_f08_mpi_c_complex
ompi_f08_mpi_c_double_complex
ompi_f08_mpi_c_float16
ompi_f08_mpi_c_float_complex
ompi_f08_mpi_c_long_double_complex
ompi_f08_mpi_c_short_float_complex

Просмотреть файл

@ -153,9 +153,11 @@ OMPI_DECLSPEC ompi_fortran_08_handle_t OMPI_F08_HANDLE_ALIGNED ompi_f08_mpi_comp
* OMPI_MPI_* macros are not defined in ompi/include/mpif-values.pl
* because they should not be included in mpif.h. So immediate values
* defined in ompi/datatype/ompi_datatype_module.c are used here.
* ompi_f08_mpi_c_float16 is a synonym for ompi_f08_mpi_short_float.
*/
#if defined(HAVE_SHORT_FLOAT) || defined(HAVE_OPAL_SHORT_FLOAT_T)
OMPI_DECLSPEC ompi_fortran_08_handle_t OMPI_F08_HANDLE_ALIGNED ompi_f08_mpi_short_float = {74};
OMPI_DECLSPEC ompi_fortran_08_handle_t OMPI_F08_HANDLE_ALIGNED ompi_f08_mpi_c_short_float_complex = {75};
OMPI_DECLSPEC ompi_fortran_08_handle_t OMPI_F08_HANDLE_ALIGNED ompi_f08_mpi_cxx_short_float_complex = {76};
OMPI_DECLSPEC ompi_fortran_08_handle_t OMPI_F08_HANDLE_ALIGNED ompi_f08_mpi_c_float16 = {74};
#endif

Просмотреть файл

@ -13,6 +13,13 @@ Each MPI datatype corresponds to the C/C++ type 'short float', the C type
'short float _Complex', and the C++ type 'std::complex<short float>',
respectively.
In addition, this extension provides a datatype MPIX_C_FLOAT16 for
the C type _Float16, which is defined in ISO/IEC JTC 1/SC 22/WG 14
N1945 (ISO/IEC TS 18661-3:2015). This name and meaning are same as
that of MPICH.
https://github.com/pmodels/mpich/pull/3455
This extension is enabled only if the C compiler supports 'short float'
or '_Float16', or the '--enable-alt-short-float=TYPE' option is passed
to the configure script.

Просмотреть файл

@ -15,3 +15,7 @@ OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_cxx_sfltcplex;
#define MPIX_SHORT_FLOAT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_short_float)
#define MPIX_C_SHORT_FLOAT_COMPLEX OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_c_short_float_complex)
#define MPIX_CXX_SHORT_FLOAT_COMPLEX OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_cxx_sfltcplex)
#if @OMPI_MPIX_SHORT_FLOAT_IS_C_FLOAT16@
#define MPIX_C_FLOAT16 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_short_float)
#endif

Просмотреть файл

@ -17,6 +17,9 @@ AC_DEFUN([OMPI_MPIEXT_shortfloat_CONFIG],[
ompi/mpiext/shortfloat/mpif-h/Makefile
ompi/mpiext/shortfloat/use-mpi/Makefile
ompi/mpiext/shortfloat/use-mpi-f08/Makefile
ompi/mpiext/shortfloat/c/mpiext_shortfloat_c.h
ompi/mpiext/shortfloat/mpif-h/mpiext_shortfloat_mpifh.h
ompi/mpiext/shortfloat/use-mpi-f08/mpiext_shortfloat_usempif08.h
])
AS_IF([{ test "$ENABLE_shortfloat" = "1" || \
@ -25,6 +28,12 @@ AC_DEFUN([OMPI_MPIEXT_shortfloat_CONFIG],[
test "$ac_cv_type_opal_short_float_t" = "yes"; }],
[$1],
[$2])
AS_IF([test "$opal_short_float_type" = "_Float16"],
[AC_SUBST([OMPI_MPIX_SHORT_FLOAT_IS_C_FLOAT16], 1)
AC_SUBST([OMPI_MPIX_C_FLOAT16_FORTRAN_COMMENT_OUT], [])],
[AC_SUBST([OMPI_MPIX_SHORT_FLOAT_IS_C_FLOAT16], 0),
AC_SUBST([OMPI_MPIX_C_FLOAT16_FORTRAN_COMMENT_OUT], [!])])
])
# The mpi_f08_ext module should not include mpiext_shortfloat_mpifh.h

Просмотреть файл

@ -11,7 +11,9 @@
integer MPIX_SHORT_FLOAT
integer MPIX_C_SHORT_FLOAT_COMPLEX
integer MPIX_CXX_SHORT_FLOAT_COMPLEX
@OMPI_MPIX_C_FLOAT16_FORTRAN_COMMENT_OUT@ integer MPIX_C_FLOAT16
parameter (MPIX_SHORT_FLOAT=74)
parameter (MPIX_C_SHORT_FLOAT_COMPLEX=75)
parameter (MPIX_CXX_SHORT_FLOAT_COMPLEX=76)
@OMPI_MPIX_C_FLOAT16_FORTRAN_COMMENT_OUT@ parameter (MPIX_C_FLOAT16=74)

Просмотреть файл

@ -14,3 +14,7 @@
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_short_float") OMPI_PROTECTED :: MPIX_SHORT_FLOAT
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_c_short_float_complex") OMPI_PROTECTED :: MPIX_C_SHORT_FLOAT_COMPLEX
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_cxx_short_float_complex") OMPI_PROTECTED :: MPIX_CXX_SHORT_FLOAT_COMPLEX
#if @OMPI_MPIX_SHORT_FLOAT_IS_C_FLOAT16@
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_c_float16") OMPI_PROTECTED :: MPIX_C_FLOAT16
#endif