From c14c64c0f7fc94090985d62e8eab85c390be5c8c Mon Sep 17 00:00:00 2001 From: Jake Tronge Date: Thu, 28 Sep 2023 16:51:36 -0600 Subject: [PATCH 1/5] ABI: Add initial ABI generation code and new libraries Two external MPI libraries are now created: libmpi.la and libmpi_abi.la. Backend code that was originally in libmpi.la has been extracted into libopen-mpi.la to be linked into both libraries. Parts of the Open MPI C interface are now being generated by a python script (abi.py) from modified source files (named with *.in). This script generates files for both the ompi ABI and the standard ABI from the same source file, also including new bigcount interfaces. To compile standard ABI code, there's a new mpicc_abi compiler wrapper. The standard ABI does not yet include all functions or symbols, so more complicated source files will not compile. ROMIO must be disabled for the code to link, since it's relying on the external MPI interface. Signed-off-by: Jake Tronge --- .gitignore | 5 + config/ompi_config_files.m4 | 1 + config/ompi_configure_options.m4 | 15 + ompi/Makefile.am | 58 +- ompi/attribute/Makefile.am | 2 +- ompi/class/Makefile.am | 3 +- ompi/communicator/Makefile.am | 4 +- ompi/dpm/Makefile.am | 2 +- ompi/errhandler/Makefile.am | 2 +- ompi/file/Makefile.am | 2 +- ompi/group/Makefile.am | 2 +- ompi/include/mpi.h.in | 5 + ompi/instance/Makefile.am | 2 +- ompi/interlib/Makefile.am | 2 +- ompi/mca/bml/r2/Makefile.am | 2 +- ompi/mca/coll/basic/Makefile.am | 2 +- ompi/mca/coll/demo/Makefile.am | 2 +- ompi/mca/coll/inter/Makefile.am | 2 +- ompi/mca/coll/libnbc/Makefile.am | 2 +- ompi/mca/coll/monitoring/Makefile.am | 2 +- ompi/mca/coll/portals4/Makefile.am | 2 +- ompi/mca/coll/self/Makefile.am | 2 +- ompi/mca/coll/sync/Makefile.am | 2 +- ompi/mca/coll/tuned/Makefile.am | 2 +- ompi/mca/coll/ucc/Makefile.am | 2 +- ompi/mca/common/monitoring/Makefile.am | 2 +- ompi/mca/fbtl/ime/Makefile.am | 2 +- ompi/mca/fbtl/posix/Makefile.am | 2 +- ompi/mca/fs/ime/Makefile.am | 2 +- ompi/mca/fs/lustre/Makefile.am | 2 +- ompi/mca/fs/ufs/Makefile.am | 2 +- .../hook/comm_method/hook_comm_method_fns.c | 2 + ompi/mca/mtl/ofi/Makefile.am | 2 +- ompi/mca/mtl/portals4/Makefile.am | 2 +- ompi/mca/mtl/psm2/Makefile.am | 2 +- ompi/mca/op/avx/Makefile.am | 2 +- ompi/mca/op/example/Makefile.am | 2 +- ompi/mca/osc/monitoring/Makefile.am | 2 +- ompi/mca/osc/portals4/Makefile.am | 2 +- ompi/mca/osc/rdma/Makefile.am | 2 +- ompi/mca/osc/sm/Makefile.am | 2 +- ompi/mca/osc/ucx/Makefile.am | 2 +- ompi/mca/part/persist/Makefile.am | 2 +- ompi/mca/pml/cm/Makefile.am | 2 +- ompi/mca/pml/monitoring/Makefile.am | 2 +- ompi/mca/pml/ob1/Makefile.am | 2 +- ompi/mca/pml/ucx/Makefile.am | 2 +- ompi/mca/pml/v/Makefile.am | 2 +- ompi/mca/topo/basic/Makefile.am | 2 +- ompi/mca/topo/example/Makefile.am | 2 +- ompi/mca/topo/treematch/Makefile.am | 2 +- ompi/mca/vprotocol/pessimist/Makefile.am | 2 +- ompi/message/Makefile.am | 2 +- ompi/mpi/c/Makefile.am | 52 +- ompi/mpi/c/abi.py | 1278 +++++++++++++++++ ompi/mpi/c/abi_details.c | 36 + ompi/mpi/c/abi_supported.c | 28 + ompi/mpi/c/abi_version.c | 30 + ompi/mpi/c/status_c2f.c.in | 33 +- ompi/mpi/c/status_f2c.c.in | 17 +- ompi/mpi/c/wtime.c.in | 2 +- ompi/mpiext/Makefile.am | 2 +- ompi/op/Makefile.am | 2 +- ompi/peruse/Makefile.am | 2 +- ompi/proc/Makefile.am | 2 +- ompi/request/Makefile.am | 6 +- ompi/request/grequest.c | 5 +- ompi/runtime/Makefile.am | 2 +- ompi/tools/wrappers/Makefile.am | 3 +- .../wrappers/mpicc_abi-wrapper-data.txt.in | 26 + ompi/util/Makefile.am | 3 +- ompi/util/status.h | 56 + ompi/win/Makefile.am | 2 +- 73 files changed, 1645 insertions(+), 125 deletions(-) create mode 100755 ompi/mpi/c/abi.py create mode 100644 ompi/mpi/c/abi_details.c create mode 100644 ompi/mpi/c/abi_supported.c create mode 100644 ompi/mpi/c/abi_version.c create mode 100644 ompi/tools/wrappers/mpicc_abi-wrapper-data.txt.in create mode 100644 ompi/util/status.h diff --git a/.gitignore b/.gitignore index 4e71ce71bce..29d269765b1 100644 --- a/.gitignore +++ b/.gitignore @@ -271,6 +271,7 @@ ompi/tools/ompi_info/ompi_info ompi/tools/wrappers/mpic++-wrapper-data.txt ompi/tools/wrappers/mpicc-wrapper-data.txt +ompi/tools/wrappers/mpicc_abi-wrapper-data.txt ompi/tools/wrappers/mpifort-wrapper-data.txt ompi/tools/wrappers/ompi_wrapper_script ompi/tools/wrappers/ompi.pc @@ -534,6 +535,10 @@ docs/man # Generated C Bindings ompi/mpi/c/*_generated*.c +ompi/mpi/c/ompi_*.c +ompi/mpi/c/standard_*.c +ompi/mpi/c/abi.h +ompi/mpi/c/standard_abi # Generated Fortran Bindings ompi/mpi/fortran/use-mpi-f08/*_generated.F90 diff --git a/config/ompi_config_files.m4 b/config/ompi_config_files.m4 index 21d1e3eb791..f378cc3ce00 100644 --- a/config/ompi_config_files.m4 +++ b/config/ompi_config_files.m4 @@ -48,6 +48,7 @@ AC_DEFUN([OMPI_CONFIG_FILES],[ ompi/tools/ompi_info/Makefile ompi/tools/wrappers/Makefile ompi/tools/wrappers/mpicc-wrapper-data.txt + ompi/tools/wrappers/mpicc_abi-wrapper-data.txt ompi/tools/wrappers/mpic++-wrapper-data.txt ompi/tools/wrappers/mpifort-wrapper-data.txt ompi/tools/wrappers/ompi.pc diff --git a/config/ompi_configure_options.m4 b/config/ompi_configure_options.m4 index c00ead8792c..83606e2c555 100644 --- a/config/ompi_configure_options.m4 +++ b/config/ompi_configure_options.m4 @@ -257,4 +257,19 @@ AC_ARG_ENABLE([deprecate-mpif-h], [AS_HELP_STRING([--enable-deprecate-mpif-h], [Mark the mpif.h bindings as deprecated (default: enabled)])]) +AC_MSG_CHECKING([if want to enable standard ABI library]) +AC_ARG_ENABLE([standard-abi], + [AS_HELP_STRING([--enable-standard-abi], + [Enable building the standard ABI library (default: disabled)])]) +if test "$enable_standard_abi" = "yes"; then + AC_MSG_RESULT([yes]) + ompi_standard_abi=1 +else + AC_MSG_RESULT([no]) + ompi_standard_abi=0 +fi +AC_DEFINE_UNQUOTED([OMPI_STANDARD_ABI],[$ompi_standard_abi], + [Whether we want to build the standard ABI library]) +AM_CONDITIONAL(OMPI_STANDARD_ABI,[test "$enable_standard_abi" = "yes"]) + ])dnl diff --git a/ompi/Makefile.am b/ompi/Makefile.am index f855492ef15..a839ab1bff4 100644 --- a/ompi/Makefile.am +++ b/ompi/Makefile.am @@ -126,36 +126,72 @@ DIST_SUBDIRS = \ $(MCA_ompi_FRAMEWORKS_SUBDIRS) \ $(MCA_ompi_FRAMEWORK_COMPONENT_ALL_SUBDIRS) -# Build the main MPI library - +noinst_LTLIBRARIES = libopen-mpi.la lib_LTLIBRARIES = lib@OMPI_LIBMPI_NAME@.la -lib@OMPI_LIBMPI_NAME@_la_SOURCES = -lib@OMPI_LIBMPI_NAME@_la_LIBADD = \ +if OMPI_STANDARD_ABI +lib_LTLIBRARIES += libmpi_abi.la +endif + +# +# ABI Refactor +# +# As required by the standard ABI, ompi must now provide libmpi_abi.la for +# ABI-specific code. Since we also want to avoid breaking the existing ompi +# ABI, the libraries in this directory are now organized as follows: +# +# +----------------------+----------------------+ +# | libmpi_abi.la | libmpi.la | +# +----------------------+----------------------+ +# | libopen-mpi.la | +# +----------------------+----------------------+ +# +# This includes a new library, libopen-mpi.la, that links in all backend code +# built in this directory or SUBDIRs of this directory. Previously everything +# was just linked directly into libmpi.la (lib@OMPI_LIBMPI_NAME@.la). +# +# libmpi_abi.la and libmpi.la both now link in libopen-mpi.la, the only +# difference between them being that one includes the standard ABI functions +# and the other the ompi-specific versions of those. +# + +# Build the Open MPI internal library +libopen_mpi_la_SOURCES = +libopen_mpi_la_LIBADD = \ datatype/libdatatype.la \ debuggers/libdebuggers.la \ + $(OMPI_TOP_BUILDDIR)/opal/lib@OPAL_LIB_NAME@.la \ + $(MCA_ompi_FRAMEWORK_LIBS) \ + $(OMPI_LIBMPI_EXTRA_LIBS) +libopen_mpi_la_DEPENDENCIES = $(libopen_mpi_la_LIBADD) + +# Build the main MPI library +lib@OMPI_LIBMPI_NAME@_la_SOURCES = +lib@OMPI_LIBMPI_NAME@_la_LIBADD = \ + libopen-mpi.la \ mpi/c/libmpi_c.la \ mpi/tool/libmpi_mpit.la \ $(c_mpi_lib) \ $(c_pmpi_lib) \ - $(mpi_fortran_base_lib) \ - $(MCA_ompi_FRAMEWORK_LIBS) \ $(OMPI_MPIEXT_C_LIBS) \ - $(OMPI_LIBMPI_EXTRA_LIBS) + $(mpi_fortran_base_lib) - -lib@OMPI_LIBMPI_NAME@_la_LIBADD += \ - $(OMPI_TOP_BUILDDIR)/opal/lib@OPAL_LIB_NAME@.la -lib@OMPI_LIBMPI_NAME@_la_DEPENDENCIES = $(lib@OMPI_LIBMPI_NAME@_la_LIBADD) lib@OMPI_LIBMPI_NAME@_la_LDFLAGS = \ -version-info $(libmpi_so_version) \ $(OMPI_LIBMPI_EXTRA_LDFLAGS) +# The MPI Standard ABI library +libmpi_abi_la_SOURCES = +libmpi_abi_la_LIBADD = \ + libopen-mpi.la \ + mpi/c/libmpi_c_abi.la + # included subdirectory Makefile.am's and appended-to variables headers = noinst_LTLIBRARIES = include_HEADERS = EXTRA_DIST = lib@OMPI_LIBMPI_NAME@_la_SOURCES += $(headers) +dist_ompidata_DATA = # Conditionally install the header files diff --git a/ompi/attribute/Makefile.am b/ompi/attribute/Makefile.am index cb1193deb2f..0418c1c0cc7 100644 --- a/ompi/attribute/Makefile.am +++ b/ompi/attribute/Makefile.am @@ -22,6 +22,6 @@ headers += \ attribute/attribute.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ attribute/attribute.c \ attribute/attribute_predefined.c diff --git a/ompi/class/Makefile.am b/ompi/class/Makefile.am index 7784da8ad69..ea755a11f3d 100644 --- a/ompi/class/Makefile.am +++ b/ompi/class/Makefile.am @@ -23,6 +23,5 @@ headers += \ class/ompi_seq_tracker.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ class/ompi_seq_tracker.c - diff --git a/ompi/communicator/Makefile.am b/ompi/communicator/Makefile.am index e1d25ad1026..8700ae88f48 100644 --- a/ompi/communicator/Makefile.am +++ b/ompi/communicator/Makefile.am @@ -29,14 +29,14 @@ headers += \ communicator/communicator.h \ communicator/comm_request.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ communicator/comm_init.c \ communicator/comm.c \ communicator/comm_cid.c \ communicator/comm_request.c if WANT_FT_MPI -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ communicator/ft/comm_ft.c communicator/ft/comm_ft_reliable_bcast.c communicator/ft/comm_ft_propagator.c communicator/ft/comm_ft_detector.c communicator/ft/comm_ft_revoke.c endif # WANT_FT_MPI diff --git a/ompi/dpm/Makefile.am b/ompi/dpm/Makefile.am index 02562525b9f..6e32c781ca5 100644 --- a/ompi/dpm/Makefile.am +++ b/ompi/dpm/Makefile.am @@ -17,5 +17,5 @@ EXTRA_DIST += dpm/help-dpm.txt headers += \ dpm/dpm.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ dpm/dpm.c diff --git a/ompi/errhandler/Makefile.am b/ompi/errhandler/Makefile.am index 9f94623a9ff..f8a84c249a1 100644 --- a/ompi/errhandler/Makefile.am +++ b/ompi/errhandler/Makefile.am @@ -30,7 +30,7 @@ headers += \ errhandler/errhandler.h \ errhandler/errhandler_predefined.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ errhandler/errhandler.c \ errhandler/errhandler_invoke.c \ errhandler/errhandler_predefined.c \ diff --git a/ompi/file/Makefile.am b/ompi/file/Makefile.am index e7d846ddde8..b78a18962e7 100644 --- a/ompi/file/Makefile.am +++ b/ompi/file/Makefile.am @@ -22,5 +22,5 @@ headers += \ file/file.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ file/file.c diff --git a/ompi/group/Makefile.am b/ompi/group/Makefile.am index f92a900da8d..850173c4d9f 100644 --- a/ompi/group/Makefile.am +++ b/ompi/group/Makefile.am @@ -25,7 +25,7 @@ headers += \ group/group.h \ group/group_dbg.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ group/group.c \ group/group_init.c \ group/group_set_rank.c \ diff --git a/ompi/include/mpi.h.in b/ompi/include/mpi.h.in index e06865b182f..898c735c00d 100644 --- a/ompi/include/mpi.h.in +++ b/ompi/include/mpi.h.in @@ -1451,6 +1451,9 @@ OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_ub; /* * MPI API */ +OMPI_DECLSPEC int MPI_Abi_supported(int *flag); +OMPI_DECLSPEC int MPI_Abi_version(int *abi_major, int *abi_minor); +OMPI_DECLSPEC int MPI_Abi_details(int *buflen, char *details, MPI_Info *info); OMPI_DECLSPEC int MPI_Abort(MPI_Comm comm, int errorcode); OMPI_DECLSPEC int MPI_Accumulate(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, @@ -4167,6 +4170,8 @@ OMPI_DECLSPEC int PMPI_Type_ub(MPI_Datatype mtype, MPI_Aint *ub) #define MPI_Type_ub(...) THIS_FUNCTION_WAS_REMOVED_IN_MPI30(MPI_Type_ub, MPI_Type_get_extent) #endif +#endif /* OMPI_NO_MPI_PROTOTYPES */ + #if defined(c_plusplus) || defined(__cplusplus) } #endif diff --git a/ompi/instance/Makefile.am b/ompi/instance/Makefile.am index 2ee7f5d59a3..73bb25273be 100644 --- a/ompi/instance/Makefile.am +++ b/ompi/instance/Makefile.am @@ -23,4 +23,4 @@ headers += instance/instance.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += instance/instance.c +libopen_mpi_la_SOURCES += instance/instance.c diff --git a/ompi/interlib/Makefile.am b/ompi/interlib/Makefile.am index 1a40fe8b260..d80d1d3d937 100644 --- a/ompi/interlib/Makefile.am +++ b/ompi/interlib/Makefile.am @@ -25,5 +25,5 @@ headers += \ interlib/interlib.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ interlib/interlib.c diff --git a/ompi/mca/bml/r2/Makefile.am b/ompi/mca/bml/r2/Makefile.am index 0fdb3e636f3..ea4e7eccc0e 100644 --- a/ompi/mca/bml/r2/Makefile.am +++ b/ompi/mca/bml/r2/Makefile.am @@ -37,7 +37,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_bml_r2_la_SOURCES = $(r2_sources) mca_bml_r2_la_LDFLAGS = -module -avoid-version -mca_bml_r2_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_bml_r2_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_bml_r2_la_SOURCES = $(r2_sources) diff --git a/ompi/mca/coll/basic/Makefile.am b/ompi/mca/coll/basic/Makefile.am index 8e1562c12f9..ad89fe227fb 100644 --- a/ompi/mca/coll/basic/Makefile.am +++ b/ompi/mca/coll/basic/Makefile.am @@ -63,7 +63,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_basic_la_SOURCES = $(sources) mca_coll_basic_la_LDFLAGS = -module -avoid-version -mca_coll_basic_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_coll_basic_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_basic_la_SOURCES =$(sources) diff --git a/ompi/mca/coll/demo/Makefile.am b/ompi/mca/coll/demo/Makefile.am index 1246c5d4389..2ae6731cefa 100644 --- a/ompi/mca/coll/demo/Makefile.am +++ b/ompi/mca/coll/demo/Makefile.am @@ -57,7 +57,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_demo_la_SOURCES = $(sources) mca_coll_demo_la_LDFLAGS = -module -avoid-version -mca_coll_demo_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_coll_demo_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_demo_la_SOURCES = $(sources) diff --git a/ompi/mca/coll/inter/Makefile.am b/ompi/mca/coll/inter/Makefile.am index ea9188cffd4..c82b9f513b9 100644 --- a/ompi/mca/coll/inter/Makefile.am +++ b/ompi/mca/coll/inter/Makefile.am @@ -34,7 +34,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_inter_la_SOURCES = $(sources) mca_coll_inter_la_LDFLAGS = -module -avoid-version -mca_coll_inter_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_coll_inter_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_inter_la_SOURCES = $(sources) diff --git a/ompi/mca/coll/libnbc/Makefile.am b/ompi/mca/coll/libnbc/Makefile.am index 4afa48cdd2c..09b30b4e172 100644 --- a/ompi/mca/coll/libnbc/Makefile.am +++ b/ompi/mca/coll/libnbc/Makefile.am @@ -72,7 +72,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_libnbc_la_SOURCES = $(sources) mca_coll_libnbc_la_LDFLAGS = -module -avoid-version -mca_coll_libnbc_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_coll_libnbc_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_libnbc_la_SOURCES =$(sources) diff --git a/ompi/mca/coll/monitoring/Makefile.am b/ompi/mca/coll/monitoring/Makefile.am index 9c6e96b1c52..cb1eed8b135 100644 --- a/ompi/mca/coll/monitoring/Makefile.am +++ b/ompi/mca/coll/monitoring/Makefile.am @@ -46,7 +46,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_monitoring_la_SOURCES = $(monitoring_sources) mca_coll_monitoring_la_LDFLAGS = -module -avoid-version -mca_coll_monitoring_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_coll_monitoring_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(OMPI_TOP_BUILDDIR)/ompi/mca/common/monitoring/libmca_common_monitoring.la noinst_LTLIBRARIES = $(component_noinst) diff --git a/ompi/mca/coll/portals4/Makefile.am b/ompi/mca/coll/portals4/Makefile.am index 8f9babbd13b..7070e01f2e6 100644 --- a/ompi/mca/coll/portals4/Makefile.am +++ b/ompi/mca/coll/portals4/Makefile.am @@ -33,7 +33,7 @@ AM_CPPFLAGS = $(coll_portals4_CPPFLAGS) mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_portals4_la_SOURCES = $(local_sources) -mca_coll_portals4_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_coll_portals4_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(coll_portals4_LIBS) mca_coll_portals4_la_LDFLAGS = -module -avoid-version $(coll_portals4_LDFLAGS) diff --git a/ompi/mca/coll/self/Makefile.am b/ompi/mca/coll/self/Makefile.am index 6b06aab4028..c4e5e13dc86 100644 --- a/ompi/mca/coll/self/Makefile.am +++ b/ompi/mca/coll/self/Makefile.am @@ -55,7 +55,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_self_la_SOURCES = $(sources) mca_coll_self_la_LDFLAGS = -module -avoid-version -mca_coll_self_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_coll_self_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_self_la_SOURCES =$(sources) diff --git a/ompi/mca/coll/sync/Makefile.am b/ompi/mca/coll/sync/Makefile.am index dad4f8f7138..d1fcfff91b5 100644 --- a/ompi/mca/coll/sync/Makefile.am +++ b/ompi/mca/coll/sync/Makefile.am @@ -46,7 +46,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_sync_la_SOURCES = $(sources) mca_coll_sync_la_LDFLAGS = -module -avoid-version -mca_coll_sync_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_coll_sync_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_sync_la_SOURCES =$(sources) diff --git a/ompi/mca/coll/tuned/Makefile.am b/ompi/mca/coll/tuned/Makefile.am index 82be7bb72aa..73f1f22a171 100644 --- a/ompi/mca/coll/tuned/Makefile.am +++ b/ompi/mca/coll/tuned/Makefile.am @@ -61,7 +61,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_tuned_la_SOURCES = $(sources) mca_coll_tuned_la_LDFLAGS = -module -avoid-version -mca_coll_tuned_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_coll_tuned_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_tuned_la_SOURCES =$(sources) diff --git a/ompi/mca/coll/ucc/Makefile.am b/ompi/mca/coll/ucc/Makefile.am index 8d2f4c7c3eb..95ec95401ac 100644 --- a/ompi/mca/coll/ucc/Makefile.am +++ b/ompi/mca/coll/ucc/Makefile.am @@ -50,7 +50,7 @@ endif mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_ucc_la_SOURCES = $(coll_ucc_sources) -mca_coll_ucc_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_coll_ucc_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(coll_ucc_LIBS) mca_coll_ucc_la_LDFLAGS = -module -avoid-version $(coll_ucc_LDFLAGS) diff --git a/ompi/mca/common/monitoring/Makefile.am b/ompi/mca/common/monitoring/Makefile.am index 28f4d442d27..d0dfa439f7d 100644 --- a/ompi/mca/common/monitoring/Makefile.am +++ b/ompi/mca/common/monitoring/Makefile.am @@ -34,7 +34,7 @@ endif ompi_monitoring_prof_la_LDFLAGS= \ -module -avoid-version -shared $(WRAPPER_EXTRA_LDFLAGS) ompi_monitoring_prof_la_LIBADD = \ - $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ + $(top_builddir)/ompi/libopen-mpi.la \ $(top_builddir)/opal/lib@OPAL_LIB_NAME@.la if OPAL_INSTALL_BINARIES diff --git a/ompi/mca/fbtl/ime/Makefile.am b/ompi/mca/fbtl/ime/Makefile.am index 2dfebbcb0c0..41908982b5e 100644 --- a/ompi/mca/fbtl/ime/Makefile.am +++ b/ompi/mca/fbtl/ime/Makefile.am @@ -30,7 +30,7 @@ AM_CPPFLAGS = $(fbtl_ime_CPPFLAGS) mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_fbtl_ime_la_SOURCES = $(fbtl_ime_sources) -mca_fbtl_ime_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_fbtl_ime_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(fbtl_ime_LIBS) mca_fbtl_ime_la_LDFLAGS = -module -avoid-version $(fbtl_ime_LDFLAGS) diff --git a/ompi/mca/fbtl/posix/Makefile.am b/ompi/mca/fbtl/posix/Makefile.am index 1ce19cb09b7..37a98c30e48 100644 --- a/ompi/mca/fbtl/posix/Makefile.am +++ b/ompi/mca/fbtl/posix/Makefile.am @@ -34,7 +34,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_fbtl_posix_la_SOURCES = $(sources) mca_fbtl_posix_la_LDFLAGS = -module -avoid-version -mca_fbtl_posix_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_fbtl_posix_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(OMPI_TOP_BUILDDIR)/ompi/mca/common/ompio/libmca_common_ompio.la noinst_LTLIBRARIES = $(component_noinst) diff --git a/ompi/mca/fs/ime/Makefile.am b/ompi/mca/fs/ime/Makefile.am index db15704e732..9afbc08115a 100644 --- a/ompi/mca/fs/ime/Makefile.am +++ b/ompi/mca/fs/ime/Makefile.am @@ -37,7 +37,7 @@ AM_CPPFLAGS = $(fs_ime_CPPFLAGS) mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_fs_ime_la_SOURCES = $(fs_ime_sources) -mca_fs_ime_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_fs_ime_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(fs_ime_LIBS) mca_fs_ime_la_LDFLAGS = -module -avoid-version $(fs_ime_LDFLAGS) diff --git a/ompi/mca/fs/lustre/Makefile.am b/ompi/mca/fs/lustre/Makefile.am index bf4f487de7a..9f862506c7d 100644 --- a/ompi/mca/fs/lustre/Makefile.am +++ b/ompi/mca/fs/lustre/Makefile.am @@ -43,7 +43,7 @@ AM_CPPFLAGS = $(fs_lustre_CPPFLAGS) mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_fs_lustre_la_SOURCES = $(fs_lustre_sources) -mca_fs_lustre_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_fs_lustre_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(fs_lustre_LIBS) mca_fs_lustre_la_LDFLAGS = -module -avoid-version $(fs_lustre_LDFLAGS) diff --git a/ompi/mca/fs/ufs/Makefile.am b/ompi/mca/fs/ufs/Makefile.am index 50201a80ca2..aa2e4b728fd 100644 --- a/ompi/mca/fs/ufs/Makefile.am +++ b/ompi/mca/fs/ufs/Makefile.am @@ -34,7 +34,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_fs_ufs_la_SOURCES = $(sources) mca_fs_ufs_la_LDFLAGS = -module -avoid-version -mca_fs_ufs_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_fs_ufs_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_fs_ufs_la_SOURCES = $(sources) diff --git a/ompi/mca/hook/comm_method/hook_comm_method_fns.c b/ompi/mca/hook/comm_method/hook_comm_method_fns.c index 5570a292ef4..86d7447c72f 100644 --- a/ompi/mca/hook/comm_method/hook_comm_method_fns.c +++ b/ompi/mca/hook/comm_method/hook_comm_method_fns.c @@ -511,6 +511,7 @@ ompi_report_comm_methods(int called_from_location) free(p); } +#if 0 MPI_Datatype mydt; MPI_Op myop; MPI_Type_contiguous(sizeof(comm_method_string_conversion_t), MPI_BYTE, &mydt); @@ -521,6 +522,7 @@ ompi_report_comm_methods(int called_from_location) leader_comm->c_coll->coll_allreduce_module); MPI_Op_free(&myop); MPI_Type_free(&mydt); +#endif // Sort communication method string arrays after reduction qsort(&comm_method_string_conversion.str[1], diff --git a/ompi/mca/mtl/ofi/Makefile.am b/ompi/mca/mtl/ofi/Makefile.am index 7baad1b211f..9f88e85ca5b 100644 --- a/ompi/mca/mtl/ofi/Makefile.am +++ b/ompi/mca/mtl/ofi/Makefile.am @@ -81,7 +81,7 @@ mca_mtl_ofi_la_SOURCES = $(mtl_ofi_sources) mca_mtl_ofi_la_LDFLAGS = \ $(mtl_ofi_LDFLAGS) \ -module -avoid-version -mca_mtl_ofi_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_mtl_ofi_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(OPAL_TOP_BUILDDIR)/opal/mca/common/ofi/lib@OPAL_LIB_NAME@mca_common_ofi.la \ $(mtl_ofi_LIBS) diff --git a/ompi/mca/mtl/portals4/Makefile.am b/ompi/mca/mtl/portals4/Makefile.am index df3f13a5586..437b9343d24 100644 --- a/ompi/mca/mtl/portals4/Makefile.am +++ b/ompi/mca/mtl/portals4/Makefile.am @@ -60,7 +60,7 @@ endif mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_mtl_portals4_la_SOURCES = $(local_sources) -mca_mtl_portals4_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_mtl_portals4_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(mtl_portals4_LIBS) mca_mtl_portals4_la_LDFLAGS = -module -avoid-version $(mtl_portals4_LDFLAGS) diff --git a/ompi/mca/mtl/psm2/Makefile.am b/ompi/mca/mtl/psm2/Makefile.am index 8b889bf726a..af1878c4f08 100644 --- a/ompi/mca/mtl/psm2/Makefile.am +++ b/ompi/mca/mtl/psm2/Makefile.am @@ -59,7 +59,7 @@ endif mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_mtl_psm2_la_SOURCES = $(mtl_psm2_sources) -mca_mtl_psm2_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_mtl_psm2_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(mtl_psm2_LIBS) mca_mtl_psm2_la_LDFLAGS = -module -avoid-version $(mtl_psm2_LDFLAGS) diff --git a/ompi/mca/op/avx/Makefile.am b/ompi/mca/op/avx/Makefile.am index b1d84d90b33..022c2dc7da0 100644 --- a/ompi/mca/op/avx/Makefile.am +++ b/ompi/mca/op/avx/Makefile.am @@ -86,7 +86,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_op_avx_la_SOURCES = $(sources) mca_op_avx_la_LIBADD = $(specialized_op_libs) -mca_op_avx_la_LDFLAGS = -module -avoid-version $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_op_avx_la_LDFLAGS = -module -avoid-version $(top_builddir)/ompi/libopen-mpi.la # Specific information for static builds. diff --git a/ompi/mca/op/example/Makefile.am b/ompi/mca/op/example/Makefile.am index e0990e52716..5b2f80ee706 100644 --- a/ompi/mca/op/example/Makefile.am +++ b/ompi/mca/op/example/Makefile.am @@ -71,7 +71,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component) mca_op_example_la_SOURCES = $(component_sources) mca_op_example_la_LDFLAGS = -module -avoid-version -mca_op_example_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_op_example_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la # Specific information for static builds. # diff --git a/ompi/mca/osc/monitoring/Makefile.am b/ompi/mca/osc/monitoring/Makefile.am index a90ce38c6e3..2567b2a4b54 100644 --- a/ompi/mca/osc/monitoring/Makefile.am +++ b/ompi/mca/osc/monitoring/Makefile.am @@ -31,7 +31,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_osc_monitoring_la_SOURCES = $(monitoring_sources) mca_osc_monitoring_la_LDFLAGS = -module -avoid-version -mca_osc_monitoring_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_osc_monitoring_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(OMPI_TOP_BUILDDIR)/ompi/mca/common/monitoring/libmca_common_monitoring.la noinst_LTLIBRARIES = $(component_noinst) diff --git a/ompi/mca/osc/portals4/Makefile.am b/ompi/mca/osc/portals4/Makefile.am index a7f5a061254..3971fafa7ac 100644 --- a/ompi/mca/osc/portals4/Makefile.am +++ b/ompi/mca/osc/portals4/Makefile.am @@ -36,7 +36,7 @@ endif mcacomponentdir = $(pkglibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_osc_portals4_la_SOURCES = $(portals4_sources) -mca_osc_portals4_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_osc_portals4_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(osc_portals4_LIBS) mca_osc_portals4_la_LDFLAGS = -module -avoid-version $(osc_portals4_LDFLAGS) diff --git a/ompi/mca/osc/rdma/Makefile.am b/ompi/mca/osc/rdma/Makefile.am index 4757ce6aa93..0af844602c1 100644 --- a/ompi/mca/osc/rdma/Makefile.am +++ b/ompi/mca/osc/rdma/Makefile.am @@ -63,7 +63,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_osc_rdma_la_SOURCES = $(rdma_sources) mca_osc_rdma_la_LDFLAGS = -module -avoid-version -mca_osc_rdma_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_osc_rdma_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_osc_rdma_la_SOURCES = $(rdma_sources) diff --git a/ompi/mca/osc/sm/Makefile.am b/ompi/mca/osc/sm/Makefile.am index 01d230d7bf3..db6aedf13f8 100644 --- a/ompi/mca/osc/sm/Makefile.am +++ b/ompi/mca/osc/sm/Makefile.am @@ -34,7 +34,7 @@ endif mcacomponentdir = $(pkglibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_osc_sm_la_SOURCES = $(sm_sources) -mca_osc_sm_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_osc_sm_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(osc_sm_LIBS) mca_osc_sm_la_LDFLAGS = -module -avoid-version $(osc_sm_LDFLAGS) diff --git a/ompi/mca/osc/ucx/Makefile.am b/ompi/mca/osc/ucx/Makefile.am index 77184d83584..4c3fbd6da91 100644 --- a/ompi/mca/osc/ucx/Makefile.am +++ b/ompi/mca/osc/ucx/Makefile.am @@ -34,7 +34,7 @@ endif mcacomponentdir = $(pkglibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_osc_ucx_la_SOURCES = $(ucx_sources) -mca_osc_ucx_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la $(osc_ucx_LIBS) \ +mca_osc_ucx_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la $(osc_ucx_LIBS) \ $(OPAL_TOP_BUILDDIR)/opal/mca/common/ucx/lib@OPAL_LIB_NAME@mca_common_ucx.la mca_osc_ucx_la_LDFLAGS = -module -avoid-version $(osc_ucx_LDFLAGS) diff --git a/ompi/mca/part/persist/Makefile.am b/ompi/mca/part/persist/Makefile.am index fab2975e92b..910ea0a59ad 100644 --- a/ompi/mca/part/persist/Makefile.am +++ b/ompi/mca/part/persist/Makefile.am @@ -42,7 +42,7 @@ local_sources = \ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_part_persist_la_SOURCES = $(local_sources) -mca_part_persist_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_part_persist_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(part_persist_LIBS) mca_part_persist_la_LDFLAGS = -module -avoid-version $(part_persist_LDFLAGS) diff --git a/ompi/mca/pml/cm/Makefile.am b/ompi/mca/pml/cm/Makefile.am index d1a43fe8841..fa7327d6372 100644 --- a/ompi/mca/pml/cm/Makefile.am +++ b/ompi/mca/pml/cm/Makefile.am @@ -43,7 +43,7 @@ local_sources = \ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_pml_cm_la_SOURCES = $(local_sources) -mca_pml_cm_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_pml_cm_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(pml_cm_LIBS) mca_pml_cm_la_LDFLAGS = -module -avoid-version $(pml_cm_LDFLAGS) diff --git a/ompi/mca/pml/monitoring/Makefile.am b/ompi/mca/pml/monitoring/Makefile.am index 431f5be9ba9..6e4215de807 100644 --- a/ompi/mca/pml/monitoring/Makefile.am +++ b/ompi/mca/pml/monitoring/Makefile.am @@ -32,7 +32,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_pml_monitoring_la_SOURCES = $(monitoring_sources) mca_pml_monitoring_la_LDFLAGS = -module -avoid-version -mca_pml_monitoring_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ +mca_pml_monitoring_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ $(OMPI_TOP_BUILDDIR)/ompi/mca/common/monitoring/libmca_common_monitoring.la noinst_LTLIBRARIES = $(component_noinst) diff --git a/ompi/mca/pml/ob1/Makefile.am b/ompi/mca/pml/ob1/Makefile.am index 38487f5a2e6..4a84f9ec69b 100644 --- a/ompi/mca/pml/ob1/Makefile.am +++ b/ompi/mca/pml/ob1/Makefile.am @@ -72,7 +72,7 @@ mcacomponent_LTLIBRARIES = $(component_install) mca_pml_ob1_la_SOURCES = $(ob1_sources) mca_pml_ob1_la_LDFLAGS = -module -avoid-version -mca_pml_ob1_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_pml_ob1_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_pml_ob1_la_SOURCES = $(ob1_sources) diff --git a/ompi/mca/pml/ucx/Makefile.am b/ompi/mca/pml/ucx/Makefile.am index fe6c8e47c35..04ab6a445a0 100644 --- a/ompi/mca/pml/ucx/Makefile.am +++ b/ompi/mca/pml/ucx/Makefile.am @@ -37,7 +37,7 @@ endif mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_pml_ucx_la_SOURCES = $(local_sources) -mca_pml_ucx_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la $(pml_ucx_LIBS) \ +mca_pml_ucx_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la $(pml_ucx_LIBS) \ $(OPAL_TOP_BUILDDIR)/opal/mca/common/ucx/lib@OPAL_LIB_NAME@mca_common_ucx.la mca_pml_ucx_la_LDFLAGS = -module -avoid-version $(pml_ucx_LDFLAGS) diff --git a/ompi/mca/pml/v/Makefile.am b/ompi/mca/pml/v/Makefile.am index 3fd61be21df..e68c373e09a 100644 --- a/ompi/mca/pml/v/Makefile.am +++ b/ompi/mca/pml/v/Makefile.am @@ -32,7 +32,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_pml_v_la_SOURCES = $(local_sources) mca_pml_v_la_LDFLAGS = -module -avoid-version -mca_pml_v_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_pml_v_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_pml_v_la_SOURCES = $(local_sources) diff --git a/ompi/mca/topo/basic/Makefile.am b/ompi/mca/topo/basic/Makefile.am index 9ed7b26dadd..907f5ffa282 100644 --- a/ompi/mca/topo/basic/Makefile.am +++ b/ompi/mca/topo/basic/Makefile.am @@ -37,7 +37,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component) mca_topo_basic_la_SOURCES = $(component_sources) mca_topo_basic_la_LDFLAGS = -module -avoid-version -mca_topo_basic_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_topo_basic_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la noinst_LTLIBRARIES = $(lib) libmca_topo_basic_la_SOURCES = $(lib_sources) diff --git a/ompi/mca/topo/example/Makefile.am b/ompi/mca/topo/example/Makefile.am index 22acd1a360f..29e78f455a0 100644 --- a/ompi/mca/topo/example/Makefile.am +++ b/ompi/mca/topo/example/Makefile.am @@ -46,7 +46,7 @@ mcacomponentdir = $(pkglibdir) mcacomponent_LTLIBRARIES = $(component) mca_topo_example_la_SOURCES = $(component_sources) mca_topo_example_la_LDFLAGS = -module -avoid-version -mca_topo_example_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_topo_example_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la noinst_LTLIBRARIES = $(lib) libmca_topo_example_la_SOURCES = $(lib_sources) diff --git a/ompi/mca/topo/treematch/Makefile.am b/ompi/mca/topo/treematch/Makefile.am index e17d4e18085..eeb694a136f 100644 --- a/ompi/mca/topo/treematch/Makefile.am +++ b/ompi/mca/topo/treematch/Makefile.am @@ -43,7 +43,7 @@ mcacomponentdir = $(pkglibdir) mcacomponent_LTLIBRARIES = $(component) mca_topo_treematch_la_SOURCES = $(component_sources) mca_topo_treematch_la_LDFLAGS = -module -avoid-version $(topo_treematch_LDFLAGS) -mca_topo_treematch_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la $(topo_treematch_LIBS) +mca_topo_treematch_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la $(topo_treematch_LIBS) noinst_LTLIBRARIES = $(lib) libmca_topo_treematch_la_SOURCES = $(lib_sources) diff --git a/ompi/mca/vprotocol/pessimist/Makefile.am b/ompi/mca/vprotocol/pessimist/Makefile.am index f037b9f6d00..8f931fccb8e 100644 --- a/ompi/mca/vprotocol/pessimist/Makefile.am +++ b/ompi/mca/vprotocol/pessimist/Makefile.am @@ -50,7 +50,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_vprotocol_pessimist_la_SOURCES = $(local_sources) mca_vprotocol_pessimist_la_LDFLAGS = -module -avoid-version -mca_vprotocol_pessimist_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_vprotocol_pessimist_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_vprotocol_pessimist_la_SOURCES = $(local_sources) diff --git a/ompi/message/Makefile.am b/ompi/message/Makefile.am index 8fc7c07e4cd..b5650a5f81d 100644 --- a/ompi/message/Makefile.am +++ b/ompi/message/Makefile.am @@ -24,5 +24,5 @@ headers += \ message/message.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ message/message.c diff --git a/ompi/mpi/c/Makefile.am b/ompi/mpi/c/Makefile.am index 5dbd959cd44..80e6f82ab76 100644 --- a/ompi/mpi/c/Makefile.am +++ b/ompi/mpi/c/Makefile.am @@ -40,8 +40,11 @@ include $(top_srcdir)/Makefile.ompi-rules noinst_LTLIBRARIES = libmpi_c.la libmpi_c_profile.la +if OMPI_STANDARD_ABI +noinst_LTLIBRARIES += libmpi_c_abi.la libmpi_c_abi_profile.la +endif if BUILD_MPI_BINDINGS_LAYER -noinst_LTLIBRARIES += libmpi_c_noprofile.la +noinst_LTLIBRARIES += libmpi_c_noprofile.la libmpi_c_abi_noprofile.la endif headers = bindings.h @@ -497,18 +500,40 @@ prototype_sources = \ win_wait.c.in \ wtime.c.in -# Include template files in case someone wants to update them EXTRA_DIST = $(prototype_sources) # attr_fn.c contains attribute manipulation functions which do not # profiling implications, and so are always built. libmpi_c_la_SOURCES = \ attr_fn.c +# The MPI_Abi_* functions do not require profiling implementations. +libmpi_c_la_SOURCES += \ + abi_details.c \ + abi_supported.c \ + abi_version.c libmpi_c_la_LIBADD = libmpi_c_profile.la if BUILD_MPI_BINDINGS_LAYER libmpi_c_la_LIBADD += libmpi_c_noprofile.la endif +libmpi_c_abi_la_SOURCES = \ + abi.h \ + attr_fn.c \ + abi_details.c \ + abi_supported.c \ + abi_version.c +libmpi_c_abi_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES +libmpi_c_abi_la_LIBADD = libmpi_c_abi_profile.la +if BUILD_MPI_BINDINGS_LAYER +libmpi_c_abi_la_LIBADD += libmpi_c_abi_noprofile.la +endif + +libmpi_c_abi_profile_la_SOURCES = $(abi_interface_profile_sources) +libmpi_c_abi_profile_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES -DOMPI_BUILD_MPI_PROFILING=1 + +libmpi_c_abi_noprofile_la_SOURCES = $(abi_interface_profile_sources) +libmpi_c_abi_noprofile_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES -DOMPI_BUILD_MPI_PROFILING=0 + # Conditionally install the header files if WANT_INSTALL_HEADERS ompidir = $(ompiincludedir)/$(subdir) @@ -516,11 +541,12 @@ ompi_HEADERS = $(headers) endif # -# List of all C files that have profile versions (generated_*.c files were +# List of all C files that have profile versions (*_generated.c files were # generated from prototype_sources above). # # interface_profile_sources = $(prototype_sources:.c.in=_generated.c) +abi_interface_profile_sources =${interface_profile_sources:%=standard_%} # The following are special case functions where we @@ -558,7 +584,8 @@ libmpi_c_noprofile_la_SOURCES = $(interface_profile_sources) libmpi_c_noprofile_la_CPPFLAGS = -DOMPI_BUILD_MPI_PROFILING=0 # ABI generation rules -%_generated.c: %.c.in +if OMPI_GENERATE_BINDINGS +ompi_%_generated.c: %.c.in $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ --builddir $(abs_top_builddir) \ --srcdir $(abs_top_srcdir) \ @@ -568,5 +595,20 @@ libmpi_c_noprofile_la_CPPFLAGS = -DOMPI_BUILD_MPI_PROFILING=0 ompi \ $< +standard_%_generated.c: %.c.in + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ + --builddir $(abs_top_builddir) \ + --srcdir $(abs_top_srcdir) \ + --output $@ \ + c \ + source \ + standard \ + $< +abi.h: abi.py $(prototype_sources) + $(OMPI_V_GEN) $(PYTHON) $(srcdir)/abi.py header --srcdir=$(srcdir) $(prototype_sources) > $@ +standard_abi/mpi.h: abi.py $(prototype_sources) + mkdir -p standard_abi + $(OMPI_V_GEN) $(PYTHON) $(srcdir)/abi.py header --srcdir=$(srcdir) --external $(prototype_sources) > $@ +endif # Delete generated files on maintainer-clean -MAINTAINERCLEANFILES = *_generated.c +MAINTAINERCLEANFILES = *_generated.c abi.h standard_abi/ diff --git a/ompi/mpi/c/abi.py b/ompi/mpi/c/abi.py new file mode 100755 index 00000000000..f40986ff981 --- /dev/null +++ b/ompi/mpi/c/abi.py @@ -0,0 +1,1278 @@ +#!/usr/bin/env python3 +# Copyright (c) 2023 Triad National Security, LLC. All rights reserved. +# Copyright (c) 2023 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADERS$ +# +# +"""MPI Standard ABI Generation. + +TEMPLATE SOURCE FILE ASSUMPTIONS: +* Only one function per file +* Nothing (other than blank lines) after closing '}' +* Function prototype is preceded by PROTOTYPE +* All types in the function prototype are converted to one-word capital types + as defined here (to be later converted to ompi or standard ABI types) +* Functions requiring a bigcount implementation should have type COUNT in + place of MPI_Count or int for each count parameter. Bigcount functions will + be generated automatically for any function that includes a COUNT type. +""" +from abc import ABC, abstractmethod +import argparse +import re +import sys +import os + +# C type: const int +ERROR_CLASSES = [ + 'MPI_SUCCESS', + 'MPI_ERR_BUFFER', + 'MPI_ERR_COUNT', + 'MPI_ERR_TYPE', + 'MPI_ERR_TAG', + 'MPI_ERR_COMM', + 'MPI_ERR_RANK', + 'MPI_ERR_REQUEST', + 'MPI_ERR_ROOT', + 'MPI_ERR_GROUP', + 'MPI_ERR_OP', + 'MPI_ERR_TOPOLOGY', + 'MPI_ERR_DIMS', + 'MPI_ERR_ARG', + 'MPI_ERR_UNKNOWN', + 'MPI_ERR_TRUNCATE', + 'MPI_ERR_OTHER', + 'MPI_ERR_INTERN', + 'MPI_ERR_PENDING', + 'MPI_ERR_IN_STATUS', + 'MPI_ERR_ACCESS', + 'MPI_ERR_AMODE', + 'MPI_ERR_ASSERT', + 'MPI_ERR_BAD_FILE', + 'MPI_ERR_BASE', + 'MPI_ERR_CONVERSION', + 'MPI_ERR_DISP', + 'MPI_ERR_DUP_DATAREP', + 'MPI_ERR_FILE_EXISTS', + 'MPI_ERR_FILE_IN_USE', + 'MPI_ERR_FILE', + 'MPI_ERR_INFO_KEY', + 'MPI_ERR_INFO_NOKEY', + 'MPI_ERR_INFO_VALUE', + 'MPI_ERR_INFO', + 'MPI_ERR_IO', + 'MPI_ERR_KEYVAL', + 'MPI_ERR_LOCKTYPE', + 'MPI_ERR_NAME', + 'MPI_ERR_NO_MEM', + 'MPI_ERR_NOT_SAME', + 'MPI_ERR_NO_SPACE', + 'MPI_ERR_NO_SUCH_FILE', + 'MPI_ERR_PORT', + 'MPI_ERR_PROC_ABORTED', + 'MPI_ERR_QUOTA', + 'MPI_ERR_READ_ONLY', + 'MPI_ERR_RMA_ATTACH', + 'MPI_ERR_RMA_CONFLICT', + 'MPI_ERR_RMA_RANGE', + 'MPI_ERR_RMA_SHARED', + 'MPI_ERR_RMA_SYNC', + 'MPI_ERR_RMA_FLAVOR', + 'MPI_ERR_SERVICE', + 'MPI_ERR_SESSION', + 'MPI_ERR_SIZE', + 'MPI_ERR_SPAWN', + 'MPI_ERR_UNSUPPORTED_DATAREP', + 'MPI_ERR_UNSUPPORTED_OPERATION', + 'MPI_ERR_WIN', + 'MPI_T_ERR_CANNOT_INIT', + 'MPI_T_ERR_NOT_INITIALIZED', + 'MPI_T_ERR_MEMORY', + 'MPI_T_ERR_INVALID', + 'MPI_T_ERR_INVALID_INDEX', + 'MPI_T_ERR_INVALID_ITEM', + 'MPI_T_ERR_INVALID_SESSION', + 'MPI_T_ERR_INVALID_HANDLE', + 'MPI_T_ERR_INVALID_NAME', + 'MPI_T_ERR_OUT_OF_HANDLES', + 'MPI_T_ERR_OUT_OF_SESSIONS', + 'MPI_T_ERR_CVAR_SET_NOT_NOW', + 'MPI_T_ERR_CVAR_SET_NEVER', + 'MPI_T_ERR_PVAR_NO_WRITE', + 'MPI_T_ERR_PVAR_NO_STARTSTOP', + 'MPI_T_ERR_PVAR_NO_ATOMIC', + 'MPI_ERR_LASTCODE', +] + +PREDEFINED_DATATYPES = [ + 'MPI_CHAR', + 'MPI_SHORT', + 'MPI_INT', + 'MPI_LONG', + 'MPI_LONG_LONG_INT', + 'MPI_LONG_LONG', + 'MPI_SIGNED_CHAR', + 'MPI_UNSIGNED_CHAR', + 'MPI_UNSIGNED_SHORT', + 'MPI_UNSIGNED', + 'MPI_UNSIGNED_LONG', + 'MPI_UNSIGNED_LONG_LONG', + 'MPI_FLOAT', + 'MPI_DOUBLE', + 'MPI_LONG_DOUBLE', + 'MPI_WCHAR', + 'MPI_C_BOOL', + 'MPI_INT8_T', + 'MPI_INT16_T', + 'MPI_INT32_T', + 'MPI_INT64_T', + 'MPI_UINT8_T', + 'MPI_UINT16_T', + 'MPI_UINT32_T', + 'MPI_UINT64_T', + 'MPI_AINT', + 'MPI_COUNT', + 'MPI_OFFSET', + 'MPI_C_COMPLEX', + 'MPI_C_FLOAT_COMPLEX', + 'MPI_C_DOUBLE_COMPLEX', + 'MPI_C_LONG_DOUBLE_COMPLEX', + 'MPI_BYTE', + 'MPI_PACKED', + 'MPI_CXX_BOOL', + 'MPI_CXX_FLOAT_COMPLEX', + 'MPI_CXX_DOUBLE_COMPLEX', + 'MPI_CXX_LONG_DOUBLE_COMPLEX', + 'MPI_FLOAT_INT', + 'MPI_DOUBLE_INT', + 'MPI_LONG_INT', + 'MPI_2INT', + 'MPI_SHORT_INT', + 'MPI_LONG_DOUBLE_INT', +] + +# C type: MPI_Comm +RESERVED_COMMUNICATORS = [ + 'MPI_COMM_NULL', + 'MPI_COMM_WORLD', + 'MPI_COMM_SELF', +] + +COMMUNICATOR_SPLIT_TYPES = [ + 'MPI_COMM_TYPE_SHARED', + 'MPI_COMM_TYPE_HW_UNGUIDED', + 'MPI_COMM_TYPE_HW_GUIDED', +] + +RESERVED_WINDOWS = [ + 'MPI_WIN_NULL', +] + +RESERVED_REQUESTS = [ + 'MPI_REQUEST_NULL', +] + +RESERVED_INFOS = [ + 'MPI_INFO_ENV', + 'MPI_INFO_NULL', +] + +RESERVED_FILES = [ + 'MPI_FILE_NULL', +] + +IGNORED_STATUS_HANDLES = [ + 'MPI_STATUSES_IGNORE', + 'MPI_STATUS_IGNORE', +] + +COLLECTIVE_OPERATIONS = [ + 'MPI_MAX', + 'MPI_MIN', + 'MPI_SUM', + 'MPI_PROD', + 'MPI_MAXLOC', + 'MPI_MINLOC', + 'MPI_BAND', + 'MPI_BOR', + 'MPI_BXOR', + 'MPI_LAND', + 'MPI_LOR', + 'MPI_LXOR', + 'MPI_REPLACE', + 'MPI_NO_OP', +] + +VARIOUS_CONSTANTS = { + # Just setting this to the same as ompi ABI for right now, but will need to + # match the standard ABI value when defined + 'MPI_MAX_LIBRARY_VERSION_STRING': 256, + 'MPI_MAX_PROCESSOR_NAME': 256, +} + +# Types + +C_OPAQUE_TYPES = { + 'MPI_Aint': 'intptr_t', + 'MPI_Offset': 'int64_t', + 'MPI_Count': 'size_t', + # The below type needs to be set externally depending on Fortran compiler + 'MPI_Fint': 'int64_t', +} + +C_HANDLES = [ + 'MPI_Comm', + 'MPI_Datatype', + 'MPI_Errhandler', + 'MPI_File', + 'MPI_Group', + 'MPI_Info', + 'MPI_Message', + 'MPI_Op', + 'MPI_Request', + 'MPI_Session', + 'MPI_Win', +] + + +class ConvertFuncs: + """Names of conversion functions (between standard ABI and OMPI ABI).""" + + ERROR_CLASS = 'ompi_convert_intern_error_abi_error' + COMM = 'ompi_convert_abi_comm_intern_comm' + DATATYPE = 'ompi_convert_abi_datatype_intern_datatype' + REQUEST = 'ompi_convert_abi_request_intern_request' + STATUS = 'ompi_convert_intern_status_abi_status' + OP = 'ompi_convert_abi_op_intern_op' + WIN = 'ompi_convert_abi_win_intern_win' + INFO = 'ompi_convert_abi_info_intern_info' + FILE = 'ompi_convert_abi_file_intern_file' + + +class ConvertOMPIToStandard: + """Generated function for converting from OMPI to standard ABI.""" + + COMM = 'ompi_convert_comm_ompi_to_standard' + + +# Inline function attributes +INLINE_ATTRS = '__opal_attribute_always_inline__ static inline' + + +def mpi_fn_name_from_base_fn_name(name): + """Convert from a base name to the standard 'MPI_*' name.""" + return f'MPI_{name.capitalize()}' + + +def abi_internal_name(extname): + """Convert from the ABI external name to an internal name. + + Used to avoid conflicts with existing MPI names. + """ + return f'{extname}_ABI_INTERNAL' + + +class ABIHeaderBuilder: + """ABI header builder code.""" + + def __init__(self, prototypes, external=False, file=sys.stdout): + self.file = file + self.external = external + + if external: + mangle_name = lambda name: name + else: + mangle_name = abi_internal_name + + # Build up the list of standard ABI signatures + signatures = [] + for prototype in prototypes: + base_name = mpi_fn_name_from_base_fn_name(prototype.name) + signatures.append(prototype.signature('standard', base_name, + mangle_name=mangle_name)) + # Profiling prototype + signatures.append(prototype.signature('standard', f'P{base_name}', + mangle_name=mangle_name)) + if prototype.need_bigcount: + signatures.append(prototype.signature('standard', f'{base_name}_c', + count_type='MPI_Count', + mangle_name=mangle_name)) + # Profiling prototype + signatures.append(prototype.signature('standard', f'P{base_name}_c', + count_type='MPI_Count', + mangle_name=mangle_name)) + self.signatures = signatures + + def mangle_name(self, extname): + """Mangle names, depending on whether building external or internal header.""" + if self.external: + return extname + return abi_internal_name(extname) + + def dump(self, *pargs, **kwargs): + print(*pargs, **kwargs, file=self.file) + + def dump_lines(self, lines): + lines = indent_lines(lines, 4 * ' ', start=1) + for line in lines: + self.dump(line) + + def generate_error_convert_fn(self): + self.dump(f'{INLINE_ATTRS} int {ConvertFuncs.ERROR_CLASS}(int error_class)') + self.dump('{') + lines = [] + lines.append('switch (error_class) {') + for error in ERROR_CLASSES: + lines.append(f'case {self.mangle_name(error)}:') + lines.append(f'return {error};') + lines.append('default:') + lines.append('return error_class;') + lines.append('}') + self.dump_lines(lines) + self.dump('}') + + def generic_convert(self, fn_name, param_name, type_, value_names): + intern_type = self.mangle_name(type_) + self.dump(f'{INLINE_ATTRS} {type_} {fn_name}({intern_type} {param_name})') + self.dump('{') + lines = [] + for i, value_name in enumerate(value_names): + intern_name = self.mangle_name(value_name) + if i == 0: + lines.append('if (%s == %s) {' % (intern_name, param_name)) + else: + lines.append('} else if (%s == %s) {' % (intern_name, param_name)) + lines.append(f'return {value_name};') + lines.append('}') + lines.append(f'return ({type_}) {param_name};') + self.dump_lines(lines) + self.dump('}') + + def generic_convert_reverse(self, fn_name, param_name, type_, value_names): + intern_type = self.mangle_name(type_) + self.dump(f'{INLINE_ATTRS} {intern_type} {fn_name}({type_} {param_name})') + self.dump('{') + lines = [] + for i, value_name in enumerate(value_names): + intern_name = self.mangle_name(value_name) + if i == 0: + lines.append('if (%s == %s) {' % (value_name, param_name)) + else: + lines.append('} else if (%s == %s) {' % (value_name, param_name)) + lines.append(f'return {intern_name};') + lines.append('}') + lines.append(f'return ({intern_type}) {param_name};') + self.dump_lines(lines) + self.dump('}') + + def generate_comm_convert_fn(self): + self.generic_convert(ConvertFuncs.COMM, 'comm', 'MPI_Comm', RESERVED_COMMUNICATORS) + + def generate_comm_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.COMM, 'comm', 'MPI_Comm', RESERVED_COMMUNICATORS) + + def generate_info_convert_fn(self): + self.generic_convert(ConvertFuncs.INFO, 'info', 'MPI_Info', RESERVED_INFOS) + + def generate_file_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertFuncs.FILE, 'file', 'MPI_File', RESERVED_FILES) + + def generate_datatype_convert_fn(self): + self.generic_convert(ConvertFuncs.DATATYPE, 'datatype', 'MPI_Datatype', PREDEFINED_DATATYPES) + + def generate_op_convert_fn(self): + self.generic_convert(ConvertFuncs.OP, 'op', 'MPI_Op', COLLECTIVE_OPERATIONS) + + def generate_win_convert_fn(self): + self.generic_convert(ConvertFuncs.WIN, 'win', 'MPI_Win', RESERVED_WINDOWS) + + def generate_pointer_convert_fn(self, type_, fn_name, constants): + abi_type = self.mangle_name(type_) + self.dump(f'{INLINE_ATTRS} void {fn_name}({abi_type} *ptr)') + self.dump('{') + lines = [] + for i, ompi_name in enumerate(constants): + abi_name = self.mangle_name(ompi_name) + if i == 0: + lines.append('if (%s == (%s) *ptr) {' % (ompi_name, type_)) + else: + lines.append('} else if (%s == (%s) *ptr) {' % (ompi_name, type_)) + lines.append(f'*ptr = {abi_name};') + lines.append('}') + self.dump_lines(lines) + self.dump('}') + + def generate_request_convert_fn(self): + self.generate_pointer_convert_fn('MPI_Request', ConvertFuncs.REQUEST, RESERVED_REQUESTS) + + def generate_file_convert_fn(self): + self.generate_pointer_convert_fn('MPI_File', ConvertFuncs.FILE, RESERVED_FILES) + + def generate_status_convert_fn(self): + type_ = 'MPI_Status' + abi_type = self.mangle_name(type_) + self.dump(f'{INLINE_ATTRS} void {ConvertFuncs.STATUS}({abi_type} *out, {type_} *inp)') + self.dump('{') + self.dump(' out->MPI_SOURCE = inp->MPI_SOURCE;') + self.dump(' out->MPI_TAG = inp->MPI_TAG;') + self.dump(f' out->MPI_ERROR = {ConvertFuncs.ERROR_CLASS}(inp->MPI_ERROR);') + # TODO: What to do with the private fields? + self.dump('}') + + def define(self, type_, name, value): + self.dump(f'#define {name} OMPI_CAST_CONSTANT({type_}, {value})') + + def define_all(self, type_, constants): + for i, const in enumerate(constants): + self.define(self.mangle_name(type_), self.mangle_name(const), i + 1) + self.dump() + + def dump_header(self): + header_guard = '_ABI_INTERNAL_' + self.dump(f'#ifndef {header_guard}') + self.dump(f'#define {header_guard}') + + self.dump('#include "stddef.h"') + self.dump('#include "stdint.h"') + + self.dump(""" +#if defined(c_plusplus) || defined(__cplusplus) +extern "C" { +#endif +""") + + self.dump(""" +#if defined(c_plusplus) || defined(__cplusplus) +#define OMPI_CAST_CONSTANT(type, value) (static_cast (static_cast (value))) +#else +#define OMPI_CAST_CONSTANT(type, value) ((type) ((void *) value)) +#endif +""") + + for i, err in enumerate(ERROR_CLASSES): + self.dump(f'#define {self.mangle_name(err)} {i + 1}') + self.dump() + + self.define_all('MPI_Datatype', PREDEFINED_DATATYPES) + self.define_all('MPI_Op', COLLECTIVE_OPERATIONS) + self.define_all('MPI_Comm', RESERVED_COMMUNICATORS) + self.define_all('MPI_Request', RESERVED_REQUESTS) + self.define_all('MPI_Win', RESERVED_WINDOWS) + self.define_all('MPI_Info', RESERVED_INFOS) + self.define_all('MPI_File', RESERVED_FILES) + + for name, value in VARIOUS_CONSTANTS.items(): + self.dump(f'#define {self.mangle_name(name)} {value}') + self.dump() + + status_type = self.mangle_name('MPI_Status') + for i, name in enumerate(IGNORED_STATUS_HANDLES): + self.define(f'{status_type} *', self.mangle_name(name), i + 1) + self.dump() + + for i, name in enumerate(COMMUNICATOR_SPLIT_TYPES): + self.dump(f'#define {self.mangle_name(name)} {i}') + self.dump() + + for mpi_type, c_type in C_OPAQUE_TYPES.items(): + self.dump(f'typedef {c_type} {self.mangle_name(mpi_type)};') + self.dump() + + for handle in C_HANDLES: + prefix, suffix = handle.split('_') + name = f'{prefix}_ABI_{suffix}' + self.dump(f'typedef struct {self.mangle_name(name)} *{self.mangle_name(handle)};') + self.dump() + self.dump(""" +struct MPI_Status_ABI { + int MPI_SOURCE; + int MPI_TAG; + int MPI_ERROR; + int mpi_abi_private[5]; +};""") + self.dump(f'typedef struct MPI_Status_ABI {self.mangle_name("MPI_Status")};') + self.dump() + # Function signatures + for sig in self.signatures: + self.dump(f'{sig};') + self.dump('int MPI_Abi_details(int *buflen, char *details, MPI_Info *info);') + self.dump('int MPI_Abi_supported(int *flag);') + self.dump('int MPI_Abi_version(int *abi_major, int *abi_minor);') + if not self.external: + # Now generate the conversion code + self.generate_error_convert_fn() + self.generate_comm_convert_fn() + self.generate_comm_convert_fn_intern_to_abi() + self.generate_info_convert_fn() + self.generate_file_convert_fn() + self.generate_datatype_convert_fn() + self.generate_op_convert_fn() + self.generate_win_convert_fn() + self.generate_request_convert_fn() + self.generate_status_convert_fn() + + self.dump(""" +#if defined(c_plusplus) || defined(__cplusplus) +} +#endif +""") + self.dump(f'#endif /* {header_guard} */') + + +class Parameter: + + def __init__(self, text): + """Parse a parameter.""" + # parameter in the form "TYPE NAME" or "TYPE NAME:COUNT_VAR" + type_, namecount = text.split() + if ':' in namecount: + name, count_param = namecount.split(':') + else: + name, count_param = namecount, None + self.type_ = type_ + self.name = name + self.count_param = count_param + + def construct(self, abi_type, **kwargs): + """Construct the type parameter for the given ABI.""" + return Type.construct(abi_type, type_=self.type_, name=self.name, + count_param=self.count_param, **kwargs) + + +class ReturnType: + """Return type wrapper.""" + + def __init__(self, type_): + self.type_ = type_ + + def construct(self, abi_type, **kwargs): + """Construct the return type for the given ABI.""" + return Type.construct(abi_type, type_=self.type_, **kwargs) + + +class Type(ABC): + """Type representation.""" + + PARAMS_OMPI_ABI = {} + + PARAMS_STANDARD_ABI = {} + + def __init__(self, type_, name=None, + mangle_name=lambda name: abi_internal_name(name), + count_param=None, **kwargs): + self.type = type_ + self.name = name + self.count_param = count_param + self.mangle_name = mangle_name + + @staticmethod + def construct(abi_type, type_, **kwargs): + """Construct the parameter for the given ABI and type.""" + if abi_type == 'ompi': + return Type.PARAMS_OMPI_ABI[type_](type_, **kwargs) + elif abi_type == 'standard': + return Type.PARAMS_STANDARD_ABI[type_](type_, **kwargs) + else: + raise RuntimeError(f'invalid ABI type {abi_type}') + + @staticmethod + def add_type(type_name, abi_type=('ompi', 'standard')): + """Add a new class corresponding to a type.""" + def wrapper(class_): + if 'ompi' in abi_type: + Type.PARAMS_OMPI_ABI[type_name] = class_ + if 'standard' in abi_type: + Type.PARAMS_STANDARD_ABI[type_name] = class_ + # Parameter.TYPES[type_] = class_ + return class_ + return wrapper + + @property + def is_count(self): + """Return True if this parameter is a count (requiring bigcount API).""" + return False + + @property + def init_code(self): + """Return the initialization code needed for an ABI wrapper.""" + return [] + + @property + def final_code(self): + """Return the finalization code needed for an ABI wrapper.""" + return [] + + def return_code(self, name): + """Process a value and then build up a return statement.""" + return [f'return {name};'] + + @property + def argument(self): + """Return the argument text required for passing an argument to a function.""" + return self.name + + @abstractmethod + def type_text(self, count_type=None): + """Return the source text corresponding to a type definition.""" + + def tmp_type_text(self, count_type=None): + """Return source text corresponding to a temporary type definition before conversion.""" + return self.type_text(count_type=count_type) + + def parameter(self, count_type=None, **kwargs): + return f'{self.type_text(count_type)} {self.name}' + + +@Type.add_type('ERROR_CLASS') +class TypeErrorClass(Type): + + def type_text(self, count_type=None): + return 'int' + + def return_code(self, name): + return [f'return {ConvertFuncs.ERROR_CLASS}({name});'] + + +@Type.add_type('BUFFER') +class TypeBuffer(Type): + + def type_text(self, count_type=None): + return 'const void *' + + +@Type.add_type('BUFFER_OUT') +class TypeBufferOut(Type): + + def type_text(self, count_type=None): + return f'void *' + + +@Type.add_type('COUNT') +class TypeCount(Type): + + @property + def is_count(self): + return True + + def type_text(self, count_type=None): + return 'int' if count_type is None else count_type + + +@Type.add_type('INT') +class TypeBufferOut(Type): + + def type_text(self, count_type=None): + return 'int' + + +@Type.add_type('AINT') +class TypeBufferOut(Type): + + def type_text(self, count_type=None): + return 'MPI_Aint' + + +@Type.add_type('INT_OUT') +class TypeBufferOut(Type): + + def type_text(self, count_type=None): + return 'int *' + + def parameter(self, count_type=None, **kwargs): + if self.count_param is None: + return f'int *{self.name}' + else: + return f'int {self.name}[]' + + +@Type.add_type('DOUBLE') +class TypeDouble(Type): + + def type_text(self, count_type=None): + return 'double' + + +@Type.add_type('ARGV') +class TypeArgv(Type): + + def type_text(self, count_type=None): + return 'char ***' + + +@Type.add_type('DATATYPE', abi_type=['ompi']) +class TypeDatatype(Type): + + def type_text(self, count_type=None): + return 'MPI_Datatype' + + +class StandardABIType(Type): + + @property + def tmpname(self): + return f'{self.name}_tmp' + + @property + def argument(self): + return self.tmpname + + +@Type.add_type('DATATYPE', abi_type=['standard']) +class TypeDatatype(StandardABIType): + + @property + def init_code(self): + return [f'MPI_Datatype {self.tmpname} = {ConvertFuncs.DATATYPE}({self.name});'] + + def type_text(self, count_type=None): + return self.mangle_name('MPI_Datatype') + + +@Type.add_type('OP', abi_type=['ompi']) +class TypeDatatype(Type): + + def type_text(self, count_type=None): + return 'MPI_Op' + + +@Type.add_type('OP', abi_type=['standard']) +class TypeDatatype(StandardABIType): + + @property + def init_code(self): + return [f'MPI_Op {self.tmpname} = {ConvertFuncs.OP}({self.name});'] + + def type_text(self, count_type=None): + return self.mangle_name('MPI_Op') + + +@Type.add_type('RANK') +class TypeRank(Type): + + def type_text(self, count_type=None): + return 'int' + + +@Type.add_type('TAG') +class TypeRank(Type): + + def type_text(self, count_type=None): + return 'int' + + +@Type.add_type('COMM', abi_type=['ompi']) +class TypeCommunicator(Type): + + def type_text(self, count_type=None): + return 'MPI_Comm' + + +@Type.add_type('COMM', abi_type=['standard']) +class TypeCommunicatorStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_Comm {self.tmpname} = {ConvertFuncs.COMM}({self.name});'] + + def tmp_type_text(self, count_type=None): + return 'MPI_Comm' + + def return_code(self, name): + return [f'return {ConvertOMPIToStandard.COMM}({name});'] + + def type_text(self, count_type=None): + return self.mangle_name('MPI_Comm') + + +@Type.add_type('COMM_OUT', abi_type=['ompi']) +class TypeCommunicator(Type): + + def type_text(self, count_type=None): + return 'MPI_Comm *' + + +@Type.add_type('COMM_OUT', abi_type=['standard']) +class TypeCommunicator(Type): + + @property + def final_code(self): + return [f'*{self.name} = {ConvertOMPIToStandard.COMM}((MPI_Comm) *{self.name});'] + + def type_text(self, count_type=None): + type_name = self.mangle_name('MPI_Comm') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_Comm *) {self.name}' + + +@Type.add_type('WIN', abi_type=['ompi']) +class TypeWindow(Type): + + def type_text(self, count_type=None): + return 'MPI_Win' + + +@Type.add_type('WIN', abi_type=['standard']) +class TypeWindowStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_Win {self.tmpname} = {ConvertFuncs.WIN}({self.name});'] + + def type_text(self, count_type=None): + return self.mangle_name('MPI_Win') + + +@Type.add_type('REQUEST', abi_type=['ompi']) +class TypeRequest(Type): + + def type_text(self, count_type=None): + return 'MPI_Request' + + +@Type.add_type('REQUEST', abi_type=['standard']) +class TypeRequestStandard(Type): + + def type_text(self, count_type=None): + return self.mangle_name('MPI_Request') + + @property + def argument(self): + return f'(MPI_Request) {self.name}' + + +@Type.add_type('REQUEST_INOUT', abi_type=['ompi']) +class TypeRequestInOut(Type): + + def type_text(self, count_type=None): + return 'MPI_Request *' + + +@Type.add_type('REQUEST_INOUT', abi_type=['standard']) +class TypeRequestInOutStandard(Type): + + @property + def final_code(self): + if self.count_param is None: + return [f'{ConvertFuncs.REQUEST}({self.name});'] + else: + return [ + 'for (int i = 0; i < %s; ++i) {' % (self.count_param,), + f'{ConvertFuncs.REQUEST}(&{self.name}[i]);', + '}', + ] + + @property + def argument(self): + return f'(MPI_Request *) {self.name}' + + def type_text(self, count_type=None): + type_name = self.mangle_name('MPI_Request') + return f'{type_name} *' + + def parameter(self, count_type=None, **kwargs): + type_name = self.mangle_name('MPI_Request') + if self.count_param is None: + return f'{type_name} *{self.name}' + else: + return f'{type_name} {self.name}[]' + + +@Type.add_type('STATUS_OUT', abi_type=['ompi']) +class TypeStatusOut(Type): + + def type_text(self, count_type=None): + return 'MPI_Status *' + + def parameter(self, count_type=None, **kwargs): + if self.count_param is None: + return f'MPI_Status *{self.name}' + else: + return f'MPI_Status {self.name}[]' + + +@Type.add_type('STATUS_OUT', abi_type=['standard']) +class TypeStausOutStandard(StandardABIType): + + def if_should_set_status(self): + """Generate the condition to check if the status(es) should be set.""" + condition = ' && '.join(f'{self.mangle_name(const)} != {self.name}' + for const in IGNORED_STATUS_HANDLES) + return 'if (%s) {' % (condition,) + + @property + def status_argument(self): + return f'{self.name}_arg' + + @property + def init_code(self): + code = [f'MPI_Status *{self.status_argument} = NULL;'] + if self.count_param is None: + code.append(f'MPI_Status {self.tmpname};') + else: + code.append(f'MPI_Status *{self.tmpname} = NULL;') + code.append(self.if_should_set_status()) + if self.count_param is not None: + code.append(f'{self.tmpname} = malloc({self.count_param} * sizeof(MPI_Status));') + code.append(f'{self.status_argument} = {self.tmpname};') + else: + code.append(f'{self.status_argument} = &{self.tmpname};') + code.append('} else {') + if self.count_param is not None: + code.append(f'{self.status_argument} = MPI_STATUSES_IGNORE;') + else: + code.append(f'{self.status_argument} = MPI_STATUS_IGNORE;') + code.append('}') + return code + + @property + def final_code(self): + code = [self.if_should_set_status()] + if self.count_param is None: + code.append(f'{ConvertFuncs.STATUS}({self.name}, &{self.tmpname});') + else: + code.extend([ + 'for (int i = 0; i < %s; ++i) {' % (self.count_param,), + f'{ConvertFuncs.STATUS}(&{self.name}[i], &{self.tmpname}[i]);', + '}', + f'free({self.tmpname});', + ]) + code.append('}') + return code + + @property + def argument(self): + return self.status_argument + + def type_text(self, count_type=None): + type_name = self.mangle_name('MPI_Status') + return f'{type_name} *' + + def parameter(self, count_type=None, **kwargs): + type_name = self.mangle_name('MPI_Status') + if self.count_param is None: + return f'{type_name} *{self.name}' + else: + return f'{type_name} {self.name}[]' + + +# For now this just assumes that MPI_Fint doesn't need any conversions +@Type.add_type('FINT') +class TypeFint(Type): + + def type_text(self, count_type=None): + return 'MPI_Fint' + + +@Type.add_type('STRING') +class TypeString(Type): + + def type_text(self, count_type=None): + return 'const char *' + + +@Type.add_type('STRING_OUT') +class TypeStringOut(Type): + + def type_text(self, count_type=None): + return 'char *' + + +@Type.add_type('INFO', abi_type=['ompi']) +class TypeInfo(Type): + + def type_text(self, count_type=None): + return 'MPI_Info' + + +@Type.add_type('INFO', abi_type=['standard']) +class TypeInfoStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_Info {self.tmpname} = {ConvertFuncs.INFO}({self.name});'] + + def type_text(self, count_type=None): + return self.mangle_name('MPI_Info') + + +@Type.add_type('FILE_OUT', abi_type=['ompi']) +class TypeFileOut(Type): + + def type_text(self, count_type=None): + return 'MPI_File *' + + +@Type.add_type('FILE_OUT', abi_type=['standard']) +class TypeFileOutStandard(Type): + + @property + def argument(self): + return f'(MPI_File *) {self.name}' + + @property + def final_code(self): + return [f'{ConvertFuncs.FILE}({self.name});'] + + def type_text(self, count_type=None): + type_name = self.mangle_name('MPI_File') + return f'{type_name} *' + + +class Prototype: + """MPI function prototype.""" + + def __init__(self, name, return_type, params): + self.name = name + self.return_type = return_type + self.params = params + + def signature(self, abi_type, fn_name, count_type=None, **kwargs): + """Build a signature with the given name and count_type.""" + params = ', '.join(param.construct(abi_type, **kwargs).parameter(count_type=count_type, **kwargs) + for param in self.params) + if not params: + params = 'void' + return_type_text = self.return_type.construct(abi_type, **kwargs).type_text(count_type=count_type) + return f'{return_type_text} {fn_name}({params})' + + @property + def need_bigcount(self): + """Check if a bigcount interface is required for a prototype.""" + return any('COUNT' in param.type_ for param in self.params) + + +class TemplateParseError(Exception): + """Error raised during parsing.""" + pass + + +def validate_body(body): + """Validate the body of a template.""" + # Just do a simple bracket balance test to determine the bounds of the + # function body. All lines after the function body should be blank. There + # are cases where this will break, such as if someone puts code all on one + # line. + bracket_balance = 0 + line_count = 0 + for line in body: + line = line.strip() + if bracket_balance == 0 and line_count > 0 and line: + raise TemplateParseError('Extra code found in template; only one function body is allowed') + + update = line.count('{') - line.count('}') + bracket_balance += update + if bracket_balance != 0: + line_count += 1 + + if bracket_balance != 0: + raise TemplateParseError('Mismatched brackets found in template') + + +class SourceTemplate: + """Source template for a single API function.""" + + def __init__(self, prototype, header, body): + self.prototype = prototype + self.header = header + self.body = body + + @staticmethod + def load(fname, prefix=None): + """Load a template file and return the SourceTemplate.""" + if prefix is not None: + fname = os.path.join(prefix, fname) + with open(fname) as fp: + header = [] + prototype = [] + body = [] + + for line in fp: + line = line.rstrip() + if prototype and line.startswith('PROTOTYPE'): + raise TemplateParseError('more than one prototype found in template file') + elif ((prototype and not any(')' in s for s in prototype)) + or line.startswith('PROTOTYPE')): + prototype.append(line) + elif prototype: + # Validate bracket balance + body.append(line) + else: + header.append(line) + + if not prototype: + raise RuntimeError('missing prototype') + # Parse the prototype + prototype = ''.join(prototype) + prototype = prototype[len('PROTOTYPE'):] + i = prototype.index('(') + j = prototype.index(')') + return_type, name = prototype[:i].split() + return_type = ReturnType(return_type) + params = [param.strip() for param in prototype[i + 1:j].split(',') if param.strip()] + params = [Parameter(param) for param in params] + prototype = Prototype(name, return_type, params) + # Ensure the body contains only one function + validate_body(body) + return SourceTemplate(prototype, header, body) + + def print_header(self, file=sys.stdout): + """Print the source header.""" + for line in self.header: + print(line, file=file) + + def print_body(self, func_name, file=sys.stdout): + """Print the body.""" + for line in self.body: + # FUNC_NAME is used for error messages + line = line.replace('FUNC_NAME', f'"{func_name}"') + print(line, file=file) + + +def print_profiling_header(fn_name, file=sys.stdout): + """Print the profiling header code.""" + print('#if OMPI_BUILD_MPI_PROFILING') + print('#if OPAL_HAVE_WEAK_SYMBOLS', file=file) + print(f'#pragma weak {fn_name} = P{fn_name}', file=file) + print('#endif', file=file) + print(f'#define {fn_name} P{fn_name}', file=file) + print('#endif') + + +def ompi_abi(base_name, template): + """Generate the OMPI ABI functions.""" + template.print_header() + print_profiling_header(base_name) + print(template.prototype.signature('ompi', base_name)) + template.print_body(func_name=base_name) + # Check if we need to generate the bigcount interface + if template.prototype.need_bigcount: + base_name_c = f'{base_name}_c' + print_profiling_header(base_name_c) + print(template.prototype.signature('ompi', base_name_c, count_type='MPI_Count')) + template.print_body(func_name=base_name_c) + + +ABI_INTERNAL_HEADER = 'ompi/mpi/c/abi.h' + + +def indent_lines(lines, tab, start=0): + """Crude pretty-printing function.""" + new_lines = [] + indent_count = start + for line in lines: + # Closing bracket + if '}' in line: + indent_count -= 1 + + prefix = indent_count * tab + new_lines.append(f'{prefix}{line}') + + # Opening bracket + if '{' in line: + indent_count += 1 + return new_lines + + +def standard_abi(base_name, template): + """Generate the standard ABI functions.""" + template.print_header() + print(f'#include "{ABI_INTERNAL_HEADER}"') + + # Static internal function (add a random component to avoid conflicts) + internal_name = f'ompi_abi_{template.prototype.name}' + internal_sig = template.prototype.signature('ompi', internal_name, + count_type='MPI_Count') + print(INLINE_ATTRS, internal_sig) + template.print_body(func_name=base_name) + + def generate_function(prototype, fn_name, internal_fn, count_type='int'): + """Generate a function for the standard ABI.""" + print_profiling_header(fn_name) + + # Handle type conversions and arguments + params = [param.construct('standard') for param in prototype.params] + print(prototype.signature('standard', fn_name, count_type=count_type)) + print('{') + lines = [] + return_type = prototype.return_type.construct('standard') + lines.append(f'{return_type.tmp_type_text()} ret_value;') + for param in params: + if param.init_code: + lines.extend(param.init_code) + pass_args = ', '.join(param.argument for param in params) + lines.append(f'ret_value = {internal_fn}({pass_args});') + for param in params: + if param.final_code: + lines.extend(param.final_code) + lines.extend(return_type.return_code('ret_value')) + + # Indent the lines + lines = indent_lines(lines, 4 * ' ', start=1) + for line in lines: + print(line) + print('}') + + generate_function(template.prototype, base_name, internal_name) + if template.prototype.need_bigcount: + base_name_c = f'{base_name}_c' + generate_function(template.prototype, base_name_c, internal_name, + count_type='MPI_Count') + + +def gen_header(args): + """Generate an ABI header and conversion code.""" + prototypes = [SourceTemplate.load(file_, args.srcdir).prototype for file_ in args.file] + + builder = ABIHeaderBuilder(prototypes, external=args.external) + builder.dump_header() + + +def gen_source(args): + """Generate source file.""" + template = SourceTemplate.load(args.source_file) + + base_name = mpi_fn_name_from_base_fn_name(template.prototype.name) + if args.type == 'ompi': + ompi_abi(base_name, template) + else: + standard_abi(base_name, template) + + +def main(): + if len(sys.argv) < 2: + # Fix required for Python 3.6 + print('ERROR: missing subparser argument (see --help)') + sys.exit(1) + + parser = argparse.ArgumentParser(description='generate ABI header file and conversion code') + subparsers = parser.add_subparsers() + + parser_header = subparsers.add_parser('header') + parser_header.add_argument('file', nargs='+', help='list of template source files') + parser_header.add_argument('--external', action='store_true', help='generate external mpi.h header file') + parser_header.add_argument('--srcdir', help='source directory') + parser_header.set_defaults(func=gen_header) + + parser_gen = subparsers.add_parser('source') + # parser = argparse.ArgumentParser(description='C ABI binding generation code') + parser_gen.add_argument('type', choices=('ompi', 'standard'), + help='generate the OMPI ABI functions or the standard ABI functions') + parser_gen.add_argument('source_file', help='source template file') + parser_gen.set_defaults(func=gen_source) + + args = parser.parse_args() + + # Always add the header + print('/* THIS FILE WAS AUTOGENERATED BY ompi/mpi/c/abi.py. DO NOT EDIT BY HAND. */') + args.func(args) + + +if __name__ == '__main__': + main() diff --git a/ompi/mpi/c/abi_details.c b/ompi/mpi/c/abi_details.c new file mode 100644 index 00000000000..8dfc7b6e629 --- /dev/null +++ b/ompi/mpi/c/abi_details.c @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2023 Triad National Security, LLC. All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include + +#include "opal/util/show_help.h" +#include "ompi/runtime/ompi_spc.h" +#include "ompi/mpi/c/bindings.h" +#include "ompi/communicator/communicator.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/constants.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif + +static const char ABI_DETAILS[] = "Open MPI Standard ABI 0.1"; + +int MPI_Abi_details(int *buflen, char *details, MPI_Info *info) +{ + if (*buflen >= (int) sizeof(ABI_DETAILS)) { + strcpy(details, ABI_DETAILS); + *buflen = sizeof(ABI_DETAILS); + return MPI_SUCCESS; + } else { + *buflen = 0; + return MPI_ERR_BUFFER; + } +} diff --git a/ompi/mpi/c/abi_supported.c b/ompi/mpi/c/abi_supported.c new file mode 100644 index 00000000000..b8b977962ba --- /dev/null +++ b/ompi/mpi/c/abi_supported.c @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023 Triad National Security, LLC. All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include + +#include "opal/util/show_help.h" +#include "ompi/runtime/ompi_spc.h" +#include "ompi/mpi/c/bindings.h" +#include "ompi/communicator/communicator.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/constants.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif + +int MPI_Abi_supported(int *flag) +{ + *flag = 1; + return MPI_SUCCESS; +} diff --git a/ompi/mpi/c/abi_version.c b/ompi/mpi/c/abi_version.c new file mode 100644 index 00000000000..33d32854893 --- /dev/null +++ b/ompi/mpi/c/abi_version.c @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2023 Triad National Security, LLC. All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include + +#include "opal/util/show_help.h" +#include "ompi/runtime/ompi_spc.h" +#include "ompi/mpi/c/bindings.h" +#include "ompi/communicator/communicator.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/constants.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif + +int MPI_Abi_version(int *abi_major, int *abi_minor) +{ + /* 0.1 */ + *abi_major = 0; + *abi_minor = 1; + return MPI_SUCCESS; +} diff --git a/ompi/mpi/c/status_c2f.c.in b/ompi/mpi/c/status_c2f.c.in index d430bc7964f..9d4774a7cf7 100644 --- a/ompi/mpi/c/status_c2f.c.in +++ b/ompi/mpi/c/status_c2f.c.in @@ -33,11 +33,10 @@ #include "ompi/mpi/fortran/base/fint_2_int.h" #include "ompi/mpi/fortran/base/constants.h" #include "ompi/memchecker.h" +#include "ompi/util/status.h" PROTOTYPE ERROR_CLASS status_c2f(STATUS c_status, FINT_OUT f_status) { - const int *c_ints; - int i; MEMCHECKER( if(c_status != MPI_STATUSES_IGNORE) { /* @@ -61,33 +60,5 @@ PROTOTYPE ERROR_CLASS status_c2f(STATUS c_status, FINT_OUT f_status) MPI_ERR_IN_STATUS, FUNC_NAME); } } - - /* Note that MPI-2.2 16.3.5 states that even the hidden data in a - status must be converted (!). This is somewhat problematic - because the Fortran data is all INTEGERS while the C MPI_Status - contains a size_t. That being said, note 2 things: - - 1. The _ucount and _canceled members are never accessed from - Fortran. - 2. configure calculated a value of MPI_STATUS_SIZE to ensure - that the Fortran status is the Right size to hold the C - MPI_Status (including the size_t member). - - So for the purposes of this function, just copy over all the - data as if they were int's. This works because all OMPI - Fortran MPI API functions that take a status as an IN argument - first call MPI_Status_f2c on it before using it (in which case - we'll do the exact opposite copy, thereby rebuilding the size_t - value properly before it is accessed in C). - - Note that if sizeof(int) > sizeof(INTEGER), we're potentially - hosed anyway (i.e., even the public values in the status could - get truncated). But if sizeof(int) == sizeof(INTEGER) or - sizeof(int) < sizeof(INTEGER), everything should be kosher. */ - c_ints = (const int*)c_status; - for( i = 0; i < (int)(sizeof(MPI_Status) / sizeof(int)); i++ ) { - f_status[i] = OMPI_INT_2_FINT(c_ints[i]); - } - - return MPI_SUCCESS; + return ompi_status_c2f(c_status, f_status); } diff --git a/ompi/mpi/c/status_f2c.c.in b/ompi/mpi/c/status_f2c.c.in index 3216193e3e9..c7e6f7ac700 100644 --- a/ompi/mpi/c/status_f2c.c.in +++ b/ompi/mpi/c/status_f2c.c.in @@ -31,11 +31,10 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/mpi/fortran/base/fint_2_int.h" #include "ompi/mpi/fortran/base/constants.h" +#include "ompi/util/status.h" PROTOTYPE ERROR_CLASS status_f2c(FINT_CONST f_status, STATUS_OUT c_status) { - int i, *c_ints; - if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); @@ -57,17 +56,5 @@ PROTOTYPE ERROR_CLASS status_f2c(FINT_CONST f_status, STATUS_OUT c_status) } } - /* ***NOTE*** See huge comment in status_c2f.c (yes, I know - there's a size_t member in the C MPI_Status -- go - read that comment for an explanation why copying - everything as a bunch of int's is ok). - - We can't use OMPI_FINT_2_INT here because of some complications - with include files. :-( So just do the casting manually. */ - c_ints = (int*)c_status; - for( i = 0; i < (int)(sizeof(MPI_Status) / sizeof(int)); i++ ) { - c_ints[i] = (int)f_status[i]; - } - - return MPI_SUCCESS; + return ompi_status_f2c(f_status, c_status); } diff --git a/ompi/mpi/c/wtime.c.in b/ompi/mpi/c/wtime.c.in index e31db4d630e..cc22d427142 100644 --- a/ompi/mpi/c/wtime.c.in +++ b/ompi/mpi/c/wtime.c.in @@ -45,7 +45,7 @@ * and accuracy of the user visible timer. * More info: https://github.com/mpi-forum/mpi-issues/issues/77#issuecomment-369663119 */ -extern struct timespec ompi_wtime_time_origin; +extern struct timespec ompi_wtime_time_origin = {.tv_sec = 0}; PROTOTYPE DOUBLE wtime() { diff --git a/ompi/mpiext/Makefile.am b/ompi/mpiext/Makefile.am index bbbdec3531c..e23729b2e91 100644 --- a/ompi/mpiext/Makefile.am +++ b/ompi/mpiext/Makefile.am @@ -16,5 +16,5 @@ headers += \ mpiext/mpiext.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ mpiext/mpiext.c diff --git a/ompi/op/Makefile.am b/ompi/op/Makefile.am index 5599c31311b..db4e92736a2 100644 --- a/ompi/op/Makefile.am +++ b/ompi/op/Makefile.am @@ -24,4 +24,4 @@ headers += op/op.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += op/op.c +libopen_mpi_la_SOURCES += op/op.c diff --git a/ompi/peruse/Makefile.am b/ompi/peruse/Makefile.am index 9b2d043ce43..aee74cc436c 100644 --- a/ompi/peruse/Makefile.am +++ b/ompi/peruse/Makefile.am @@ -21,7 +21,7 @@ if WANT_PERUSE # do NOT want this nobase - we want the peruse stripped off... include_HEADERS += peruse/peruse.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ peruse/peruse.c \ peruse/peruse_module.c endif diff --git a/ompi/proc/Makefile.am b/ompi/proc/Makefile.am index e9ad85d6f73..b10d46e37cf 100644 --- a/ompi/proc/Makefile.am +++ b/ompi/proc/Makefile.am @@ -23,5 +23,5 @@ headers += \ proc/proc.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ proc/proc.c diff --git a/ompi/request/Makefile.am b/ompi/request/Makefile.am index ab7bf73fe80..c30da608d08 100644 --- a/ompi/request/Makefile.am +++ b/ompi/request/Makefile.am @@ -34,18 +34,18 @@ headers += \ request/grequestx.h endif -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ request/grequest.c \ request/request.c \ request/req_test.c \ request/req_wait.c if WANT_FT_MPI -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ request/req_ft.c endif # WANT_FT_MPI if OMPI_ENABLE_GREQUEST_EXTENSIONS -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ request/grequestx.c endif diff --git a/ompi/request/grequest.c b/ompi/request/grequest.c index 6125d134a9c..2338f8e0e71 100644 --- a/ompi/request/grequest.c +++ b/ompi/request/grequest.c @@ -23,6 +23,7 @@ #include "ompi/communicator/communicator.h" #include "ompi/request/grequest.h" #include "ompi/mpi/fortran/base/fint_2_int.h" +#include "ompi/util/status.h" /** * Internal function to specialize the call to the user provided free_fn @@ -262,9 +263,9 @@ int ompi_grequest_invoke_query(ompi_request_t *request, */ MPI_Fint ierr; MPI_Fint fstatus[sizeof(MPI_Status) / sizeof(int)]; - MPI_Status_c2f(status, fstatus); + ompi_status_c2f(status, fstatus); g->greq_query.f_query((MPI_Aint*)g->greq_state, fstatus, &ierr); - MPI_Status_f2c(fstatus, status); + ompi_status_f2c(fstatus, status); rc = OMPI_FINT_2_INT(ierr); } } diff --git a/ompi/runtime/Makefile.am b/ompi/runtime/Makefile.am index 957045ed116..225284b6066 100644 --- a/ompi/runtime/Makefile.am +++ b/ompi/runtime/Makefile.am @@ -31,7 +31,7 @@ headers += \ runtime/ompi_spc.h \ runtime/ompi_rte.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ runtime/ompi_mpi_init.c \ runtime/ompi_mpi_abort.c \ runtime/ompi_mpi_dynamics.c \ diff --git a/ompi/tools/wrappers/Makefile.am b/ompi/tools/wrappers/Makefile.am index 1d5b24a9372..f1482ff4164 100644 --- a/ompi/tools/wrappers/Makefile.am +++ b/ompi/tools/wrappers/Makefile.am @@ -89,7 +89,7 @@ if OMPI_WANT_JAVA_BINDINGS bin_SCRIPTS = mpijavac.pl endif -nodist_ompidata_DATA = mpicc-wrapper-data.txt +nodist_ompidata_DATA = mpicc-wrapper-data.txt mpicc_abi-wrapper-data.txt if OMPI_HAVE_CXX_COMPILER nodist_ompidata_DATA += mpic++-wrapper-data.txt @@ -102,6 +102,7 @@ endif install-exec-hook-always: test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" (cd $(DESTDIR)$(bindir); rm -f mpicc$(EXEEXT); $(LN_S) opal_wrapper$(EXEEXT) mpicc$(EXEEXT)) + (cd $(DESTDIR)$(bindir); rm -f mpicc_abi$(EXEEXT); $(LN_S) opal_wrapper$(EXEEXT) mpicc_abi$(EXEEXT)) if OMPI_HAVE_CXX_COMPILER (cd $(DESTDIR)$(bindir); rm -f mpic++$(EXEEXT); $(LN_S) opal_wrapper$(EXEEXT) mpic++$(EXEEXT)) (cd $(DESTDIR)$(bindir); rm -f mpicxx$(EXEEXT); $(LN_S) opal_wrapper$(EXEEXT) mpicxx$(EXEEXT)) diff --git a/ompi/tools/wrappers/mpicc_abi-wrapper-data.txt.in b/ompi/tools/wrappers/mpicc_abi-wrapper-data.txt.in new file mode 100644 index 00000000000..916036f931e --- /dev/null +++ b/ompi/tools/wrappers/mpicc_abi-wrapper-data.txt.in @@ -0,0 +1,26 @@ +# There can be multiple blocks of configuration data, chosen by +# compiler flags (using the compiler_args key to chose which block +# should be activated. This can be useful for multilib builds. See the +# multilib page at: +# https://github.com/open-mpi/ompi/wiki/compilerwrapper3264 +# for more information. + +project=Open MPI +project_short=OMPI +version=@OMPI_VERSION@ +language=C +compiler_env=CC +compiler_flags_env=CFLAGS +compiler=@WRAPPER_CC@ +preprocessor_flags=-I${includedir}/standard_abi +compiler_flags_prefix=@OMPI_WRAPPER_CFLAGS_PREFIX@ +compiler_flags=@OMPI_WRAPPER_CFLAGS@ +linker_flags=@OMPI_WRAPPER_LDFLAGS@ +linker_flags_static=@OMPI_WRAPPER_LDFLAGS_STATIC@ +libs=-lmpi_abi +libs_static= +dyn_lib_file=libmpi_abi.@OPAL_DYN_LIB_SUFFIX@ +static_lib_file=libmpi_abi.a +required_file= +includedir=${includedir} +libdir=${libdir} diff --git a/ompi/util/Makefile.am b/ompi/util/Makefile.am index 53a89a074eb..70df3bed6a3 100644 --- a/ompi/util/Makefile.am +++ b/ompi/util/Makefile.am @@ -11,4 +11,5 @@ # Source code files headers += \ util/timings.h \ - util/count_disp_array.h + util/count_disp_array.h \ + util/status.h diff --git a/ompi/util/status.h b/ompi/util/status.h new file mode 100644 index 00000000000..c1089df5f5c --- /dev/null +++ b/ompi/util/status.h @@ -0,0 +1,56 @@ +#include "ompi/mpi/fortran/base/fint_2_int.h" +#include "ompi/mpi/fortran/base/constants.h" + +static inline int ompi_status_c2f(const MPI_Status *c_status, MPI_Fint *f_status) +{ + const int *c_ints; + int i; + + /* Note that MPI-2.2 16.3.5 states that even the hidden data in a + status must be converted (!). This is somewhat problematic + because the Fortran data is all INTEGERS while the C MPI_Status + contains a size_t. That being said, note 2 things: + + 1. The _ucount and _canceled members are never accessed from + Fortran. + 2. configure calculated a value of MPI_STATUS_SIZE to ensure + that the Fortran status is the Right size to hold the C + MPI_Status (including the size_t member). + + So for the purposes of this function, just copy over all the + data as if they were int's. This works because all OMPI + Fortran MPI API functions that take a status as an IN argument + first call MPI_Status_f2c on it before using it (in which case + we'll do the exact opposite copy, thereby rebuilding the size_t + value properly before it is accessed in C). + + Note that if sizeof(int) > sizeof(INTEGER), we're potentially + hosed anyway (i.e., even the public values in the status could + get truncated). But if sizeof(int) == sizeof(INTEGER) or + sizeof(int) < sizeof(INTEGER), everything should be kosher. */ + c_ints = (const int*)c_status; + for( i = 0; i < (int)(sizeof(MPI_Status) / sizeof(int)); i++ ) { + f_status[i] = OMPI_INT_2_FINT(c_ints[i]); + } + + return MPI_SUCCESS; +} + +static inline int ompi_status_f2c(const MPI_Fint *f_status, MPI_Status *c_status) +{ + int i, *c_ints; + + /* ***NOTE*** See huge comment in status_c2f.c (yes, I know + there's a size_t member in the C MPI_Status -- go + read that comment for an explanation why copying + everything as a bunch of int's is ok). + + We can't use OMPI_FINT_2_INT here because of some complications + with include files. :-( So just do the casting manually. */ + c_ints = (int*)c_status; + for( i = 0; i < (int)(sizeof(MPI_Status) / sizeof(int)); i++ ) { + c_ints[i] = (int)f_status[i]; + } + + return MPI_SUCCESS; +} diff --git a/ompi/win/Makefile.am b/ompi/win/Makefile.am index 67126c71ec0..8675e77b63e 100644 --- a/ompi/win/Makefile.am +++ b/ompi/win/Makefile.am @@ -23,5 +23,5 @@ headers += \ win/win.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ win/win.c From 9466f42f94de7609fba47f997d81e2784c7404bd Mon Sep 17 00:00:00 2001 From: Howard Pritchard Date: Sat, 10 May 2025 16:06:15 -0600 Subject: [PATCH 2/5] ABI: Move ABI support into big count binding code Implement lots of missing functionality in the original api.py script. The functionality is now part of the bindings generation framework used for Big Count. Number of todos still to do, in particular provide support for wrapping user supplied callback functions. Also, the sendrecv_replace, etc. code needs to be refactored to work with the bindings framework. to heed the --enable-abi-standard config option Additional initial fixes to merging ABI support into big count framework. Co-authored-by: Jake Tronge Signed-off-by: Howard Pritchard --- .gitignore | 1 - config/ompi_configure_options.m4 | 6 + ompi/Makefile.am | 14 +- ompi/attribute/attribute.c | 2 + ompi/attribute/attribute.h | 3 +- ompi/include/mpi.h.in | 2 + ompi/mpi/bindings/ompi_bindings/c.py | 201 ++- ompi/mpi/bindings/ompi_bindings/c_type.py | 550 ++++++- ompi/mpi/bindings/ompi_bindings/consts.py | 50 +- ompi/mpi/bindings/ompi_bindings/parser.py | 3 + ompi/mpi/bindings/ompi_bindings/util.py | 15 +- ompi/mpi/c/Makefile.am | 100 +- ompi/mpi/c/Makefile_abi.include | 61 + ompi/mpi/c/abi.py | 1278 ----------------- ompi/mpi/c/abi_converters.h | 567 ++++++++ ompi/mpi/c/bindings.h | 5 + ompi/mpi/c/comm_create_keyval.c.in | 10 +- ompi/mpi/c/comm_spawn_multiple.c.in | 2 +- ompi/mpi/c/file_close.c.in | 2 +- ompi/mpi/c/isendrecv.c.in | 105 +- ompi/mpi/c/isendrecv_replace.c.in | 12 +- .../c/{keyval_create.c.in => keyval_create.c} | 19 +- .../mpi/c/{keyval_free.c.in => keyval_free.c} | 13 +- ompi/mpi/c/ompi_isendrecv.c | 147 ++ ompi/mpi/c/ompi_sendrecv.c | 98 ++ ompi/mpi/c/sendrecv.c.in | 54 +- ompi/mpi/c/sendrecv_replace.c.in | 9 +- ompi/mpi/c/session_finalize.c.in | 2 +- ompi/mpi/c/status_set_cancelled.c.in | 2 +- ompi/mpi/c/status_set_elements.c.in | 2 +- ompi/mpi/c/status_set_elements_x.c.in | 2 +- ompi/mpi/c/status_set_error.c.in | 2 +- ompi/mpi/c/status_set_source.c.in | 2 +- ompi/mpi/c/status_set_tag.c.in | 2 +- ompi/mpi/c/type_create_keyval.c.in | 9 +- ompi/mpi/c/type_create_struct.c.in | 2 +- ompi/mpi/c/win_create_errhandler.c.in | 2 +- ompi/mpi/c/win_create_keyval.c.in | 9 +- ompi/mpi/c/{win_f2c.c => win_f2c.c.in} | 11 +- ompi/mpi/c/wtime.c.in | 2 +- 40 files changed, 1735 insertions(+), 1643 deletions(-) create mode 100644 ompi/mpi/c/Makefile_abi.include delete mode 100755 ompi/mpi/c/abi.py create mode 100644 ompi/mpi/c/abi_converters.h rename ompi/mpi/c/{keyval_create.c.in => keyval_create.c} (76%) rename ompi/mpi/c/{keyval_free.c.in => keyval_free.c} (78%) create mode 100644 ompi/mpi/c/ompi_isendrecv.c create mode 100644 ompi/mpi/c/ompi_sendrecv.c rename ompi/mpi/c/{win_f2c.c => win_f2c.c.in} (88%) diff --git a/.gitignore b/.gitignore index 29d269765b1..b1acecb1e82 100644 --- a/.gitignore +++ b/.gitignore @@ -535,7 +535,6 @@ docs/man # Generated C Bindings ompi/mpi/c/*_generated*.c -ompi/mpi/c/ompi_*.c ompi/mpi/c/standard_*.c ompi/mpi/c/abi.h ompi/mpi/c/standard_abi diff --git a/config/ompi_configure_options.m4 b/config/ompi_configure_options.m4 index 83606e2c555..72a84353394 100644 --- a/config/ompi_configure_options.m4 +++ b/config/ompi_configure_options.m4 @@ -256,6 +256,12 @@ AM_CONDITIONAL(OMPI_OMPIO_SUPPORT, test "$ompi_want_ompio" = "1") AC_ARG_ENABLE([deprecate-mpif-h], [AS_HELP_STRING([--enable-deprecate-mpif-h], [Mark the mpif.h bindings as deprecated (default: enabled)])]) +# If the binding source files don't exist, then we need Python to generate them +AM_PATH_PYTHON([3.6],,[:]) +binding_file="${srcdir}/ompi/mpi/c/ompi_send_generated.c" +AS_IF([! test -e "$binding_file" && test "$PYTHON" = ":"], + [AC_MSG_ERROR([Open MPI requires Python >=3.6 for generating the bindings. Aborting])]) +AM_CONDITIONAL(OMPI_GENERATE_BINDINGS,[test "$PYTHON" != ":"]) AC_MSG_CHECKING([if want to enable standard ABI library]) AC_ARG_ENABLE([standard-abi], diff --git a/ompi/Makefile.am b/ompi/Makefile.am index a839ab1bff4..14857566c9b 100644 --- a/ompi/Makefile.am +++ b/ompi/Makefile.am @@ -126,7 +126,7 @@ DIST_SUBDIRS = \ $(MCA_ompi_FRAMEWORKS_SUBDIRS) \ $(MCA_ompi_FRAMEWORK_COMPONENT_ALL_SUBDIRS) -noinst_LTLIBRARIES = libopen-mpi.la +noinst_LTLIBRARIES = libopen_mpi.la lib_LTLIBRARIES = lib@OMPI_LIBMPI_NAME@.la if OMPI_STANDARD_ABI lib_LTLIBRARIES += libmpi_abi.la @@ -142,14 +142,14 @@ endif # +----------------------+----------------------+ # | libmpi_abi.la | libmpi.la | # +----------------------+----------------------+ -# | libopen-mpi.la | +# | libopen_mpi.la | # +----------------------+----------------------+ # -# This includes a new library, libopen-mpi.la, that links in all backend code +# This includes a new library, libopen_mpi.la, that links in all backend code # built in this directory or SUBDIRs of this directory. Previously everything # was just linked directly into libmpi.la (lib@OMPI_LIBMPI_NAME@.la). # -# libmpi_abi.la and libmpi.la both now link in libopen-mpi.la, the only +# libmpi_abi.la and libmpi.la both now link in libopen_mpi.la, the only # difference between them being that one includes the standard ABI functions # and the other the ompi-specific versions of those. # @@ -167,7 +167,7 @@ libopen_mpi_la_DEPENDENCIES = $(libopen_mpi_la_LIBADD) # Build the main MPI library lib@OMPI_LIBMPI_NAME@_la_SOURCES = lib@OMPI_LIBMPI_NAME@_la_LIBADD = \ - libopen-mpi.la \ + libopen_mpi.la \ mpi/c/libmpi_c.la \ mpi/tool/libmpi_mpit.la \ $(c_mpi_lib) \ @@ -182,16 +182,16 @@ lib@OMPI_LIBMPI_NAME@_la_LDFLAGS = \ # The MPI Standard ABI library libmpi_abi_la_SOURCES = libmpi_abi_la_LIBADD = \ - libopen-mpi.la \ + libopen_mpi.la \ mpi/c/libmpi_c_abi.la # included subdirectory Makefile.am's and appended-to variables headers = -noinst_LTLIBRARIES = include_HEADERS = EXTRA_DIST = lib@OMPI_LIBMPI_NAME@_la_SOURCES += $(headers) dist_ompidata_DATA = +libopen_mpi_la_SOURCES += $(headers) # Conditionally install the header files diff --git a/ompi/attribute/attribute.c b/ompi/attribute/attribute.c index d224f4b8793..ae6b4db1003 100644 --- a/ompi/attribute/attribute.c +++ b/ompi/attribute/attribute.c @@ -322,6 +322,7 @@ do { \ /* C style */ \ else { \ void *attr_val = translate_to_c(attribute); \ + /* TODO: NEED SUPPORT FOR ABI */ \ err = (*((keyval_obj->delete_attr_fn).attr_##type##_delete_fn)) \ ((ompi_##type##_t *)object, \ key, attr_val, \ @@ -381,6 +382,7 @@ do { \ else { \ void *in, *out; \ in = translate_to_c(in_attr); \ + /* TODO: NEED SUPPORT FOR ABI */ \ if ((err = (*((keyval_obj->copy_attr_fn).attr_##type##_copy_fn)) \ ((ompi_##type##_t *)old_object, key, keyval_obj->extra_state.c_ptr, \ in, &out, &flag)) == MPI_SUCCESS) { \ diff --git a/ompi/attribute/attribute.h b/ompi/attribute/attribute.h index 6292f1b0c55..7520297ebb4 100644 --- a/ompi/attribute/attribute.h +++ b/ompi/attribute/attribute.h @@ -50,6 +50,7 @@ #define OMPI_KEYVAL_PREDEFINED 0x0001 #define OMPI_KEYVAL_F77 0x0002 #define OMPI_KEYVAL_F77_INT 0x0004 +#define OMPI_KEYVAL_ABI 0x0008 BEGIN_C_DECLS @@ -136,7 +137,7 @@ struct ompi_attribute_keyval_t { copy/delete attribute functions properly and error checking */ int attr_flag; /**< flag field: contains "OMPI_KEYVAL_PREDEFINED", - "OMPI_KEYVAL_F77" */ + "OMPI_KEYVAL_F77", "OMPI_KEYVAL_ABI", etc. */ ompi_attribute_fn_ptr_union_t copy_attr_fn; /**< Copy function for the attribute */ ompi_attribute_fn_ptr_union_t delete_attr_fn; /**< Delete function for the diff --git a/ompi/include/mpi.h.in b/ompi/include/mpi.h.in index 898c735c00d..76f6c4f1f5c 100644 --- a/ompi/include/mpi.h.in +++ b/ompi/include/mpi.h.in @@ -1451,6 +1451,7 @@ OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_ub; /* * MPI API */ +#ifndef OMPI_NO_MPI_PROTOTYPES OMPI_DECLSPEC int MPI_Abi_supported(int *flag); OMPI_DECLSPEC int MPI_Abi_version(int *abi_major, int *abi_minor); OMPI_DECLSPEC int MPI_Abi_details(int *buflen, char *details, MPI_Info *info); @@ -4172,6 +4173,7 @@ OMPI_DECLSPEC int PMPI_Type_ub(MPI_Datatype mtype, MPI_Aint *ub) #endif /* OMPI_NO_MPI_PROTOTYPES */ + #if defined(c_plusplus) || defined(__cplusplus) } #endif diff --git a/ompi/mpi/bindings/ompi_bindings/c.py b/ompi/mpi/bindings/ompi_bindings/c.py index 362f481d11b..e51260b55fa 100644 --- a/ompi/mpi/bindings/ompi_bindings/c.py +++ b/ompi/mpi/bindings/ompi_bindings/c.py @@ -137,18 +137,57 @@ def generate_comm_convert_fn_intern_to_abi(self): def generate_info_convert_fn(self): self.generic_convert(ConvertFuncs.INFO, 'info', 'MPI_Info', consts.RESERVED_INFOS) + def generate_info_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.INFO, 'info', 'MPI_Info', consts.RESERVED_INFOS) + + def generate_file_convert_fn(self): + self.generic_convert(ConvertFuncs.FILE, 'file', 'MPI_File', consts.RESERVED_FILES) + def generate_file_convert_fn_intern_to_abi(self): - self.generic_convert_reverse(ConvertFuncs.FILE, 'file', 'MPI_File', consts.RESERVED_FILES) + self.generic_convert_reverse(ConvertOMPIToStandard.FILE, 'file', 'MPI_File', consts.RESERVED_FILES) def generate_datatype_convert_fn(self): self.generic_convert(ConvertFuncs.DATATYPE, 'datatype', 'MPI_Datatype', consts.PREDEFINED_DATATYPES) + def generate_datatype_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.DATATYPE, 'datatype', 'MPI_Datatype', consts.PREDEFINED_DATATYPES) + + def generate_errhandler_convert_fn(self): + self.generic_convert(ConvertFuncs.ERRHANDLER, 'errorhandler', 'MPI_Errhandler', consts.RESERVED_ERRHANDLERS) + + def generate_errhandler_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.ERRHANDLER, 'errorhandler', 'MPI_Errhandler', consts.RESERVED_ERRHANDLERS) + + def generate_group_convert_fn(self): + self.generic_convert(ConvertFuncs.GROUP, 'group', 'MPI_Group', consts.RESERVED_GROUPS) + + def generate_group_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.GROUP, 'group', 'MPI_Group', consts.RESERVED_GROUPS) + + def generate_message_convert_fn(self): + self.generic_convert(ConvertFuncs.MESSAGE, 'message', 'MPI_Message', consts.RESERVED_MESSAGES) + + def generate_message_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.MESSAGE, 'message', 'MPI_Message', consts.RESERVED_MESSAGES) + def generate_op_convert_fn(self): self.generic_convert(ConvertFuncs.OP, 'op', 'MPI_Op', consts.COLLECTIVE_OPERATIONS) + def generate_op_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.OP, 'op', 'MPI_Op', consts.RESERVED_OPS) + + def generate_session_convert_fn(self): + self.generic_convert(ConvertFuncs.SESSION, 'session', 'MPI_Session', consts.RESERVED_SESSIONS) + + def generate_session_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.SESSION, 'session', 'MPI_Session', consts.RESERVED_SESSIONS) + def generate_win_convert_fn(self): self.generic_convert(ConvertFuncs.WIN, 'win', 'MPI_Win', consts.RESERVED_WINDOWS) + def generate_win_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.WIN, 'win', 'MPI_Win', consts.RESERVED_WINDOWS) + def generate_pointer_convert_fn(self, type_, fn_name, constants): abi_type = self.mangle_name(type_) self.dump(f'{consts.INLINE_ATTRS} void {fn_name}({abi_type} *ptr)') @@ -168,20 +207,40 @@ def generate_pointer_convert_fn(self, type_, fn_name, constants): def generate_request_convert_fn(self): self.generate_pointer_convert_fn('MPI_Request', ConvertFuncs.REQUEST, consts.RESERVED_REQUESTS) - def generate_file_convert_fn(self): - self.generate_pointer_convert_fn('MPI_File', ConvertFuncs.FILE, consts.RESERVED_FILES) + def generate_request_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.REQUEST, 'request', 'MPI_Request', consts.RESERVED_REQUESTS) + +# def generate_file_convert_fn(self): +# self.generate_pointer_convert_fn('MPI_File', ConvertFuncs.FILE, consts.RESERVED_FILES) def generate_status_convert_fn(self): type_ = 'MPI_Status' abi_type = self.mangle_name(type_) - self.dump(f'{consts.INLINE_ATTRS} void {ConvertFuncs.STATUS}({abi_type} *out, {type_} *inp)') + self.dump(f'{consts.INLINE_ATTRS} void {ConvertFuncs.STATUS}({type_} *out, {abi_type} *inp)') self.dump('{') + self.dump(' void *ptr = &out->_ucount;') self.dump(' out->MPI_SOURCE = inp->MPI_SOURCE;') self.dump(' out->MPI_TAG = inp->MPI_TAG;') + self.dump(' out->_cancelled = inp->MPI_Internal[0];') + self.dump(' memcpy(ptr, &inp->MPI_Internal[1],sizeof(out->_ucount));') self.dump(f' out->MPI_ERROR = {ConvertFuncs.ERROR_CLASS}(inp->MPI_ERROR);') # Ignoring the private fields for now self.dump('}') + def generate_status_convert_fn_intern_to_abi(self): + type_ = 'MPI_Status' + abi_type = self.mangle_name(type_) + self.dump(f'{consts.INLINE_ATTRS} void {ConvertOMPIToStandard.STATUS}({abi_type} *out, {type_} *inp)') + self.dump('{') + self.dump(' void *ptr = &out->MPI_Internal[1];') + self.dump(' out->MPI_SOURCE = inp->MPI_SOURCE;') + self.dump(' out->MPI_TAG = inp->MPI_TAG;') + self.dump(' out->MPI_Internal[0] =inp->_cancelled;') + self.dump(' memcpy(ptr, &inp->_ucount,sizeof(inp->_ucount));') +# self.dump(f' out->MPI_ERROR = {ConvertOMPIToStandard.ERROR_CLASS}(inp->MPI_ERROR);') + # Ignoring the private fields for now + self.dump('}') + def define(self, type_, name, value): self.dump(f'#define {name} OMPI_CAST_CONSTANT({type_}, {value})') @@ -217,12 +276,17 @@ def dump_header(self): self.dump() self.define_all('MPI_Datatype', consts.PREDEFINED_DATATYPES) - self.define_all('MPI_Op', COLLECTIVE_OPERATIONS) + self.define_all('MPI_Op', consts.COLLECTIVE_OPERATIONS) + self.define_all('MPI_Op', consts.RESERVED_OPS) self.define_all('MPI_Comm', consts.RESERVED_COMMUNICATORS) + self.define_all('MPI_Errhandler', consts.RESERVED_ERRHANDLERS) + self.define_all('MPI_Group', consts.RESERVED_GROUPS) self.define_all('MPI_Request', consts.RESERVED_REQUESTS) + self.define_all('MPI_Session', consts.RESERVED_SESSIONS) self.define_all('MPI_Win', consts.RESERVED_WINDOWS) self.define_all('MPI_Info', consts.RESERVED_INFOS) self.define_all('MPI_File', consts.RESERVED_FILES) + self.define_all('MPI_Message', consts.RESERVED_MESSAGES) for name, value in consts.VARIOUS_CONSTANTS.items(): self.dump(f'#define {self.mangle_name(name)} {value}') @@ -251,28 +315,72 @@ def dump_header(self): int MPI_SOURCE; int MPI_TAG; int MPI_ERROR; - int mpi_abi_private[5]; + int MPI_Internal[5]; };""") self.dump(f'typedef struct MPI_Status_ABI {self.mangle_name("MPI_Status")};') self.dump() + # user functions + self.dump('typedef int (MPI_Copy_function)(MPI_Comm_ABI_INTERNAL, int, void *, void *, void *, int *);') + self.dump('typedef int (MPI_Delete_function)(MPI_Comm_ABI_INTERNAL, int, void *, void *);') +# +# generate prototypes for user call back functions +# + for handle in consts.C_ATTRIBUTE_OBJS: + prefix, suffix = handle.split('_') + copy_callback_func_name = f'{handle}_copy_attr_function' + copy_callback_func_name = f'{self.mangle_name(copy_callback_func_name)}' + delete_callback_func_name = f'{handle}_delete_attr_function' + delete_callback_func_name = f'{self.mangle_name(delete_callback_func_name)}' + # + # stupid MPI standard naming consistency + # + if handle == 'MPI_Type': + obj_arg_type = f'{self.mangle_name("MPI_Datatype")}' + else: + obj_arg_type = f'{self.mangle_name(handle)}' + obj_arg_name = f'old{suffix}'.lower() + obj_arg = f'{obj_arg_type} {obj_arg_name}' + keyval_arg = f'int {suffix}_keyval'.lower() + self.dump(f'typedef int ({copy_callback_func_name})({obj_arg}, {keyval_arg}, void *, void *, void *,int *);') + self.dump(f'typedef int ({delete_callback_func_name})({obj_arg}, {keyval_arg}, void *, void *);') + # Function signatures for sig in self.signatures: self.dump(f'{sig};') self.dump('int MPI_Abi_details(int *buflen, char *details, MPI_Info *info);') self.dump('int MPI_Abi_supported(int *flag);') self.dump('int MPI_Abi_version(int *abi_major, int *abi_minor);') - if not self.external: - # Now generate the conversion code - self.generate_error_convert_fn() - self.generate_comm_convert_fn() - self.generate_comm_convert_fn_intern_to_abi() - self.generate_info_convert_fn() - self.generate_file_convert_fn() - self.generate_datatype_convert_fn() - self.generate_op_convert_fn() - self.generate_win_convert_fn() - self.generate_request_convert_fn() - self.generate_status_convert_fn() + +# +# the converters are no longer generated +# +# if not self.external: +# # Now generate the conversion code +# self.generate_error_convert_fn() +# self.generate_comm_convert_fn() +# self.generate_comm_convert_fn_intern_to_abi() +# self.generate_info_convert_fn() +# self.generate_info_convert_fn_intern_to_abi() +# self.generate_file_convert_fn() +# self.generate_file_convert_fn_intern_to_abi() +# self.generate_group_convert_fn() +# self.generate_group_convert_fn_intern_to_abi() +# self.generate_datatype_convert_fn() +# self.generate_datatype_convert_fn_intern_to_abi() +# self.generate_errhandler_convert_fn() +# self.generate_errhandler_convert_fn_intern_to_abi() +# self.generate_message_convert_fn() +# self.generate_message_convert_fn_intern_to_abi() +# self.generate_op_convert_fn() +# self.generate_op_convert_fn_intern_to_abi() +# self.generate_session_convert_fn() +# self.generate_session_convert_fn_intern_to_abi() +# self.generate_win_convert_fn() +# self.generate_win_convert_fn_intern_to_abi() +# self.generate_request_convert_fn() +# self.generate_request_convert_fn_intern_to_abi() +# self.generate_status_convert_fn() +# self.generate_status_convert_fn_intern_to_abi() self.dump(""" #if defined(c_plusplus) || defined(__cplusplus) @@ -292,7 +400,7 @@ def print_profiling_header(fn_name, out): out.dump('#endif') -def print_cdefs_for_bigcount(fn_name, out, enable_count=False): +def print_cdefs_for_bigcount(out, enable_count=False): if enable_count: out.dump('#undef OMPI_BIGCOUNT_SRC') out.dump('#define OMPI_BIGCOUNT_SRC 1') @@ -300,41 +408,75 @@ def print_cdefs_for_bigcount(fn_name, out, enable_count=False): out.dump('#undef OMPI_BIGCOUNT_SRC') out.dump('#define OMPI_BIGCOUNT_SRC 0') +def print_cdefs_for_abi(out, abi_type='ompi'): + if abi_type == 'ompi': + out.dump('#undef OMPI_ABI_SRC') + out.dump('#define OMPI_ABI_SRC 0') + else: + out.dump('#undef OMPI_ABI_SRC') + out.dump('#define OMPI_ABI_SRC 1') + def ompi_abi(base_name, template, out): """Generate the OMPI ABI functions.""" template.print_header(out) print_profiling_header(base_name, out) - print_cdefs_for_bigcount(base_name, out) + print_cdefs_for_bigcount(out) + print_cdefs_for_abi(out) out.dump(template.prototype.signature(base_name, abi_type='ompi')) template.print_body(func_name=base_name, out=out) # Check if we need to generate the bigcount interface if util.prototype_has_bigcount(template.prototype): base_name_c = f'{base_name}_c' print_profiling_header(base_name_c, out) - print_cdefs_for_bigcount(base_name_c, out, enable_count=True) + print_cdefs_for_bigcount(out, enable_count=True) + print_cdefs_for_abi(out) out.dump(template.prototype.signature(base_name_c, abi_type='ompi', enable_count=True)) template.print_body(func_name=base_name_c, out=out) ABI_INTERNAL_HEADER = 'ompi/mpi/c/abi.h' +ABI_INTERNAL_CONVERTOR = 'ompi/mpi/c/abi_converters.h' def standard_abi(base_name, template, out): """Generate the standard ABI functions.""" template.print_header(out) out.dump(f'#include "{ABI_INTERNAL_HEADER}"') + out.dump(f'#include "{ABI_INTERNAL_CONVERTOR}"') + print_cdefs_for_abi(out,abi_type='standard') + + # If any parameters are pointers to user callback functions, generate code + # for callback wrappers + if util.prototype_needs_callback_wrappers(template.prototype): + params = [param.construct(abi_type='standard') for param in template.prototype.params] + for param in params: + if param.callback_wrapper_code: + lines = [] + lines.extend(param.callback_wrapper_code) + for line in lines: + out.dump(line) # Static internal function (add a random component to avoid conflicts) internal_name = f'ompi_abi_{template.prototype.name}' + print_cdefs_for_bigcount(out) + print_cdefs_for_abi(out, abi_type='standard') internal_sig = template.prototype.signature(internal_name, abi_type='ompi', - enable_count=True) + enable_count=False) out.dump(consts.INLINE_ATTRS, internal_sig) template.print_body(func_name=base_name, out=out) - - def generate_function(prototype, fn_name, internal_fn, enable_count=False): + if util.prototype_has_bigcount(template.prototype): + internal_name = f'ompi_abi_{template.prototype.name}_c' + print_cdefs_for_bigcount(out, enable_count=True) + print_cdefs_for_abi(out, abi_type='standard') + internal_sig = template.prototype.signature(internal_name, abi_type='ompi', + enable_count=True) + out.dump(consts.INLINE_ATTRS, internal_sig) + template.print_body(func_name=base_name, out=out) + + def generate_function(prototype, fn_name, internal_fn, out, enable_count=False): """Generate a function for the standard ABI.""" - print_profiling_header(fn_name) - print_cdefs_for_bigcount(fn_name,enable_count) + print_profiling_header(fn_name,out) +# print_cdefs_for_bigcount(out, enable_count) # Handle type conversions and arguments params = [param.construct(abi_type='standard') for param in prototype.params] @@ -344,6 +486,7 @@ def generate_function(prototype, fn_name, internal_fn, enable_count=False): return_type = prototype.return_type.construct(abi_type='standard') lines.append(f'{return_type.tmp_type_text()} ret_value;') for param in params: +# print("param = " + str(param) + " " + str(param.argument)) if param.init_code: lines.extend(param.init_code) pass_args = ', '.join(param.argument for param in params) @@ -359,10 +502,12 @@ def generate_function(prototype, fn_name, internal_fn, enable_count=False): out.dump(line) out.dump('}') - generate_function(template.prototype, base_name, internal_name) + internal_name = f'ompi_abi_{template.prototype.name}' + generate_function(template.prototype, base_name, internal_name, out) if util.prototype_has_bigcount(template.prototype): base_name_c = f'{base_name}_c' - generate_function(template.prototype, base_name_c, internal_name, + internal_name = f'ompi_abi_{template.prototype.name}_c' + generate_function(template.prototype, base_name_c, internal_name, out, enable_count=True) diff --git a/ompi/mpi/bindings/ompi_bindings/c_type.py b/ompi/mpi/bindings/ompi_bindings/c_type.py index 510c606bea3..1ea6f1fbc0f 100644 --- a/ompi/mpi/bindings/ompi_bindings/c_type.py +++ b/ompi/mpi/bindings/ompi_bindings/c_type.py @@ -8,8 +8,8 @@ # $HEADER$ """C type definitions.""" from abc import ABC, abstractmethod -from ompi_bindings.consts import ConvertFuncs, ConvertOMPIToStandard - +from ompi_bindings.consts import ConvertFuncs, ConvertOMPIToStandard, IGNORED_STATUS_HANDLES +from ompi_bindings import util class Type(ABC): """Type representation.""" @@ -24,7 +24,7 @@ def __init__(self, type_name, name=None, self.type = type_name self.name = name self.count_param = count_param - self.mangle_name = mangle_name + self.mangle_name = util.abi_internal_name @staticmethod def construct(abi_type, type_name, **kwargs): @@ -32,6 +32,7 @@ def construct(abi_type, type_name, **kwargs): if abi_type == 'ompi': return Type.PARAMS_OMPI_ABI[type_name](type_name, **kwargs) elif abi_type == 'standard': +# print("Checkint oug type " + str(type_name)) return Type.PARAMS_STANDARD_ABI[type_name](type_name, **kwargs) else: raise RuntimeError(f'invalid ABI type {abi_type}') @@ -43,6 +44,7 @@ def wrapper(class_): if 'ompi' in abi_type: Type.PARAMS_OMPI_ABI[type_name] = class_ if 'standard' in abi_type: +# print("Adding type " + str(type_name) + " to PARAMS_STANDARD_ABI") Type.PARAMS_STANDARD_ABI[type_name] = class_ return class_ return wrapper @@ -82,6 +84,10 @@ def tmp_type_text(self, enable_count=False): def parameter(self, enable_count=False, **kwargs): return f'{self.type_text(enable_count=enable_count)} {self.name}' + @property + def callback_wrapper_code(self): + """Return True if this parameter has callback wrapper code to generate.""" + return False @Type.add_type('ERROR_CLASS') class TypeErrorClass(Type): @@ -340,6 +346,12 @@ class TypeDatatype(Type): def type_text(self, enable_count=False): return 'MPI_Datatype' +@Type.add_type('DATATYPE_OUT', abi_type=['ompi']) +class TypeDatatypeOut(Type): + + def type_text(self, enable_count=False): + return 'MPI_Datatype *' + @Type.add_type('DATATYPE_ARRAY', abi_type=['ompi']) class TypeDatatypeArray(Type): @@ -369,19 +381,18 @@ class TypeDatatypeStandard(StandardABIType): def init_code(self): return [f'MPI_Datatype {self.tmpname} = {ConvertFuncs.DATATYPE}({self.name});'] - def type_text(self, enable_count=False): - return self.mangle_name('MPI_Datatype') - + def tmp_type_text(self, enable_count=False): + return 'MPI_Datatype' -@Type.add_type('DATATYPE_OUT', abi_type=['ompi']) -class TypeDatatypeOut(Type): + def return_code(self, name): + return [f'return {ConvertOMPIToStandard.DATATYPE}({name});'] def type_text(self, enable_count=False): - return 'MPI_Datatype *' + return self.mangle_name('MPI_Datatype') @Type.add_type('DATATYPE_OUT', abi_type=['standard']) -class TypeDatatypeStandard(Type): +class TypeDatatypeOutStandard(StandardABIType): @property def final_code(self): @@ -395,6 +406,43 @@ def type_text(self, enable_count=False): def argument(self): return f'(MPI_Datatype *) {self.name}' +# +# TODO THIS IS NOT COMPLETE +# +@Type.add_type('DATATYPE_ARRAY', abi_type=['standard']) +class TypeDatatypeArrayStandard(StandardABIType): + + @property + def init_code(self): + if self.count_param is None: + code = [f'MPI_Comm comm_{self.tmpname} = {ConvertFuncs.COMM}(comm);'] + code.append(f'int size_{self.tmpname} = OMPI_COMM_IS_INTER(comm_{self.tmpname})?ompi_comm_remote_size(comm_{self.tmpname}):ompi_comm_size(comm_{self.tmpname});') + else: + code = [f'int size_{self.tmpname} = {self.count_param};'] + code.append(f'MPI_Datatype *{self.tmpname} = (MPI_Datatype *)malloc(sizeof(MPI_Datatype) * size_{self.tmpname});') + code.append(f'for(int i=0;iuser_extra_state = extra_state;') + code.append('helper->user_copy_fn = comm_copy_attr_fn;') + code.append('helper->user_delete_fn = comm_delete_attr_fn;') + return code + + # TODO: This should be generalized to be reused with type and win + @property + def callback_wrapper_code(self): + code = [] + code = ['typedef struct {'] + code.append(' MPI_Comm_copy_attr_function_ABI_INTERNAL *user_copy_fn;') + code.append(' MPI_Comm_delete_attr_function_ABI_INTERNAL *user_delete_fn;') + code.append(' void *user_extra_state;') + code.append('} ompi_abi_wrapper_helper_t;') + code.append('static int ompi_abi_copy_attr_fn(MPI_Comm oldcomm, int comm_keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag)') + code.append('{') + code.append(' ompi_abi_wrapper_helper_t *helper = (ompi_abi_wrapper_helper_t *)extra_state;') + code.append(' MPI_Comm_ABI_INTERNAL comm_tmp = ompi_convert_comm_ompi_to_standard(oldcomm);') + code.append(' return helper->user_copy_fn((MPI_Comm_ABI_INTERNAL)comm_tmp, comm_keyval, helper->user_extra_state, attribute_val_in, attribute_val_out, flag);') + code.append('}') + code.append('static int ompi_abi_delete_attr_fn(MPI_Comm oldcomm, int comm_keyval, void *attribute_val, void *extra_state)') + code.append('{') + code.append(' ompi_abi_wrapper_helper_t *helper = (ompi_abi_wrapper_helper_t *)extra_state;') + code.append(' MPI_Comm_ABI_INTERNAL comm_tmp = ompi_convert_comm_ompi_to_standard(oldcomm);') + code.append(' return helper->user_delete_fn((MPI_Comm_ABI_INTERNAL)comm_tmp, comm_keyval, attribute_val, helper->user_extra_state);') + code.append(' free(helper);') + code.append('}') + return code @Type.add_type('COMM_DELETE_ATTR_FUNCTION', abi_type=['ompi']) class TypeCommDeleteAttrFunction(Type): @@ -993,9 +1229,14 @@ def type_text(self, enable_count=False): @Type.add_type('COMM_DELETE_ATTR_FUNCTION', abi_type=['standard']) class TypeCommDeleteAttrFunctionStandard(Type): - # TODO: This may require a special function to wrap the callback - pass + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_Comm_delete_attr_function') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_Comm_delete_attr_function *) {self.name}' @Type.add_type('GREQUEST_QUERY_FUNCTION', abi_type=['ompi']) class TypeGrequestQueryFunction(Type): @@ -1007,8 +1248,10 @@ def type_text(self, enable_count=False): @Type.add_type('GREQUEST_QUERY_FUNCTION', abi_type=['standard']) class TypeGrequestQueryFunctionStandard(Type): # TODO: This may require a special function to wrap the callback - pass +# pass + def type_text(self, enable_count=False): + return 'MPI_Grequest_query_function *' @Type.add_type('GREQUEST_FREE_FUNCTION', abi_type=['ompi']) class TypeGrequestFreeFunction(Type): @@ -1020,8 +1263,10 @@ def type_text(self, enable_count=False): @Type.add_type('GREQUEST_FREE_FUNCTION', abi_type=['standard']) class TypeGrequestFreeFunctionStandard(Type): # TODO: This may require a special function to wrap the callback - pass +# pass + def type_text(self, enable_count=False): + return 'MPI_Grequest_free_function *' @Type.add_type('GREQUEST_CANCEL_FUNCTION', abi_type=['ompi']) class TypeGrequestCancelFunction(Type): @@ -1033,8 +1278,10 @@ def type_text(self, enable_count=False): @Type.add_type('GREQUEST_CANCEL_FUNCTION', abi_type=['standard']) class TypeGrequestCancelFunctionStandard(Type): # TODO: This may require a special function to wrap the callback - pass +# pass + def type_text(self, enable_count=False): + return 'MPI_Grequest_cancel_function *' @Type.add_type('DATAREP_CONVERSION_FUNCTION', abi_type=['ompi']) class TypeDatarepConversionFunction(Type): @@ -1049,8 +1296,14 @@ def type_text(self, enable_count=False): @Type.add_type('DATAREP_CONVERSION_FUNCTION', abi_type=['standard']) class TypeDatarepConversionFunctionStandard(Type): # TODO: This may require a special function to wrap the callback - pass +# pass + + @property + def is_count(self): + return True + def type_text(self, enable_count=False): + return 'MPI_Datarep_conversion_function_c *' if enable_count else 'MPI_Datarep_conversion_function *' @Type.add_type('DATAREP_EXTENT_FUNCTION', abi_type=['ompi']) class TypeDatarepExtentFunction(Type): @@ -1062,8 +1315,10 @@ def type_text(self, enable_count=False): @Type.add_type('DATAREP_EXTENT_FUNCTION', abi_type=['standard']) class TypeDatarepExtentFunctionStandard(Type): # TODO: This may require a special function to wrap the callback - pass +# pass + def type_text(self, enable_count=False): + return 'MPI_Datarep_extent_function *' @Type.add_type('SESSION_ERRHANDLER_FUNCTION', abi_type=['ompi']) class TypeSessionErrhandlerFunction(Type): @@ -1075,8 +1330,10 @@ def type_text(self, enable_count=False): @Type.add_type('SESSION_ERRHANDLER_FUNCTION', abi_type=['standard']) class TypeSessionErrhandlerFunctionStandard(Type): # TODO: This may require a special function to wrap the callback - pass +# pass + def type_text(self, enable_count=False): + return 'MPI_Session_errhandler_function *' @Type.add_type('TYPE_COPY_ATTR_FUNCTION', abi_type=['ompi']) class TypeTypeCopyAttrFunction(Type): @@ -1084,12 +1341,51 @@ class TypeTypeCopyAttrFunction(Type): def type_text(self, enable_count=False): return 'MPI_Type_copy_attr_function *' - @Type.add_type('TYPE_COPY_ATTR_FUNCTION', abi_type=['standard']) class TypeTypeCopyAttrFunctionStandard(Type): - # TODO: This may require a special function to wrap the callback - pass + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_Type_copy_attr_function') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_Type_copy_attr_function *) {self.name}' + + @property + def init_code(self): + code = [] + code = ['ompi_abi_wrapper_helper_t *helper = NULL;'] + code.append('helper = ( ompi_abi_wrapper_helper_t *)malloc(sizeof(ompi_abi_wrapper_helper_t));') + code.append('if (NULL == helper) return MPI_ERR_NO_MEM;') + code.append('helper->user_extra_state = extra_state;') + code.append('helper->user_copy_fn = type_copy_attr_fn;') + code.append('helper->user_delete_fn = type_delete_attr_fn;') + return code + + # TODO: This should be generalized to be reused with type and win + @property + def callback_wrapper_code(self): + code = [] + code = ['typedef struct {'] + code.append(' MPI_Type_copy_attr_function_ABI_INTERNAL *user_copy_fn;') + code.append(' MPI_Type_delete_attr_function_ABI_INTERNAL *user_delete_fn;') + code.append(' void *user_extra_state;') + code.append('} ompi_abi_wrapper_helper_t;') + code.append('static int ompi_abi_copy_attr_fn(MPI_Datatype oldtype, int type_keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag)') + code.append('{') + code.append(' ompi_abi_wrapper_helper_t *helper = (ompi_abi_wrapper_helper_t *)extra_state;') + code.append(' MPI_Datatype_ABI_INTERNAL type_tmp = ompi_convert_datatype_ompi_to_standard(oldtype);') + code.append(' return helper->user_copy_fn((MPI_Datatype_ABI_INTERNAL)type_tmp, type_keyval, helper->user_extra_state, attribute_val_in, attribute_val_out, flag);') + code.append('}') + code.append('static int ompi_abi_delete_attr_fn(MPI_Datatype oldtype, int type_keyval, void *attribute_val, void *extra_state)') + code.append('{') + code.append(' ompi_abi_wrapper_helper_t *helper = (ompi_abi_wrapper_helper_t *)extra_state;') + code.append(' MPI_Datatype_ABI_INTERNAL type_tmp = ompi_convert_datatype_ompi_to_standard(oldtype);') + code.append(' return helper->user_delete_fn((MPI_Datatype_ABI_INTERNAL)type_tmp, type_keyval, attribute_val, helper->user_extra_state);') + code.append(' free(helper);') + code.append('}') + return code @Type.add_type('TYPE_DELETE_ATTR_FUNCTION', abi_type=['ompi']) class TypeTypeDeleteAttrFunction(Type): @@ -1100,11 +1396,17 @@ def type_text(self, enable_count=False): @Type.add_type('TYPE_DELETE_ATTR_FUNCTION', abi_type=['standard']) class TypeTypeDeleteAttrFunctionStandard(Type): - # TODO: This may require a special function to wrap the callback - pass + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_Type_delete_attr_function') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_Type_delete_attr_function *) {self.name}' + +@Type.add_type('WIN_ERRHANDLER_FUNCTION', abi_type=['ompi']) -@Type.add_type('WIN_ERRHANLDER_FUNCTION', abi_type=['ompi']) class TypeWinErrhandlerFunction(Type): def type_text(self, enable_count=False): @@ -1114,8 +1416,10 @@ def type_text(self, enable_count=False): @Type.add_type('WIN_ERRHANDLER_FUNCTION', abi_type=['standard']) class TypeWinErrhandlerFunctionStandard(Type): # TODO: This may require a special function to wrap the callback - pass +# pass + def type_text(self, enable_count=False): + return 'MPI_Win_errhandler_function *' @Type.add_type('WIN_COPY_ATTR_FUNCTION', abi_type=['ompi']) class TypeWinCopyAttrFunction(Type): @@ -1126,8 +1430,48 @@ def type_text(self, enable_count=False): @Type.add_type('WIN_COPY_ATTR_FUNCTION', abi_type=['standard']) class TypeWinCopyAttrFunctionStandard(Type): - # TODO: This may require a special function to wrap the callback - pass + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_Win_copy_attr_function') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_Win_copy_attr_function *) {self.name}' + + @property + def init_code(self): + code = [] + code = ['ompi_abi_wrapper_helper_t *helper = NULL;'] + code.append('helper = ( ompi_abi_wrapper_helper_t *)malloc(sizeof(ompi_abi_wrapper_helper_t));') + code.append('if (NULL == helper) return MPI_ERR_NO_MEM;') + code.append('helper->user_extra_state = extra_state;') + code.append('helper->user_copy_fn = win_copy_attr_fn;') + code.append('helper->user_delete_fn = win_delete_attr_fn;') + return code + + @property + def callback_wrapper_code(self): + code = [] + code = ['typedef struct {'] + code.append(' MPI_Win_copy_attr_function_ABI_INTERNAL *user_copy_fn;') + code.append(' MPI_Win_delete_attr_function_ABI_INTERNAL *user_delete_fn;') + code.append(' void *user_extra_state;') + code.append('} ompi_abi_wrapper_helper_t;') + code.append('static int ompi_abi_copy_attr_fn(MPI_Win oldwin, int win_keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag)') + code.append('{') + code.append(' ompi_abi_wrapper_helper_t *helper = (ompi_abi_wrapper_helper_t *)extra_state;') + code.append(' MPI_Win_ABI_INTERNAL win_tmp = ompi_convert_win_ompi_to_standard(oldwin);') + code.append(' return helper->user_copy_fn((MPI_Win_ABI_INTERNAL)win_tmp, win_keyval, helper->user_extra_state, attribute_val_in, attribute_val_out, flag);') + code.append('}') + code.append('static int ompi_abi_delete_attr_fn(MPI_Win oldwin, int win_keyval, void *attribute_val, void *extra_state)') + code.append('{') + code.append(' ompi_abi_wrapper_helper_t *helper = (ompi_abi_wrapper_helper_t *)extra_state;') + code.append(' MPI_Win_ABI_INTERNAL win_tmp = ompi_convert_win_ompi_to_standard(oldwin);') + code.append(' return helper->user_delete_fn((MPI_Win_ABI_INTERNAL)win_tmp, win_keyval, attribute_val, helper->user_extra_state);') + code.append(' free(helper);') + code.append('}') + return code @Type.add_type('WIN_DELETE_ATTR_FUNCTION', abi_type=['ompi']) @@ -1139,9 +1483,14 @@ def type_text(self, enable_count=False): @Type.add_type('WIN_DELETE_ATTR_FUNCTION', abi_type=['standard']) class TypeWinDeleteAttrFunctionStandard(Type): - # TODO: This may require a special function to wrap the callback - pass + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_Win_delete_attr_function') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_Win_delete_attr_function *) {self.name}' @Type.add_type('ERRHANDLER', abi_type=['ompi']) class TypeErrhandler(Type): @@ -1151,15 +1500,20 @@ def type_text(self, enable_count=False): @Type.add_type('ERRHANDLER', abi_type=['standard']) -class TypeErrhandlerStandard(Type): +class TypeErrhandlerStandard(StandardABIType): @property - def argument(self): - return f'(MPI_Errhandler) {self.name}' + def init_code(self): + return [f'MPI_Errhandler {self.tmpname} = {ConvertFuncs.ERRHANDLER}({self.name});'] def type_text(self, enable_count=False): return self.mangle_name('MPI_Errhandler') + def tmp_type_text(self, enable_count=False): + return 'MPI_Errhandler' + + def return_code(self, name): + return [f'return {ConvertOMPIToStandard.ERRHANDLER}({name});'] @Type.add_type('ERRHANDLER_OUT', abi_type=['ompi']) class TypeErrhandlerOut(Type): @@ -1177,7 +1531,7 @@ def argument(self): def type_text(self, enable_count=False): type_name = self.mangle_name('MPI_Errhandler') - return f'{MPI_Errhandler} *' + return f'{type_name} *' @Type.add_type('GROUP', abi_type=['ompi']) @@ -1188,15 +1542,25 @@ def type_text(self, enable_count=False): @Type.add_type('GROUP', abi_type=['standard']) -class TypeGroupStandard(Type): +class TypeGroupStandard(StandardABIType): - @property - def argument(self): - return f'(MPI_Group) {self.name}' +# @property +# def argument(self): +# return f'(MPI_Group) {self.name}' def type_text(self, enable_count=False): return self.mangle_name('MPI_Group') + @property + def init_code(self): + return [f'MPI_Group {self.tmpname} = {ConvertFuncs.GROUP}({self.name});'] + + def tmp_type_text(self, enable_count=False): + return 'MPI_Group' + + def return_code(self, name): + return [f'return {ConvertOMPIToStandard.GROUP}({name});'] + @Type.add_type('GROUP_OUT', abi_type=['ompi']) class TypeGroupOut(Type): @@ -1221,6 +1585,12 @@ def argument(self): return f'(MPI_Group *) {self.name}' +@Type.add_type('SESSION_INOUT', abi_type=['ompi']) +class TypeSessionOut(Type): + + def type_text(self, enable_count=False): + return 'MPI_Session *' + @Type.add_type('SESSION_OUT', abi_type=['ompi']) class TypeSessionOut(Type): @@ -1228,18 +1598,41 @@ def type_text(self, enable_count=False): return 'MPI_Session *' -@Type.add_type('SESSION_OUT', abi_type=['standard']) -class TypeSessionOutStandard(Type): +@Type.add_type('SESSION_INOUT', abi_type=['standard']) +class TypeSessionInOutStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_Session {self.tmpname} = {ConvertFuncs.SESSION}(*{self.name});'] + + @property + def final_code(self): + return [f'*{self.name} = {ConvertOMPIToStandard.SESSION}({self.tmpname});'] + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_Session') + return f'{type_name} *' - # TODO: This will require some conversion code for the ABI @property def argument(self): - return f'(MPI_Session *) {self.name}' + return f'&{self.tmpname}' + + +@Type.add_type('SESSION_OUT', abi_type=['standard']) +class TypeSessionOutStandard(StandardABIType): - def type_text(self): + @property + def final_code(self): + return [f'*{self.name} = {ConvertOMPIToStandard.SESSION}((MPI_Session) *{self.name});'] + + def type_text(self, enable_count=False): type_name = self.mangle_name('MPI_Session') return f'{type_name} *' + @property + def argument(self): + return f'(MPI_Session *) {self.name}' + @Type.add_type('SESSION', abi_type=['ompi']) class TypeSession(Type): @@ -1249,12 +1642,23 @@ def type_text(self, enable_count=False): @Type.add_type('SESSION', abi_type=['standard']) -class TypeSessionStandard(Type): +class TypeSessionStandard(StandardABIType): - # TODO: This will require some conversion code for the ABI @property - def argument(self): - return f'(MPI_Session) {self.name}' + def init_code(self): + return [f'MPI_Session {self.tmpname} = {ConvertFuncs.SESSION}({self.name});'] + +# @property +# def argument(self): +# return f'(MPI_Session) {self.name}' def type_text(self, enable_count=False): return self.mangle_name('MPI_Session') + + def tmp_type_text(self, enable_count=False): + return 'MPI_Session' + + def return_code(self, name): + return [f'return {ConvertOMPIToStandard.SESSION}({name});'] + + diff --git a/ompi/mpi/bindings/ompi_bindings/consts.py b/ompi/mpi/bindings/ompi_bindings/consts.py index 43bca486b57..0701e20d700 100644 --- a/ompi/mpi/bindings/ompi_bindings/consts.py +++ b/ompi/mpi/bindings/ompi_bindings/consts.py @@ -160,6 +160,10 @@ 'MPI_COMM_TYPE_RESOURCE_GUIDED', ] +RESERVED_GROUPS = [ + 'MPI_GROUP_NULL', +] + RESERVED_WINDOWS = [ 'MPI_WIN_NULL', ] @@ -177,6 +181,23 @@ 'MPI_FILE_NULL', ] +RESERVED_OPS = [ + 'MPI_OP_NULL', +] + +RESERVED_MESSAGES = [ + 'MPI_MESSAGE_NULL', + 'MPI_MESSAGE_NO_PROC', +] + +RESERVED_SESSIONS = [ + 'MPI_SESSION_NULL', +] + +RESERVED_ERRHANDLERS = [ + 'MPI_ERRHANDLER_NULL', +] + IGNORED_STATUS_HANDLES = [ 'MPI_STATUSES_IGNORE', 'MPI_STATUS_IGNORE', @@ -230,15 +251,28 @@ 'MPI_Win', ] +# +# C objects that can have attributes cached on them +# +C_ATTRIBUTE_OBJS = [ + 'MPI_Comm', + 'MPI_Type', + 'MPI_Win', +] + class ConvertFuncs: """Names of conversion functions (between standard ABI and OMPI ABI).""" - ERROR_CLASS = 'ompi_convert_intern_error_abi_error' + ERROR_CLASS = 'ompi_convert_abi_error_intern_error' + ERRHANDLER = 'ompi_convert_abi_errorhandler_intern_errorhandler' COMM = 'ompi_convert_abi_comm_intern_comm' DATATYPE = 'ompi_convert_abi_datatype_intern_datatype' + GROUP = 'ompi_convert_abi_group_intern_group' REQUEST = 'ompi_convert_abi_request_intern_request' - STATUS = 'ompi_convert_intern_status_abi_status' + STATUS = 'ompi_convert_abi_status_intern_status' + MESSAGE = 'ompi_convert_abi_message_intern_message' OP = 'ompi_convert_abi_op_intern_op' + SESSION = 'ompi_convert_abi_session_intern_session' WIN = 'ompi_convert_abi_win_intern_win' INFO = 'ompi_convert_abi_info_intern_info' FILE = 'ompi_convert_abi_file_intern_file' @@ -248,6 +282,18 @@ class ConvertOMPIToStandard: """Generated function for converting from OMPI to standard ABI.""" COMM = 'ompi_convert_comm_ompi_to_standard' + ERROR_CLASS = 'ompi_convert_intern_error_abi_error' + ERRHANDLER = 'ompi_convert_intern_errorhandler_abi_errorhandler' + GROUP = 'ompi_convert_group_ompi_to_standard' + DATATYPE = 'ompi_convert_datatype_ompi_to_standard' + FILE = 'ompi_convert_file_ompi_to_standard' + MESSAGE = 'ompi_convert_message_ompi_to_standard' + OP = 'ompi_convert_op_ompi_to_standard' + SESSION = 'ompi_convert_session_ompi_to_standard' + STATUS = 'ompi_convert_intern_status_abi_status' + WIN = 'ompi_convert_win_ompi_to_standard' + REQUEST = 'ompi_convert_ompi_request_abi_request' + INFO = 'ompi_convert_info_ompi_to_standard' # Inline function attributes diff --git a/ompi/mpi/bindings/ompi_bindings/parser.py b/ompi/mpi/bindings/ompi_bindings/parser.py index b7c6b36eba4..7f3a13e65ec 100644 --- a/ompi/mpi/bindings/ompi_bindings/parser.py +++ b/ompi/mpi/bindings/ompi_bindings/parser.py @@ -6,6 +6,9 @@ # Additional copyrights may follow # # $HEADER$ + +import os + """Source parsing code.""" class Parameter: diff --git a/ompi/mpi/bindings/ompi_bindings/util.py b/ompi/mpi/bindings/ompi_bindings/util.py index d2a9ba1c528..95e00cc7611 100644 --- a/ompi/mpi/bindings/ompi_bindings/util.py +++ b/ompi/mpi/bindings/ompi_bindings/util.py @@ -159,7 +159,6 @@ def abi_internal_name(extname): 'DATAREP_CONVERSION_FUNCTION', ] - def prototype_has_bigcount(prototype): """Should this prototype have a bigcount version?""" return any(param.type_name in BIGCOUNT_TYPE_NAMES for param in prototype.params) @@ -177,3 +176,17 @@ def prototype_has_buffers(prototype): return True else: return False + +USER_CALLBACK_NAMES = [ + 'COMM_COPY_ATTR_FUNCTION', + 'COMM_DELETE_ATTR_FUNCTION', + 'TYPE_COPY_ATTR_FUNCTION', + 'TYPE_DELETE_ATTR_FUNCTION', + 'WIN_COPY_ATTR_FUNCTION', + 'WIN_DELETE_ATTR_FUNCTION', +] + +def prototype_needs_callback_wrappers(prototype): + """Should this prototype need a callback wrappers""" + return any(param.type_name in USER_CALLBACK_NAMES for param in prototype.params) + diff --git a/ompi/mpi/c/Makefile.am b/ompi/mpi/c/Makefile.am index 80e6f82ab76..e0fa9e61a75 100644 --- a/ompi/mpi/c/Makefile.am +++ b/ompi/mpi/c/Makefile.am @@ -40,11 +40,8 @@ include $(top_srcdir)/Makefile.ompi-rules noinst_LTLIBRARIES = libmpi_c.la libmpi_c_profile.la -if OMPI_STANDARD_ABI -noinst_LTLIBRARIES += libmpi_c_abi.la libmpi_c_abi_profile.la -endif if BUILD_MPI_BINDINGS_LAYER -noinst_LTLIBRARIES += libmpi_c_noprofile.la libmpi_c_abi_noprofile.la +noinst_LTLIBRARIES += libmpi_c_noprofile.la endif headers = bindings.h @@ -305,8 +302,6 @@ prototype_sources = \ isendrecv_replace.c.in \ issend.c.in \ is_thread_main.c.in \ - keyval_create.c.in \ - keyval_free.c.in \ lookup_name.c.in \ message_c2f.c.in \ message_f2c.c.in \ @@ -479,6 +474,7 @@ prototype_sources = \ win_flush_local.c.in \ win_free.c.in \ win_free_keyval.c.in \ + win_f2c.c.in \ win_get_attr.c.in \ win_get_errhandler.c.in \ win_get_group.c.in \ @@ -506,33 +502,29 @@ EXTRA_DIST = $(prototype_sources) # profiling implications, and so are always built. libmpi_c_la_SOURCES = \ attr_fn.c + # The MPI_Abi_* functions do not require profiling implementations. libmpi_c_la_SOURCES += \ - abi_details.c \ - abi_supported.c \ - abi_version.c + abi_details.c \ + abi_supported.c \ + abi_version.c \ + ompi_isendrecv.c \ + ompi_sendrecv.c + libmpi_c_la_LIBADD = libmpi_c_profile.la if BUILD_MPI_BINDINGS_LAYER libmpi_c_la_LIBADD += libmpi_c_noprofile.la endif -libmpi_c_abi_la_SOURCES = \ - abi.h \ - attr_fn.c \ - abi_details.c \ - abi_supported.c \ - abi_version.c -libmpi_c_abi_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES -libmpi_c_abi_la_LIBADD = libmpi_c_abi_profile.la -if BUILD_MPI_BINDINGS_LAYER -libmpi_c_abi_la_LIBADD += libmpi_c_abi_noprofile.la -endif +nobase_include_HEADERS = abi.h standard_abi/mpi.h -libmpi_c_abi_profile_la_SOURCES = $(abi_interface_profile_sources) -libmpi_c_abi_profile_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES -DOMPI_BUILD_MPI_PROFILING=1 +# +# List of all C files that have profile versions (*_generated.c files were +# generated from prototype_sources above). +# +# +interface_profile_sources = $(prototype_sources:.c.in=_ompi_generated.c) -libmpi_c_abi_noprofile_la_SOURCES = $(abi_interface_profile_sources) -libmpi_c_abi_noprofile_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES -DOMPI_BUILD_MPI_PROFILING=0 # Conditionally install the header files if WANT_INSTALL_HEADERS @@ -540,36 +532,28 @@ ompidir = $(ompiincludedir)/$(subdir) ompi_HEADERS = $(headers) endif -# -# List of all C files that have profile versions (*_generated.c files were -# generated from prototype_sources above). -# -# -interface_profile_sources = $(prototype_sources:.c.in=_generated.c) -abi_interface_profile_sources =${interface_profile_sources:%=standard_%} - - # The following are special case functions where we # have to deal manually # -interface_profile_sources += \ +extra_interface_profile_sources = \ pcontrol.c \ type_get_contents.c \ type_get_contents_c.c \ type_get_envelope.c \ type_get_envelope_c.c \ - win_f2c.c \ wtick.c # The following functions were removed from the MPI standard, but are # retained for ABI compliance reasons. They are listed independently # of the other MPI functions in case we one day change behavior around # ABI compliance. -interface_profile_sources += \ +deprecated_interface_profile_sources = \ address.c \ errhandler_create.c \ errhandler_get.c \ errhandler_set.c \ + keyval_create.c \ + keyval_free.c \ type_extent.c \ type_hindexed.c \ type_hvector.c \ @@ -577,15 +561,14 @@ interface_profile_sources += \ type_struct.c \ type_ub.c -libmpi_c_profile_la_SOURCES = $(interface_profile_sources) +libmpi_c_profile_la_SOURCES = $(interface_profile_sources) $(extra_interface_profile_sources) $(deprecated_interface_profile_sources) libmpi_c_profile_la_CPPFLAGS = -DOMPI_BUILD_MPI_PROFILING=1 -libmpi_c_noprofile_la_SOURCES = $(interface_profile_sources) +libmpi_c_noprofile_la_SOURCES = $(interface_profile_sources) $(extra_interface_profile_sources) $(deprecated_interface_profile_sources) libmpi_c_noprofile_la_CPPFLAGS = -DOMPI_BUILD_MPI_PROFILING=0 -# ABI generation rules if OMPI_GENERATE_BINDINGS -ompi_%_generated.c: %.c.in +%_ompi_generated.c: %.c.in $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ --builddir $(abs_top_builddir) \ --srcdir $(abs_top_srcdir) \ @@ -594,8 +577,27 @@ ompi_%_generated.c: %.c.in source \ ompi \ $< - -standard_%_generated.c: %.c.in +abi.h: $(prototype_sources) + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ + --builddir $(abs_top_builddir) \ + --srcdir $(abs_top_srcdir) \ + --output $@ \ + c \ + header \ + --srcdir $(srcdir) \ + $(prototype_sources) +standard_abi/mpi.h: $(prototype_sources) + mkdir -p standard_abi + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ + --builddir $(abs_top_builddir) \ + --srcdir $(abs_top_srcdir) \ + --output $@ \ + c \ + header \ + --srcdir $(srcdir) \ + --external \ + $(prototype_sources) +%_abi_generated.c: %.c.in $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ --builddir $(abs_top_builddir) \ --srcdir $(abs_top_srcdir) \ @@ -603,12 +605,10 @@ standard_%_generated.c: %.c.in c \ source \ standard \ - $< -abi.h: abi.py $(prototype_sources) - $(OMPI_V_GEN) $(PYTHON) $(srcdir)/abi.py header --srcdir=$(srcdir) $(prototype_sources) > $@ -standard_abi/mpi.h: abi.py $(prototype_sources) - mkdir -p standard_abi - $(OMPI_V_GEN) $(PYTHON) $(srcdir)/abi.py header --srcdir=$(srcdir) --external $(prototype_sources) > $@ + $< +endif + +MAINTAINERCLEANFILES = *_generated.c abi.h +if OMPI_STANDARD_ABI +include Makefile_abi.include endif -# Delete generated files on maintainer-clean -MAINTAINERCLEANFILES = *_generated.c abi.h standard_abi/ diff --git a/ompi/mpi/c/Makefile_abi.include b/ompi/mpi/c/Makefile_abi.include new file mode 100644 index 00000000000..c082b84e1c0 --- /dev/null +++ b/ompi/mpi/c/Makefile_abi.include @@ -0,0 +1,61 @@ +# +# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2013 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2009-2021 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2011 Sandia National Laboratories. All rights reserved. +# Copyright (c) 2012 Oak Rigde National Laboratory. All rights reserved. +# Copyright (c) 2012-2013 Inria. All rights reserved. +# Copyright (c) 2013-2018 Los Alamos National Security, LLC. All rights +# reserved. +# Copyright (c) 2015-2020 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# Copyright (c) 2021 Amazon.com, Inc. or its affiliates. All Rights +# reserved. +# Copyright (c) 2025 Advanced Micro Devices, Inc. All Rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# ABI specific make components + +if OMPI_STANDARD_ABI + +noinst_LTLIBRARIES += libmpi_c_abi.la libmpi_c_abi_profile.la +if BUILD_MPI_BINDINGS_LAYER +noinst_LTLIBRARIES += libmpi_c_abi_noprofile.la +endif + +BUILT_SOURCES = abi.h standard_abi/mpi.h + +libmpi_c_abi_la_SOURCES = \ + attr_fn.c \ + abi_details.c \ + abi_supported.c \ + abi_version.c + +libmpi_c_abi_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES +libmpi_c_abi_la_LIBADD = libmpi_c_abi_profile.la +if BUILD_MPI_BINDINGS_LAYER +libmpi_c_abi_la_LIBADD += libmpi_c_abi_noprofile.la +endif + +abi_interface_profile_sources = $(prototype_sources:.c.in=_abi_generated.c) + +libmpi_c_abi_profile_la_SOURCES = $(abi_interface_profile_sources) +libmpi_c_abi_profile_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES -DOMPI_BUILD_MPI_PROFILING=1 + +libmpi_c_abi_noprofile_la_SOURCES = $(abi_interface_profile_sources) +libmpi_c_abi_noprofile_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES -DOMPI_BUILD_MPI_PROFILING=0 + +endif diff --git a/ompi/mpi/c/abi.py b/ompi/mpi/c/abi.py deleted file mode 100755 index f40986ff981..00000000000 --- a/ompi/mpi/c/abi.py +++ /dev/null @@ -1,1278 +0,0 @@ -#!/usr/bin/env python3 -# Copyright (c) 2023 Triad National Security, LLC. All rights reserved. -# Copyright (c) 2023 Research Organization for Information Science -# and Technology (RIST). All rights reserved. -# $COPYRIGHT$ -# -# Additional copyrights may follow -# -# $HEADERS$ -# -# -"""MPI Standard ABI Generation. - -TEMPLATE SOURCE FILE ASSUMPTIONS: -* Only one function per file -* Nothing (other than blank lines) after closing '}' -* Function prototype is preceded by PROTOTYPE -* All types in the function prototype are converted to one-word capital types - as defined here (to be later converted to ompi or standard ABI types) -* Functions requiring a bigcount implementation should have type COUNT in - place of MPI_Count or int for each count parameter. Bigcount functions will - be generated automatically for any function that includes a COUNT type. -""" -from abc import ABC, abstractmethod -import argparse -import re -import sys -import os - -# C type: const int -ERROR_CLASSES = [ - 'MPI_SUCCESS', - 'MPI_ERR_BUFFER', - 'MPI_ERR_COUNT', - 'MPI_ERR_TYPE', - 'MPI_ERR_TAG', - 'MPI_ERR_COMM', - 'MPI_ERR_RANK', - 'MPI_ERR_REQUEST', - 'MPI_ERR_ROOT', - 'MPI_ERR_GROUP', - 'MPI_ERR_OP', - 'MPI_ERR_TOPOLOGY', - 'MPI_ERR_DIMS', - 'MPI_ERR_ARG', - 'MPI_ERR_UNKNOWN', - 'MPI_ERR_TRUNCATE', - 'MPI_ERR_OTHER', - 'MPI_ERR_INTERN', - 'MPI_ERR_PENDING', - 'MPI_ERR_IN_STATUS', - 'MPI_ERR_ACCESS', - 'MPI_ERR_AMODE', - 'MPI_ERR_ASSERT', - 'MPI_ERR_BAD_FILE', - 'MPI_ERR_BASE', - 'MPI_ERR_CONVERSION', - 'MPI_ERR_DISP', - 'MPI_ERR_DUP_DATAREP', - 'MPI_ERR_FILE_EXISTS', - 'MPI_ERR_FILE_IN_USE', - 'MPI_ERR_FILE', - 'MPI_ERR_INFO_KEY', - 'MPI_ERR_INFO_NOKEY', - 'MPI_ERR_INFO_VALUE', - 'MPI_ERR_INFO', - 'MPI_ERR_IO', - 'MPI_ERR_KEYVAL', - 'MPI_ERR_LOCKTYPE', - 'MPI_ERR_NAME', - 'MPI_ERR_NO_MEM', - 'MPI_ERR_NOT_SAME', - 'MPI_ERR_NO_SPACE', - 'MPI_ERR_NO_SUCH_FILE', - 'MPI_ERR_PORT', - 'MPI_ERR_PROC_ABORTED', - 'MPI_ERR_QUOTA', - 'MPI_ERR_READ_ONLY', - 'MPI_ERR_RMA_ATTACH', - 'MPI_ERR_RMA_CONFLICT', - 'MPI_ERR_RMA_RANGE', - 'MPI_ERR_RMA_SHARED', - 'MPI_ERR_RMA_SYNC', - 'MPI_ERR_RMA_FLAVOR', - 'MPI_ERR_SERVICE', - 'MPI_ERR_SESSION', - 'MPI_ERR_SIZE', - 'MPI_ERR_SPAWN', - 'MPI_ERR_UNSUPPORTED_DATAREP', - 'MPI_ERR_UNSUPPORTED_OPERATION', - 'MPI_ERR_WIN', - 'MPI_T_ERR_CANNOT_INIT', - 'MPI_T_ERR_NOT_INITIALIZED', - 'MPI_T_ERR_MEMORY', - 'MPI_T_ERR_INVALID', - 'MPI_T_ERR_INVALID_INDEX', - 'MPI_T_ERR_INVALID_ITEM', - 'MPI_T_ERR_INVALID_SESSION', - 'MPI_T_ERR_INVALID_HANDLE', - 'MPI_T_ERR_INVALID_NAME', - 'MPI_T_ERR_OUT_OF_HANDLES', - 'MPI_T_ERR_OUT_OF_SESSIONS', - 'MPI_T_ERR_CVAR_SET_NOT_NOW', - 'MPI_T_ERR_CVAR_SET_NEVER', - 'MPI_T_ERR_PVAR_NO_WRITE', - 'MPI_T_ERR_PVAR_NO_STARTSTOP', - 'MPI_T_ERR_PVAR_NO_ATOMIC', - 'MPI_ERR_LASTCODE', -] - -PREDEFINED_DATATYPES = [ - 'MPI_CHAR', - 'MPI_SHORT', - 'MPI_INT', - 'MPI_LONG', - 'MPI_LONG_LONG_INT', - 'MPI_LONG_LONG', - 'MPI_SIGNED_CHAR', - 'MPI_UNSIGNED_CHAR', - 'MPI_UNSIGNED_SHORT', - 'MPI_UNSIGNED', - 'MPI_UNSIGNED_LONG', - 'MPI_UNSIGNED_LONG_LONG', - 'MPI_FLOAT', - 'MPI_DOUBLE', - 'MPI_LONG_DOUBLE', - 'MPI_WCHAR', - 'MPI_C_BOOL', - 'MPI_INT8_T', - 'MPI_INT16_T', - 'MPI_INT32_T', - 'MPI_INT64_T', - 'MPI_UINT8_T', - 'MPI_UINT16_T', - 'MPI_UINT32_T', - 'MPI_UINT64_T', - 'MPI_AINT', - 'MPI_COUNT', - 'MPI_OFFSET', - 'MPI_C_COMPLEX', - 'MPI_C_FLOAT_COMPLEX', - 'MPI_C_DOUBLE_COMPLEX', - 'MPI_C_LONG_DOUBLE_COMPLEX', - 'MPI_BYTE', - 'MPI_PACKED', - 'MPI_CXX_BOOL', - 'MPI_CXX_FLOAT_COMPLEX', - 'MPI_CXX_DOUBLE_COMPLEX', - 'MPI_CXX_LONG_DOUBLE_COMPLEX', - 'MPI_FLOAT_INT', - 'MPI_DOUBLE_INT', - 'MPI_LONG_INT', - 'MPI_2INT', - 'MPI_SHORT_INT', - 'MPI_LONG_DOUBLE_INT', -] - -# C type: MPI_Comm -RESERVED_COMMUNICATORS = [ - 'MPI_COMM_NULL', - 'MPI_COMM_WORLD', - 'MPI_COMM_SELF', -] - -COMMUNICATOR_SPLIT_TYPES = [ - 'MPI_COMM_TYPE_SHARED', - 'MPI_COMM_TYPE_HW_UNGUIDED', - 'MPI_COMM_TYPE_HW_GUIDED', -] - -RESERVED_WINDOWS = [ - 'MPI_WIN_NULL', -] - -RESERVED_REQUESTS = [ - 'MPI_REQUEST_NULL', -] - -RESERVED_INFOS = [ - 'MPI_INFO_ENV', - 'MPI_INFO_NULL', -] - -RESERVED_FILES = [ - 'MPI_FILE_NULL', -] - -IGNORED_STATUS_HANDLES = [ - 'MPI_STATUSES_IGNORE', - 'MPI_STATUS_IGNORE', -] - -COLLECTIVE_OPERATIONS = [ - 'MPI_MAX', - 'MPI_MIN', - 'MPI_SUM', - 'MPI_PROD', - 'MPI_MAXLOC', - 'MPI_MINLOC', - 'MPI_BAND', - 'MPI_BOR', - 'MPI_BXOR', - 'MPI_LAND', - 'MPI_LOR', - 'MPI_LXOR', - 'MPI_REPLACE', - 'MPI_NO_OP', -] - -VARIOUS_CONSTANTS = { - # Just setting this to the same as ompi ABI for right now, but will need to - # match the standard ABI value when defined - 'MPI_MAX_LIBRARY_VERSION_STRING': 256, - 'MPI_MAX_PROCESSOR_NAME': 256, -} - -# Types - -C_OPAQUE_TYPES = { - 'MPI_Aint': 'intptr_t', - 'MPI_Offset': 'int64_t', - 'MPI_Count': 'size_t', - # The below type needs to be set externally depending on Fortran compiler - 'MPI_Fint': 'int64_t', -} - -C_HANDLES = [ - 'MPI_Comm', - 'MPI_Datatype', - 'MPI_Errhandler', - 'MPI_File', - 'MPI_Group', - 'MPI_Info', - 'MPI_Message', - 'MPI_Op', - 'MPI_Request', - 'MPI_Session', - 'MPI_Win', -] - - -class ConvertFuncs: - """Names of conversion functions (between standard ABI and OMPI ABI).""" - - ERROR_CLASS = 'ompi_convert_intern_error_abi_error' - COMM = 'ompi_convert_abi_comm_intern_comm' - DATATYPE = 'ompi_convert_abi_datatype_intern_datatype' - REQUEST = 'ompi_convert_abi_request_intern_request' - STATUS = 'ompi_convert_intern_status_abi_status' - OP = 'ompi_convert_abi_op_intern_op' - WIN = 'ompi_convert_abi_win_intern_win' - INFO = 'ompi_convert_abi_info_intern_info' - FILE = 'ompi_convert_abi_file_intern_file' - - -class ConvertOMPIToStandard: - """Generated function for converting from OMPI to standard ABI.""" - - COMM = 'ompi_convert_comm_ompi_to_standard' - - -# Inline function attributes -INLINE_ATTRS = '__opal_attribute_always_inline__ static inline' - - -def mpi_fn_name_from_base_fn_name(name): - """Convert from a base name to the standard 'MPI_*' name.""" - return f'MPI_{name.capitalize()}' - - -def abi_internal_name(extname): - """Convert from the ABI external name to an internal name. - - Used to avoid conflicts with existing MPI names. - """ - return f'{extname}_ABI_INTERNAL' - - -class ABIHeaderBuilder: - """ABI header builder code.""" - - def __init__(self, prototypes, external=False, file=sys.stdout): - self.file = file - self.external = external - - if external: - mangle_name = lambda name: name - else: - mangle_name = abi_internal_name - - # Build up the list of standard ABI signatures - signatures = [] - for prototype in prototypes: - base_name = mpi_fn_name_from_base_fn_name(prototype.name) - signatures.append(prototype.signature('standard', base_name, - mangle_name=mangle_name)) - # Profiling prototype - signatures.append(prototype.signature('standard', f'P{base_name}', - mangle_name=mangle_name)) - if prototype.need_bigcount: - signatures.append(prototype.signature('standard', f'{base_name}_c', - count_type='MPI_Count', - mangle_name=mangle_name)) - # Profiling prototype - signatures.append(prototype.signature('standard', f'P{base_name}_c', - count_type='MPI_Count', - mangle_name=mangle_name)) - self.signatures = signatures - - def mangle_name(self, extname): - """Mangle names, depending on whether building external or internal header.""" - if self.external: - return extname - return abi_internal_name(extname) - - def dump(self, *pargs, **kwargs): - print(*pargs, **kwargs, file=self.file) - - def dump_lines(self, lines): - lines = indent_lines(lines, 4 * ' ', start=1) - for line in lines: - self.dump(line) - - def generate_error_convert_fn(self): - self.dump(f'{INLINE_ATTRS} int {ConvertFuncs.ERROR_CLASS}(int error_class)') - self.dump('{') - lines = [] - lines.append('switch (error_class) {') - for error in ERROR_CLASSES: - lines.append(f'case {self.mangle_name(error)}:') - lines.append(f'return {error};') - lines.append('default:') - lines.append('return error_class;') - lines.append('}') - self.dump_lines(lines) - self.dump('}') - - def generic_convert(self, fn_name, param_name, type_, value_names): - intern_type = self.mangle_name(type_) - self.dump(f'{INLINE_ATTRS} {type_} {fn_name}({intern_type} {param_name})') - self.dump('{') - lines = [] - for i, value_name in enumerate(value_names): - intern_name = self.mangle_name(value_name) - if i == 0: - lines.append('if (%s == %s) {' % (intern_name, param_name)) - else: - lines.append('} else if (%s == %s) {' % (intern_name, param_name)) - lines.append(f'return {value_name};') - lines.append('}') - lines.append(f'return ({type_}) {param_name};') - self.dump_lines(lines) - self.dump('}') - - def generic_convert_reverse(self, fn_name, param_name, type_, value_names): - intern_type = self.mangle_name(type_) - self.dump(f'{INLINE_ATTRS} {intern_type} {fn_name}({type_} {param_name})') - self.dump('{') - lines = [] - for i, value_name in enumerate(value_names): - intern_name = self.mangle_name(value_name) - if i == 0: - lines.append('if (%s == %s) {' % (value_name, param_name)) - else: - lines.append('} else if (%s == %s) {' % (value_name, param_name)) - lines.append(f'return {intern_name};') - lines.append('}') - lines.append(f'return ({intern_type}) {param_name};') - self.dump_lines(lines) - self.dump('}') - - def generate_comm_convert_fn(self): - self.generic_convert(ConvertFuncs.COMM, 'comm', 'MPI_Comm', RESERVED_COMMUNICATORS) - - def generate_comm_convert_fn_intern_to_abi(self): - self.generic_convert_reverse(ConvertOMPIToStandard.COMM, 'comm', 'MPI_Comm', RESERVED_COMMUNICATORS) - - def generate_info_convert_fn(self): - self.generic_convert(ConvertFuncs.INFO, 'info', 'MPI_Info', RESERVED_INFOS) - - def generate_file_convert_fn_intern_to_abi(self): - self.generic_convert_reverse(ConvertFuncs.FILE, 'file', 'MPI_File', RESERVED_FILES) - - def generate_datatype_convert_fn(self): - self.generic_convert(ConvertFuncs.DATATYPE, 'datatype', 'MPI_Datatype', PREDEFINED_DATATYPES) - - def generate_op_convert_fn(self): - self.generic_convert(ConvertFuncs.OP, 'op', 'MPI_Op', COLLECTIVE_OPERATIONS) - - def generate_win_convert_fn(self): - self.generic_convert(ConvertFuncs.WIN, 'win', 'MPI_Win', RESERVED_WINDOWS) - - def generate_pointer_convert_fn(self, type_, fn_name, constants): - abi_type = self.mangle_name(type_) - self.dump(f'{INLINE_ATTRS} void {fn_name}({abi_type} *ptr)') - self.dump('{') - lines = [] - for i, ompi_name in enumerate(constants): - abi_name = self.mangle_name(ompi_name) - if i == 0: - lines.append('if (%s == (%s) *ptr) {' % (ompi_name, type_)) - else: - lines.append('} else if (%s == (%s) *ptr) {' % (ompi_name, type_)) - lines.append(f'*ptr = {abi_name};') - lines.append('}') - self.dump_lines(lines) - self.dump('}') - - def generate_request_convert_fn(self): - self.generate_pointer_convert_fn('MPI_Request', ConvertFuncs.REQUEST, RESERVED_REQUESTS) - - def generate_file_convert_fn(self): - self.generate_pointer_convert_fn('MPI_File', ConvertFuncs.FILE, RESERVED_FILES) - - def generate_status_convert_fn(self): - type_ = 'MPI_Status' - abi_type = self.mangle_name(type_) - self.dump(f'{INLINE_ATTRS} void {ConvertFuncs.STATUS}({abi_type} *out, {type_} *inp)') - self.dump('{') - self.dump(' out->MPI_SOURCE = inp->MPI_SOURCE;') - self.dump(' out->MPI_TAG = inp->MPI_TAG;') - self.dump(f' out->MPI_ERROR = {ConvertFuncs.ERROR_CLASS}(inp->MPI_ERROR);') - # TODO: What to do with the private fields? - self.dump('}') - - def define(self, type_, name, value): - self.dump(f'#define {name} OMPI_CAST_CONSTANT({type_}, {value})') - - def define_all(self, type_, constants): - for i, const in enumerate(constants): - self.define(self.mangle_name(type_), self.mangle_name(const), i + 1) - self.dump() - - def dump_header(self): - header_guard = '_ABI_INTERNAL_' - self.dump(f'#ifndef {header_guard}') - self.dump(f'#define {header_guard}') - - self.dump('#include "stddef.h"') - self.dump('#include "stdint.h"') - - self.dump(""" -#if defined(c_plusplus) || defined(__cplusplus) -extern "C" { -#endif -""") - - self.dump(""" -#if defined(c_plusplus) || defined(__cplusplus) -#define OMPI_CAST_CONSTANT(type, value) (static_cast (static_cast (value))) -#else -#define OMPI_CAST_CONSTANT(type, value) ((type) ((void *) value)) -#endif -""") - - for i, err in enumerate(ERROR_CLASSES): - self.dump(f'#define {self.mangle_name(err)} {i + 1}') - self.dump() - - self.define_all('MPI_Datatype', PREDEFINED_DATATYPES) - self.define_all('MPI_Op', COLLECTIVE_OPERATIONS) - self.define_all('MPI_Comm', RESERVED_COMMUNICATORS) - self.define_all('MPI_Request', RESERVED_REQUESTS) - self.define_all('MPI_Win', RESERVED_WINDOWS) - self.define_all('MPI_Info', RESERVED_INFOS) - self.define_all('MPI_File', RESERVED_FILES) - - for name, value in VARIOUS_CONSTANTS.items(): - self.dump(f'#define {self.mangle_name(name)} {value}') - self.dump() - - status_type = self.mangle_name('MPI_Status') - for i, name in enumerate(IGNORED_STATUS_HANDLES): - self.define(f'{status_type} *', self.mangle_name(name), i + 1) - self.dump() - - for i, name in enumerate(COMMUNICATOR_SPLIT_TYPES): - self.dump(f'#define {self.mangle_name(name)} {i}') - self.dump() - - for mpi_type, c_type in C_OPAQUE_TYPES.items(): - self.dump(f'typedef {c_type} {self.mangle_name(mpi_type)};') - self.dump() - - for handle in C_HANDLES: - prefix, suffix = handle.split('_') - name = f'{prefix}_ABI_{suffix}' - self.dump(f'typedef struct {self.mangle_name(name)} *{self.mangle_name(handle)};') - self.dump() - self.dump(""" -struct MPI_Status_ABI { - int MPI_SOURCE; - int MPI_TAG; - int MPI_ERROR; - int mpi_abi_private[5]; -};""") - self.dump(f'typedef struct MPI_Status_ABI {self.mangle_name("MPI_Status")};') - self.dump() - # Function signatures - for sig in self.signatures: - self.dump(f'{sig};') - self.dump('int MPI_Abi_details(int *buflen, char *details, MPI_Info *info);') - self.dump('int MPI_Abi_supported(int *flag);') - self.dump('int MPI_Abi_version(int *abi_major, int *abi_minor);') - if not self.external: - # Now generate the conversion code - self.generate_error_convert_fn() - self.generate_comm_convert_fn() - self.generate_comm_convert_fn_intern_to_abi() - self.generate_info_convert_fn() - self.generate_file_convert_fn() - self.generate_datatype_convert_fn() - self.generate_op_convert_fn() - self.generate_win_convert_fn() - self.generate_request_convert_fn() - self.generate_status_convert_fn() - - self.dump(""" -#if defined(c_plusplus) || defined(__cplusplus) -} -#endif -""") - self.dump(f'#endif /* {header_guard} */') - - -class Parameter: - - def __init__(self, text): - """Parse a parameter.""" - # parameter in the form "TYPE NAME" or "TYPE NAME:COUNT_VAR" - type_, namecount = text.split() - if ':' in namecount: - name, count_param = namecount.split(':') - else: - name, count_param = namecount, None - self.type_ = type_ - self.name = name - self.count_param = count_param - - def construct(self, abi_type, **kwargs): - """Construct the type parameter for the given ABI.""" - return Type.construct(abi_type, type_=self.type_, name=self.name, - count_param=self.count_param, **kwargs) - - -class ReturnType: - """Return type wrapper.""" - - def __init__(self, type_): - self.type_ = type_ - - def construct(self, abi_type, **kwargs): - """Construct the return type for the given ABI.""" - return Type.construct(abi_type, type_=self.type_, **kwargs) - - -class Type(ABC): - """Type representation.""" - - PARAMS_OMPI_ABI = {} - - PARAMS_STANDARD_ABI = {} - - def __init__(self, type_, name=None, - mangle_name=lambda name: abi_internal_name(name), - count_param=None, **kwargs): - self.type = type_ - self.name = name - self.count_param = count_param - self.mangle_name = mangle_name - - @staticmethod - def construct(abi_type, type_, **kwargs): - """Construct the parameter for the given ABI and type.""" - if abi_type == 'ompi': - return Type.PARAMS_OMPI_ABI[type_](type_, **kwargs) - elif abi_type == 'standard': - return Type.PARAMS_STANDARD_ABI[type_](type_, **kwargs) - else: - raise RuntimeError(f'invalid ABI type {abi_type}') - - @staticmethod - def add_type(type_name, abi_type=('ompi', 'standard')): - """Add a new class corresponding to a type.""" - def wrapper(class_): - if 'ompi' in abi_type: - Type.PARAMS_OMPI_ABI[type_name] = class_ - if 'standard' in abi_type: - Type.PARAMS_STANDARD_ABI[type_name] = class_ - # Parameter.TYPES[type_] = class_ - return class_ - return wrapper - - @property - def is_count(self): - """Return True if this parameter is a count (requiring bigcount API).""" - return False - - @property - def init_code(self): - """Return the initialization code needed for an ABI wrapper.""" - return [] - - @property - def final_code(self): - """Return the finalization code needed for an ABI wrapper.""" - return [] - - def return_code(self, name): - """Process a value and then build up a return statement.""" - return [f'return {name};'] - - @property - def argument(self): - """Return the argument text required for passing an argument to a function.""" - return self.name - - @abstractmethod - def type_text(self, count_type=None): - """Return the source text corresponding to a type definition.""" - - def tmp_type_text(self, count_type=None): - """Return source text corresponding to a temporary type definition before conversion.""" - return self.type_text(count_type=count_type) - - def parameter(self, count_type=None, **kwargs): - return f'{self.type_text(count_type)} {self.name}' - - -@Type.add_type('ERROR_CLASS') -class TypeErrorClass(Type): - - def type_text(self, count_type=None): - return 'int' - - def return_code(self, name): - return [f'return {ConvertFuncs.ERROR_CLASS}({name});'] - - -@Type.add_type('BUFFER') -class TypeBuffer(Type): - - def type_text(self, count_type=None): - return 'const void *' - - -@Type.add_type('BUFFER_OUT') -class TypeBufferOut(Type): - - def type_text(self, count_type=None): - return f'void *' - - -@Type.add_type('COUNT') -class TypeCount(Type): - - @property - def is_count(self): - return True - - def type_text(self, count_type=None): - return 'int' if count_type is None else count_type - - -@Type.add_type('INT') -class TypeBufferOut(Type): - - def type_text(self, count_type=None): - return 'int' - - -@Type.add_type('AINT') -class TypeBufferOut(Type): - - def type_text(self, count_type=None): - return 'MPI_Aint' - - -@Type.add_type('INT_OUT') -class TypeBufferOut(Type): - - def type_text(self, count_type=None): - return 'int *' - - def parameter(self, count_type=None, **kwargs): - if self.count_param is None: - return f'int *{self.name}' - else: - return f'int {self.name}[]' - - -@Type.add_type('DOUBLE') -class TypeDouble(Type): - - def type_text(self, count_type=None): - return 'double' - - -@Type.add_type('ARGV') -class TypeArgv(Type): - - def type_text(self, count_type=None): - return 'char ***' - - -@Type.add_type('DATATYPE', abi_type=['ompi']) -class TypeDatatype(Type): - - def type_text(self, count_type=None): - return 'MPI_Datatype' - - -class StandardABIType(Type): - - @property - def tmpname(self): - return f'{self.name}_tmp' - - @property - def argument(self): - return self.tmpname - - -@Type.add_type('DATATYPE', abi_type=['standard']) -class TypeDatatype(StandardABIType): - - @property - def init_code(self): - return [f'MPI_Datatype {self.tmpname} = {ConvertFuncs.DATATYPE}({self.name});'] - - def type_text(self, count_type=None): - return self.mangle_name('MPI_Datatype') - - -@Type.add_type('OP', abi_type=['ompi']) -class TypeDatatype(Type): - - def type_text(self, count_type=None): - return 'MPI_Op' - - -@Type.add_type('OP', abi_type=['standard']) -class TypeDatatype(StandardABIType): - - @property - def init_code(self): - return [f'MPI_Op {self.tmpname} = {ConvertFuncs.OP}({self.name});'] - - def type_text(self, count_type=None): - return self.mangle_name('MPI_Op') - - -@Type.add_type('RANK') -class TypeRank(Type): - - def type_text(self, count_type=None): - return 'int' - - -@Type.add_type('TAG') -class TypeRank(Type): - - def type_text(self, count_type=None): - return 'int' - - -@Type.add_type('COMM', abi_type=['ompi']) -class TypeCommunicator(Type): - - def type_text(self, count_type=None): - return 'MPI_Comm' - - -@Type.add_type('COMM', abi_type=['standard']) -class TypeCommunicatorStandard(StandardABIType): - - @property - def init_code(self): - return [f'MPI_Comm {self.tmpname} = {ConvertFuncs.COMM}({self.name});'] - - def tmp_type_text(self, count_type=None): - return 'MPI_Comm' - - def return_code(self, name): - return [f'return {ConvertOMPIToStandard.COMM}({name});'] - - def type_text(self, count_type=None): - return self.mangle_name('MPI_Comm') - - -@Type.add_type('COMM_OUT', abi_type=['ompi']) -class TypeCommunicator(Type): - - def type_text(self, count_type=None): - return 'MPI_Comm *' - - -@Type.add_type('COMM_OUT', abi_type=['standard']) -class TypeCommunicator(Type): - - @property - def final_code(self): - return [f'*{self.name} = {ConvertOMPIToStandard.COMM}((MPI_Comm) *{self.name});'] - - def type_text(self, count_type=None): - type_name = self.mangle_name('MPI_Comm') - return f'{type_name} *' - - @property - def argument(self): - return f'(MPI_Comm *) {self.name}' - - -@Type.add_type('WIN', abi_type=['ompi']) -class TypeWindow(Type): - - def type_text(self, count_type=None): - return 'MPI_Win' - - -@Type.add_type('WIN', abi_type=['standard']) -class TypeWindowStandard(StandardABIType): - - @property - def init_code(self): - return [f'MPI_Win {self.tmpname} = {ConvertFuncs.WIN}({self.name});'] - - def type_text(self, count_type=None): - return self.mangle_name('MPI_Win') - - -@Type.add_type('REQUEST', abi_type=['ompi']) -class TypeRequest(Type): - - def type_text(self, count_type=None): - return 'MPI_Request' - - -@Type.add_type('REQUEST', abi_type=['standard']) -class TypeRequestStandard(Type): - - def type_text(self, count_type=None): - return self.mangle_name('MPI_Request') - - @property - def argument(self): - return f'(MPI_Request) {self.name}' - - -@Type.add_type('REQUEST_INOUT', abi_type=['ompi']) -class TypeRequestInOut(Type): - - def type_text(self, count_type=None): - return 'MPI_Request *' - - -@Type.add_type('REQUEST_INOUT', abi_type=['standard']) -class TypeRequestInOutStandard(Type): - - @property - def final_code(self): - if self.count_param is None: - return [f'{ConvertFuncs.REQUEST}({self.name});'] - else: - return [ - 'for (int i = 0; i < %s; ++i) {' % (self.count_param,), - f'{ConvertFuncs.REQUEST}(&{self.name}[i]);', - '}', - ] - - @property - def argument(self): - return f'(MPI_Request *) {self.name}' - - def type_text(self, count_type=None): - type_name = self.mangle_name('MPI_Request') - return f'{type_name} *' - - def parameter(self, count_type=None, **kwargs): - type_name = self.mangle_name('MPI_Request') - if self.count_param is None: - return f'{type_name} *{self.name}' - else: - return f'{type_name} {self.name}[]' - - -@Type.add_type('STATUS_OUT', abi_type=['ompi']) -class TypeStatusOut(Type): - - def type_text(self, count_type=None): - return 'MPI_Status *' - - def parameter(self, count_type=None, **kwargs): - if self.count_param is None: - return f'MPI_Status *{self.name}' - else: - return f'MPI_Status {self.name}[]' - - -@Type.add_type('STATUS_OUT', abi_type=['standard']) -class TypeStausOutStandard(StandardABIType): - - def if_should_set_status(self): - """Generate the condition to check if the status(es) should be set.""" - condition = ' && '.join(f'{self.mangle_name(const)} != {self.name}' - for const in IGNORED_STATUS_HANDLES) - return 'if (%s) {' % (condition,) - - @property - def status_argument(self): - return f'{self.name}_arg' - - @property - def init_code(self): - code = [f'MPI_Status *{self.status_argument} = NULL;'] - if self.count_param is None: - code.append(f'MPI_Status {self.tmpname};') - else: - code.append(f'MPI_Status *{self.tmpname} = NULL;') - code.append(self.if_should_set_status()) - if self.count_param is not None: - code.append(f'{self.tmpname} = malloc({self.count_param} * sizeof(MPI_Status));') - code.append(f'{self.status_argument} = {self.tmpname};') - else: - code.append(f'{self.status_argument} = &{self.tmpname};') - code.append('} else {') - if self.count_param is not None: - code.append(f'{self.status_argument} = MPI_STATUSES_IGNORE;') - else: - code.append(f'{self.status_argument} = MPI_STATUS_IGNORE;') - code.append('}') - return code - - @property - def final_code(self): - code = [self.if_should_set_status()] - if self.count_param is None: - code.append(f'{ConvertFuncs.STATUS}({self.name}, &{self.tmpname});') - else: - code.extend([ - 'for (int i = 0; i < %s; ++i) {' % (self.count_param,), - f'{ConvertFuncs.STATUS}(&{self.name}[i], &{self.tmpname}[i]);', - '}', - f'free({self.tmpname});', - ]) - code.append('}') - return code - - @property - def argument(self): - return self.status_argument - - def type_text(self, count_type=None): - type_name = self.mangle_name('MPI_Status') - return f'{type_name} *' - - def parameter(self, count_type=None, **kwargs): - type_name = self.mangle_name('MPI_Status') - if self.count_param is None: - return f'{type_name} *{self.name}' - else: - return f'{type_name} {self.name}[]' - - -# For now this just assumes that MPI_Fint doesn't need any conversions -@Type.add_type('FINT') -class TypeFint(Type): - - def type_text(self, count_type=None): - return 'MPI_Fint' - - -@Type.add_type('STRING') -class TypeString(Type): - - def type_text(self, count_type=None): - return 'const char *' - - -@Type.add_type('STRING_OUT') -class TypeStringOut(Type): - - def type_text(self, count_type=None): - return 'char *' - - -@Type.add_type('INFO', abi_type=['ompi']) -class TypeInfo(Type): - - def type_text(self, count_type=None): - return 'MPI_Info' - - -@Type.add_type('INFO', abi_type=['standard']) -class TypeInfoStandard(StandardABIType): - - @property - def init_code(self): - return [f'MPI_Info {self.tmpname} = {ConvertFuncs.INFO}({self.name});'] - - def type_text(self, count_type=None): - return self.mangle_name('MPI_Info') - - -@Type.add_type('FILE_OUT', abi_type=['ompi']) -class TypeFileOut(Type): - - def type_text(self, count_type=None): - return 'MPI_File *' - - -@Type.add_type('FILE_OUT', abi_type=['standard']) -class TypeFileOutStandard(Type): - - @property - def argument(self): - return f'(MPI_File *) {self.name}' - - @property - def final_code(self): - return [f'{ConvertFuncs.FILE}({self.name});'] - - def type_text(self, count_type=None): - type_name = self.mangle_name('MPI_File') - return f'{type_name} *' - - -class Prototype: - """MPI function prototype.""" - - def __init__(self, name, return_type, params): - self.name = name - self.return_type = return_type - self.params = params - - def signature(self, abi_type, fn_name, count_type=None, **kwargs): - """Build a signature with the given name and count_type.""" - params = ', '.join(param.construct(abi_type, **kwargs).parameter(count_type=count_type, **kwargs) - for param in self.params) - if not params: - params = 'void' - return_type_text = self.return_type.construct(abi_type, **kwargs).type_text(count_type=count_type) - return f'{return_type_text} {fn_name}({params})' - - @property - def need_bigcount(self): - """Check if a bigcount interface is required for a prototype.""" - return any('COUNT' in param.type_ for param in self.params) - - -class TemplateParseError(Exception): - """Error raised during parsing.""" - pass - - -def validate_body(body): - """Validate the body of a template.""" - # Just do a simple bracket balance test to determine the bounds of the - # function body. All lines after the function body should be blank. There - # are cases where this will break, such as if someone puts code all on one - # line. - bracket_balance = 0 - line_count = 0 - for line in body: - line = line.strip() - if bracket_balance == 0 and line_count > 0 and line: - raise TemplateParseError('Extra code found in template; only one function body is allowed') - - update = line.count('{') - line.count('}') - bracket_balance += update - if bracket_balance != 0: - line_count += 1 - - if bracket_balance != 0: - raise TemplateParseError('Mismatched brackets found in template') - - -class SourceTemplate: - """Source template for a single API function.""" - - def __init__(self, prototype, header, body): - self.prototype = prototype - self.header = header - self.body = body - - @staticmethod - def load(fname, prefix=None): - """Load a template file and return the SourceTemplate.""" - if prefix is not None: - fname = os.path.join(prefix, fname) - with open(fname) as fp: - header = [] - prototype = [] - body = [] - - for line in fp: - line = line.rstrip() - if prototype and line.startswith('PROTOTYPE'): - raise TemplateParseError('more than one prototype found in template file') - elif ((prototype and not any(')' in s for s in prototype)) - or line.startswith('PROTOTYPE')): - prototype.append(line) - elif prototype: - # Validate bracket balance - body.append(line) - else: - header.append(line) - - if not prototype: - raise RuntimeError('missing prototype') - # Parse the prototype - prototype = ''.join(prototype) - prototype = prototype[len('PROTOTYPE'):] - i = prototype.index('(') - j = prototype.index(')') - return_type, name = prototype[:i].split() - return_type = ReturnType(return_type) - params = [param.strip() for param in prototype[i + 1:j].split(',') if param.strip()] - params = [Parameter(param) for param in params] - prototype = Prototype(name, return_type, params) - # Ensure the body contains only one function - validate_body(body) - return SourceTemplate(prototype, header, body) - - def print_header(self, file=sys.stdout): - """Print the source header.""" - for line in self.header: - print(line, file=file) - - def print_body(self, func_name, file=sys.stdout): - """Print the body.""" - for line in self.body: - # FUNC_NAME is used for error messages - line = line.replace('FUNC_NAME', f'"{func_name}"') - print(line, file=file) - - -def print_profiling_header(fn_name, file=sys.stdout): - """Print the profiling header code.""" - print('#if OMPI_BUILD_MPI_PROFILING') - print('#if OPAL_HAVE_WEAK_SYMBOLS', file=file) - print(f'#pragma weak {fn_name} = P{fn_name}', file=file) - print('#endif', file=file) - print(f'#define {fn_name} P{fn_name}', file=file) - print('#endif') - - -def ompi_abi(base_name, template): - """Generate the OMPI ABI functions.""" - template.print_header() - print_profiling_header(base_name) - print(template.prototype.signature('ompi', base_name)) - template.print_body(func_name=base_name) - # Check if we need to generate the bigcount interface - if template.prototype.need_bigcount: - base_name_c = f'{base_name}_c' - print_profiling_header(base_name_c) - print(template.prototype.signature('ompi', base_name_c, count_type='MPI_Count')) - template.print_body(func_name=base_name_c) - - -ABI_INTERNAL_HEADER = 'ompi/mpi/c/abi.h' - - -def indent_lines(lines, tab, start=0): - """Crude pretty-printing function.""" - new_lines = [] - indent_count = start - for line in lines: - # Closing bracket - if '}' in line: - indent_count -= 1 - - prefix = indent_count * tab - new_lines.append(f'{prefix}{line}') - - # Opening bracket - if '{' in line: - indent_count += 1 - return new_lines - - -def standard_abi(base_name, template): - """Generate the standard ABI functions.""" - template.print_header() - print(f'#include "{ABI_INTERNAL_HEADER}"') - - # Static internal function (add a random component to avoid conflicts) - internal_name = f'ompi_abi_{template.prototype.name}' - internal_sig = template.prototype.signature('ompi', internal_name, - count_type='MPI_Count') - print(INLINE_ATTRS, internal_sig) - template.print_body(func_name=base_name) - - def generate_function(prototype, fn_name, internal_fn, count_type='int'): - """Generate a function for the standard ABI.""" - print_profiling_header(fn_name) - - # Handle type conversions and arguments - params = [param.construct('standard') for param in prototype.params] - print(prototype.signature('standard', fn_name, count_type=count_type)) - print('{') - lines = [] - return_type = prototype.return_type.construct('standard') - lines.append(f'{return_type.tmp_type_text()} ret_value;') - for param in params: - if param.init_code: - lines.extend(param.init_code) - pass_args = ', '.join(param.argument for param in params) - lines.append(f'ret_value = {internal_fn}({pass_args});') - for param in params: - if param.final_code: - lines.extend(param.final_code) - lines.extend(return_type.return_code('ret_value')) - - # Indent the lines - lines = indent_lines(lines, 4 * ' ', start=1) - for line in lines: - print(line) - print('}') - - generate_function(template.prototype, base_name, internal_name) - if template.prototype.need_bigcount: - base_name_c = f'{base_name}_c' - generate_function(template.prototype, base_name_c, internal_name, - count_type='MPI_Count') - - -def gen_header(args): - """Generate an ABI header and conversion code.""" - prototypes = [SourceTemplate.load(file_, args.srcdir).prototype for file_ in args.file] - - builder = ABIHeaderBuilder(prototypes, external=args.external) - builder.dump_header() - - -def gen_source(args): - """Generate source file.""" - template = SourceTemplate.load(args.source_file) - - base_name = mpi_fn_name_from_base_fn_name(template.prototype.name) - if args.type == 'ompi': - ompi_abi(base_name, template) - else: - standard_abi(base_name, template) - - -def main(): - if len(sys.argv) < 2: - # Fix required for Python 3.6 - print('ERROR: missing subparser argument (see --help)') - sys.exit(1) - - parser = argparse.ArgumentParser(description='generate ABI header file and conversion code') - subparsers = parser.add_subparsers() - - parser_header = subparsers.add_parser('header') - parser_header.add_argument('file', nargs='+', help='list of template source files') - parser_header.add_argument('--external', action='store_true', help='generate external mpi.h header file') - parser_header.add_argument('--srcdir', help='source directory') - parser_header.set_defaults(func=gen_header) - - parser_gen = subparsers.add_parser('source') - # parser = argparse.ArgumentParser(description='C ABI binding generation code') - parser_gen.add_argument('type', choices=('ompi', 'standard'), - help='generate the OMPI ABI functions or the standard ABI functions') - parser_gen.add_argument('source_file', help='source template file') - parser_gen.set_defaults(func=gen_source) - - args = parser.parse_args() - - # Always add the header - print('/* THIS FILE WAS AUTOGENERATED BY ompi/mpi/c/abi.py. DO NOT EDIT BY HAND. */') - args.func(args) - - -if __name__ == '__main__': - main() diff --git a/ompi/mpi/c/abi_converters.h b/ompi/mpi/c/abi_converters.h new file mode 100644 index 00000000000..d274dd1a8f6 --- /dev/null +++ b/ompi/mpi/c/abi_converters.h @@ -0,0 +1,567 @@ +/* + * Copyright (c) 2025 Triad National Security, LLC. All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#ifndef _ABI_CONVERTORS_ +#define _ABI_CONVERTORS_ + +#if defined(c_plusplus) || defined(__cplusplus) +extern "C" { +#endif + +__opal_attribute_always_inline__ static inline int ompi_convert_abi_error_intern_error(int error_class) +{ + switch (error_class) { + case MPI_SUCCESS_ABI_INTERNAL: + return MPI_SUCCESS; + case MPI_ERR_BUFFER_ABI_INTERNAL: + return MPI_ERR_BUFFER; + case MPI_ERR_COUNT_ABI_INTERNAL: + return MPI_ERR_COUNT; + case MPI_ERR_TYPE_ABI_INTERNAL: + return MPI_ERR_TYPE; + case MPI_ERR_TAG_ABI_INTERNAL: + return MPI_ERR_TAG; + case MPI_ERR_COMM_ABI_INTERNAL: + return MPI_ERR_COMM; + case MPI_ERR_RANK_ABI_INTERNAL: + return MPI_ERR_RANK; + case MPI_ERR_REQUEST_ABI_INTERNAL: + return MPI_ERR_REQUEST; + case MPI_ERR_ROOT_ABI_INTERNAL: + return MPI_ERR_ROOT; + case MPI_ERR_GROUP_ABI_INTERNAL: + return MPI_ERR_GROUP; + case MPI_ERR_OP_ABI_INTERNAL: + return MPI_ERR_OP; + case MPI_ERR_TOPOLOGY_ABI_INTERNAL: + return MPI_ERR_TOPOLOGY; + case MPI_ERR_DIMS_ABI_INTERNAL: + return MPI_ERR_DIMS; + case MPI_ERR_ARG_ABI_INTERNAL: + return MPI_ERR_ARG; + case MPI_ERR_UNKNOWN_ABI_INTERNAL: + return MPI_ERR_UNKNOWN; + case MPI_ERR_TRUNCATE_ABI_INTERNAL: + return MPI_ERR_TRUNCATE; + case MPI_ERR_OTHER_ABI_INTERNAL: + return MPI_ERR_OTHER; + case MPI_ERR_INTERN_ABI_INTERNAL: + return MPI_ERR_INTERN; + case MPI_ERR_PENDING_ABI_INTERNAL: + return MPI_ERR_PENDING; + case MPI_ERR_IN_STATUS_ABI_INTERNAL: + return MPI_ERR_IN_STATUS; + case MPI_ERR_ACCESS_ABI_INTERNAL: + return MPI_ERR_ACCESS; + case MPI_ERR_AMODE_ABI_INTERNAL: + return MPI_ERR_AMODE; + case MPI_ERR_ASSERT_ABI_INTERNAL: + return MPI_ERR_ASSERT; + case MPI_ERR_BAD_FILE_ABI_INTERNAL: + return MPI_ERR_BAD_FILE; + case MPI_ERR_BASE_ABI_INTERNAL: + return MPI_ERR_BASE; + case MPI_ERR_CONVERSION_ABI_INTERNAL: + return MPI_ERR_CONVERSION; + case MPI_ERR_DISP_ABI_INTERNAL: + return MPI_ERR_DISP; + case MPI_ERR_DUP_DATAREP_ABI_INTERNAL: + return MPI_ERR_DUP_DATAREP; + case MPI_ERR_FILE_EXISTS_ABI_INTERNAL: + return MPI_ERR_FILE_EXISTS; + case MPI_ERR_FILE_IN_USE_ABI_INTERNAL: + return MPI_ERR_FILE_IN_USE; + case MPI_ERR_FILE_ABI_INTERNAL: + return MPI_ERR_FILE; + case MPI_ERR_INFO_KEY_ABI_INTERNAL: + return MPI_ERR_INFO_KEY; + case MPI_ERR_INFO_NOKEY_ABI_INTERNAL: + return MPI_ERR_INFO_NOKEY; + case MPI_ERR_INFO_VALUE_ABI_INTERNAL: + return MPI_ERR_INFO_VALUE; + case MPI_ERR_INFO_ABI_INTERNAL: + return MPI_ERR_INFO; + case MPI_ERR_IO_ABI_INTERNAL: + return MPI_ERR_IO; + case MPI_ERR_KEYVAL_ABI_INTERNAL: + return MPI_ERR_KEYVAL; + case MPI_ERR_LOCKTYPE_ABI_INTERNAL: + return MPI_ERR_LOCKTYPE; + case MPI_ERR_NAME_ABI_INTERNAL: + return MPI_ERR_NAME; + case MPI_ERR_NO_MEM_ABI_INTERNAL: + return MPI_ERR_NO_MEM; + case MPI_ERR_NOT_SAME_ABI_INTERNAL: + return MPI_ERR_NOT_SAME; + case MPI_ERR_NO_SPACE_ABI_INTERNAL: + return MPI_ERR_NO_SPACE; + case MPI_ERR_NO_SUCH_FILE_ABI_INTERNAL: + return MPI_ERR_NO_SUCH_FILE; + case MPI_ERR_PORT_ABI_INTERNAL: + return MPI_ERR_PORT; + case MPI_ERR_PROC_ABORTED_ABI_INTERNAL: + return MPI_ERR_PROC_ABORTED; + case MPI_ERR_QUOTA_ABI_INTERNAL: + return MPI_ERR_QUOTA; + case MPI_ERR_READ_ONLY_ABI_INTERNAL: + return MPI_ERR_READ_ONLY; + case MPI_ERR_RMA_ATTACH_ABI_INTERNAL: + return MPI_ERR_RMA_ATTACH; + case MPI_ERR_RMA_CONFLICT_ABI_INTERNAL: + return MPI_ERR_RMA_CONFLICT; + case MPI_ERR_RMA_RANGE_ABI_INTERNAL: + return MPI_ERR_RMA_RANGE; + case MPI_ERR_RMA_SHARED_ABI_INTERNAL: + return MPI_ERR_RMA_SHARED; + case MPI_ERR_RMA_SYNC_ABI_INTERNAL: + return MPI_ERR_RMA_SYNC; + case MPI_ERR_RMA_FLAVOR_ABI_INTERNAL: + return MPI_ERR_RMA_FLAVOR; + case MPI_ERR_SERVICE_ABI_INTERNAL: + return MPI_ERR_SERVICE; + case MPI_ERR_SESSION_ABI_INTERNAL: + return MPI_ERR_SESSION; + case MPI_ERR_SIZE_ABI_INTERNAL: + return MPI_ERR_SIZE; + case MPI_ERR_SPAWN_ABI_INTERNAL: + return MPI_ERR_SPAWN; + case MPI_ERR_UNSUPPORTED_DATAREP_ABI_INTERNAL: + return MPI_ERR_UNSUPPORTED_DATAREP; + case MPI_ERR_UNSUPPORTED_OPERATION_ABI_INTERNAL: + return MPI_ERR_UNSUPPORTED_OPERATION; + case MPI_ERR_WIN_ABI_INTERNAL: + return MPI_ERR_WIN; + case MPI_T_ERR_CANNOT_INIT_ABI_INTERNAL: + return MPI_T_ERR_CANNOT_INIT; + case MPI_T_ERR_NOT_INITIALIZED_ABI_INTERNAL: + return MPI_T_ERR_NOT_INITIALIZED; + case MPI_T_ERR_MEMORY_ABI_INTERNAL: + return MPI_T_ERR_MEMORY; + case MPI_T_ERR_INVALID_ABI_INTERNAL: + return MPI_T_ERR_INVALID; + case MPI_T_ERR_INVALID_INDEX_ABI_INTERNAL: + return MPI_T_ERR_INVALID_INDEX; + case MPI_T_ERR_INVALID_ITEM_ABI_INTERNAL: + return MPI_T_ERR_INVALID_ITEM; + case MPI_T_ERR_INVALID_SESSION_ABI_INTERNAL: + return MPI_T_ERR_INVALID_SESSION; + case MPI_T_ERR_INVALID_HANDLE_ABI_INTERNAL: + return MPI_T_ERR_INVALID_HANDLE; + case MPI_T_ERR_INVALID_NAME_ABI_INTERNAL: + return MPI_T_ERR_INVALID_NAME; + case MPI_T_ERR_OUT_OF_HANDLES_ABI_INTERNAL: + return MPI_T_ERR_OUT_OF_HANDLES; + case MPI_T_ERR_OUT_OF_SESSIONS_ABI_INTERNAL: + return MPI_T_ERR_OUT_OF_SESSIONS; + case MPI_T_ERR_CVAR_SET_NOT_NOW_ABI_INTERNAL: + return MPI_T_ERR_CVAR_SET_NOT_NOW; + case MPI_T_ERR_CVAR_SET_NEVER_ABI_INTERNAL: + return MPI_T_ERR_CVAR_SET_NEVER; + case MPI_T_ERR_PVAR_NO_WRITE_ABI_INTERNAL: + return MPI_T_ERR_PVAR_NO_WRITE; + case MPI_T_ERR_PVAR_NO_STARTSTOP_ABI_INTERNAL: + return MPI_T_ERR_PVAR_NO_STARTSTOP; + case MPI_T_ERR_PVAR_NO_ATOMIC_ABI_INTERNAL: + return MPI_T_ERR_PVAR_NO_ATOMIC; + case MPI_ERR_LASTCODE_ABI_INTERNAL: + return MPI_ERR_LASTCODE; + default: + return error_class; + } +} +__opal_attribute_always_inline__ static inline MPI_Comm ompi_convert_abi_comm_intern_comm(MPI_Comm_ABI_INTERNAL comm) +{ + if (MPI_COMM_NULL_ABI_INTERNAL == comm) { + return MPI_COMM_NULL; + } else if (MPI_COMM_WORLD_ABI_INTERNAL == comm) { + return MPI_COMM_WORLD; + } else if (MPI_COMM_SELF_ABI_INTERNAL == comm) { + return MPI_COMM_SELF; + } + return (MPI_Comm) comm; +} +__opal_attribute_always_inline__ static inline MPI_Comm_ABI_INTERNAL ompi_convert_comm_ompi_to_standard(MPI_Comm comm) +{ + if (MPI_COMM_NULL == comm) { + return MPI_COMM_NULL_ABI_INTERNAL; + } else if (MPI_COMM_WORLD == comm) { + return MPI_COMM_WORLD_ABI_INTERNAL; + } else if (MPI_COMM_SELF == comm) { + return MPI_COMM_SELF_ABI_INTERNAL; + } + return (MPI_Comm_ABI_INTERNAL) comm; +} +__opal_attribute_always_inline__ static inline MPI_Info ompi_convert_abi_info_intern_info(MPI_Info_ABI_INTERNAL info) +{ + if (MPI_INFO_ENV_ABI_INTERNAL == info) { + return MPI_INFO_ENV; + } else if (MPI_INFO_NULL_ABI_INTERNAL == info) { + return MPI_INFO_NULL; + } + return (MPI_Info) info; +} +__opal_attribute_always_inline__ static inline MPI_Info_ABI_INTERNAL ompi_convert_info_ompi_to_standard(MPI_Info info) +{ + if (MPI_INFO_ENV == info) { + return MPI_INFO_ENV_ABI_INTERNAL; + } else if (MPI_INFO_NULL == info) { + return MPI_INFO_NULL_ABI_INTERNAL; + } + return (MPI_Info_ABI_INTERNAL) info; +} +__opal_attribute_always_inline__ static inline MPI_File ompi_convert_abi_file_intern_file(MPI_File_ABI_INTERNAL file) +{ + if (MPI_FILE_NULL_ABI_INTERNAL == file) { + return MPI_FILE_NULL; + } + return (MPI_File) file; +} +__opal_attribute_always_inline__ static inline MPI_File_ABI_INTERNAL ompi_convert_file_ompi_to_standard(MPI_File file) +{ + if (MPI_FILE_NULL == file) { + return MPI_FILE_NULL_ABI_INTERNAL; + } + return (MPI_File_ABI_INTERNAL) file; +} +__opal_attribute_always_inline__ static inline MPI_Group ompi_convert_abi_group_intern_group(MPI_Group_ABI_INTERNAL group) +{ + if (MPI_GROUP_NULL_ABI_INTERNAL == group) { + return MPI_GROUP_NULL; + } + return (MPI_Group) group; +} +__opal_attribute_always_inline__ static inline MPI_Group_ABI_INTERNAL ompi_convert_group_ompi_to_standard(MPI_Group group) +{ + if (MPI_GROUP_NULL == group) { + return MPI_GROUP_NULL_ABI_INTERNAL; + } + return (MPI_Group_ABI_INTERNAL) group; +} +__opal_attribute_always_inline__ static inline MPI_Datatype ompi_convert_abi_datatype_intern_datatype(MPI_Datatype_ABI_INTERNAL datatype) +{ + if (MPI_CHAR_ABI_INTERNAL == datatype) { + return MPI_CHAR; + } else if (MPI_SHORT_ABI_INTERNAL == datatype) { + return MPI_SHORT; + } else if (MPI_INT_ABI_INTERNAL == datatype) { + return MPI_INT; + } else if (MPI_LONG_ABI_INTERNAL == datatype) { + return MPI_LONG; + } else if (MPI_LONG_LONG_INT_ABI_INTERNAL == datatype) { + return MPI_LONG_LONG_INT; + } else if (MPI_LONG_LONG_ABI_INTERNAL == datatype) { + return MPI_LONG_LONG; + } else if (MPI_SIGNED_CHAR_ABI_INTERNAL == datatype) { + return MPI_SIGNED_CHAR; + } else if (MPI_UNSIGNED_CHAR_ABI_INTERNAL == datatype) { + return MPI_UNSIGNED_CHAR; + } else if (MPI_UNSIGNED_SHORT_ABI_INTERNAL == datatype) { + return MPI_UNSIGNED_SHORT; + } else if (MPI_UNSIGNED_ABI_INTERNAL == datatype) { + return MPI_UNSIGNED; + } else if (MPI_UNSIGNED_LONG_ABI_INTERNAL == datatype) { + return MPI_UNSIGNED_LONG; + } else if (MPI_UNSIGNED_LONG_LONG_ABI_INTERNAL == datatype) { + return MPI_UNSIGNED_LONG_LONG; + } else if (MPI_FLOAT_ABI_INTERNAL == datatype) { + return MPI_FLOAT; + } else if (MPI_DOUBLE_ABI_INTERNAL == datatype) { + return MPI_DOUBLE; + } else if (MPI_LONG_DOUBLE_ABI_INTERNAL == datatype) { + return MPI_LONG_DOUBLE; + } else if (MPI_WCHAR_ABI_INTERNAL == datatype) { + return MPI_WCHAR; + } else if (MPI_C_BOOL_ABI_INTERNAL == datatype) { + return MPI_C_BOOL; + } else if (MPI_INT8_T_ABI_INTERNAL == datatype) { + return MPI_INT8_T; + } else if (MPI_INT16_T_ABI_INTERNAL == datatype) { + return MPI_INT16_T; + } else if (MPI_INT32_T_ABI_INTERNAL == datatype) { + return MPI_INT32_T; + } else if (MPI_INT64_T_ABI_INTERNAL == datatype) { + return MPI_INT64_T; + } else if (MPI_UINT8_T_ABI_INTERNAL == datatype) { + return MPI_UINT8_T; + } else if (MPI_UINT16_T_ABI_INTERNAL == datatype) { + return MPI_UINT16_T; + } else if (MPI_UINT32_T_ABI_INTERNAL == datatype) { + return MPI_UINT32_T; + } else if (MPI_UINT64_T_ABI_INTERNAL == datatype) { + return MPI_UINT64_T; + } else if (MPI_AINT_ABI_INTERNAL == datatype) { + return MPI_AINT; + } else if (MPI_COUNT_ABI_INTERNAL == datatype) { + return MPI_COUNT; + } else if (MPI_OFFSET_ABI_INTERNAL == datatype) { + return MPI_OFFSET; + } else if (MPI_C_COMPLEX_ABI_INTERNAL == datatype) { + return MPI_C_COMPLEX; + } else if (MPI_C_FLOAT_COMPLEX_ABI_INTERNAL == datatype) { + return MPI_C_FLOAT_COMPLEX; + } else if (MPI_C_DOUBLE_COMPLEX_ABI_INTERNAL == datatype) { + return MPI_C_DOUBLE_COMPLEX; + } else if (MPI_C_LONG_DOUBLE_COMPLEX_ABI_INTERNAL == datatype) { + return MPI_C_LONG_DOUBLE_COMPLEX; + } else if (MPI_BYTE_ABI_INTERNAL == datatype) { + return MPI_BYTE; + } else if (MPI_PACKED_ABI_INTERNAL == datatype) { + return MPI_PACKED; + } else if (MPI_CXX_BOOL_ABI_INTERNAL == datatype) { + return MPI_CXX_BOOL; + } else if (MPI_CXX_FLOAT_COMPLEX_ABI_INTERNAL == datatype) { + return MPI_CXX_FLOAT_COMPLEX; + } else if (MPI_CXX_DOUBLE_COMPLEX_ABI_INTERNAL == datatype) { + return MPI_CXX_DOUBLE_COMPLEX; + } else if (MPI_CXX_LONG_DOUBLE_COMPLEX_ABI_INTERNAL == datatype) { + return MPI_CXX_LONG_DOUBLE_COMPLEX; + } else if (MPI_FLOAT_INT_ABI_INTERNAL == datatype) { + return MPI_FLOAT_INT; + } else if (MPI_DOUBLE_INT_ABI_INTERNAL == datatype) { + return MPI_DOUBLE_INT; + } else if (MPI_LONG_INT_ABI_INTERNAL == datatype) { + return MPI_LONG_INT; + } else if (MPI_2INT_ABI_INTERNAL == datatype) { + return MPI_2INT; + } else if (MPI_SHORT_INT_ABI_INTERNAL == datatype) { + return MPI_SHORT_INT; + } else if (MPI_LONG_DOUBLE_INT_ABI_INTERNAL == datatype) { + return MPI_LONG_DOUBLE_INT; + } + return (MPI_Datatype) datatype; +} +__opal_attribute_always_inline__ static inline MPI_Datatype_ABI_INTERNAL ompi_convert_datatype_ompi_to_standard(MPI_Datatype datatype) +{ + if (MPI_CHAR == datatype) { + return MPI_CHAR_ABI_INTERNAL; + } else if (MPI_SHORT == datatype) { + return MPI_SHORT_ABI_INTERNAL; + } else if (MPI_INT == datatype) { + return MPI_INT_ABI_INTERNAL; + } else if (MPI_LONG == datatype) { + return MPI_LONG_ABI_INTERNAL; + } else if (MPI_LONG_LONG_INT == datatype) { + return MPI_LONG_LONG_INT_ABI_INTERNAL; + } else if (MPI_LONG_LONG == datatype) { + return MPI_LONG_LONG_ABI_INTERNAL; + } else if (MPI_SIGNED_CHAR == datatype) { + return MPI_SIGNED_CHAR_ABI_INTERNAL; + } else if (MPI_UNSIGNED_CHAR == datatype) { + return MPI_UNSIGNED_CHAR_ABI_INTERNAL; + } else if (MPI_UNSIGNED_SHORT == datatype) { + return MPI_UNSIGNED_SHORT_ABI_INTERNAL; + } else if (MPI_UNSIGNED == datatype) { + return MPI_UNSIGNED_ABI_INTERNAL; + } else if (MPI_UNSIGNED_LONG == datatype) { + return MPI_UNSIGNED_LONG_ABI_INTERNAL; + } else if (MPI_UNSIGNED_LONG_LONG == datatype) { + return MPI_UNSIGNED_LONG_LONG_ABI_INTERNAL; + } else if (MPI_FLOAT == datatype) { + return MPI_FLOAT_ABI_INTERNAL; + } else if (MPI_DOUBLE == datatype) { + return MPI_DOUBLE_ABI_INTERNAL; + } else if (MPI_LONG_DOUBLE == datatype) { + return MPI_LONG_DOUBLE_ABI_INTERNAL; + } else if (MPI_WCHAR == datatype) { + return MPI_WCHAR_ABI_INTERNAL; + } else if (MPI_C_BOOL == datatype) { + return MPI_C_BOOL_ABI_INTERNAL; + } else if (MPI_INT8_T == datatype) { + return MPI_INT8_T_ABI_INTERNAL; + } else if (MPI_INT16_T == datatype) { + return MPI_INT16_T_ABI_INTERNAL; + } else if (MPI_INT32_T == datatype) { + return MPI_INT32_T_ABI_INTERNAL; + } else if (MPI_INT64_T == datatype) { + return MPI_INT64_T_ABI_INTERNAL; + } else if (MPI_UINT8_T == datatype) { + return MPI_UINT8_T_ABI_INTERNAL; + } else if (MPI_UINT16_T == datatype) { + return MPI_UINT16_T_ABI_INTERNAL; + } else if (MPI_UINT32_T == datatype) { + return MPI_UINT32_T_ABI_INTERNAL; + } else if (MPI_UINT64_T == datatype) { + return MPI_UINT64_T_ABI_INTERNAL; + } else if (MPI_AINT == datatype) { + return MPI_AINT_ABI_INTERNAL; + } else if (MPI_COUNT == datatype) { + return MPI_COUNT_ABI_INTERNAL; + } else if (MPI_OFFSET == datatype) { + return MPI_OFFSET_ABI_INTERNAL; + } else if (MPI_C_COMPLEX == datatype) { + return MPI_C_COMPLEX_ABI_INTERNAL; + } else if (MPI_C_FLOAT_COMPLEX == datatype) { + return MPI_C_FLOAT_COMPLEX_ABI_INTERNAL; + } else if (MPI_C_DOUBLE_COMPLEX == datatype) { + return MPI_C_DOUBLE_COMPLEX_ABI_INTERNAL; + } else if (MPI_C_LONG_DOUBLE_COMPLEX == datatype) { + return MPI_C_LONG_DOUBLE_COMPLEX_ABI_INTERNAL; + } else if (MPI_BYTE == datatype) { + return MPI_BYTE_ABI_INTERNAL; + } else if (MPI_PACKED == datatype) { + return MPI_PACKED_ABI_INTERNAL; + } else if (MPI_CXX_BOOL == datatype) { + return MPI_CXX_BOOL_ABI_INTERNAL; + } else if (MPI_CXX_FLOAT_COMPLEX == datatype) { + return MPI_CXX_FLOAT_COMPLEX_ABI_INTERNAL; + } else if (MPI_CXX_DOUBLE_COMPLEX == datatype) { + return MPI_CXX_DOUBLE_COMPLEX_ABI_INTERNAL; + } else if (MPI_CXX_LONG_DOUBLE_COMPLEX == datatype) { + return MPI_CXX_LONG_DOUBLE_COMPLEX_ABI_INTERNAL; + } else if (MPI_FLOAT_INT == datatype) { + return MPI_FLOAT_INT_ABI_INTERNAL; + } else if (MPI_DOUBLE_INT == datatype) { + return MPI_DOUBLE_INT_ABI_INTERNAL; + } else if (MPI_LONG_INT == datatype) { + return MPI_LONG_INT_ABI_INTERNAL; + } else if (MPI_2INT == datatype) { + return MPI_2INT_ABI_INTERNAL; + } else if (MPI_SHORT_INT == datatype) { + return MPI_SHORT_INT_ABI_INTERNAL; + } else if (MPI_LONG_DOUBLE_INT == datatype) { + return MPI_LONG_DOUBLE_INT_ABI_INTERNAL; + } + return (MPI_Datatype_ABI_INTERNAL) datatype; +} +__opal_attribute_always_inline__ static inline MPI_Errhandler ompi_convert_abi_errorhandler_intern_errorhandler(MPI_Errhandler_ABI_INTERNAL errorhandler) +{ + if (MPI_ERRHANDLER_NULL_ABI_INTERNAL == errorhandler) { + return MPI_ERRHANDLER_NULL; + } + return (MPI_Errhandler) errorhandler; +} +__opal_attribute_always_inline__ static inline MPI_Errhandler_ABI_INTERNAL ompi_convert_intern_errorhandler_abi_errorhandler(MPI_Errhandler errorhandler) +{ + if (MPI_ERRHANDLER_NULL == errorhandler) { + return MPI_ERRHANDLER_NULL_ABI_INTERNAL; + } + return (MPI_Errhandler_ABI_INTERNAL) errorhandler; +} +__opal_attribute_always_inline__ static inline MPI_Message ompi_convert_abi_message_intern_message(MPI_Message_ABI_INTERNAL message) +{ + if (MPI_MESSAGE_NULL_ABI_INTERNAL == message) { + return MPI_MESSAGE_NULL; + } else if (MPI_MESSAGE_NO_PROC_ABI_INTERNAL == message) { + return MPI_MESSAGE_NO_PROC; + } + return (MPI_Message) message; +} +__opal_attribute_always_inline__ static inline MPI_Message_ABI_INTERNAL ompi_convert_message_ompi_to_standard(MPI_Message message) +{ + if (MPI_MESSAGE_NULL == message) { + return MPI_MESSAGE_NULL_ABI_INTERNAL; + } else if (MPI_MESSAGE_NO_PROC == message) { + return MPI_MESSAGE_NO_PROC_ABI_INTERNAL; + } + return (MPI_Message_ABI_INTERNAL) message; +} +__opal_attribute_always_inline__ static inline MPI_Op ompi_convert_abi_op_intern_op(MPI_Op_ABI_INTERNAL op) +{ + if (MPI_MAX_ABI_INTERNAL == op) { + return MPI_MAX; + } else if (MPI_MIN_ABI_INTERNAL == op) { + return MPI_MIN; + } else if (MPI_SUM_ABI_INTERNAL == op) { + return MPI_SUM; + } else if (MPI_PROD_ABI_INTERNAL == op) { + return MPI_PROD; + } else if (MPI_MAXLOC_ABI_INTERNAL == op) { + return MPI_MAXLOC; + } else if (MPI_MINLOC_ABI_INTERNAL == op) { + return MPI_MINLOC; + } else if (MPI_BAND_ABI_INTERNAL == op) { + return MPI_BAND; + } else if (MPI_BOR_ABI_INTERNAL == op) { + return MPI_BOR; + } else if (MPI_BXOR_ABI_INTERNAL == op) { + return MPI_BXOR; + } else if (MPI_LAND_ABI_INTERNAL == op) { + return MPI_LAND; + } else if (MPI_LOR_ABI_INTERNAL == op) { + return MPI_LOR; + } else if (MPI_LXOR_ABI_INTERNAL == op) { + return MPI_LXOR; + } else if (MPI_REPLACE_ABI_INTERNAL == op) { + return MPI_REPLACE; + } else if (MPI_NO_OP_ABI_INTERNAL == op) { + return MPI_NO_OP; + } + return (MPI_Op) op; +} +__opal_attribute_always_inline__ static inline MPI_Op_ABI_INTERNAL ompi_convert_op_ompi_to_standard(MPI_Op op) +{ + if (MPI_OP_NULL == op) { + return MPI_OP_NULL_ABI_INTERNAL; + } + return (MPI_Op_ABI_INTERNAL) op; +} +__opal_attribute_always_inline__ static inline MPI_Session ompi_convert_abi_session_intern_session(MPI_Session_ABI_INTERNAL session) +{ + if (MPI_SESSION_NULL_ABI_INTERNAL == session) { + return MPI_SESSION_NULL; + } + return (MPI_Session) session; +} +__opal_attribute_always_inline__ static inline MPI_Session_ABI_INTERNAL ompi_convert_session_ompi_to_standard(MPI_Session session) +{ + if (MPI_SESSION_NULL == session) { + return MPI_SESSION_NULL_ABI_INTERNAL; + } + return (MPI_Session_ABI_INTERNAL) session; +} +__opal_attribute_always_inline__ static inline MPI_Win ompi_convert_abi_win_intern_win(MPI_Win_ABI_INTERNAL win) +{ + if (MPI_WIN_NULL_ABI_INTERNAL == win) { + return MPI_WIN_NULL; + } + return (MPI_Win) win; +} +__opal_attribute_always_inline__ static inline MPI_Win_ABI_INTERNAL ompi_convert_win_ompi_to_standard(MPI_Win win) +{ + if (MPI_WIN_NULL == win) { + return MPI_WIN_NULL_ABI_INTERNAL; + } + return (MPI_Win_ABI_INTERNAL) win; +} +__opal_attribute_always_inline__ static inline void ompi_convert_abi_request_intern_request(MPI_Request_ABI_INTERNAL *ptr) +{ + if (MPI_REQUEST_NULL == (MPI_Request) *ptr) { + *ptr = MPI_REQUEST_NULL_ABI_INTERNAL; + } +} +__opal_attribute_always_inline__ static inline MPI_Request_ABI_INTERNAL ompi_convert_ompi_request_abi_request(MPI_Request request) +{ + if (MPI_REQUEST_NULL == request) { + return MPI_REQUEST_NULL_ABI_INTERNAL; + } + return (MPI_Request_ABI_INTERNAL) request; +} +__opal_attribute_always_inline__ static inline void ompi_convert_abi_status_intern_status(MPI_Status *out, MPI_Status_ABI_INTERNAL *inp) +{ + void *ptr = &out->_ucount; + out->MPI_SOURCE = inp->MPI_SOURCE; + out->MPI_TAG = inp->MPI_TAG; + out->_cancelled = inp->MPI_Internal[0]; + memcpy(ptr, &inp->MPI_Internal[1],sizeof(out->_ucount)); + out->MPI_ERROR = ompi_convert_abi_error_intern_error(inp->MPI_ERROR); +} +__opal_attribute_always_inline__ static inline void ompi_convert_intern_status_abi_status(MPI_Status_ABI_INTERNAL *out, MPI_Status *inp) +{ + void *ptr = &out->MPI_Internal[1]; + out->MPI_SOURCE = inp->MPI_SOURCE; + out->MPI_TAG = inp->MPI_TAG; + out->MPI_Internal[0] =inp->_cancelled; + memcpy(ptr, &inp->_ucount,sizeof(inp->_ucount)); +} + +#if defined(c_plusplus) || defined(__cplusplus) +} +#endif + +#endif /* _ABI_CONVERTORS_ */ diff --git a/ompi/mpi/c/bindings.h b/ompi/mpi/c/bindings.h index 2a849feea8d..717fe79287f 100644 --- a/ompi/mpi/c/bindings.h +++ b/ompi/mpi/c/bindings.h @@ -116,6 +116,11 @@ BEGIN_C_DECLS } while (0) +int ompi_sendrecv(const void * sendbuf, size_t sendcount, MPI_Datatype sendtype, int dest, int sendtag, + void * recvbuf, size_t recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status); +int ompi_isendrecv(const void * sendbuf, size_t sendcount, MPI_Datatype sendtype, int dest, int sendtag, + void * recvbuf, size_t recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Request * request); + END_C_DECLS #endif /* OMPI_C_BINDINGS_H */ diff --git a/ompi/mpi/c/comm_create_keyval.c.in b/ompi/mpi/c/comm_create_keyval.c.in index d69c245fc49..e8352be3773 100644 --- a/ompi/mpi/c/comm_create_keyval.c.in +++ b/ompi/mpi/c/comm_create_keyval.c.in @@ -36,6 +36,7 @@ PROTOTYPE ERROR_CLASS comm_create_keyval(COMM_COPY_ATTR_FUNCTION comm_copy_attr_ INT_OUT comm_keyval, BUFFER_OUT extra_state) { int ret; + int flags = 0; ompi_attribute_fn_ptr_union_t copy_fn; ompi_attribute_fn_ptr_union_t del_fn; @@ -48,11 +49,16 @@ PROTOTYPE ERROR_CLASS comm_create_keyval(COMM_COPY_ATTR_FUNCTION comm_copy_attr_ } } +#if OMPI_ABI_SRC + copy_fn.attr_communicator_copy_fn = ompi_abi_copy_attr_fn; + del_fn.attr_communicator_delete_fn = ompi_abi_delete_attr_fn; +#else copy_fn.attr_communicator_copy_fn = comm_copy_attr_fn; del_fn.attr_communicator_delete_fn = comm_delete_attr_fn; +#endif - ret = ompi_attr_create_keyval(COMM_ATTR, copy_fn, - del_fn, comm_keyval, extra_state, 0, NULL); + ret = ompi_attr_create_keyval(COMM_ATTR, copy_fn, del_fn, + comm_keyval, extra_state, flags, NULL); OMPI_ERRHANDLER_NOHANDLE_RETURN(ret, MPI_ERR_OTHER, FUNC_NAME); } diff --git a/ompi/mpi/c/comm_spawn_multiple.c.in b/ompi/mpi/c/comm_spawn_multiple.c.in index a729df6dfd0..72b43a2dbc3 100644 --- a/ompi/mpi/c/comm_spawn_multiple.c.in +++ b/ompi/mpi/c/comm_spawn_multiple.c.in @@ -42,7 +42,7 @@ #include "ompi/memchecker.h" PROTOTYPE ERROR_CLASS comm_spawn_multiple(INT count, STRING_ARRAY array_of_commands, ARGV array_of_argv, - INT_ARRAY array_of_maxprocs, INFO_ARRAY array_of_info, + INT_ARRAY array_of_maxprocs, INFO_ARRAY array_of_info:count, INT root, COMM comm, COMM_OUT intercomm, INT_OUT array_of_errcodes) { diff --git a/ompi/mpi/c/file_close.c.in b/ompi/mpi/c/file_close.c.in index 4111c6a3026..19b844be21a 100644 --- a/ompi/mpi/c/file_close.c.in +++ b/ompi/mpi/c/file_close.c.in @@ -27,7 +27,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/file/file.h" -PROTOTYPE ERROR_CLASS file_close(FILE_OUT fh) +PROTOTYPE ERROR_CLASS file_close(FILE_INOUT fh) { int rc; diff --git a/ompi/mpi/c/isendrecv.c.in b/ompi/mpi/c/isendrecv.c.in index 39f410b6796..8bd8a75afa6 100644 --- a/ompi/mpi/c/isendrecv.c.in +++ b/ompi/mpi/c/isendrecv.c.in @@ -37,60 +37,12 @@ #include "ompi/runtime/ompi_spc.h" -struct ompi_isendrecv_context_t { - opal_object_t super; - int nreqs; - int source; - ompi_request_t *subreq[2]; -}; - -typedef struct ompi_isendrecv_context_t ompi_isendrecv_context_t; -#if OMPI_BUILD_MPI_PROFILING -OBJ_CLASS_INSTANCE(ompi_isendrecv_context_t, opal_object_t, NULL, NULL); -#else -OBJ_CLASS_DECLARATION(ompi_isendrecv_context_t); -#endif /* OMPI_BUILD_MPI_PROFILING */ - -static int ompi_isendrecv_complete_func (ompi_comm_request_t *request) -{ - ompi_isendrecv_context_t *context = - (ompi_isendrecv_context_t *) request->context; - - /* - * Copy the status from the receive side of the sendrecv request? - * But what if the send failed? - * - * Probably need to bring up in the MPI forum. - */ - - if (MPI_PROC_NULL != context->source) { - OMPI_COPY_STATUS(&request->super.req_status, - context->subreq[0]->req_status, false); - } else { - OMPI_COPY_STATUS(&request->super.req_status, - ompi_request_empty.req_status, false); - } - - if(NULL != context->subreq[0]) { - ompi_request_free(&context->subreq[0]); - } - if(NULL != context->subreq[1]) { - ompi_request_free(&context->subreq[1]); - } - - return OMPI_SUCCESS; -} - PROTOTYPE ERROR_CLASS isendrecv(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, INT dest, INT sendtag, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, INT source, INT recvtag, COMM comm, REQUEST_INOUT request) { - ompi_isendrecv_context_t *context = NULL; - ompi_comm_request_t *crequest; int rc = MPI_SUCCESS; - int nreqs = 0; - uint32_t flags; SPC_RECORD(OMPI_SPC_ISENDRECV, 1); @@ -125,64 +77,9 @@ PROTOTYPE ERROR_CLASS isendrecv(BUFFER sendbuf, COUNT sendcount, DATATYPE sendty OMPI_ERRHANDLER_CHECK(rc, comm, rc, FUNC_NAME); } - crequest = ompi_comm_request_get (); - if (NULL == crequest) { - return OMPI_ERR_OUT_OF_RESOURCE; - } - - context = OBJ_NEW(ompi_isendrecv_context_t); - if (NULL == context) { - ompi_comm_request_return (crequest); - return OMPI_ERR_OUT_OF_RESOURCE; - } - - crequest->context = &context->super; - context->subreq[0] = MPI_REQUEST_NULL; - context->subreq[1] = MPI_REQUEST_NULL; - context->source = source; - - if (source != MPI_PROC_NULL) { /* post recv */ - rc = MCA_PML_CALL(irecv(recvbuf, recvcount, recvtype, - source, recvtag, comm, &context->subreq[nreqs++])); - if (MPI_SUCCESS != rc) { - OBJ_RELEASE(context); - ompi_comm_request_return (crequest); - } - OMPI_ERRHANDLER_CHECK(rc, comm, rc, FUNC_NAME); - } - - if (dest != MPI_PROC_NULL) { /* send */ - rc = MCA_PML_CALL(isend(sendbuf, sendcount, sendtype, dest, - sendtag, MCA_PML_BASE_SEND_STANDARD, comm, &context->subreq[nreqs++])); - if (MPI_SUCCESS != rc) { - OBJ_RELEASE(context); - ompi_comm_request_return (crequest); - } - OMPI_ERRHANDLER_CHECK(rc, comm, rc, FUNC_NAME); - } - - /* - * schedule the operation - */ - - context->nreqs = nreqs; - assert(nreqs <= 2); - - flags = OMPI_COMM_REQ_FLAG_RETAIN_SUBREQ; - - rc = ompi_comm_request_schedule_append_w_flags(crequest, ompi_isendrecv_complete_func, - context->subreq, nreqs, flags); - if (MPI_SUCCESS != rc) { - OBJ_RELEASE(context); - ompi_comm_request_return (crequest); - } + rc = ompi_isendrecv(sendbuf, sendcount, sendtype, dest, sendtag, recvbuf, recvcount, recvtype, source, recvtag, comm, request); OMPI_ERRHANDLER_CHECK(rc, comm, rc, FUNC_NAME); - /* kick off the request */ - - ompi_comm_request_start (crequest); - *request = &crequest->super; - return rc; } diff --git a/ompi/mpi/c/isendrecv_replace.c.in b/ompi/mpi/c/isendrecv_replace.c.in index 2dad8a3078e..34077e25603 100644 --- a/ompi/mpi/c/isendrecv_replace.c.in +++ b/ompi/mpi/c/isendrecv_replace.c.in @@ -34,6 +34,10 @@ #include "ompi/proc/proc.h" #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" +#include "opal/mca/mpool/mpool.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif struct ompi_isendrecv_replace_context_t { opal_object_t super; @@ -58,7 +62,7 @@ static void ompi_isendrecv_context_constructor(ompi_isendrecv_replace_context_t static void ompi_isendrecv_context_destructor(ompi_isendrecv_replace_context_t *context) { if (context->packed_size > sizeof(context->packed_data)) { - PMPI_Free_mem(context->iov.iov_base); + mca_mpool_base_free(context->iov.iov_base); } OBJ_DESTRUCT(&context->convertor); } @@ -144,7 +148,7 @@ PROTOTYPE ERROR_CLASS isendrecv_replace(BUFFER_OUT buf, COUNT count, DATATYPE da /* simple case */ if ( source == MPI_PROC_NULL || dest == MPI_PROC_NULL || count == 0 ) { - rc = PMPI_Isendrecv(buf, count, datatype, dest, sendtag, buf, count, datatype, source, recvtag, comm, request); + rc = ompi_isendrecv(buf, count, datatype, dest, sendtag, buf, count, datatype, source, recvtag, comm, request); return rc; } @@ -181,8 +185,8 @@ PROTOTYPE ERROR_CLASS isendrecv_replace(BUFFER_OUT buf, COUNT count, DATATYPE da /* setup a buffer for recv */ opal_convertor_get_packed_size( &context->convertor, &context->packed_size ); if( context->packed_size > sizeof(context->packed_data) ) { - rc = PMPI_Alloc_mem(context->packed_size, MPI_INFO_NULL, &context->iov.iov_base); - if(OMPI_SUCCESS != rc) { + context->iov.iov_base = (void *)mca_mpool_base_alloc ((size_t)context->packed_size, NULL, NULL); + if(NULL == context->iov.iov_base) { OBJ_RELEASE(context); ompi_comm_request_return (crequest); OMPI_ERRHANDLER_RETURN(rc, comm, rc, FUNC_NAME); diff --git a/ompi/mpi/c/keyval_create.c.in b/ompi/mpi/c/keyval_create.c similarity index 76% rename from ompi/mpi/c/keyval_create.c.in rename to ompi/mpi/c/keyval_create.c index 8a318ad4da3..d802c257dc9 100644 --- a/ompi/mpi/c/keyval_create.c.in +++ b/ompi/mpi/c/keyval_create.c @@ -1,3 +1,4 @@ +/* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT BY HAND. */ /* * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana * University Research and Technology @@ -31,22 +32,26 @@ #include "ompi/attribute/attribute.h" #include "ompi/communicator/communicator.h" -PROTOTYPE ERROR_CLASS keyval_create(COPY_FUNCTION copy_attr_fn, - DELETE_FUNCTION delete_attr_fn, - INT_OUT keyval, BUFFER_OUT extra_state) +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Keyval_create = PMPI_Keyval_create +#endif +#define MPI_Keyval_create PMPI_Keyval_create +#endif +int MPI_Keyval_create(MPI_Copy_function * copy_attr_fn, MPI_Delete_function * delete_attr_fn, int *keyval, void * extra_state) { int ret; ompi_attribute_fn_ptr_union_t copy_fn; ompi_attribute_fn_ptr_union_t del_fn; if (MPI_PARAM_CHECK) { - OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + OMPI_ERR_INIT_FINALIZE("MPI_Keyval_create"); if (NULL == keyval) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_KEYVAL, - FUNC_NAME); + "MPI_Keyval_create"); } else if ((NULL == copy_attr_fn) || (NULL == delete_attr_fn)) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_ARG, - FUNC_NAME); + "MPI_Keyval_create"); } } @@ -55,5 +60,5 @@ PROTOTYPE ERROR_CLASS keyval_create(COPY_FUNCTION copy_attr_fn, ret = ompi_attr_create_keyval(COMM_ATTR, copy_fn, del_fn, keyval, extra_state, 0, NULL); - OMPI_ERRHANDLER_NOHANDLE_RETURN(ret, MPI_ERR_OTHER, FUNC_NAME); + OMPI_ERRHANDLER_NOHANDLE_RETURN(ret, MPI_ERR_OTHER, "MPI_Keyval_create"); } diff --git a/ompi/mpi/c/keyval_free.c.in b/ompi/mpi/c/keyval_free.c similarity index 78% rename from ompi/mpi/c/keyval_free.c.in rename to ompi/mpi/c/keyval_free.c index 8705ada7a10..6b6ffa06b8a 100644 --- a/ompi/mpi/c/keyval_free.c.in +++ b/ompi/mpi/c/keyval_free.c @@ -1,3 +1,4 @@ +/* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT BY HAND. */ /* * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana * University Research and Technology @@ -28,7 +29,13 @@ #include "ompi/attribute/attribute.h" #include "ompi/communicator/communicator.h" -PROTOTYPE ERROR_CLASS keyval_free(INT_OUT keyval) +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Keyval_free = PMPI_Keyval_free +#endif +#define MPI_Keyval_free PMPI_Keyval_free +#endif +int MPI_Keyval_free(int *keyval) { int ret; @@ -36,10 +43,10 @@ PROTOTYPE ERROR_CLASS keyval_free(INT_OUT keyval) if (MPI_PARAM_CHECK) { if (NULL == keyval) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_KEYVAL, - FUNC_NAME); + "MPI_Keyval_free"); } } ret = ompi_attr_free_keyval(COMM_ATTR, keyval, 0); - OMPI_ERRHANDLER_NOHANDLE_RETURN(ret, MPI_ERR_OTHER, FUNC_NAME); + OMPI_ERRHANDLER_NOHANDLE_RETURN(ret, MPI_ERR_OTHER, "MPI_Keyval_free"); } diff --git a/ompi/mpi/c/ompi_isendrecv.c b/ompi/mpi/c/ompi_isendrecv.c new file mode 100644 index 00000000000..13ce4ef631c --- /dev/null +++ b/ompi/mpi/c/ompi_isendrecv.c @@ -0,0 +1,147 @@ +/* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT BY HAND. */ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2022 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2010-2012 Oak Ridge National Labs. All rights reserved. + * Copyright (c) 2013 Los Alamos National Security, LLC. All rights + * reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2021 Nanook Consulting. All rights reserved. + * Copyright (c) 2021-2024 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/communicator/communicator.h" +#include "ompi/communicator/comm_request.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/mca/pml/pml.h" +#include "ompi/request/request.h" +#include "ompi/memchecker.h" +#include "ompi/runtime/ompi_spc.h" + + +struct ompi_isendrecv_context_t { + opal_object_t super; + int nreqs; + int source; + ompi_request_t *subreq[2]; +}; + +typedef struct ompi_isendrecv_context_t ompi_isendrecv_context_t; +OBJ_CLASS_INSTANCE(ompi_isendrecv_context_t, opal_object_t, NULL, NULL); + +static int ompi_isendrecv_complete_func (ompi_comm_request_t *request) +{ + ompi_isendrecv_context_t *context = + (ompi_isendrecv_context_t *) request->context; + + /* + * Copy the status from the receive side of the sendrecv request? + * But what if the send failed? + * + * Probably need to bring up in the MPI forum. + */ + + if (MPI_PROC_NULL != context->source) { + OMPI_COPY_STATUS(&request->super.req_status, + context->subreq[0]->req_status, false); + } else { + OMPI_COPY_STATUS(&request->super.req_status, + ompi_request_empty.req_status, false); + } + + if(NULL != context->subreq[0]) { + ompi_request_free(&context->subreq[0]); + } + if(NULL != context->subreq[1]) { + ompi_request_free(&context->subreq[1]); + } + + return OMPI_SUCCESS; +} + +int ompi_isendrecv(const void * sendbuf, size_t sendcount, MPI_Datatype sendtype, int dest, int sendtag, void * recvbuf, size_t recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Request * request) +{ + ompi_isendrecv_context_t *context = NULL; + ompi_comm_request_t *crequest; + int rc = MPI_SUCCESS; + int nreqs = 0; + uint32_t flags; + + crequest = ompi_comm_request_get (); + if (NULL == crequest) { + return OMPI_ERR_OUT_OF_RESOURCE; + } + + context = OBJ_NEW(ompi_isendrecv_context_t); + if (NULL == context) { + ompi_comm_request_return (crequest); + return OMPI_ERR_OUT_OF_RESOURCE; + } + + crequest->context = &context->super; + context->subreq[0] = MPI_REQUEST_NULL; + context->subreq[1] = MPI_REQUEST_NULL; + context->source = source; + + if (source != MPI_PROC_NULL) { /* post recv */ + rc = MCA_PML_CALL(irecv(recvbuf, recvcount, recvtype, + source, recvtag, comm, &context->subreq[nreqs++])); + if (MPI_SUCCESS != rc) { + OBJ_RELEASE(context); + ompi_comm_request_return (crequest); + } + OMPI_ERRHANDLER_CHECK(rc, comm, rc, "MPI_Isendrecv"); + } + + if (dest != MPI_PROC_NULL) { /* send */ + rc = MCA_PML_CALL(isend(sendbuf, sendcount, sendtype, dest, + sendtag, MCA_PML_BASE_SEND_STANDARD, comm, &context->subreq[nreqs++])); + if (MPI_SUCCESS != rc) { + OBJ_RELEASE(context); + ompi_comm_request_return (crequest); + } + OMPI_ERRHANDLER_CHECK(rc, comm, rc, "MPI_Isendrecv"); + } + + /* + * schedule the operation + */ + + context->nreqs = nreqs; + assert(nreqs <= 2); + + flags = OMPI_COMM_REQ_FLAG_RETAIN_SUBREQ; + + rc = ompi_comm_request_schedule_append_w_flags(crequest, ompi_isendrecv_complete_func, + context->subreq, nreqs, flags); + if (MPI_SUCCESS != rc) { + OBJ_RELEASE(context); + ompi_comm_request_return (crequest); + } + + /* kick off the request */ + + ompi_comm_request_start (crequest); + *request = &crequest->super; + + return rc; +} diff --git a/ompi/mpi/c/ompi_sendrecv.c b/ompi/mpi/c/ompi_sendrecv.c new file mode 100644 index 00000000000..06971af2a9b --- /dev/null +++ b/ompi/mpi/c/ompi_sendrecv.c @@ -0,0 +1,98 @@ +/* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT BY HAND. */ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2021 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2010-2012 Oak Ridge National Labs. All rights reserved. + * Copyright (c) 2013 Los Alamos National Security, LLC. All rights + * reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2021 Nanook Consulting. All rights reserved. + * Copyright (c) 2023 Jeffrey M. Squyres. All rights reserved. + * Copyright (c) 2024 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/communicator/communicator.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/mca/pml/pml.h" +#include "ompi/request/request.h" +#include "ompi/memchecker.h" +#include "ompi/runtime/ompi_spc.h" + +int ompi_sendrecv(const void * sendbuf, size_t sendcount, MPI_Datatype sendtype, int dest, int sendtag, void * recvbuf, size_t recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status) +{ + ompi_request_t* req = MPI_REQUEST_NULL; + int rc = MPI_SUCCESS; + int rcs = MPI_SUCCESS; + + if (source != MPI_PROC_NULL) { /* post recv */ + rc = MCA_PML_CALL(irecv(recvbuf, recvcount, recvtype, + source, recvtag, comm, &req)); + OMPI_ERRHANDLER_CHECK(rc, comm, rc, "MPI_Sendrecv"); + } + + if (dest != MPI_PROC_NULL) { /* send */ + rc = MCA_PML_CALL(send(sendbuf, sendcount, sendtype, dest, + sendtag, MCA_PML_BASE_SEND_STANDARD, comm)); + if (OPAL_UNLIKELY(MPI_SUCCESS != rc)) { + rcs = rc; +#if OPAL_ENABLE_FT_MPI + /* If this is a PROC_FAILED error, we still need to proceed with + * the receive, so that we do not propagate errors to the sender in + * the case src != dst, and only dst is dead. In this case the + * recv is guaranteed to complete (either in error if the source is + * dead, or successfully if the source is live). */ + if (OPAL_UNLIKELY(MPI_ERR_PROC_FAILED != rc)) + /* if intentionally spills outside ifdef */ +#endif + ompi_request_cancel(req); + } + } + + if (source != MPI_PROC_NULL) { /* wait for recv */ + rc = ompi_request_wait(&req, status); +#if OPAL_ENABLE_FT_MPI + /* Sendrecv never returns ERR_PROC_FAILED_PENDING because it is + * blocking. Lets cancel that irecv to complete it NOW and promote + * the error to ERR_PROC_FAILED */ + if( OPAL_UNLIKELY(MPI_ERR_PROC_FAILED_PENDING == rc) ) { + ompi_request_cancel(req); + ompi_request_wait(&req, MPI_STATUS_IGNORE); + rc = MPI_ERR_PROC_FAILED; + } +#endif + } else { + if (MPI_STATUS_IGNORE != status) { + OMPI_COPY_STATUS(status, ompi_request_empty.req_status, false); + /* + * Per MPI-1, the MPI_ERROR field is not defined for single-completion calls + */ + MEMCHECKER( + opal_memchecker_base_mem_undefined(&status->MPI_ERROR, sizeof(int)); + ); + } + rc = MPI_SUCCESS; + } + if( OPAL_UNLIKELY(MPI_SUCCESS != rcs && MPI_SUCCESS == rc) ) { + rc = rcs; + } + return rc; +} diff --git a/ompi/mpi/c/sendrecv.c.in b/ompi/mpi/c/sendrecv.c.in index d6a30102a50..25167d2d857 100644 --- a/ompi/mpi/c/sendrecv.c.in +++ b/ompi/mpi/c/sendrecv.c.in @@ -41,9 +41,7 @@ PROTOTYPE ERROR_CLASS sendrecv(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtyp DATATYPE recvtype, INT source, INT recvtag, COMM comm, STATUS_OUT status) { - ompi_request_t* req = MPI_REQUEST_NULL; int rc = MPI_SUCCESS; - int rcs = MPI_SUCCESS; SPC_RECORD(OMPI_SPC_SENDRECV, 1); @@ -75,57 +73,9 @@ PROTOTYPE ERROR_CLASS sendrecv(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtyp OMPI_ERRHANDLER_CHECK(rc, comm, rc, FUNC_NAME); } - if (source != MPI_PROC_NULL) { /* post recv */ - rc = MCA_PML_CALL(irecv(recvbuf, recvcount, recvtype, - source, recvtag, comm, &req)); - OMPI_ERRHANDLER_CHECK(rc, comm, rc, FUNC_NAME); - } - - if (dest != MPI_PROC_NULL) { /* send */ - rc = MCA_PML_CALL(send(sendbuf, sendcount, sendtype, dest, - sendtag, MCA_PML_BASE_SEND_STANDARD, comm)); - if (OPAL_UNLIKELY(MPI_SUCCESS != rc)) { - rcs = rc; -#if OPAL_ENABLE_FT_MPI - /* If this is a PROC_FAILED error, we still need to proceed with - * the receive, so that we do not propagate errors to the sender in - * the case src != dst, and only dst is dead. In this case the - * recv is guaranteed to complete (either in error if the source is - * dead, or successfully if the source is live). */ - if (OPAL_UNLIKELY(MPI_ERR_PROC_FAILED != rc)) - /* if intentionally spills outside ifdef */ -#endif - ompi_request_cancel(req); - } - } + rc = ompi_sendrecv(sendbuf, sendcount, sendtype, dest, sendtag, + recvbuf, recvcount, recvtype, source, recvtag, comm, status); - if (source != MPI_PROC_NULL) { /* wait for recv */ - rc = ompi_request_wait(&req, status); -#if OPAL_ENABLE_FT_MPI - /* Sendrecv never returns ERR_PROC_FAILED_PENDING because it is - * blocking. Lets cancel that irecv to complete it NOW and promote - * the error to ERR_PROC_FAILED */ - if( OPAL_UNLIKELY(MPI_ERR_PROC_FAILED_PENDING == rc) ) { - ompi_request_cancel(req); - ompi_request_wait(&req, MPI_STATUS_IGNORE); - rc = MPI_ERR_PROC_FAILED; - } -#endif - } else { - if (MPI_STATUS_IGNORE != status) { - OMPI_COPY_STATUS(status, ompi_request_empty.req_status, false); - /* - * Per MPI-1, the MPI_ERROR field is not defined for single-completion calls - */ - MEMCHECKER( - opal_memchecker_base_mem_undefined(&status->MPI_ERROR, sizeof(int)); - ); - } - rc = MPI_SUCCESS; - } - if( OPAL_UNLIKELY(MPI_SUCCESS != rcs && MPI_SUCCESS == rc) ) { - rc = rcs; - } OMPI_ERRHANDLER_RETURN(rc, comm, rc, FUNC_NAME); } diff --git a/ompi/mpi/c/sendrecv_replace.c.in b/ompi/mpi/c/sendrecv_replace.c.in index 76aadb3ab30..7c8dba56a17 100644 --- a/ompi/mpi/c/sendrecv_replace.c.in +++ b/ompi/mpi/c/sendrecv_replace.c.in @@ -29,6 +29,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/datatype/ompi_datatype.h" #include "opal/datatype/opal_convertor.h" +#include "opal/mca/mpool/mpool.h" #include "ompi/mca/pml/pml.h" #include "ompi/proc/proc.h" #include "ompi/memchecker.h" @@ -80,7 +81,7 @@ PROTOTYPE ERROR_CLASS sendrecv_replace(BUFFER_OUT buf, COUNT count, DATATYPE dat /* simple case */ if ( source == MPI_PROC_NULL || dest == MPI_PROC_NULL || count == 0 ) { - rc = PMPI_Sendrecv(buf, count, datatype, dest, sendtag, buf, count, datatype, source, recvtag, comm, status); + rc = ompi_sendrecv(buf, count, datatype, dest, sendtag, buf, count, datatype, source, recvtag, comm, status); return rc; } @@ -113,8 +114,8 @@ PROTOTYPE ERROR_CLASS sendrecv_replace(BUFFER_OUT buf, COUNT count, DATATYPE dat /* setup a temporary buffer to send */ opal_convertor_get_packed_size( &convertor, &packed_size ); if( packed_size > sizeof(packed_data) ) { - rc = PMPI_Alloc_mem(packed_size, MPI_INFO_NULL, &iov.iov_base); - if(OMPI_SUCCESS != rc) { + iov.iov_base = (void *)mca_mpool_base_alloc (packed_size, NULL, NULL); + if(NULL == iov.iov_base) { rc = OMPI_ERR_OUT_OF_RESOURCE; goto cleanup_and_return; } @@ -166,7 +167,7 @@ PROTOTYPE ERROR_CLASS sendrecv_replace(BUFFER_OUT buf, COUNT count, DATATYPE dat /* release resources */ if(packed_size > sizeof(packed_data)) { - PMPI_Free_mem(iov.iov_base); + mca_mpool_base_free(iov.iov_base); } OBJ_DESTRUCT(&convertor); diff --git a/ompi/mpi/c/session_finalize.c.in b/ompi/mpi/c/session_finalize.c.in index 44e67abeb8e..90075d5a4c1 100644 --- a/ompi/mpi/c/session_finalize.c.in +++ b/ompi/mpi/c/session_finalize.c.in @@ -17,7 +17,7 @@ #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS session_finalize (SESSION_OUT session) +PROTOTYPE ERROR_CLASS session_finalize (SESSION_INOUT session) { int rc; diff --git a/ompi/mpi/c/status_set_cancelled.c.in b/ompi/mpi/c/status_set_cancelled.c.in index 3c47560527c..960154e2d5a 100644 --- a/ompi/mpi/c/status_set_cancelled.c.in +++ b/ompi/mpi/c/status_set_cancelled.c.in @@ -28,7 +28,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS status_set_cancelled(STATUS_OUT status, INT flag) +PROTOTYPE ERROR_CLASS status_set_cancelled(STATUS_INOUT status, INT flag) { MEMCHECKER( if(status != MPI_STATUSES_IGNORE) { diff --git a/ompi/mpi/c/status_set_elements.c.in b/ompi/mpi/c/status_set_elements.c.in index 953a7aef7d0..da3c85053e1 100644 --- a/ompi/mpi/c/status_set_elements.c.in +++ b/ompi/mpi/c/status_set_elements.c.in @@ -32,7 +32,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS status_set_elements(STATUS_OUT status, DATATYPE datatype, COUNT count) +PROTOTYPE ERROR_CLASS status_set_elements(STATUS_INOUT status, DATATYPE datatype, COUNT count) { int rc = MPI_SUCCESS; size_t size; diff --git a/ompi/mpi/c/status_set_elements_x.c.in b/ompi/mpi/c/status_set_elements_x.c.in index c24b24f9c55..584035e8d53 100644 --- a/ompi/mpi/c/status_set_elements_x.c.in +++ b/ompi/mpi/c/status_set_elements_x.c.in @@ -32,7 +32,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS status_set_elements_x(STATUS_OUT status, DATATYPE datatype, PARTITIONED_COUNT count) +PROTOTYPE ERROR_CLASS status_set_elements_x(STATUS_INOUT status, DATATYPE datatype, PARTITIONED_COUNT count) { int rc = MPI_SUCCESS; size_t size; diff --git a/ompi/mpi/c/status_set_error.c.in b/ompi/mpi/c/status_set_error.c.in index 30a667cd5a5..31eccfee732 100644 --- a/ompi/mpi/c/status_set_error.c.in +++ b/ompi/mpi/c/status_set_error.c.in @@ -17,7 +17,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS status_set_error(STATUS_OUT status, INT error) +PROTOTYPE ERROR_CLASS status_set_error(STATUS_INOUT status, INT error) { MEMCHECKER( if(status != MPI_STATUSES_IGNORE) { diff --git a/ompi/mpi/c/status_set_source.c.in b/ompi/mpi/c/status_set_source.c.in index 46e1959bb85..b723a6bb3e6 100644 --- a/ompi/mpi/c/status_set_source.c.in +++ b/ompi/mpi/c/status_set_source.c.in @@ -17,7 +17,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS status_set_source(STATUS_OUT status, INT source) +PROTOTYPE ERROR_CLASS status_set_source(STATUS_INOUT status, INT source) { MEMCHECKER( if(status != MPI_STATUSES_IGNORE) { diff --git a/ompi/mpi/c/status_set_tag.c.in b/ompi/mpi/c/status_set_tag.c.in index 2a85c3cb62f..beca885583b 100644 --- a/ompi/mpi/c/status_set_tag.c.in +++ b/ompi/mpi/c/status_set_tag.c.in @@ -18,7 +18,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS status_set_tag(STATUS_OUT status, INT tag) +PROTOTYPE ERROR_CLASS status_set_tag(STATUS_INOUT status, INT tag) { MEMCHECKER( if(status != MPI_STATUSES_IGNORE) { diff --git a/ompi/mpi/c/type_create_keyval.c.in b/ompi/mpi/c/type_create_keyval.c.in index ea5cff2542d..f1494559c82 100644 --- a/ompi/mpi/c/type_create_keyval.c.in +++ b/ompi/mpi/c/type_create_keyval.c.in @@ -36,7 +36,7 @@ PROTOTYPE ERROR_CLASS type_create_keyval(TYPE_COPY_ATTR_FUNCTION type_copy_attr_ INT_OUT type_keyval, BUFFER_OUT extra_state) { - int ret; + int ret, flags = 0; ompi_attribute_fn_ptr_union_t copy_fn; ompi_attribute_fn_ptr_union_t del_fn; @@ -50,11 +50,16 @@ PROTOTYPE ERROR_CLASS type_create_keyval(TYPE_COPY_ATTR_FUNCTION type_copy_attr_ } } +#if OMPI_ABI_SRC + copy_fn.attr_datatype_copy_fn = ompi_abi_copy_attr_fn; + del_fn.attr_datatype_delete_fn = ompi_abi_delete_attr_fn; +#else copy_fn.attr_datatype_copy_fn = type_copy_attr_fn; del_fn.attr_datatype_delete_fn = type_delete_attr_fn; +#endif ret = ompi_attr_create_keyval(TYPE_ATTR, copy_fn, del_fn, - type_keyval, extra_state, 0, NULL); + type_keyval, extra_state, flags, NULL); OMPI_ERRHANDLER_NOHANDLE_RETURN(ret, ret, FUNC_NAME); } diff --git a/ompi/mpi/c/type_create_struct.c.in b/ompi/mpi/c/type_create_struct.c.in index accea45f603..98e31f567a6 100644 --- a/ompi/mpi/c/type_create_struct.c.in +++ b/ompi/mpi/c/type_create_struct.c.in @@ -40,7 +40,7 @@ PROTOTYPE ERROR_CLASS type_create_struct(COUNT count, COUNT_ARRAY array_of_blocklengths, AINT_COUNT_ARRAY array_of_displacements, - DATATYPE_ARRAY array_of_types, + DATATYPE_ARRAY array_of_types:count, DATATYPE_OUT newtype) { int i, rc, icount = (int)count; diff --git a/ompi/mpi/c/win_create_errhandler.c.in b/ompi/mpi/c/win_create_errhandler.c.in index 27a48e33aa4..3391c643524 100644 --- a/ompi/mpi/c/win_create_errhandler.c.in +++ b/ompi/mpi/c/win_create_errhandler.c.in @@ -30,7 +30,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/win/win.h" -PROTOTYPE ERROR_CLASS win_create_errhandler(WIN_ERRHANLDER_FUNCTION function, +PROTOTYPE ERROR_CLASS win_create_errhandler(WIN_ERRHANDLER_FUNCTION function, ERRHANDLER_OUT errhandler) { int err = MPI_SUCCESS; diff --git a/ompi/mpi/c/win_create_keyval.c.in b/ompi/mpi/c/win_create_keyval.c.in index f58401685bf..f23b8c648d0 100644 --- a/ompi/mpi/c/win_create_keyval.c.in +++ b/ompi/mpi/c/win_create_keyval.c.in @@ -35,7 +35,7 @@ PROTOTYPE ERROR_CLASS win_create_keyval(WIN_COPY_ATTR_FUNCTION win_copy_attr_fn, WIN_DELETE_ATTR_FUNCTION win_delete_attr_fn, INT_OUT win_keyval, BUFFER_OUT extra_state) { - int ret; + int ret, flags = 0; ompi_attribute_fn_ptr_union_t copy_fn; ompi_attribute_fn_ptr_union_t del_fn; @@ -48,10 +48,15 @@ PROTOTYPE ERROR_CLASS win_create_keyval(WIN_COPY_ATTR_FUNCTION win_copy_attr_fn, } } +#if OMPI_ABI_SRC + copy_fn.attr_win_copy_fn = ompi_abi_copy_attr_fn; + del_fn.attr_win_delete_fn = ompi_abi_delete_attr_fn; +#else copy_fn.attr_win_copy_fn = win_copy_attr_fn; del_fn.attr_win_delete_fn = win_delete_attr_fn; +#endif ret = ompi_attr_create_keyval(WIN_ATTR, copy_fn, del_fn, - win_keyval, extra_state, 0, NULL); + win_keyval, extra_state, flags, NULL); OMPI_ERRHANDLER_NOHANDLE_RETURN(ret, MPI_ERR_OTHER, FUNC_NAME); } diff --git a/ompi/mpi/c/win_f2c.c b/ompi/mpi/c/win_f2c.c.in similarity index 88% rename from ompi/mpi/c/win_f2c.c rename to ompi/mpi/c/win_f2c.c.in index 82bf2b9cc71..f7b979d80aa 100644 --- a/ompi/mpi/c/win_f2c.c +++ b/ompi/mpi/c/win_f2c.c.in @@ -27,16 +27,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/mpi/fortran/base/fint_2_int.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_Win_f2c = PMPI_Win_f2c -#endif -#define MPI_Win_f2c PMPI_Win_f2c -#endif - -static const char FUNC_NAME[] = "MPI_Win_f2c"; - -MPI_Win MPI_Win_f2c(MPI_Fint win) +PROTOTYPE WIN win_f2c(FINT win) { int o_index= OMPI_FINT_2_INT(win); diff --git a/ompi/mpi/c/wtime.c.in b/ompi/mpi/c/wtime.c.in index cc22d427142..e31db4d630e 100644 --- a/ompi/mpi/c/wtime.c.in +++ b/ompi/mpi/c/wtime.c.in @@ -45,7 +45,7 @@ * and accuracy of the user visible timer. * More info: https://github.com/mpi-forum/mpi-issues/issues/77#issuecomment-369663119 */ -extern struct timespec ompi_wtime_time_origin = {.tv_sec = 0}; +extern struct timespec ompi_wtime_time_origin; PROTOTYPE DOUBLE wtime() { From d07b17b68a9146f177b2a662873ecd0ba87b8486 Mon Sep 17 00:00:00 2001 From: Joe Downs Date: Thu, 26 Jun 2025 14:29:54 -0600 Subject: [PATCH 3/5] ABI: Switch to using MPI Standard ABI values This mod switches from using "synthetic" defined values and handles for the ones specified in the MPI 5.1 standard. The python infrastructure included in this PR for generating both a "canonical" abi standard compatible MPI 5.1 mpi.h using two json files: 1) mpi-standard-abi.json 2) mpi-standard-apis.json 2 is generated as part of building the MPI standard. We import that into our project for use in generating both the mpi.h as well as interface definitions in the man pages. 1 is generated using a separate script that processes the tables in Appendix A of standard. Ideally this script will be merged into the MPI standard code base at some point. This script is currently at https://github.com/Joe-Downs/mpi-standard/tree/pr/handle-constant-tool/const-tool . It is used to generate the portion of mpi.h where defined values and handles are specified. The converter functions that had been generated as part of the build out of the abi variants of the 'c' MPI interfaces are no define in persistent file. The methods defined in this file will be optimized to make use of the Huffman code characteristics of the predefined values in a subsequent PR. This commit also enables generation of the abi interfaces and header files by default. Signed-off-by: Joseph Downs --- 3rd-party/pympistandard | 2 +- config/ompi_configure_options.m4 | 17 +- docs/mpi-standard-5.0-abi.json | 9103 +++ docs/mpi-standard-5.0-apis.json | 61254 ++++++++++++++++++++ docs/mpi-standard-abi.json | 1 + docs/mpi-standard-apis.json | 2 +- ompi/include/mpi.h.in | 12 +- ompi/mpi/Makefile.am | 1 + ompi/mpi/bindings/c_header.py | 246 + ompi/mpi/bindings/ompi_bindings/consts.py | 1 - ompi/mpi/c/Makefile.am | 39 +- ompi/mpi/c/abi.h.in | 213 + ompi/mpi/c/abi_converters.h | 8 +- 13 files changed, 70859 insertions(+), 40 deletions(-) create mode 100644 docs/mpi-standard-5.0-abi.json create mode 100644 docs/mpi-standard-5.0-apis.json create mode 120000 docs/mpi-standard-abi.json create mode 100644 ompi/mpi/bindings/c_header.py create mode 100644 ompi/mpi/c/abi.h.in diff --git a/3rd-party/pympistandard b/3rd-party/pympistandard index 6032f68dd96..1e00cfbd0c1 160000 --- a/3rd-party/pympistandard +++ b/3rd-party/pympistandard @@ -1 +1 @@ -Subproject commit 6032f68dd9636b48977f59e986acc01a746593a6 +Subproject commit 1e00cfbd0c16e4dd7da71bb6b97262df0fc26013 diff --git a/config/ompi_configure_options.m4 b/config/ompi_configure_options.m4 index 72a84353394..e00e60f50de 100644 --- a/config/ompi_configure_options.m4 +++ b/config/ompi_configure_options.m4 @@ -266,16 +266,19 @@ AM_CONDITIONAL(OMPI_GENERATE_BINDINGS,[test "$PYTHON" != ":"]) AC_MSG_CHECKING([if want to enable standard ABI library]) AC_ARG_ENABLE([standard-abi], [AS_HELP_STRING([--enable-standard-abi], - [Enable building the standard ABI library (default: disabled)])]) -if test "$enable_standard_abi" = "yes"; then - AC_MSG_RESULT([yes]) - ompi_standard_abi=1 -else + [Enable building the standard ABI library (default: enabled)])]) +if test "$enable_standard_abi" = "no"; then AC_MSG_RESULT([no]) ompi_standard_abi=0 +else + AC_MSG_RESULT([yes]) + ompi_standard_abi=1 fi AC_DEFINE_UNQUOTED([OMPI_STANDARD_ABI],[$ompi_standard_abi], [Whether we want to build the standard ABI library]) -AM_CONDITIONAL(OMPI_STANDARD_ABI,[test "$enable_standard_abi" = "yes"]) - +AM_CONDITIONAL(OMPI_STANDARD_ABI,[test $ompi_standard_abi = 1]) +AS_IF([test $ompi_standard_abi -eq 1], + [gen_abi="yes"], + [gen_abi="no"]) +OPAL_SUMMARY_ADD([Miscellaneous], [MPI Standard ABI support], [], [$gen_abi]) ])dnl diff --git a/docs/mpi-standard-5.0-abi.json b/docs/mpi-standard-5.0-abi.json new file mode 100644 index 00000000000..b4a7ea6c899 --- /dev/null +++ b/docs/mpi-standard-5.0-abi.json @@ -0,0 +1,9103 @@ +{ + "constants": { + "mpi_success": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_SUCCESS", + "abi_value": 0 + }, + "mpi_err_buffer": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_BUFFER", + "abi_value": 1 + }, + "mpi_err_count": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_COUNT", + "abi_value": 2 + }, + "mpi_err_type": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_TYPE", + "abi_value": 3 + }, + "mpi_err_tag": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_TAG", + "abi_value": 4 + }, + "mpi_err_comm": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_COMM", + "abi_value": 5 + }, + "mpi_err_rank": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_RANK", + "abi_value": 6 + }, + "mpi_err_request": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_REQUEST", + "abi_value": 7 + }, + "mpi_err_root": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_ROOT", + "abi_value": 8 + }, + "mpi_err_group": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_GROUP", + "abi_value": 9 + }, + "mpi_err_op": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_OP", + "abi_value": 10 + }, + "mpi_err_topology": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_TOPOLOGY", + "abi_value": 11 + }, + "mpi_err_dims": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_DIMS", + "abi_value": 12 + }, + "mpi_err_arg": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_ARG", + "abi_value": 13 + }, + "mpi_err_unknown": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_UNKNOWN", + "abi_value": 14 + }, + "mpi_err_truncate": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_TRUNCATE", + "abi_value": 15 + }, + "mpi_err_other": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_OTHER", + "abi_value": 16 + }, + "mpi_err_intern": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_INTERN", + "abi_value": 17 + }, + "mpi_err_pending": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_PENDING", + "abi_value": 18 + }, + "mpi_err_in_status": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_IN_STATUS", + "abi_value": 19 + }, + "mpi_err_access": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_ACCESS", + "abi_value": 20 + }, + "mpi_err_amode": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_AMODE", + "abi_value": 21 + }, + "mpi_err_assert": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_ASSERT", + "abi_value": 22 + }, + "mpi_err_bad_file": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_BAD_FILE", + "abi_value": 23 + }, + "mpi_err_base": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_BASE", + "abi_value": 24 + }, + "mpi_err_conversion": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_CONVERSION", + "abi_value": 25 + }, + "mpi_err_disp": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_DISP", + "abi_value": 26 + }, + "mpi_err_dup_datarep": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_DUP_DATAREP", + "abi_value": 27 + }, + "mpi_err_file_exists": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_FILE_EXISTS", + "abi_value": 28 + }, + "mpi_err_file_in_use": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_FILE_IN_USE", + "abi_value": 29 + }, + "mpi_err_file": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_FILE", + "abi_value": 30 + }, + "mpi_err_info_key": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_INFO_KEY", + "abi_value": 31 + }, + "mpi_err_info_nokey": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_INFO_NOKEY", + "abi_value": 32 + }, + "mpi_err_info_value": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_INFO_VALUE", + "abi_value": 33 + }, + "mpi_err_info": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_INFO", + "abi_value": 34 + }, + "mpi_err_io": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_IO", + "abi_value": 35 + }, + "mpi_err_keyval": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_KEYVAL", + "abi_value": 36 + }, + "mpi_err_locktype": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_LOCKTYPE", + "abi_value": 37 + }, + "mpi_err_name": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_NAME", + "abi_value": 38 + }, + "mpi_err_no_mem": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_NO_MEM", + "abi_value": 39 + }, + "mpi_err_not_same": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_NOT_SAME", + "abi_value": 40 + }, + "mpi_err_no_space": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_NO_SPACE", + "abi_value": 41 + }, + "mpi_err_no_such_file": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_NO_SUCH_FILE", + "abi_value": 42 + }, + "mpi_err_port": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_PORT", + "abi_value": 43 + }, + "mpi_err_quota": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_QUOTA", + "abi_value": 44 + }, + "mpi_err_read_only": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_READ_ONLY", + "abi_value": 45 + }, + "mpi_err_rma_attach": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_RMA_ATTACH", + "abi_value": 46 + }, + "mpi_err_rma_conflict": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_RMA_CONFLICT", + "abi_value": 47 + }, + "mpi_err_rma_range": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_RMA_RANGE", + "abi_value": 48 + }, + "mpi_err_rma_shared": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_RMA_SHARED", + "abi_value": 49 + }, + "mpi_err_rma_sync": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_RMA_SYNC", + "abi_value": 50 + }, + "mpi_err_service": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_SERVICE", + "abi_value": 51 + }, + "mpi_err_size": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_SIZE", + "abi_value": 52 + }, + "mpi_err_spawn": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_SPAWN", + "abi_value": 53 + }, + "mpi_err_unsupported_datarep": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_UNSUPPORTED_DATAREP", + "abi_value": 54 + }, + "mpi_err_unsupported_operation": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_UNSUPPORTED_OPERATION", + "abi_value": 55 + }, + "mpi_err_win": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_WIN", + "abi_value": 56 + }, + "mpi_err_rma_flavor": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_RMA_FLAVOR", + "abi_value": 57 + }, + "mpi_err_proc_aborted": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_PROC_ABORTED", + "abi_value": 58 + }, + "mpi_err_value_too_large": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_VALUE_TOO_LARGE", + "abi_value": 59 + }, + "mpi_err_session": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_SESSION", + "abi_value": 60 + }, + "mpi_err_errhandler": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_ERRHANDLER", + "abi_value": 61 + }, + "mpi_err_abi": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_ABI", + "abi_value": 62 + }, + "mpi_t_err_cannot_init": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_CANNOT_INIT", + "abi_value": 1001 + }, + "mpi_t_err_not_accessible": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_NOT_ACCESSIBLE", + "abi_value": 1002 + }, + "mpi_t_err_not_initialized": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_NOT_INITIALIZED", + "abi_value": 1003 + }, + "mpi_t_err_not_supported": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_NOT_SUPPORTED", + "abi_value": 1004 + }, + "mpi_t_err_memory": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_MEMORY", + "abi_value": 1005 + }, + "mpi_t_err_invalid": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_INVALID", + "abi_value": 1006 + }, + "mpi_t_err_invalid_index": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_INVALID_INDEX", + "abi_value": 1007 + }, + "mpi_t_err_invalid_item": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_INVALID_ITEM", + "abi_value": 1008 + }, + "mpi_t_err_invalid_session": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_INVALID_SESSION", + "abi_value": 1009 + }, + "mpi_t_err_invalid_handle": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_INVALID_HANDLE", + "abi_value": 1010 + }, + "mpi_t_err_invalid_name": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_INVALID_NAME", + "abi_value": 1011 + }, + "mpi_t_err_out_of_handles": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_OUT_OF_HANDLES", + "abi_value": 1012 + }, + "mpi_t_err_out_of_sessions": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_OUT_OF_SESSIONS", + "abi_value": 1013 + }, + "mpi_t_err_cvar_set_not_now": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_CVAR_SET_NOT_NOW", + "abi_value": 1014 + }, + "mpi_t_err_cvar_set_never": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_CVAR_SET_NEVER", + "abi_value": 1015 + }, + "mpi_t_err_pvar_no_write": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_PVAR_NO_WRITE", + "abi_value": 1016 + }, + "mpi_t_err_pvar_no_startstop": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_PVAR_NO_STARTSTOP", + "abi_value": 1017 + }, + "mpi_t_err_pvar_no_atomic": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_T_ERR_PVAR_NO_ATOMIC", + "abi_value": 1018 + }, + "mpi_err_lastcode": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ERROR_CLASSES", + "macro": "\\error", + "datatypes": {}, + "name": "MPI_ERR_LASTCODE", + "abi_value": 16383 + }, + "mpi_bottom": { + "handle_types": { + "c": { + "type": "void *", + "description": "\\ctype{void *}" + }, + "f90": { + "type": "", + "description": "(predefined memory location)" + }, + "f08": { + "type": "", + "description": "(predefined memory location)" + } + }, + "category": "BUFFER_ADDR_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_BOTTOM", + "abi_value": 0 + }, + "mpi_in_place": { + "handle_types": { + "c": { + "type": "void *", + "description": "\\ctype{void *}" + }, + "f90": { + "type": "", + "description": "(predefined memory location)" + }, + "f08": { + "type": "", + "description": "(predefined memory location)" + } + }, + "category": "BUFFER_ADDR_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_IN_PLACE", + "abi_value": 1 + }, + "mpi_buffer_automatic": { + "handle_types": { + "c": { + "type": "void *", + "description": "\\ctype{void *}" + }, + "f90": { + "type": "", + "description": "(predefined memory location)" + }, + "f08": { + "type": "", + "description": "(predefined memory location)" + } + }, + "category": "BUFFER_ADDR_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_BUFFER_AUTOMATIC", + "abi_value": 2 + }, + "mpi_argvs_null": { + "handle_types": { + "c": { + "type": "char***", + "description": "\\ctype{char***}" + }, + "f90": { + "type": "CHARACTER*(*)(*)", + "description": "2-dim.~array of \\ftype{CHARACTER*(*)}" + }, + "f08": { + "type": "CHARACTER*(*)(*)", + "description": "2-dim.~array of \\ftype{CHARACTER*(*)}" + } + }, + "category": "EMPTY_IGNORE_INPUT_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ARGVS_NULL", + "abi_value": 0 + }, + "mpi_argv_null": { + "handle_types": { + "c": { + "type": "char**", + "description": "\\ctype{char**}" + }, + "f90": { + "type": "CHARACTER*(*)", + "description": "array of \\ftype{CHARACTER*(*)}" + }, + "f08": { + "type": "CHARACTER*(*)", + "description": "array of \\ftype{CHARACTER*(*)}" + } + }, + "category": "EMPTY_IGNORE_INPUT_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ARGV_NULL", + "abi_value": 0 + }, + "mpi_errcodes_ignore": { + "handle_types": { + "c": { + "type": "int*", + "description": "\\ctype{int*}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}} array" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}} array" + } + }, + "category": "EMPTY_IGNORE_INPUT_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ERRCODES_IGNORE", + "abi_value": 0 + }, + "mpi_statuses_ignore": { + "handle_types": { + "c": { + "type": "MPI_Status*", + "description": "\\ctype{MPI_Status*}" + }, + "f90": { + "type": "INTEGER DIMENSION(MPI_STATUS_SIZE)", + "description": "\\ftype{INTEGER, DIMENSION(MPI_STATUS_SIZE)}" + }, + "f08": { + "type": "TYPE(MPI_Status) DIMENSION(*)", + "description": "\\mpiftype{TYPE(MPI_Status), DIMENSION(*)}" + } + }, + "category": "EMPTY_IGNORE_INPUT_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_STATUSES_IGNORE", + "abi_value": 0 + }, + "mpi_status_ignore": { + "handle_types": { + "c": { + "type": "MPI_Status*", + "description": "\\ctype{MPI_Status*}" + }, + "f90": { + "type": "INTEGER DIMENSION(MPI_STATUS_SIZE)", + "description": "\\ftype{INTEGER, DIMENSION(MPI_STATUS_SIZE)}" + }, + "f08": { + "type": "TYPE(MPI_Status) DIMENSION(*)", + "description": "\\mpiftype{TYPE(MPI_Status)}" + } + }, + "category": "EMPTY_IGNORE_INPUT_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_STATUS_IGNORE", + "abi_value": 0 + }, + "mpi_unweighted": { + "handle_types": { + "c": { + "type": "int*", + "description": "\\ctype{int*}" + }, + "f90": { + "type": "INTEGER(*)", + "description": "\\ftype{INTEGER} array" + }, + "f08": { + "type": "INTEGER(*)", + "description": "\\ftype{INTEGER} array" + } + }, + "category": "EMPTY_IGNORE_INPUT_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_UNWEIGHTED", + "abi_value": 10 + }, + "mpi_weights_empty": { + "handle_types": { + "c": { + "type": "int*", + "description": "\\ctype{int*}" + }, + "f90": { + "type": "INTEGER(*)", + "description": "\\ftype{INTEGER} array" + }, + "f08": { + "type": "INTEGER(*)", + "description": "\\ftype{INTEGER} array" + } + }, + "category": "EMPTY_IGNORE_INPUT_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_WEIGHTS_EMPTY", + "abi_value": 11 + }, + "mpi_max_datarep_string": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MAX_STR_SIZE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MAX_DATAREP_STRING", + "abi_value": 128 + }, + "mpi_max_error_string": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MAX_STR_SIZE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MAX_ERROR_STRING", + "abi_value": 512 + }, + "mpi_max_info_key": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MAX_STR_SIZE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MAX_INFO_KEY", + "abi_value": 256 + }, + "mpi_max_info_val": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MAX_STR_SIZE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MAX_INFO_VAL", + "abi_value": 1024 + }, + "mpi_max_library_version_string": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MAX_STR_SIZE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MAX_LIBRARY_VERSION_STRING", + "abi_value": 8192 + }, + "mpi_max_object_name": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MAX_STR_SIZE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MAX_OBJECT_NAME", + "abi_value": 128 + }, + "mpi_max_port_name": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MAX_STR_SIZE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MAX_PORT_NAME", + "abi_value": 1024 + }, + "mpi_max_processor_name": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MAX_STR_SIZE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MAX_PROCESSOR_NAME", + "abi_value": 256 + }, + "mpi_max_stringtag_len": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MAX_STR_SIZE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MAX_STRINGTAG_LEN", + "abi_value": 1024 + }, + "mpi_max_pset_name_len": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MAX_STR_SIZE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MAX_PSET_NAME_LEN", + "abi_value": 1024 + }, + "mpi_mode_append": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MODE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MODE_APPEND", + "abi_value": 1 + }, + "mpi_mode_create": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MODE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MODE_CREATE", + "abi_value": 2 + }, + "mpi_mode_delete_on_close": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MODE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MODE_DELETE_ON_CLOSE", + "abi_value": 4 + }, + "mpi_mode_excl": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MODE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MODE_EXCL", + "abi_value": 8 + }, + "mpi_mode_rdonly": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MODE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MODE_RDONLY", + "abi_value": 16 + }, + "mpi_mode_rdwr": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MODE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MODE_RDWR", + "abi_value": 32 + }, + "mpi_mode_sequential": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MODE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MODE_SEQUENTIAL", + "abi_value": 64 + }, + "mpi_mode_unique_open": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MODE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MODE_UNIQUE_OPEN", + "abi_value": 128 + }, + "mpi_mode_wronly": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MODE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MODE_WRONLY", + "abi_value": 256 + }, + "mpi_mode_nocheck": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MODE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MODE_NOCHECK", + "abi_value": 1024 + }, + "mpi_mode_noprecede": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MODE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MODE_NOPRECEDE", + "abi_value": 2048 + }, + "mpi_mode_noput": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MODE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MODE_NOPUT", + "abi_value": 4096 + }, + "mpi_mode_nostore": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MODE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MODE_NOSTORE", + "abi_value": 8192 + }, + "mpi_mode_nosucceed": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "MODE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MODE_NOSUCCEED", + "abi_value": 16384 + }, + "mpi_any_source": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ASSORTED_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ANY_SOURCE", + "abi_value": -1 + }, + "mpi_any_tag": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ASSORTED_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ANY_TAG", + "abi_value": -2 + }, + "mpi_proc_null": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ASSORTED_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_PROC_NULL", + "abi_value": -3 + }, + "mpi_root": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ASSORTED_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ROOT", + "abi_value": -4 + }, + "mpi_undefined": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ASSORTED_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_UNDEFINED", + "abi_value": -32766 + }, + "mpi_bsend_overhead": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ASSORTED_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_BSEND_OVERHEAD", + "abi_value": 512 + }, + "mpi_thread_single": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "THREADS_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_THREAD_SINGLE", + "abi_value": 0 + }, + "mpi_thread_funneled": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "THREADS_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_THREAD_FUNNELED", + "abi_value": 1024 + }, + "mpi_thread_serialized": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "THREADS_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_THREAD_SERIALIZED", + "abi_value": 2048 + }, + "mpi_thread_multiple": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "THREADS_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_THREAD_MULTIPLE", + "abi_value": 4096 + }, + "mpi_order_c": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "FILE_OPERATIONS_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ORDER_C", + "abi_value": 12 + }, + "mpi_order_fortran": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "FILE_OPERATIONS_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ORDER_FORTRAN", + "abi_value": 15 + }, + "mpi_distribute_none": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "FILE_OPERATIONS_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_DISTRIBUTE_NONE", + "abi_value": 16 + }, + "mpi_distribute_block": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "FILE_OPERATIONS_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_DISTRIBUTE_BLOCK", + "abi_value": 17 + }, + "mpi_distribute_cyclic": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "FILE_OPERATIONS_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_DISTRIBUTE_CYCLIC", + "abi_value": 18 + }, + "mpi_distribute_dflt_darg": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "FILE_OPERATIONS_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_DISTRIBUTE_DFLT_DARG", + "abi_value": 19 + }, + "mpi_combiner_named": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_NAMED", + "abi_value": 101 + }, + "mpi_combiner_dup": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_DUP", + "abi_value": 102 + }, + "mpi_combiner_contiguous": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_CONTIGUOUS", + "abi_value": 103 + }, + "mpi_combiner_vector": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_VECTOR", + "abi_value": 104 + }, + "mpi_combiner_hvector": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_HVECTOR", + "abi_value": 105 + }, + "mpi_combiner_indexed": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_INDEXED", + "abi_value": 106 + }, + "mpi_combiner_hindexed": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_HINDEXED", + "abi_value": 107 + }, + "mpi_combiner_indexed_block": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_INDEXED_BLOCK", + "abi_value": 108 + }, + "mpi_combiner_hindexed_block": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_HINDEXED_BLOCK", + "abi_value": 109 + }, + "mpi_combiner_struct": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_STRUCT", + "abi_value": 110 + }, + "mpi_combiner_subarray": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_SUBARRAY", + "abi_value": 111 + }, + "mpi_combiner_darray": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_DARRAY", + "abi_value": 112 + }, + "mpi_combiner_f90_real": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_F90_REAL", + "abi_value": 113 + }, + "mpi_combiner_f90_complex": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_F90_COMPLEX", + "abi_value": 114 + }, + "mpi_combiner_f90_integer": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_F90_INTEGER", + "abi_value": 115 + }, + "mpi_combiner_resized": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_RESIZED", + "abi_value": 116 + }, + "mpi_combiner_value_index": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "DATATYPE_DECODING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMBINER_VALUE_INDEX", + "abi_value": 117 + }, + "mpi_typeclass_integer": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "F90_DATATYPE_MATCHING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_TYPECLASS_INTEGER", + "abi_value": 192 + }, + "mpi_typeclass_real": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "F90_DATATYPE_MATCHING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_TYPECLASS_REAL", + "abi_value": 193 + }, + "mpi_typeclass_complex": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "F90_DATATYPE_MATCHING_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_TYPECLASS_COMPLEX", + "abi_value": 194 + }, + "mpi_ident": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "COMMUNICATOR_GROUP_COMP_RESULTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_IDENT", + "abi_value": 201 + }, + "mpi_congruent": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "COMMUNICATOR_GROUP_COMP_RESULTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_CONGRUENT", + "abi_value": 202 + }, + "mpi_similar": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "COMMUNICATOR_GROUP_COMP_RESULTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_SIMILAR", + "abi_value": 203 + }, + "mpi_unequal": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "COMMUNICATOR_GROUP_COMP_RESULTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_UNEQUAL", + "abi_value": 204 + }, + "mpi_cart": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\type{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\type{INTEGER}" + } + }, + "category": "TOPOLOGIES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_CART", + "abi_value": 211 + }, + "mpi_graph": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\type{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\type{INTEGER}" + } + }, + "category": "TOPOLOGIES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_GRAPH", + "abi_value": 212 + }, + "mpi_dist_graph": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\type{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\type{INTEGER}" + } + }, + "category": "TOPOLOGIES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_DIST_GRAPH", + "abi_value": 213 + }, + "mpi_comm_type_shared": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "COMMUNICATOR_SPLIT_TYPE", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMM_TYPE_SHARED", + "abi_value": 221 + }, + "mpi_comm_type_hw_unguided": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "COMMUNICATOR_SPLIT_TYPE", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMM_TYPE_HW_UNGUIDED", + "abi_value": 222 + }, + "mpi_comm_type_hw_guided": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "COMMUNICATOR_SPLIT_TYPE", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMM_TYPE_HW_GUIDED", + "abi_value": 223 + }, + "mpi_comm_type_resource_guided": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "COMMUNICATOR_SPLIT_TYPE", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMM_TYPE_RESOURCE_GUIDED", + "abi_value": 224 + }, + "mpi_lock_exclusive": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "WINDOW_LOCK_TYPE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_LOCK_EXCLUSIVE", + "abi_value": 301 + }, + "mpi_lock_shared": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "WINDOW_LOCK_TYPE_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_LOCK_SHARED", + "abi_value": 302 + }, + "mpi_win_flavor_create": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "WINDOW_CREATE_FLAVORS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_WIN_FLAVOR_CREATE", + "abi_value": 311 + }, + "mpi_win_flavor_allocate": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "WINDOW_CREATE_FLAVORS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_WIN_FLAVOR_ALLOCATE", + "abi_value": 312 + }, + "mpi_win_flavor_dynamic": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "WINDOW_CREATE_FLAVORS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_WIN_FLAVOR_DYNAMIC", + "abi_value": 313 + }, + "mpi_win_flavor_shared": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "WINDOW_CREATE_FLAVORS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_WIN_FLAVOR_SHARED", + "abi_value": 314 + }, + "mpi_win_unified": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "WINDOW_MODELS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_WIN_UNIFIED", + "abi_value": 321 + }, + "mpi_win_separate": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "WINDOW_MODELS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_WIN_SEPARATE", + "abi_value": 322 + }, + "mpi_seek_cur": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "FILE_POS_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_SEEK_CUR", + "abi_value": 401 + }, + "mpi_seek_end": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "FILE_POS_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_SEEK_END", + "abi_value": 402 + }, + "mpi_seek_set": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "FILE_POS_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_SEEK_SET", + "abi_value": 403 + }, + "mpi_displacement_current": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "FILE_OP_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_DISPLACEMENT_CURRENT", + "abi_value": -1 + }, + "mpi_keyval_invalid": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ENV_INQ_AND_ATTR_KEYS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_KEYVAL_INVALID", + "abi_value": 0 + }, + "mpi_tag_ub": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ENV_INQ_AND_ATTR_KEYS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_TAG_UB", + "abi_value": 501 + }, + "mpi_io": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ENV_INQ_AND_ATTR_KEYS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_IO", + "abi_value": 502 + }, + "mpi_host": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ENV_INQ_AND_ATTR_KEYS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_HOST", + "abi_value": 503 + }, + "mpi_wtime_is_global": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ENV_INQ_AND_ATTR_KEYS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_WTIME_IS_GLOBAL", + "abi_value": 504 + }, + "mpi_appnum": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ENV_INQ_AND_ATTR_KEYS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_APPNUM", + "abi_value": 505 + }, + "mpi_lastusedcode": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ENV_INQ_AND_ATTR_KEYS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_LASTUSEDCODE", + "abi_value": 506 + }, + "mpi_universe_size": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ENV_INQ_AND_ATTR_KEYS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_UNIVERSE_SIZE", + "abi_value": 507 + }, + "mpi_win_base": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ENV_INQ_AND_ATTR_KEYS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_WIN_BASE", + "abi_value": 601 + }, + "mpi_win_disp_unit": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ENV_INQ_AND_ATTR_KEYS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_WIN_DISP_UNIT", + "abi_value": 602 + }, + "mpi_win_size": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ENV_INQ_AND_ATTR_KEYS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_WIN_SIZE", + "abi_value": 603 + }, + "mpi_win_create_flavor": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ENV_INQ_AND_ATTR_KEYS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_WIN_CREATE_FLAVOR", + "abi_value": 604 + }, + "mpi_win_model": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "ENV_INQ_AND_ATTR_KEYS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_WIN_MODEL", + "abi_value": 605 + }, + "mpi_subarrays_supported": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": "LOGICAL", + "description": "\\ftype{LOGICAL}" + }, + "f08": { + "type": "LOGICAL", + "description": "\\ftype{LOGICAL}" + } + }, + "category": "FORTRAN_SUPPORT_METHOD_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_SUBARRAYS_SUPPORTED", + "abi_value": null + }, + "mpi_async_protects_nonblocking": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": "LOGICAL", + "description": "\\ftype{LOGICAL}" + }, + "f08": { + "type": "LOGICAL", + "description": "\\ftype{LOGICAL}" + } + }, + "category": "FORTRAN_SUPPORT_METHOD_CONSTANTS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ASYNC_PROTECTS_NONBLOCKING", + "abi_value": null + }, + "mpi_status_size": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "STATUS_ARRAY_SIZE_AND_INDEX_FORTRAN", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_STATUS_SIZE", + "abi_value": 8 + }, + "mpi_source": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "STATUS_ARRAY_SIZE_AND_INDEX_FORTRAN", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_SOURCE", + "abi_value": 1 + }, + "mpi_tag": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "STATUS_ARRAY_SIZE_AND_INDEX_FORTRAN", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_TAG", + "abi_value": 2 + }, + "mpi_error": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "STATUS_ARRAY_SIZE_AND_INDEX_FORTRAN", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ERROR", + "abi_value": 3 + }, + "mpi_f_status_size": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "FORTRAN_STATUS_ARRAY_SIZE_AND_INDEX_C", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_F_STATUS_SIZE", + "abi_value": 8 + }, + "mpi_f_source": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "FORTRAN_STATUS_ARRAY_SIZE_AND_INDEX_C", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_F_SOURCE", + "abi_value": 0 + }, + "mpi_f_tag": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "FORTRAN_STATUS_ARRAY_SIZE_AND_INDEX_C", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_F_TAG", + "abi_value": 1 + }, + "mpi_f_error": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "FORTRAN_STATUS_ARRAY_SIZE_AND_INDEX_C", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_F_ERROR", + "abi_value": 2 + }, + "mpi_address_kind": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "VARIABLE_ADDR_SIZE_FORTRAN", + "macro": "\\mpiconstmain", + "datatypes": {}, + "name": "MPI_ADDRESS_KIND", + "abi_value": "\\code{c_intptr_t}" + }, + "mpi_offset_kind": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "VARIABLE_ADDR_SIZE_FORTRAN", + "macro": "\\mpiconstmain", + "datatypes": {}, + "name": "MPI_OFFSET_KIND", + "abi_value": "\\code{c_int64_t}" + }, + "mpi_count_kind": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "VARIABLE_ADDR_SIZE_FORTRAN", + "macro": "\\mpiconstmain", + "datatypes": {}, + "name": "MPI_COUNT_KIND", + "abi_value": "\\code{c_int64_t}" + }, + "mpi_comm_null": { + "handle_types": { + "c": { + "type": "MPI_Comm", + "description": "\\ctype{MPI_Comm}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_COMM", + "description": "\\mpiftype{TYPE(MPI_Comm)}" + } + }, + "category": "RESERVED_COMMUNICATORS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMM_NULL", + "abi_value": 256 + }, + "mpi_comm_world": { + "handle_types": { + "c": { + "type": "MPI_Comm", + "description": "\\ctype{MPI_Comm}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_COMM", + "description": "\\mpiftype{TYPE(MPI_Comm)}" + } + }, + "category": "RESERVED_COMMUNICATORS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMM_WORLD", + "abi_value": 257 + }, + "mpi_comm_self": { + "handle_types": { + "c": { + "type": "MPI_Comm", + "description": "\\ctype{MPI_Comm}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_COMM", + "description": "\\mpiftype{TYPE(MPI_Comm)}" + } + }, + "category": "RESERVED_COMMUNICATORS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_COMM_SELF", + "abi_value": 258 + }, + "mpi_datatype_null": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": null, + "description": "\\ctype{}" + } + }, + "name": "MPI_DATATYPE_NULL", + "abi_value": 512 + }, + "mpi_aint": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "MPI_Aint", + "description": "\\ctype{MPI_Aint}" + }, + "f90": { + "type": "ADDRESS", + "description": "\\mpiftypekind{ADDRESS}" + }, + "f08": { + "type": "ADDRESS", + "description": "\\mpiftypekind{ADDRESS}" + } + }, + "name": "MPI_AINT", + "abi_value": 513 + }, + "mpi_count": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "MPI_Count", + "description": "\\ctype{MPI_Count}" + }, + "f90": { + "type": "COUNT", + "description": "\\mpiftypekind{COUNT}" + }, + "f08": { + "type": "COUNT", + "description": "\\mpiftypekind{COUNT}" + } + }, + "name": "MPI_COUNT", + "abi_value": 514 + }, + "mpi_offset": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "MPI_Offset", + "description": "\\ctype{MPI_Offset}" + }, + "f90": { + "type": "OFFSET", + "description": "\\mpiftypekind{OFFSET}" + }, + "f08": { + "type": "OFFSET", + "description": "\\mpiftypekind{OFFSET}" + } + }, + "name": "MPI_OFFSET", + "abi_value": 515 + }, + "mpi_packed": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": null, + "description": "(any C datatype)" + }, + "f90": { + "type": null, + "description": "{(any Fortran type)}" + }, + "f08": { + "type": null, + "description": "{(any Fortran type)}" + } + }, + "name": "MPI_PACKED", + "abi_value": 519 + }, + "mpi_short": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "signed short", + "description": "\\ctype{signed short}" + } + }, + "name": "MPI_SHORT", + "abi_value": 520 + }, + "mpi_int": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "signed int", + "description": "\\ctype{signed int}" + } + }, + "name": "MPI_INT", + "abi_value": 521 + }, + "mpi_long": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "signed long", + "description": "\\ctype{signed long}" + } + }, + "name": "MPI_LONG", + "abi_value": 522 + }, + "mpi_long_long_int": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "signed long long", + "description": "\\ctype{signed long long}" + } + }, + "name": "MPI_LONG_LONG_INT", + "abi_value": 523 + }, + "mpi_long_long": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "signed long long", + "description": "\\ctype{signed long long}" + } + }, + "name": "MPI_LONG_LONG", + "abi_value": 523 + }, + "mpi_unsigned_short": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "unsigned short", + "description": "\\ctype{unsigned short}" + } + }, + "name": "MPI_UNSIGNED_SHORT", + "abi_value": 524 + }, + "mpi_unsigned": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "unsigned int", + "description": "\\ctype{unsigned int}" + } + }, + "name": "MPI_UNSIGNED", + "abi_value": 525 + }, + "mpi_unsigned_long": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "unsigned long", + "description": "\\ctype{unsigned long}" + } + }, + "name": "MPI_UNSIGNED_LONG", + "abi_value": 526 + }, + "mpi_unsigned_long_long": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "unsigned long long", + "description": "\\ctype{unsigned long long}" + } + }, + "name": "MPI_UNSIGNED_LONG_LONG", + "abi_value": 527 + }, + "mpi_float": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "float", + "description": "\\ctype{float}" + } + }, + "name": "MPI_FLOAT", + "abi_value": 528 + }, + "mpi_c_complex": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "float _Complex", + "description": "\\ctype{float _Complex}" + } + }, + "name": "MPI_C_COMPLEX", + "abi_value": 530 + }, + "mpi_c_float_complex": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "float _Complex", + "description": "\\ctype{float _Complex}" + } + }, + "name": "MPI_C_FLOAT_COMPLEX", + "abi_value": 530 + }, + "mpi_double": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "double", + "description": "\\ctype{double}" + } + }, + "name": "MPI_DOUBLE", + "abi_value": 532 + }, + "mpi_c_double_complex": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "double _Complex", + "description": "\\ctype{double _Complex}" + } + }, + "name": "MPI_C_DOUBLE_COMPLEX", + "abi_value": 534 + }, + "mpi_long_double": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "long double", + "description": "\\ctype{long double}" + } + }, + "name": "MPI_LONG_DOUBLE", + "abi_value": 544 + }, + "mpi_c_long_double_complex": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "long double _Complex", + "description": "\\ctype{long double _Complex}" + } + }, + "name": "MPI_C_LONG_DOUBLE_COMPLEX", + "abi_value": 548 + }, + "mpi_c_bool": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "_Bool", + "description": "\\ctype{_Bool}" + } + }, + "name": "MPI_C_BOOL", + "abi_value": 568 + }, + "mpi_wchar": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "wchar_t", + "description": "\\ctype{wchar_t}" + } + }, + "name": "MPI_WCHAR", + "abi_value": 572 + }, + "mpi_int8_t": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "int8_t", + "description": "\\ctype{int8_t}" + } + }, + "name": "MPI_INT8_T", + "abi_value": 576 + }, + "mpi_uint8_t": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "uint8_t", + "description": "\\ctype{uint8_t}" + } + }, + "name": "MPI_UINT8_T", + "abi_value": 577 + }, + "mpi_char": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "char", + "description": "\\ctype{char}" + } + }, + "name": "MPI_CHAR", + "abi_value": 579 + }, + "mpi_signed_char": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "signed char", + "description": "\\ctype{signed char}" + } + }, + "name": "MPI_SIGNED_CHAR", + "abi_value": 580 + }, + "mpi_unsigned_char": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "unsigned char", + "description": "\\ctype{unsigned char}" + } + }, + "name": "MPI_UNSIGNED_CHAR", + "abi_value": 581 + }, + "mpi_byte": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "(any C datatype)", + "description": "\\ctype{(any C datatype)}" + }, + "f90": { + "type": null, + "description": "{(any Fortran type)}" + }, + "f08": { + "type": null, + "description": "{(any Fortran type)}" + } + }, + "name": "MPI_BYTE", + "abi_value": 583 + }, + "mpi_int16_t": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "int16_t", + "description": "\\ctype{int16_t}" + } + }, + "name": "MPI_INT16_T", + "abi_value": 584 + }, + "mpi_uint16_t": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "uint16_t", + "description": "\\ctype{uint16_t}" + } + }, + "name": "MPI_UINT16_T", + "abi_value": 585 + }, + "mpi_int32_t": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "int32_t", + "description": "\\ctype{int32_t}" + } + }, + "name": "MPI_INT32_T", + "abi_value": 592 + }, + "mpi_uint32_t": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "uint32_t", + "description": "\\ctype{uint32_t}" + } + }, + "name": "MPI_UINT32_T", + "abi_value": 593 + }, + "mpi_int64_t": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "int64_t", + "description": "\\ctype{int64_t}" + } + }, + "name": "MPI_INT64_T", + "abi_value": 600 + }, + "mpi_uint64_t": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "c": { + "type": "uint64_t", + "description": "\\ctype{uint64_t}" + } + }, + "name": "MPI_UINT64_T", + "abi_value": 601 + }, + "mpi_logical": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "LOGICAL", + "description": "\\ftype{LOGICAL}" + }, + "f08": { + "type": "LOGICAL", + "description": "\\ftype{LOGICAL}" + } + }, + "name": "MPI_LOGICAL", + "abi_value": 536 + }, + "mpi_integer": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "MPI_INTEGER", + "abi_value": 537 + }, + "mpi_real": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "REAL", + "description": "\\ftype{REAL}" + }, + "f08": { + "type": "REAL", + "description": "\\ftype{REAL}" + } + }, + "name": "MPI_REAL", + "abi_value": 538 + }, + "mpi_complex": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "COMPLEX", + "description": "\\ftype{COMPLEX}" + }, + "f08": { + "type": "COMPLEX", + "description": "\\ftype{COMPLEX}" + } + }, + "name": "MPI_COMPLEX", + "abi_value": 539 + }, + "mpi_double_precision": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "DOUBLE PRECISION", + "description": "\\ftype{DOUBLE PRECISION}" + }, + "f08": { + "type": "DOUBLE PRECISION", + "description": "\\ftype{DOUBLE PRECISION}" + } + }, + "name": "MPI_DOUBLE_PRECISION", + "abi_value": 540 + }, + "mpi_character": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "CHARACTER(1)", + "description": "\\ftype{CHARACTER(1)}" + }, + "f08": { + "type": "CHARACTER(1)", + "description": "\\ftype{CHARACTER(1)}" + } + }, + "name": "MPI_CHARACTER", + "abi_value": 542 + }, + "mpi_cxx_float_complex": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "cpp": { + "type": "std::complex", + "description": "\\ctype{std::complex}" + } + }, + "name": "MPI_CXX_FLOAT_COMPLEX", + "abi_value": 531 + }, + "mpi_cxx_double_complex": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "cpp": { + "type": "std::complex", + "description": "\\ctype{std::complex}" + } + }, + "name": "MPI_CXX_DOUBLE_COMPLEX", + "abi_value": 535 + }, + "mpi_cxx_long_double_complex": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "cpp": { + "type": "std::complex", + "description": "\\ctype{std::complex}" + } + }, + "name": "MPI_CXX_LONG_DOUBLE_COMPLEX", + "abi_value": 549 + }, + "mpi_cxx_bool": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "PREDEFINED_DATATYPES", + "macro": "\\type", + "datatypes": { + "cpp": { + "type": "bool", + "description": "\\ctype{bool}" + } + }, + "name": "MPI_CXX_BOOL", + "abi_value": 569 + }, + "mpi_double_complex": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "DOUBLE COMPLEX", + "description": "\\ftype{DOUBLE COMPLEX}" + }, + "f08": { + "type": "DOUBLE COMPLEX", + "description": "\\ftype{DOUBLE COMPLEX}" + } + }, + "name": "MPI_DOUBLE_COMPLEX", + "abi_value": 541 + }, + "mpi_logical1": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "LOGICAL*1", + "description": "\\ftype{LOGICAL*1}" + }, + "f08": { + "type": "LOGICAL*1", + "description": "\\ftype{LOGICAL*1}" + } + }, + "name": "MPI_LOGICAL1", + "abi_value": 704 + }, + "mpi_logical2": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "LOGICAL*2", + "description": "\\ftype{LOGICAL*2}" + }, + "f08": { + "type": "LOGICAL*2", + "description": "\\ftype{LOGICAL*2}" + } + }, + "name": "MPI_LOGICAL2", + "abi_value": 712 + }, + "mpi_logical4": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "LOGICAL*4", + "description": "\\ftype{LOGICAL*4}" + }, + "f08": { + "type": "LOGICAL*4", + "description": "\\ftype{LOGICAL*4}" + } + }, + "name": "MPI_LOGICAL4", + "abi_value": 720 + }, + "mpi_logical8": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "LOGICAL*8", + "description": "\\ftype{LOGICAL*8}" + }, + "f08": { + "type": "LOGICAL*8", + "description": "\\ftype{LOGICAL*8}" + } + }, + "name": "MPI_LOGICAL8", + "abi_value": 728 + }, + "mpi_logical16": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "LOGICAL*16", + "description": "\\ftype{LOGICAL*16}" + }, + "f08": { + "type": "LOGICAL*16", + "description": "\\ftype{LOGICAL*16}" + } + }, + "name": "MPI_LOGICAL16", + "abi_value": 736 + }, + "mpi_integer1": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "INTEGER*1", + "description": "\\ftype{INTEGER*1}" + }, + "f08": { + "type": "INTEGER*1", + "description": "\\ftype{INTEGER*1}" + } + }, + "name": "MPI_INTEGER1", + "abi_value": 705 + }, + "mpi_integer2": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "INTEGER*2", + "description": "\\ftype{INTEGER*2}" + }, + "f08": { + "type": "INTEGER*2", + "description": "\\ftype{INTEGER*2}" + } + }, + "name": "MPI_INTEGER2", + "abi_value": 713 + }, + "mpi_integer4": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "INTEGER*4", + "description": "\\ftype{INTEGER*4}" + }, + "f08": { + "type": "INTEGER*4", + "description": "\\ftype{INTEGER*4}" + } + }, + "name": "MPI_INTEGER4", + "abi_value": 721 + }, + "mpi_integer8": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "INTEGER*8", + "description": "\\ftype{INTEGER*8}" + }, + "f08": { + "type": "INTEGER*8", + "description": "\\ftype{INTEGER*8}" + } + }, + "name": "MPI_INTEGER8", + "abi_value": 729 + }, + "mpi_integer16": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "INTEGER*16", + "description": "\\ftype{INTEGER*16}" + }, + "f08": { + "type": "INTEGER*16", + "description": "\\ftype{INTEGER*16}" + } + }, + "name": "MPI_INTEGER16", + "abi_value": 737 + }, + "mpi_real2": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "REAL*2", + "description": "\\ftype{REAL*2}" + }, + "f08": { + "type": "REAL*2", + "description": "\\ftype{REAL*2}" + } + }, + "name": "MPI_REAL2", + "abi_value": 714 + }, + "mpi_real4": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "REAL*4", + "description": "\\ftype{REAL*4}" + }, + "f08": { + "type": "REAL*4", + "description": "\\ftype{REAL*4}" + } + }, + "name": "MPI_REAL4", + "abi_value": 722 + }, + "mpi_real8": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "REAL*8", + "description": "\\ftype{REAL*8}" + }, + "f08": { + "type": "REAL*8", + "description": "\\ftype{REAL*8}" + } + }, + "name": "MPI_REAL8", + "abi_value": 730 + }, + "mpi_real16": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "REAL*16", + "description": "\\ftype{REAL*16}" + }, + "f08": { + "type": "REAL*16", + "description": "\\ftype{REAL*16}" + } + }, + "name": "MPI_REAL16", + "abi_value": 738 + }, + "mpi_complex4": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "COMPLEX*4", + "description": "\\ftype{COMPLEX*4}" + }, + "f08": { + "type": "COMPLEX*4", + "description": "\\ftype{COMPLEX*4}" + } + }, + "name": "MPI_COMPLEX4", + "abi_value": 723 + }, + "mpi_complex8": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "COMPLEX*8", + "description": "\\ftype{COMPLEX*8}" + }, + "f08": { + "type": "COMPLEX*8", + "description": "\\ftype{COMPLEX*8}" + } + }, + "name": "MPI_COMPLEX8", + "abi_value": 731 + }, + "mpi_complex16": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "COMPLEX*16", + "description": "\\ftype{COMPLEX*16}" + }, + "f08": { + "type": "COMPLEX*16", + "description": "\\ftype{COMPLEX*16}" + } + }, + "name": "MPI_COMPLEX16", + "abi_value": 739 + }, + "mpi_complex32": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "category": "OPT_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": { + "f90": { + "type": "COMPLEX*32", + "description": "\\ftype{COMPLEX*32}" + }, + "f08": { + "type": "COMPLEX*32", + "description": "\\ftype{COMPLEX*32}" + } + }, + "name": "MPI_COMPLEX32", + "abi_value": 747 + }, + "mpi_float_int": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Datatype}" + } + }, + "category": "REDUCTION_FUNC_DATATYPES_C", + "macro": "\\type", + "datatypes": {}, + "name": "MPI_FLOAT_INT", + "abi_value": 552 + }, + "mpi_double_int": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Datatype}" + } + }, + "category": "REDUCTION_FUNC_DATATYPES_C", + "macro": "\\type", + "datatypes": {}, + "name": "MPI_DOUBLE_INT", + "abi_value": 553 + }, + "mpi_long_int": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Datatype}" + } + }, + "category": "REDUCTION_FUNC_DATATYPES_C", + "macro": "\\type", + "datatypes": {}, + "name": "MPI_LONG_INT", + "abi_value": 554 + }, + "mpi_2int": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Datatype}" + } + }, + "category": "REDUCTION_FUNC_DATATYPES_C", + "macro": "\\type", + "datatypes": {}, + "name": "MPI_2INT", + "abi_value": 555 + }, + "mpi_short_int": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Datatype}" + } + }, + "category": "REDUCTION_FUNC_DATATYPES_C", + "macro": "\\type", + "datatypes": {}, + "name": "MPI_SHORT_INT", + "abi_value": 556 + }, + "mpi_long_double_int": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Datatype}" + } + }, + "category": "REDUCTION_FUNC_DATATYPES_C", + "macro": "\\type", + "datatypes": {}, + "name": "MPI_LONG_DOUBLE_INT", + "abi_value": 557 + }, + "mpi_2real": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Datatype}" + } + }, + "category": "REDUCTION_FUNC_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": {}, + "name": "MPI_2REAL", + "abi_value": 560 + }, + "mpi_2double_precision": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Datatype}" + } + }, + "category": "REDUCTION_FUNC_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": {}, + "name": "MPI_2DOUBLE_PRECISION", + "abi_value": 561 + }, + "mpi_2integer": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Datatype}" + } + }, + "category": "REDUCTION_FUNC_DATATYPES_FORTRAN", + "macro": "\\type", + "datatypes": {}, + "name": "MPI_2INTEGER", + "abi_value": 562 + }, + "mpi_message_null": { + "handle_types": { + "c": { + "type": "MPI_Message", + "description": "\\ctype{MPI_Message}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Message", + "description": "\\mpiftype{MPI_Message}" + } + }, + "category": "MSG_HANDLES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MESSAGE_NULL", + "abi_value": 296 + }, + "mpi_message_no_proc": { + "handle_types": { + "c": { + "type": "MPI_Message", + "description": "\\ctype{MPI_Message}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Message", + "description": "\\mpiftype{MPI_Message}" + } + }, + "category": "MSG_HANDLES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MESSAGE_NO_PROC", + "abi_value": 297 + }, + "mpi_errhandler_null": { + "handle_types": { + "c": { + "type": "MPI_Errhandler", + "description": "\\ctype{MPI_Errhandler}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Errhandler}" + } + }, + "category": "ERROR_SPECIFIERS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ERRHANDLER_NULL", + "abi_value": 320 + }, + "mpi_errors_are_fatal": { + "handle_types": { + "c": { + "type": "MPI_Errhandler", + "description": "\\ctype{MPI_Errhandler}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Errhandler}" + } + }, + "category": "ERROR_SPECIFIERS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ERRORS_ARE_FATAL", + "abi_value": 321 + }, + "mpi_errors_abort": { + "handle_types": { + "c": { + "type": "MPI_Errhandler", + "description": "\\ctype{MPI_Errhandler}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Errhandler}" + } + }, + "category": "ERROR_SPECIFIERS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ERRORS_ABORT", + "abi_value": 322 + }, + "mpi_errors_return": { + "handle_types": { + "c": { + "type": "MPI_Errhandler", + "description": "\\ctype{MPI_Errhandler}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Errhandler}" + } + }, + "category": "ERROR_SPECIFIERS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ERRORS_RETURN", + "abi_value": 323 + }, + "mpi_info_null": { + "handle_types": { + "c": { + "type": "MPI_Info", + "description": "\\ctype{MPI_Info}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Info}" + } + }, + "category": "ENV_INQ_INFO_KEY", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_INFO_NULL", + "abi_value": 304 + }, + "mpi_info_env": { + "handle_types": { + "c": { + "type": "MPI_Info", + "description": "\\ctype{MPI_Info}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Info}" + } + }, + "category": "ENV_INQ_INFO_KEY", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_INFO_ENV", + "abi_value": 305 + }, + "mpi_op_null": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "category": "COLLECTIVE_OPS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_OP_NULL", + "abi_value": 32 + }, + "mpi_sum": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "category": "COLLECTIVE_OPS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_SUM", + "abi_value": 33 + }, + "mpi_min": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "category": "COLLECTIVE_OPS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MIN", + "abi_value": 34 + }, + "mpi_max": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "category": "COLLECTIVE_OPS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MAX", + "abi_value": 35 + }, + "mpi_prod": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "category": "COLLECTIVE_OPS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_PROD", + "abi_value": 36 + }, + "mpi_band": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "category": "COLLECTIVE_OPS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_BAND", + "abi_value": 40 + }, + "mpi_bor": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "category": "COLLECTIVE_OPS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_BOR", + "abi_value": 41 + }, + "mpi_bxor": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "category": "COLLECTIVE_OPS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_BXOR", + "abi_value": 42 + }, + "mpi_land": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "category": "COLLECTIVE_OPS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_LAND", + "abi_value": 48 + }, + "mpi_lor": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "category": "COLLECTIVE_OPS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_LOR", + "abi_value": 49 + }, + "mpi_lxor": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "category": "COLLECTIVE_OPS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_LXOR", + "abi_value": 50 + }, + "mpi_minloc": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "category": "COLLECTIVE_OPS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MINLOC", + "abi_value": 56 + }, + "mpi_maxloc": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "category": "COLLECTIVE_OPS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_MAXLOC", + "abi_value": 57 + }, + "mpi_replace": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "category": "COLLECTIVE_OPS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_REPLACE", + "abi_value": 60 + }, + "mpi_no_op": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "category": "COLLECTIVE_OPS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_NO_OP", + "abi_value": 61 + }, + "mpi_group_null": { + "handle_types": { + "c": { + "type": "MPI_Group", + "description": "\\ctype{MPI_Group}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Group", + "description": "\\mpiftype{MPI_Group}" + } + }, + "category": "GROUP_HANDLES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_GROUP_NULL", + "abi_value": 264 + }, + "mpi_group_empty": { + "handle_types": { + "c": { + "type": "MPI_Group", + "description": "\\ctype{MPI_Group}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Group", + "description": "\\mpiftype{MPI_Group}" + } + }, + "category": "GROUP_HANDLES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_GROUP_EMPTY", + "abi_value": 265 + }, + "mpi_request_null": { + "handle_types": { + "c": { + "type": "MPI_Request", + "description": "\\ctype{MPI_Request}" + }, + "f90": { + "type": "INTEGER", + "description": null + }, + "f08": { + "type": "TYPE(MPI_Request)", + "description": null + } + }, + "category": "OTHER_HANDLES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_REQUEST_NULL", + "abi_value": 384 + }, + "mpi_file_null": { + "handle_types": { + "c": { + "type": "MPI_File", + "description": "\\ctype{MPI_File}" + }, + "f90": { + "type": "INTEGER", + "description": null + }, + "f08": { + "type": "TYPE(MPI_File)", + "description": null + } + }, + "category": "OTHER_HANDLES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_FILE_NULL", + "abi_value": 280 + }, + "mpi_session_null": { + "handle_types": { + "c": { + "type": "MPI_Session", + "description": "\\ctype{MPI_Session}" + }, + "f90": { + "type": "INTEGER", + "description": null + }, + "f08": { + "type": "TYPE(MPI_Session)", + "description": null + } + }, + "category": "OTHER_HANDLES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_SESSION_NULL", + "abi_value": 288 + }, + "mpi_win_null": { + "handle_types": { + "c": { + "type": "MPI_Win", + "description": "\\ctype{MPI_Win}" + }, + "f90": { + "type": "INTEGER", + "description": null + }, + "f08": { + "type": "TYPE(MPI_Win)", + "description": null + } + }, + "category": "OTHER_HANDLES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_WIN_NULL", + "abi_value": 272 + }, + "mpi_comm_null_copy_fn": { + "handle_types": { + "c": { + "type": "MPI_Comm_copy_attr_function", + "description": "\\ctype{MPI_Comm_copy_attr_function}" + }, + "f90": { + "type": "COMM_COPY_ATTR_FUNCTION", + "description": "\\mpifcallback{COMM_COPY_ATTR_FUNCTION}}" + }, + "f08": { + "type": "PROCEDURE(MPI_Comm_copy_attr_function)", + "description": "\\mpifcallbackskip{PROCEDURE(MPI_Comm_copy_attr_function)}" + } + }, + "category": "FUNCTIONS", + "macro": "\\mpiconstfunc", + "datatypes": {}, + "name": "MPI_COMM_NULL_COPY_FN", + "abi_value": 0 + }, + "mpi_comm_dup_fn": { + "handle_types": { + "c": { + "type": "MPI_Comm_copy_attr_function", + "description": "\\ctype{MPI_Comm_copy_attr_function}" + }, + "f90": { + "type": "COMM_COPY_ATTR_FUNCTION", + "description": "\\mpifcallback{COMM_COPY_ATTR_FUNCTION}}" + }, + "f08": { + "type": "PROCEDURE(MPI_Comm_copy_attr_function)", + "description": "\\mpifcallbackskip{PROCEDURE(MPI_Comm_copy_attr_function)}" + } + }, + "category": "FUNCTIONS", + "macro": "\\mpiconstfunc", + "datatypes": {}, + "name": "MPI_COMM_DUP_FN", + "abi_value": 1 + }, + "mpi_comm_null_delete_fn": { + "handle_types": { + "c": { + "type": "MPI_Comm_delete_attr_function", + "description": "\\ctype{MPI_Comm_delete_attr_function}" + }, + "f90": { + "type": "COMM_DELETE_ATTR_FUNCTION", + "description": "\\mpifcallback{COMM_DELETE_ATTR_FUNCTION}}" + }, + "f08": { + "type": "PROCEDURE(MPI_Comm_delete_attr_function)", + "description": "\\mpifcallbackskip{PROCEDURE(MPI_Comm_delete_attr_function)}" + } + }, + "category": "FUNCTIONS", + "macro": "\\mpiconstfunc", + "datatypes": {}, + "name": "MPI_COMM_NULL_DELETE_FN", + "abi_value": 0 + }, + "mpi_win_null_copy_fn": { + "handle_types": { + "c": { + "type": "MPI_Win_copy_attr_function", + "description": "\\ctype{MPI_Win_copy_attr_function}" + }, + "f90": { + "type": "WIN_COPY_ATTR_FUNCTION", + "description": "\\mpifcallback{WIN_COPY_ATTR_FUNCTION}}" + }, + "f08": { + "type": "PROCEDURE(MPI_Win_copy_attr_function)", + "description": "\\mpifcallbackskip{PROCEDURE(MPI_Win_copy_attr_function)}" + } + }, + "category": "FUNCTIONS", + "macro": "\\mpiconstfunc", + "datatypes": {}, + "name": "MPI_WIN_NULL_COPY_FN", + "abi_value": 0 + }, + "mpi_win_dup_fn": { + "handle_types": { + "c": { + "type": "MPI_Win_copy_attr_function", + "description": "\\ctype{MPI_Win_copy_attr_function}" + }, + "f90": { + "type": "WIN_COPY_ATTR_FUNCTION", + "description": "\\mpifcallback{WIN_COPY_ATTR_FUNCTION}}" + }, + "f08": { + "type": "PROCEDURE(MPI_Win_copy_attr_function)", + "description": "\\mpifcallbackskip{PROCEDURE(MPI_Win_copy_attr_function)}" + } + }, + "category": "FUNCTIONS", + "macro": "\\mpiconstfunc", + "datatypes": {}, + "name": "MPI_WIN_DUP_FN", + "abi_value": 1 + }, + "mpi_win_null_delete_fn": { + "handle_types": { + "c": { + "type": "MPI_Win_delete_attr_function", + "description": "\\ctype{MPI_Win_delete_attr_function}" + }, + "f90": { + "type": "WIN_DELETE_ATTR_FUNCTION", + "description": "\\mpifcallback{WIN_DELETE_ATTR_FUNCTION}}" + }, + "f08": { + "type": "PROCEDURE(MPI_Win_delete_attr_function)", + "description": "\\mpifcallbackskip{PROCEDURE(MPI_Win_delete_attr_function)}" + } + }, + "category": "FUNCTIONS", + "macro": "\\mpiconstfunc", + "datatypes": {}, + "name": "MPI_WIN_NULL_DELETE_FN", + "abi_value": 0 + }, + "mpi_type_null_copy_fn": { + "handle_types": { + "c": { + "type": "MPI_Type_copy_attr_function", + "description": "\\ctype{MPI_Type_copy_attr_function}" + }, + "f90": { + "type": "TYPE_COPY_ATTR_FUNCTION", + "description": "\\mpifcallback{TYPE_COPY_ATTR_FUNCTION}}" + }, + "f08": { + "type": "PROCEDURE(MPI_Type_copy_attr_function)", + "description": "\\mpifcallbackskip{PROCEDURE(MPI_Type_copy_attr_function)}" + } + }, + "category": "FUNCTIONS", + "macro": "\\mpiconstfunc", + "datatypes": {}, + "name": "MPI_TYPE_NULL_COPY_FN", + "abi_value": 0 + }, + "mpi_type_dup_fn": { + "handle_types": { + "c": { + "type": "MPI_Type_copy_attr_function", + "description": "\\ctype{MPI_Type_copy_attr_function}" + }, + "f90": { + "type": "TYPE_COPY_ATTR_FUNCTION", + "description": "\\mpifcallback{TYPE_COPY_ATTR_FUNCTION}}" + }, + "f08": { + "type": "PROCEDURE(MPI_Type_copy_attr_function)", + "description": "\\mpifcallbackskip{PROCEDURE(MPI_Type_copy_attr_function)}" + } + }, + "category": "FUNCTIONS", + "macro": "\\mpiconstfunc", + "datatypes": {}, + "name": "MPI_TYPE_DUP_FN", + "abi_value": 1 + }, + "mpi_type_null_delete_fn": { + "handle_types": { + "c": { + "type": "MPI_Type_delete_attr_function", + "description": "\\ctype{MPI_Type_delete_attr_function}" + }, + "f90": { + "type": "TYPE_DELETE_ATTR_FUNCTION", + "description": "\\mpifcallback{TYPE_DELETE_ATTR_FUNCTION}}" + }, + "f08": { + "type": "PROCEDURE(MPI_Type_delete_attr_function)", + "description": "\\mpifcallbackskip{PROCEDURE(MPI_Type_delete_attr_function)}" + } + }, + "category": "FUNCTIONS", + "macro": "\\mpiconstfunc", + "datatypes": {}, + "name": "MPI_TYPE_NULL_DELETE_FN", + "abi_value": 0 + }, + "mpi_conversion_fn_null": { + "handle_types": { + "c": { + "type": "MPI_Datarep_conversion_function", + "description": "\\ctype{MPI_Datarep_conversion_function}" + }, + "f90": { + "type": "DATAREP_CONVERSION_FUNCTION", + "description": "\\mpifcallback{DATAREP_CONVERSION_FUNCTION}}" + }, + "f08": { + "type": "PROCEDURE(MPI_Datarep_conversion_function)", + "description": "\\mpifcallbackskip{PROCEDURE(MPI_Datarep_conversion_function)}" + } + }, + "category": "FUNCTIONS", + "macro": "\\mpiconstfunc", + "datatypes": {}, + "name": "MPI_CONVERSION_FN_NULL", + "abi_value": 0 + }, + "mpi_conversion_fn_null_c": { + "handle_types": { + "c": { + "type": "MPI_Datarep_conversion_function_c", + "description": "\\ctype{MPI_Datarep_conversion_function_c}" + }, + "f90": { + "type": null, + "description": "(n/a)" + }, + "f08": { + "type": "PROCEDURE(MPI_Datarep_conversion_function_c)", + "description": "\\mpifcallbackskip{PROCEDURE(MPI_Datarep_conversion_function_c)}" + } + }, + "category": "FUNCTIONS", + "macro": "\\mpiconstfunc", + "datatypes": {}, + "name": "MPI_CONVERSION_FN_NULL_C", + "abi_value": 0 + }, + "mpi_null_copy_fn": { + "handle_types": { + "c": { + "type": "MPI_Copy_function", + "description": "\\ctype{MPI_Copy_function}" + }, + "f90": { + "type": "COPY_FUNCTION", + "description": null + }, + "f08": { + "type": "COPY_FUNCTION", + "description": null + } + }, + "category": "DEPRECATED_FUNCS", + "macro": "\\mpiconstfunc", + "datatypes": {}, + "name": "MPI_NULL_COPY_FN", + "abi_value": 0 + }, + "mpi_dup_fn": { + "handle_types": { + "c": { + "type": "MPI_Copy_function", + "description": "\\ctype{MPI_Copy_function}" + }, + "f90": { + "type": "COPY_FUNCTION", + "description": null + }, + "f08": { + "type": "COPY_FUNCTION", + "description": null + } + }, + "category": "DEPRECATED_FUNCS", + "macro": "\\mpiconstfunc", + "datatypes": {}, + "name": "MPI_DUP_FN", + "abi_value": 1 + }, + "mpi_null_delete_fn": { + "handle_types": { + "c": { + "type": "MPI_Delete_function", + "description": "\\ctype{MPI_Delete_function}" + }, + "f90": { + "type": "DELETE_FUNCTION", + "description": null + }, + "f08": { + "type": "DELETE_FUNCTION", + "description": null + } + }, + "category": "DEPRECATED_FUNCS", + "macro": "\\mpiconstfunc", + "datatypes": {}, + "name": "MPI_NULL_DELETE_FN", + "abi_value": 0 + }, + "mpi_version": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "C_PREPROCESSOR_CONSTANTS_FORTRAN_PARAMETERS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_VERSION", + "abi_value": null + }, + "mpi_subversion": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "C_PREPROCESSOR_CONSTANTS_FORTRAN_PARAMETERS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_SUBVERSION", + "abi_value": null + }, + "mpi_abi_version": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "C_PREPROCESSOR_CONSTANTS_FORTRAN_PARAMETERS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ABI_VERSION", + "abi_value": 1 + }, + "mpi_abi_subversion": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "C_PREPROCESSOR_CONSTANTS_FORTRAN_PARAMETERS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_ABI_SUBVERSION", + "abi_value": 0 + }, + "mpi_t_enum_null": { + "handle_types": { + "c": { + "type": "MPI_T_enum", + "description": "\\ctype{MPI_T_enum}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_HANDLES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_ENUM_NULL", + "abi_value": 0 + }, + "mpi_t_cvar_handle_null": { + "handle_types": { + "c": { + "type": "MPI_T_cvar_handle", + "description": "\\ctype{MPI_T_cvar_handle}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_HANDLES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_CVAR_HANDLE_NULL", + "abi_value": 0 + }, + "mpi_t_pvar_handle_null": { + "handle_types": { + "c": { + "type": "MPI_T_pvar_handle", + "description": "\\ctype{MPI_T_pvar_handle}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_HANDLES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_PVAR_HANDLE_NULL", + "abi_value": 0 + }, + "mpi_t_pvar_session_null": { + "handle_types": { + "c": { + "type": "MPI_T_pvar_session", + "description": "\\ctype{MPI_T_pvar_session}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_HANDLES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_PVAR_SESSION_NULL", + "abi_value": 0 + }, + "mpi_t_pvar_all_handles": { + "handle_types": { + "c": { + "type": "MPI_T_pvar_handle", + "description": "\\ctype{MPI_T_pvar_handle}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_HANDLES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_PVAR_ALL_HANDLES", + "abi_value": 1 + }, + "mpi_t_verbosity_user_basic": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "TOOL_INFO_IFACE_VERBOSITY_LEVELS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_VERBOSITY_USER_BASIC", + "abi_value": "0x09" + }, + "mpi_t_verbosity_user_detail": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "TOOL_INFO_IFACE_VERBOSITY_LEVELS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_VERBOSITY_USER_DETAIL", + "abi_value": "0x0a" + }, + "mpi_t_verbosity_user_all": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "TOOL_INFO_IFACE_VERBOSITY_LEVELS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_VERBOSITY_USER_ALL", + "abi_value": "0x0c" + }, + "mpi_t_verbosity_tuner_basic": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "TOOL_INFO_IFACE_VERBOSITY_LEVELS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_VERBOSITY_TUNER_BASIC", + "abi_value": "0x11" + }, + "mpi_t_verbosity_tuner_detail": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "TOOL_INFO_IFACE_VERBOSITY_LEVELS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_VERBOSITY_TUNER_DETAIL", + "abi_value": "0x12" + }, + "mpi_t_verbosity_tuner_all": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "TOOL_INFO_IFACE_VERBOSITY_LEVELS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_VERBOSITY_TUNER_ALL", + "abi_value": "0x14" + }, + "mpi_t_verbosity_mpidev_basic": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "TOOL_INFO_IFACE_VERBOSITY_LEVELS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_VERBOSITY_MPIDEV_BASIC", + "abi_value": "0x21" + }, + "mpi_t_verbosity_mpidev_detail": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "TOOL_INFO_IFACE_VERBOSITY_LEVELS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_VERBOSITY_MPIDEV_DETAIL", + "abi_value": "0x22" + }, + "mpi_t_verbosity_mpidev_all": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "category": "TOOL_INFO_IFACE_VERBOSITY_LEVELS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_VERBOSITY_MPIDEV_ALL", + "abi_value": "0x24" + }, + "mpi_t_bind_no_object": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_ASSOCIATIONS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_BIND_NO_OBJECT", + "abi_value": 1 + }, + "mpi_t_bind_mpi_comm": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_ASSOCIATIONS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_BIND_MPI_COMM", + "abi_value": 2 + }, + "mpi_t_bind_mpi_datatype": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_ASSOCIATIONS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_BIND_MPI_DATATYPE", + "abi_value": 3 + }, + "mpi_t_bind_mpi_errhandler": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_ASSOCIATIONS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_BIND_MPI_ERRHANDLER", + "abi_value": 4 + }, + "mpi_t_bind_mpi_file": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_ASSOCIATIONS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_BIND_MPI_FILE", + "abi_value": 5 + }, + "mpi_t_bind_mpi_group": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_ASSOCIATIONS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_BIND_MPI_GROUP", + "abi_value": 6 + }, + "mpi_t_bind_mpi_op": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_ASSOCIATIONS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_BIND_MPI_OP", + "abi_value": 7 + }, + "mpi_t_bind_mpi_request": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_ASSOCIATIONS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_BIND_MPI_REQUEST", + "abi_value": 8 + }, + "mpi_t_bind_mpi_win": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_ASSOCIATIONS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_BIND_MPI_WIN", + "abi_value": 9 + }, + "mpi_t_bind_mpi_message": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_ASSOCIATIONS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_BIND_MPI_MESSAGE", + "abi_value": 10 + }, + "mpi_t_bind_mpi_info": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_ASSOCIATIONS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_BIND_MPI_INFO", + "abi_value": 11 + }, + "mpi_t_bind_mpi_session": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_ASSOCIATIONS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_BIND_MPI_SESSION", + "abi_value": 12 + }, + "mpi_t_scope_constant": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_SCOPES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_SCOPE_CONSTANT", + "abi_value": 1 + }, + "mpi_t_scope_readonly": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_SCOPES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_SCOPE_READONLY", + "abi_value": 2 + }, + "mpi_t_scope_local": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_SCOPES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_SCOPE_LOCAL", + "abi_value": 3 + }, + "mpi_t_scope_group": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_SCOPES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_SCOPE_GROUP", + "abi_value": 4 + }, + "mpi_t_scope_group_eq": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_SCOPES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_SCOPE_GROUP_EQ", + "abi_value": 5 + }, + "mpi_t_scope_all": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_SCOPES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_SCOPE_ALL", + "abi_value": 6 + }, + "mpi_t_scope_all_eq": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_VAR_SCOPES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_SCOPE_ALL_EQ", + "abi_value": 7 + }, + "mpi_t_pvar_class_state": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_PVAR_CLASSES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_PVAR_CLASS_STATE", + "abi_value": 1 + }, + "mpi_t_pvar_class_level": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_PVAR_CLASSES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_PVAR_CLASS_LEVEL", + "abi_value": 2 + }, + "mpi_t_pvar_class_size": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_PVAR_CLASSES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_PVAR_CLASS_SIZE", + "abi_value": 3 + }, + "mpi_t_pvar_class_percentage": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_PVAR_CLASSES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_PVAR_CLASS_PERCENTAGE", + "abi_value": 4 + }, + "mpi_t_pvar_class_highwatermark": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_PVAR_CLASSES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_PVAR_CLASS_HIGHWATERMARK", + "abi_value": 5 + }, + "mpi_t_pvar_class_lowwatermark": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_PVAR_CLASSES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_PVAR_CLASS_LOWWATERMARK", + "abi_value": 6 + }, + "mpi_t_pvar_class_counter": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_PVAR_CLASSES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_PVAR_CLASS_COUNTER", + "abi_value": 7 + }, + "mpi_t_pvar_class_aggregate": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_PVAR_CLASSES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_PVAR_CLASS_AGGREGATE", + "abi_value": 8 + }, + "mpi_t_pvar_class_timer": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_PVAR_CLASSES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_PVAR_CLASS_TIMER", + "abi_value": 9 + }, + "mpi_t_pvar_class_generic": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_PVAR_CLASSES", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_PVAR_CLASS_GENERIC", + "abi_value": 10 + }, + "mpi_t_source_ordered": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_SOURCE_ORDERINGS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_SOURCE_ORDERED", + "abi_value": 1 + }, + "mpi_t_source_unordered": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_SOURCE_ORDERINGS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_SOURCE_UNORDERED", + "abi_value": 2 + }, + "mpi_t_cb_require_none": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_CB_SAFETY_REQ_LEVELS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_CB_REQUIRE_NONE", + "abi_value": "0x00" + }, + "mpi_t_cb_require_mpi_restricted": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_CB_SAFETY_REQ_LEVELS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_CB_REQUIRE_MPI_RESTRICTED", + "abi_value": "0x03" + }, + "mpi_t_cb_require_thread_safe": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_CB_SAFETY_REQ_LEVELS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_CB_REQUIRE_THREAD_SAFE", + "abi_value": "0x0F" + }, + "mpi_t_cb_require_async_signal_safe": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "category": "TOOL_INFO_IFACE_CB_SAFETY_REQ_LEVELS", + "macro": "\\mpiconst", + "datatypes": {}, + "name": "MPI_T_CB_REQUIRE_ASYNC_SIGNAL_SAFE", + "abi_value": "0x3F" + } + }, + "categories": { + "error_classes": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "ERROR_CLASSES", + "name_tex": "Error classes" + }, + "buffer_addr_constants": { + "handle_types": { + "c": { + "type": "void *", + "description": "\\ctype{void *}" + }, + "f90": { + "type": "", + "description": "(predefined memory location)" + }, + "f08": { + "type": "", + "description": "(predefined memory location)" + } + }, + "name": "BUFFER_ADDR_CONSTANTS", + "name_tex": "Buffer address constants" + }, + "empty_ignore_input_constants": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "name": "EMPTY_IGNORE_INPUT_CONSTANTS", + "name_tex": "Constants specifying empty or ignored input" + }, + "max_str_size_constants": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "MAX_STR_SIZE_CONSTANTS", + "name_tex": "Maximum sizes for strings" + }, + "mode_constants": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "MODE_CONSTANTS", + "name_tex": "Mode constants" + }, + "assorted_constants": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "ASSORTED_CONSTANTS", + "name_tex": "Assorted constants" + }, + "threads_constants": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "THREADS_CONSTANTS", + "name_tex": "Threads constants" + }, + "file_operations_constants": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "FILE_OPERATIONS_CONSTANTS", + "name_tex": "File operations constants" + }, + "datatype_decoding_constants": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "DATATYPE_DECODING_CONSTANTS", + "name_tex": "Datatype decoding constants" + }, + "f90_datatype_matching_constants": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "F90_DATATYPE_MATCHING_CONSTANTS", + "name_tex": "F90 datatype matching constants" + }, + "communicator_group_comp_results": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "COMMUNICATOR_GROUP_COMP_RESULTS", + "name_tex": "Results of communicator and group comparisons" + }, + "topologies": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\type{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\type{INTEGER}" + } + }, + "name": "TOPOLOGIES", + "name_tex": "Topologies" + }, + "communicator_split_type": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "COMMUNICATOR_SPLIT_TYPE", + "name_tex": "Communicator split type constants" + }, + "window_lock_type_constants": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "WINDOW_LOCK_TYPE_CONSTANTS", + "name_tex": "Window lock type constants" + }, + "window_create_flavors": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "WINDOW_CREATE_FLAVORS", + "name_tex": "\\MPI/ window create flavors" + }, + "window_models": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "WINDOW_MODELS", + "name_tex": "\\MPI/ window models" + }, + "file_pos_constants": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "FILE_POS_CONSTANTS", + "name_tex": "File positioning constants" + }, + "file_op_constants": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "FILE_OP_CONSTANTS", + "name_tex": "File operation constants" + }, + "env_inq_and_attr_keys": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "ENV_INQ_AND_ATTR_KEYS", + "name_tex": "Environmental inquiry and predefined attribute keys" + }, + "fortran_support_method_constants": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": "LOGICAL", + "description": "\\ftype{LOGICAL}" + }, + "f08": { + "type": "LOGICAL", + "description": "\\ftype{LOGICAL}" + } + }, + "name": "FORTRAN_SUPPORT_METHOD_CONSTANTS", + "name_tex": "Fortran support method specific constants" + }, + "status_array_size_and_index_fortran": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "STATUS_ARRAY_SIZE_AND_INDEX_FORTRAN", + "name_tex": "Status array size and reserved index values (Fortran only)" + }, + "fortran_status_array_size_and_index_c": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "name": "FORTRAN_STATUS_ARRAY_SIZE_AND_INDEX_C", + "name_tex": "Fortran status array size and reserved index values (C only)" + }, + "variable_addr_size_fortran": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "VARIABLE_ADDR_SIZE_FORTRAN", + "name_tex": "Variable address size (Fortran only)" + }, + "reserved_communicators": { + "handle_types": { + "c": { + "type": "MPI_Comm", + "description": "\\ctype{MPI_Comm}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_COMM", + "description": "\\mpiftype{TYPE(MPI_Comm)}" + } + }, + "name": "RESERVED_COMMUNICATORS", + "name_tex": "Reserved communicators" + }, + "predefined_datatypes": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "name": "PREDEFINED_DATATYPES", + "name_tex": "Named predefined datatypes" + }, + "opt_datatypes_fortran": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{TYPE(MPI_Datatype)}" + } + }, + "name": "OPT_DATATYPES_FORTRAN", + "name_tex": "Optional datatypes (Fortran)" + }, + "reduction_func_datatypes_c": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Datatype}" + } + }, + "name": "REDUCTION_FUNC_DATATYPES_C", + "name_tex": "Datatypes for reduction functions (C)" + }, + "reduction_func_datatypes_fortran": { + "handle_types": { + "c": { + "type": "MPI_Datatype", + "description": "\\ctype{MPI_Datatype}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Datatype}" + } + }, + "name": "REDUCTION_FUNC_DATATYPES_FORTRAN", + "name_tex": "Datatypes for reduction functions (Fortran)" + }, + "msg_handles": { + "handle_types": { + "c": { + "type": "MPI_Message", + "description": "\\ctype{MPI_Message}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Message", + "description": "\\mpiftype{MPI_Message}" + } + }, + "name": "MSG_HANDLES", + "name_tex": "Predefined message handles" + }, + "error_specifiers": { + "handle_types": { + "c": { + "type": "MPI_Errhandler", + "description": "\\ctype{MPI_Errhandler}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Errhandler}" + } + }, + "name": "ERROR_SPECIFIERS", + "name_tex": "Predefined error-handling specifiers" + }, + "env_inq_info_key": { + "handle_types": { + "c": { + "type": "MPI_Info", + "description": "\\ctype{MPI_Info}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Datatype", + "description": "\\mpiftype{MPI_Info}" + } + }, + "name": "ENV_INQ_INFO_KEY", + "name_tex": "Environmental inquiry info key" + }, + "collective_ops": { + "handle_types": { + "c": { + "type": "MPI_Op", + "description": "\\ctype{MPI_Op}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Op", + "description": "\\mpiftype{MPI_Op}" + } + }, + "name": "COLLECTIVE_OPS", + "name_tex": "Collective operators" + }, + "group_handles": { + "handle_types": { + "c": { + "type": "MPI_Group", + "description": "\\ctype{MPI_Group}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "MPI_Group", + "description": "\\mpiftype{MPI_Group}" + } + }, + "name": "GROUP_HANDLES", + "name_tex": "Predefined group handles" + }, + "other_handles": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "name": "OTHER_HANDLES", + "name_tex": "Other predefined handles" + }, + "functions": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "name": "FUNCTIONS", + "name_tex": "Predefined functions" + }, + "deprecated_funcs": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "name": "DEPRECATED_FUNCS", + "name_tex": "Deprecated predefined functions" + }, + "c_preprocessor_constants_fortran_parameters": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "C_PREPROCESSOR_CONSTANTS_FORTRAN_PARAMETERS", + "name_tex": "C preprocessor constants and Fortran parameters" + }, + "tool_info_iface_handles": { + "handle_types": { + "c": { + "type": null, + "description": null + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "name": "TOOL_INFO_IFACE_HANDLES", + "name_tex": "Handles used in the MPI tool information interface" + }, + "tool_info_iface_verbosity_levels": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + }, + "f08": { + "type": "INTEGER", + "description": "\\ftype{INTEGER}" + } + }, + "name": "TOOL_INFO_IFACE_VERBOSITY_LEVELS", + "name_tex": "Verbosity levels in the \\MPI/ tool information interface" + }, + "tool_info_iface_var_associations": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "name": "TOOL_INFO_IFACE_VAR_ASSOCIATIONS", + "name_tex": "Constants to identify associations of variables in the \\MPI/ tool information interface" + }, + "tool_info_iface_var_scopes": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "name": "TOOL_INFO_IFACE_VAR_SCOPES", + "name_tex": "Constants describing the scope of a control variable in the \\MPI/ tool information interface" + }, + "tool_info_iface_pvar_classes": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "name": "TOOL_INFO_IFACE_PVAR_CLASSES", + "name_tex": "Performance variable classes used by the \\MPI/ tool information interface" + }, + "tool_info_iface_source_orderings": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "name": "TOOL_INFO_IFACE_SOURCE_ORDERINGS", + "name_tex": "Source event ordering guarantees in the \\MPI/ tool information interface" + }, + "tool_info_iface_cb_safety_req_levels": { + "handle_types": { + "c": { + "type": "int", + "description": "integer constant expression of type \\ctype{int}" + }, + "f90": { + "type": null, + "description": null + }, + "f08": { + "type": null, + "description": null + } + }, + "name": "TOOL_INFO_IFACE_CB_SAFETY_REQ_LEVELS", + "name_tex": "Callback safety requirement levels used in the \\MPI/ tool information interface" + } + }, + "metadata": { + "abi": { + "version": 1, + "subversion": 0 + }, + "mpi": { + "release_date": "2025-06-05", + "version": 5, + "subversion": 0 + }, + "generated_date": "2025-07-30T20:54:57.230061+00:00" + } +} diff --git a/docs/mpi-standard-5.0-apis.json b/docs/mpi-standard-5.0-apis.json new file mode 100644 index 00000000000..b1f20fb978b --- /dev/null +++ b/docs/mpi-standard-5.0-apis.json @@ -0,0 +1,61254 @@ +{ + "mpi_abi_get_fortran_booleans": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Abi_get_fortran_booleans", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the size of Fortran \\code{LOGICAL} in bytes", + "func_type": "", + "kind": "TYPECLASS_SIZE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "logical_size", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the Fortran literal value \\code{.TRUE.}", + "func_type": "", + "kind": "LOGICAL_VOID", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "logical_true", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the Fortran literal value \\code{.FALSE.}", + "func_type": "", + "kind": "LOGICAL_VOID", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "logical_false", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "flag to indicate whether the logical boolean values were set previously", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "is_set", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_abi_get_fortran_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Abi_get_fortran_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "Fortran ABI details info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "info", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_abi_get_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Abi_get_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "ABI details info object (implementation-defined)", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "info", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_abi_get_version": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Abi_get_version", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "ABI major version", + "func_type": "", + "kind": "VERSION", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "abi_major", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "ABI minor version", + "func_type": "", + "kind": "VERSION", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "abi_minor", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_abi_set_fortran_booleans": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Abi_set_fortran_booleans", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the size of Fortran \\code{LOGICAL} in bytes", + "func_type": "", + "kind": "TYPECLASS_SIZE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "logical_size", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the Fortran literal value \\code{.TRUE.}", + "func_type": "", + "kind": "LOGICAL_VOID", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "logical_true", + "optional": false, + "param_direction": "in", + "pointer": true, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the Fortran literal value \\code{.FALSE.}", + "func_type": "", + "kind": "LOGICAL_VOID", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "logical_false", + "optional": false, + "param_direction": "in", + "pointer": true, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_abi_set_fortran_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Abi_set_fortran_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "Fortran ABI details info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_abort": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Abort", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator of \\MPI/ processes to abort", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "error code to return to invoking environment", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errorcode", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_accumulate": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Accumulate", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_addr", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of target", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "displacement from start of window to beginning of target buffer", + "func_type": "", + "kind": "RMA_DISPLACEMENT_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_disp", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in target buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in target buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "accumulate operator", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_add_error_class": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Add_error_class", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "value for the new error class", + "func_type": "", + "kind": "ERROR_CLASS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "errorclass", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_add_error_code": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Add_error_code", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CLASS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errorclass", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new error code to be associated with \\mpiarg{errorclass}", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "errorcode", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_add_error_string": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Add_error_string", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "error code or class", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errorcode", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "text corresponding to \\mpiarg{errorcode}", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "string", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_aint_add": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Aint_add", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "base address", + "func_type": "", + "kind": "LOCATION_SMALL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "base", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "displacement", + "func_type": "", + "kind": "DISPLACEMENT", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "disp", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + } + ], + "return_kind": "LOCATION_SMALL" + }, + "mpi_aint_diff": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Aint_diff", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "minuend address", + "func_type": "", + "kind": "LOCATION_SMALL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "addr1", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "subtrahend address", + "func_type": "", + "kind": "LOCATION_SMALL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "addr2", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + } + ], + "return_kind": "DISPLACEMENT" + }, + "mpi_allgather": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Allgather", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements received from any \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_allgather_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Allgather_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements received from each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_allgatherv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Allgatherv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "nonnegative integer array (of length group size) containing the number of elements that are received from each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{i} specifies the displacement (relative to \\mpiarg{recvbuf}) at which to place the incoming data from \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "displs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_allgatherv_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Allgatherv_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length group size) containing the number of elements that are received from each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{i} specifies the displacement (relative to \\mpiarg{recvbuf}) at which to place the incoming data from \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "displs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_alloc_mem": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": "\\>INTERFACE MPI\\_ALLOC\\_MEM \\\\ \\>\\>SUBROUTINE MPI\\_ALLOC\\_MEM(SIZE, INFO, BASEPTR, IERROR) \\\\ \\>\\>\\>IMPORT :: MPI\\_ADDRESS\\_KIND \\\\ \\>\\>\\>INTEGER :: INFO, IERROR \\\\ \\>\\>\\>INTEGER(KIND=MPI\\_ADDRESS\\_KIND) :: SIZE, BASEPTR \\\\ \\>\\>END SUBROUTINE \\\\ \\>\\>SUBROUTINE MPI\\_ALLOC\\_MEM\\_CPTR(SIZE, INFO, BASEPTR, IERROR) \\\\ \\>\\>\\>USE, INTRINSIC :: ISO\\_C\\_BINDING, ONLY : C\\_PTR \\\\ \\>\\>\\>IMPORT :: MPI\\_ADDRESS\\_KIND \\\\ \\>\\>\\>INTEGER :: INFO, IERROR \\\\ \\>\\>\\>INTEGER(KIND=MPI\\_ADDRESS\\_KIND) :: SIZE \\\\ \\>\\>\\>TYPE(C\\_PTR) :: BASEPTR \\\\ \\>\\>END SUBROUTINE \\\\ \\>END INTERFACE", + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Alloc_mem", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size of memory segment in bytes", + "func_type": "", + "kind": "ALLOC_MEM_NUM_BYTES", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "size", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "pointer to beginning of memory segment allocated", + "func_type": "", + "kind": "C_BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "baseptr", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_allreduce": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Allreduce", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of send buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_allreduce_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Allreduce_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of send buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_alltoall": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Alltoall", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent to each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements received from any \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_alltoall_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Alltoall_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent to each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements received from each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_alltoallv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Alltoallv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "nonnegative integer array (of length group size) specifying the number of elements to send to each rank", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{j} specifies the displacement (relative to \\mpiarg{sendbuf}) from which to take the outgoing data destined for \\MPI/ process \\mpicode{j}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "nonnegative integer array (of length group size) specifying the number of elements that can be received from each rank", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{i} specifies the displacement (relative to \\mpiarg{recvbuf}) at which to place the incoming data from \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "rdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_alltoallv_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Alltoallv_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length group size) specifying the number of elements to send to each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{j} specifies the displacement (relative to \\mpiarg{sendbuf}) from which to take the outgoing data destined for \\MPI/ process \\mpicode{j}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length group size) specifying the number of elements that can be received from each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{i} specifies the displacement (relative to \\mpiarg{recvbuf}) at which to place the incoming data from \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "rdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_alltoallw": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Alltoallw", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "nonnegative integer array (of length group size) specifying the number of elements to send to each rank", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{j} specifies the displacement in bytes (relative to \\mpiarg{sendbuf}) from which to take the outgoing data destined for \\MPI/ process \\mpicode{j}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "array of datatypes (of length group size). Entry \\mpicode{j} specifies the type of data to send to \\MPI/ process \\mpicode{j}", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendtypes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "nonnegative integer array (of length group size) specifying the number of elements that can be received from each rank", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{i} specifies the displacement in bytes (relative to \\mpiarg{recvbuf}) at which to place the incoming data from \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "rdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "array of datatypes (of length group size). Entry \\mpicode{i} specifies the type of data received from \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvtypes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_alltoallw_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Alltoallw_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size) specifying the number of elements to send to each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{j} specifies the displacement in bytes (relative to \\mpiarg{sendbuf}) from which to take the outgoing data destined for \\MPI/ process \\mpicode{j}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "array of datatypes (of length group size). Entry \\mpicode{j} specifies the type of data to send to \\MPI/ process \\mpicode{j}", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendtypes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size) specifying the number of elements that can be received from each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{i} specifies the displacement in bytes (relative to \\mpiarg{recvbuf}) at which to place the incoming data from \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "rdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "array of datatypes (of length group size). Entry \\mpicode{i} specifies the type of data received from \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvtypes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_attr_delete": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": true, + "render_main": true + }, + "name": "MPI_Attr_delete", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator to which attribute is attached", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "The key value of the deleted attribute", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_attr_get": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": true, + "render_main": true + }, + "name": "MPI_Attr_get", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator to which attribute is attached", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "attribute value, unless \\mpiarg{flag} \\mpicode{= false}", + "func_type": "", + "kind": "ATTRIBUTE_VAL_10", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "attribute_val", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if an attribute value was extracted; \\mpicode{false} if no attribute is associated with the key", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_attr_put": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": true, + "render_main": true + }, + "name": "MPI_Attr_put", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator to which attribute will be attached", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value, as returned by \\mpifunc{MPI_KEYVAL_CREATE}", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "attribute value", + "func_type": "", + "kind": "ATTRIBUTE_VAL_10", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_barrier": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Barrier", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_barrier_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Barrier_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_bcast": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Bcast", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "starting address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "buffer", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of the root", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_bcast_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Bcast_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "buffer", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of broadcast root", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_bsend": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Bsend", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "initial address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each send buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_bsend_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Bsend_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "type of each element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_buffer_attach": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Buffer_attach", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial buffer address", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buffer", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer size, in bytes", + "func_type": "", + "kind": "POLYNUM_BYTES_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "size", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_buffer_detach": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Buffer_detach", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial buffer address", + "func_type": "", + "kind": "C_BUFFER2", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buffer_addr", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer size, in bytes", + "func_type": "", + "kind": "POLYNUM_BYTES", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "size", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_buffer_flush": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Buffer_flush", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_buffer_iflush": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Buffer_iflush", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_cancel": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Cancel", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "request", + "optional": false, + "param_direction": "in", + "pointer": true, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_cart_coords": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Cart_coords", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated Cartesian topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of an \\MPI/ process within group of \\mpiarg{comm}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of vector \\mpiarg{coords} in the calling program", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "maxdims", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "coordinates of the \\MPI/ process with the rank \\mpiarg{rank} in Cartesian structure", + "func_type": "", + "kind": "COORDINATE", + "large_only": false, + "length": "maxdims", + "lis_direction": "out", + "name": "coords", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_cart_create": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Cart_create", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "input communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_old", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of dimensions of Cartesian grid", + "func_type": "", + "kind": "NUM_DIMS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ndims", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array of size \\mpiarg{ndims} specifying the number of processes in each dimension", + "func_type": "", + "kind": "DIMENSION", + "large_only": false, + "length": "ndims", + "lis_direction": "in", + "name": "dims", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "logical array of size \\mpiarg{ndims} specifying whether the grid is periodic (\\mpicode{true}) or not (\\mpicode{false}) in each dimension", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": "ndims", + "lis_direction": "in", + "name": "periods", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "ranks may be reordered (\\mpicode{true}) or not (\\mpicode{false})", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "reorder", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new communicator with associated Cartesian topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "comm_cart", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_cart_get": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Cart_get", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated Cartesian topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of vectors \\mpiarg{dims}, \\mpiarg{periods}, and \\mpiarg{coords} in the calling program", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "maxdims", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of \\MPI/ processes for each Cartesian dimension", + "func_type": "", + "kind": "DIMENSION", + "large_only": false, + "length": "maxdims", + "lis_direction": "out", + "name": "dims", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "periodicity (\\mpicode{true}/\\mpicode{false}) for each Cartesian dimension", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": "maxdims", + "lis_direction": "out", + "name": "periods", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "coordinates of calling \\MPI/ process in Cartesian structure", + "func_type": "", + "kind": "COORDINATE", + "large_only": false, + "length": "maxdims", + "lis_direction": "out", + "name": "coords", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_cart_map": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Cart_map", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "input communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of dimensions of Cartesian structure", + "func_type": "", + "kind": "NUM_DIMS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ndims", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array of size \\mpiarg{ndims} specifying the number of processes in each coordinate direction", + "func_type": "", + "kind": "DIMENSION", + "large_only": false, + "length": "ndims", + "lis_direction": "in", + "name": "dims", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "logical array of size \\mpiarg{ndims} specifying the periodicity specification in each coordinate direction", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": "ndims", + "lis_direction": "in", + "name": "periods", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "reordered rank of the calling \\MPI/ process; \\mpiconst{MPI_UNDEFINED} if calling \\MPI/ process does not belong to grid", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newrank", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_cart_rank": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Cart_rank", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated Cartesian topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array (of size \\mpiarg{ndims}) specifying the Cartesian coordinates of an \\MPI/ process", + "func_type": "", + "kind": "COORDINATE", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "coords", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of specified \\MPI/ process within group of \\mpiarg{comm}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "rank", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_cart_shift": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Cart_shift", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated Cartesian topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "coordinate dimension of shift", + "func_type": "", + "kind": "INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "direction", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "displacement ($> 0$: upwards shift, $< 0$: downwards shift)", + "func_type": "", + "kind": "DIMENSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "disp", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of source \\MPI/ process", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "rank_source", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination \\MPI/ process", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "rank_dest", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_cart_sub": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Cart_sub", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated Cartesian topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "the \\mpicode{i}-th entry of \\mpiarg{remain_dims} specifies whether the \\mpicode{i}-th dimension is kept in the subgrid (\\mpicode{true}) or is dropped (\\mpicode{false})", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "remain_dims", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new communicator with associated Cartesian topology containing the subgrid that includes the calling \\MPI/ process", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newcomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_cartdim_get": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Cartdim_get", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated Cartesian topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of dimensions of the Cartesian structure", + "func_type": "", + "kind": "NUM_DIMS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ndims", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_close_port": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Close_port", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "a port", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "port_name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_accept": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_accept", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "port name", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "port_name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "implementation-dependent information", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of root in \\mpiarg{comm}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "intra-communicator over which call is collective", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "inter-communicator with client as remote group", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newcomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_attach_buffer": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_attach_buffer", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial buffer address", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buffer", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer size, in bytes", + "func_type": "", + "kind": "POLYNUM_BYTES_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "size", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_c2f": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_c2f", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "F90_COMM" + }, + "mpi_comm_call_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_call_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with error handler", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errorcode", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_compare": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_compare", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "first communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm1", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "second communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm2", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "result", + "func_type": "", + "kind": "COMM_COMPARISON", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "result", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_connect": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_connect", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "network address", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "port_name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "implementation-dependent information", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of root in \\mpiarg{comm}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "intra-communicator over which call is collective", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "inter-communicator with server as remote group", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newcomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_copy_attr_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_copy_attr_function", + "name_f90": "COMM_COPY_ATTR_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldcomm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_in", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "attribute_val_out", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_create": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_create", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group, which is a subset of the group of \\mpiarg{comm}", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newcomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_create_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_create_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "user defined error handling procedure", + "func_type": "MPI_Comm_errhandler_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_errhandler_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "errhandler", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_create_from_group": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_create_from_group", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "unique identifier for this operation", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "stringtag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "error handler to be attached to new intra-communicator", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errhandler", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newcomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_create_group": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_create_group", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "intra-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group, which is a subset of the group of \\mpiarg{comm}", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newcomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_create_keyval": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_create_keyval", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "copy callback function for \\mpiarg{comm_keyval}", + "func_type": "MPI_Comm_copy_attr_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_copy_attr_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "delete callback function for \\mpiarg{comm_keyval}", + "func_type": "MPI_Comm_delete_attr_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_delete_attr_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value for future access", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "comm_keyval", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "extra state for callback function", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_delete_attr": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_delete_attr", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator from which the attribute is deleted", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_delete_attr_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_delete_attr_function", + "name_f90": "COMM_DELETE_ATTR_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "attribute_val", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_detach_buffer": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_detach_buffer", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial buffer address", + "func_type": "", + "kind": "C_BUFFER2", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buffer_addr", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer size, in bytes", + "func_type": "", + "kind": "POLYNUM_BYTES", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "size", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_disconnect": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_disconnect", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "comm", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_dup": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_dup", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "copy of \\mpiarg{comm}", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newcomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_dup_fn": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": "MPI_Comm_copy_attr_function", + "proxy_render": false, + "render_main": true + }, + "name": "MPI_COMM_DUP_FN", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldcomm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_in", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_out", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_dup_with_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_dup_with_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "copy of \\mpiarg{comm}", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newcomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_errhandler_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_errhandler_function", + "name_f90": "COMM_ERRHANDLER_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": true, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "error_code", + "optional": false, + "param_direction": "in", + "pointer": true, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "VARARGS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "varargs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + } + ], + "return_kind": "NOTHING" + }, + "mpi_comm_f2c": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_f2c", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "F90_COMM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "COMMUNICATOR" + }, + "mpi_comm_flush_buffer": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_flush_buffer", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_free": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_free", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator to be destroyed", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "comm", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_free_keyval": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_free_keyval", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "comm_keyval", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_fromint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_fromint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEY_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "COMMUNICATOR" + }, + "mpi_comm_get_attr": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_get_attr", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator to which the attribute is attached", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "attribute value, unless \\mpiarg{flag}\\mpicode{ = false}", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "attribute_val", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{false} if no attribute is associated with the key", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_get_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_get_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "error handler currently associated with communicator", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "errhandler", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_get_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_get_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator object", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "info_used", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_get_name": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_get_name", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator whose name is to be returned", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the name previously stored on the communicator, or an empty string if no such name exists", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": "MPI_MAX_OBJECT_NAME", + "lis_direction": "out", + "name": "comm_name", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of returned name", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "resultlen", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_get_parent": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_get_parent", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the parent communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "parent", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_group": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_group", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group corresponding to \\mpiarg{comm}", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "group", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_idup": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_idup", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "copy of \\mpiarg{comm}", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newcomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_idup_with_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_idup_with_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "copy of \\mpiarg{comm}", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newcomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_iflush_buffer": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_iflush_buffer", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_join": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_join", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "socket file descriptor", + "func_type": "", + "kind": "FILE_DESCRIPTOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fd", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new inter-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "intercomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_null_copy_fn": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": "MPI_Comm_copy_attr_function", + "proxy_render": false, + "render_main": true + }, + "name": "MPI_COMM_NULL_COPY_FN", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldcomm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_in", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_out", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_null_delete_fn": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": "MPI_Comm_delete_attr_function", + "proxy_render": false, + "render_main": true + }, + "name": "MPI_COMM_NULL_DELETE_FN", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_rank": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_rank", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of the calling \\MPI/ process in group of \\mpiarg{comm}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "rank", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_remote_group": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_remote_group", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "inter-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "remote group corresponding to \\mpiarg{comm}", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "group", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_remote_size": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_remote_size", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "inter-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of \\MPI/ processes in the remote group of \\mpiarg{comm}", + "func_type": "", + "kind": "COMM_SIZE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "size", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_set_attr": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_set_attr", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator to which attribute will be attached", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "attribute value", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_set_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_set_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new error handler for communicator", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errhandler", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_set_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_set_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_set_name": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_set_name", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator whose identifier is to be set", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "the character string that is remembered as the name", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_size": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_size", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of \\MPI/ processes in the group of \\mpiarg{comm}", + "func_type": "", + "kind": "COMM_SIZE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "size", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_spawn": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_spawn", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "name of program to be spawned", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "command", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "arguments to \\mpiarg{command}", + "func_type": "", + "kind": "STRING_ARRAY", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "argv", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "maximum number of processes to start", + "func_type": "", + "kind": "COMM_SIZE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "maxprocs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "a set of key-value pairs telling the runtime system where and how to start the processes", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of process in which previous arguments are examined", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "intra-communicator containing group of spawning processes", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "inter-communicator between original group and the newly spawned group", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "intercomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "one code per process", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": "", + "lis_direction": "out", + "name": "array_of_errcodes", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_spawn_multiple": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_spawn_multiple", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of commands", + "func_type": "", + "kind": "ARRAY_LENGTH_PI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "programs to be executed", + "func_type": "", + "kind": "STRING_ARRAY", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "array_of_commands", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "arguments for \\mpiarg{commands}", + "func_type": "", + "kind": "STRING_2DARRAY", + "large_only": false, + "length": "count", + "lis_direction": "in", + "name": "array_of_argv", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "hidden", + "asynchronous": false, + "constant": true, + "desc": "maximum number of processes to start for each command", + "func_type": "", + "kind": "COMM_SIZE", + "large_only": false, + "length": "count", + "lis_direction": "in", + "name": "array_of_maxprocs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "hidden", + "asynchronous": false, + "constant": true, + "desc": "info objects telling the runtime system where and how to start processes", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": "count", + "lis_direction": "in", + "name": "array_of_info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of process in which previous arguments are examined", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "intra-communicator containing group of spawning processes", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "inter-communicator between original group and the newly spawned group", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "intercomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "one error code per process", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": "", + "lis_direction": "out", + "name": "array_of_errcodes", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_split": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_split", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "control of subset assignment", + "func_type": "", + "kind": "COLOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "color", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "control of rank assignment", + "func_type": "", + "kind": "KEY", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "key", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newcomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_split_type": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_split_type", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "type of processes to be grouped together", + "func_type": "", + "kind": "SPLIT_TYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "split_type", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "control of rank assignment", + "func_type": "", + "kind": "KEY", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "key", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newcomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_test_inter": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_test_inter", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if \\mpiarg{comm} is an inter-communicator", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_comm_toint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Comm_toint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "KEY_INDEX" + }, + "mpi_compare_and_swap": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Compare_and_swap", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_addr", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of compare buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "compare_addr", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of result buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "result_addr", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of the element in all buffers", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of target", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "displacement from start of window to beginning of target buffer", + "func_type": "", + "kind": "RMA_DISPLACEMENT_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_disp", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_conversion_fn_null": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": true, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": false, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": "MPI_Datarep_conversion_function", + "proxy_render": false, + "render_main": true + }, + "name": "MPI_CONVERSION_FN_NULL", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "C_BUFFER3", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "userbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "C_BUFFER3", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "filebuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "position", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_copy_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": true, + "render_main": true + }, + "name": "MPI_Copy_function", + "name_f90": "COPY_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldcomm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE2", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL_10", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_in", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL_10", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "attribute_val_out", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierr", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_datarep_conversion_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Datarep_conversion_function", + "name_f90": "DATAREP_CONVERSION_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "C_BUFFER3", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "userbuf", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "C_BUFFER3", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "filebuf", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "position", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "extra_state", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_datarep_extent_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Datarep_extent_function", + "name_f90": "DATAREP_EXTENT_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "DISPOFFSET_SMALL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "extent", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "extra_state", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_delete_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": true, + "render_main": true + }, + "name": "MPI_Delete_function", + "name_f90": "DELETE_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL_10", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE2", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierr", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_dims_create": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Dims_create", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of nodes in a grid", + "func_type": "", + "kind": "COMM_SIZE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "nnodes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of Cartesian dimensions", + "func_type": "", + "kind": "NUM_DIMS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ndims", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "integer array of size \\mpiarg{ndims} specifying the number of nodes in each dimension", + "func_type": "", + "kind": "DIMENSION", + "large_only": false, + "length": "ndims", + "lis_direction": "inout", + "name": "dims", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_dist_graph_create": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Dist_graph_create", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "input communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_old", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of source nodes for which this \\MPI/ process specifies edges", + "func_type": "", + "kind": "ARRAY_LENGTH_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "n", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "array containing the \\mpiarg{n} source nodes for which this \\MPI/ process specifies edges", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": "n", + "lis_direction": "in", + "name": "sources", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "array specifying the number of destinations for each source node in the source node array", + "func_type": "", + "kind": "DEGREE", + "large_only": false, + "length": "n", + "lis_direction": "in", + "name": "degrees", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "destination nodes for the source nodes in the source node array", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "destinations", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "weights for source to destination edges", + "func_type": "", + "kind": "WEIGHT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "weights", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "hints on optimization and interpretation of weights", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "ranks may be reordered (\\mpicode{true}) or not~(\\mbox{\\mpicode{false}})", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "reorder", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new communicator with associated distributed graph topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "comm_dist_graph", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_dist_graph_create_adjacent": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Dist_graph_create_adjacent", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "input communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_old", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size of \\mpiarg{sources} and \\mpiarg{sourceweights} arrays", + "func_type": "", + "kind": "DEGREE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "indegree", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "ranks of \\MPI/ processes for which the calling process is a destination", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": "indegree", + "lis_direction": "in", + "name": "sources", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "weights of the edges into the calling \\MPI/ process", + "func_type": "", + "kind": "WEIGHT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sourceweights", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size of \\mpiarg{destinations} and \\mpiarg{destweights} arrays", + "func_type": "", + "kind": "DEGREE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "outdegree", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "ranks of \\MPI/ processes for which the calling \\MPI/ process is a source", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": "outdegree", + "lis_direction": "in", + "name": "destinations", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "weights of the edges out of the calling \\MPI/ process", + "func_type": "", + "kind": "WEIGHT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "destweights", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "hints on optimization and interpretation of weights", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "ranks may be reordered (\\mpicode{true}) or not~(\\mbox{\\mpicode{false}})", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "reorder", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new communicator with associated distributed graph topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "comm_dist_graph", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_dist_graph_neighbors": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Dist_graph_neighbors", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated distributed graph topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size of sources and sourceweights arrays", + "func_type": "", + "kind": "ARRAY_LENGTH_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "maxindegree", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "ranks of \\MPI/ processes for which the calling \\MPI/ process is a destination", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": "maxindegree", + "lis_direction": "out", + "name": "sources", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "weights of the edges into the calling \\MPI/ process", + "func_type": "", + "kind": "WEIGHT", + "large_only": false, + "length": "*", + "lis_direction": "out", + "name": "sourceweights", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size of destinations and destweights arrays", + "func_type": "", + "kind": "ARRAY_LENGTH_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "maxoutdegree", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "ranks of \\MPI/ processes for which the calling \\MPI/ process is a source", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": "maxoutdegree", + "lis_direction": "out", + "name": "destinations", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "weights of the edges out of the calling \\MPI/ process", + "func_type": "", + "kind": "WEIGHT", + "large_only": false, + "length": "*", + "lis_direction": "out", + "name": "destweights", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_dist_graph_neighbors_count": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Dist_graph_neighbors_count", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated distributed graph topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of edges into this \\MPI/ process", + "func_type": "", + "kind": "DEGREE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "indegree", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of edges out of this \\MPI/ process", + "func_type": "", + "kind": "DEGREE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "outdegree", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{false} if \\mpiconst{MPI_UNWEIGHTED} was supplied during creation, \\mpicode{true} otherwise", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "weighted", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_dup_fn": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": "MPI_Copy_function", + "proxy_render": false, + "render_main": true + }, + "name": "MPI_DUP_FN", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldcomm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE2", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL_10", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_in", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL_10", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_out", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierr", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_errhandler_c2f": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Errhandler_c2f", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errhandler", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "F90_ERRHANDLER" + }, + "mpi_errhandler_f2c": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Errhandler_f2c", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "F90_ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errhandler", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERRHANDLER" + }, + "mpi_errhandler_free": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Errhandler_free", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "errhandler", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_errhandler_fromint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Errhandler_fromint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEY_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errhandler", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERRHANDLER" + }, + "mpi_errhandler_toint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Errhandler_toint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errhandler", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "KEY_INDEX" + }, + "mpi_error_class": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Error_class", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "Error code returned by an \\MPI/ routine", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errorcode", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "Error class associated with \\mpiarg{errorcode}", + "func_type": "", + "kind": "ERROR_CLASS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "errorclass", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_error_string": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Error_string", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "Error code returned by an \\MPI/ routine", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errorcode", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "Text that corresponds to the \\mpiarg{errorcode}", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": "MPI_MAX_ERROR_STRING", + "lis_direction": "out", + "name": "string", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "Length (in printable characters) of the result returned in \\mpiarg{string}", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "resultlen", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_exscan": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Exscan", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in input buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of input buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "intra-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_exscan_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Exscan_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in input buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of input buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "intra-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_f_sync_reg": { + "attributes": { + "c_expressible": false, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_F_sync_reg", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "buf", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_fetch_and_op": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Fetch_and_op", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_addr", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of result buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "result_addr", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of the entry in origin, result, and target buffers", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of target", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "displacement from start of window to beginning of target buffer", + "func_type": "", + "kind": "RMA_DISPLACEMENT_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_disp", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "accumulate operator", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_c2f": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_c2f", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "file", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "F90_FILE" + }, + "mpi_file_call_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_call_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file with error handler", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errorcode", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_close": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_close", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_create_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_create_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "user defined error handling procedure", + "func_type": "MPI_File_errhandler_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "file_errhandler_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "errhandler", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_delete": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_delete", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "name of file to delete", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "filename", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_errhandler_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_errhandler_function", + "name_f90": "FILE_ERRHANDLER_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "file", + "optional": false, + "param_direction": "in", + "pointer": true, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "error_code", + "optional": false, + "param_direction": "in", + "pointer": true, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "VARARGS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "varargs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + } + ], + "return_kind": "NOTHING" + }, + "mpi_file_f2c": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_f2c", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "F90_FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "file", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "FILE" + }, + "mpi_file_fromint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_fromint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEY_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "file", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "FILE" + }, + "mpi_file_get_amode": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_get_amode", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file access mode used to open the file", + "func_type": "", + "kind": "ACCESS_MODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "amode", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_get_atomicity": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_get_atomicity", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if atomic mode, \\mpicode{false} if nonatomic mode", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_get_byte_offset": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_get_byte_offset", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "offset", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "offset", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "absolute byte position of offset", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "disp", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_get_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_get_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "file", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "error handler currently associated with file", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "errhandler", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_get_group": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_get_group", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group that opened the file", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "group", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_get_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_get_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "info_used", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_get_position": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_get_position", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "offset of individual pointer", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "offset", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_get_position_shared": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_get_position_shared", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "offset of shared pointer", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "offset", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_get_size": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_get_size", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size of the file in bytes", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "size", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_get_type_extent": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_get_type_extent", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype extent", + "func_type": "", + "kind": "POLYDISPOFFSET", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "extent", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_get_view": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_get_view", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "displacement", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "disp", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "elementary datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "etype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "filetype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "filetype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "data representation", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "datarep", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_iread": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_iread", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "request object", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_iread_all": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_iread_all", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "request object", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_iread_at": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_iread_at", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file offset", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "offset", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "request object", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_iread_at_all": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_iread_at_all", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file offset", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "offset", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "request object", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_iread_shared": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_iread_shared", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "request object", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_iwrite": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_iwrite", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "request object", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_iwrite_all": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_iwrite_all", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "request object", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_iwrite_at": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_iwrite_at", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file offset", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "offset", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "request object", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_iwrite_at_all": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_iwrite_at_all", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file offset", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "offset", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "request object", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_iwrite_shared": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_iwrite_shared", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "request object", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_open": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_open", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "name of file to open", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "filename", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file access mode", + "func_type": "", + "kind": "ACCESS_MODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "amode", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "fh", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_preallocate": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_preallocate", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size to preallocate file", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "size", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_read": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_read", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_read_all": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_read_all", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_read_all_begin": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_read_all_begin", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_read_all_end": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_read_all_end", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_read_at": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_read_at", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file offset", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "offset", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_read_at_all": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_read_at_all", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file offset", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "offset", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_read_at_all_begin": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_read_at_all_begin", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file offset", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "offset", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_read_at_all_end": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_read_at_all_end", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_read_ordered": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_read_ordered", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_read_ordered_begin": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_read_ordered_begin", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_read_ordered_end": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_read_ordered_end", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_read_shared": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_read_shared", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_seek": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_seek", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file offset", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "offset", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "update mode", + "func_type": "", + "kind": "UPDATE_MODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "whence", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_seek_shared": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_seek_shared", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file offset", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "offset", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "update mode", + "func_type": "", + "kind": "UPDATE_MODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "whence", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_set_atomicity": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_set_atomicity", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} to set atomic mode, \\mpicode{false} to set nonatomic mode", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "flag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_set_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_set_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "file", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new error handler for file", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errhandler", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_set_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_set_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_set_size": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_set_size", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size to truncate or expand file", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "size", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_set_view": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_set_view", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "displacement", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "disp", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "elementary datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "etype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "filetype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "filetype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "data representation", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datarep", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_sync": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_sync", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_toint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_toint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "file", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "KEY_INDEX" + }, + "mpi_file_write": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_write", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_write_all": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_write_all", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_write_all_begin": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_write_all_begin", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_write_all_end": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_write_all_end", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_write_at": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_write_at", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file offset", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "offset", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_write_at_all": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_write_at_all", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file offset", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "offset", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_write_at_all_begin": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_write_at_all_begin", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file offset", + "func_type": "", + "kind": "OFFSET", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "offset", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_write_at_all_end": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_write_at_all_end", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_write_ordered": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_write_ordered", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_write_ordered_begin": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_write_ordered_begin", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_write_ordered_end": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_write_ordered_end", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_file_write_shared": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_File_write_shared", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "file handle", + "func_type": "", + "kind": "FILE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "fh", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_finalize": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Finalize", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_finalized": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Finalized", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "true if \\mpifunc{MPI\\_FINALIZE} has been called and false otherwise.", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_free_mem": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Free_mem", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of memory segment allocated by \\mpifunc{MPI_ALLOC_MEM}", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "base", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_gather": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Gather", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements for any single receive", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of recv buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of receiving \\MPI/ process", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_gather_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Gather_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": true, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements for any single receive", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of recv buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of receiving \\MPI/ process", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_gatherv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Gatherv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "nonnegative integer array (of length group size) containing the number of elements that are received from each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{i} specifies the displacement relative to \\mpiarg{recvbuf} at which to place the incoming data from \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "displs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of recv buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of receiving \\MPI/ process", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_gatherv_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Gatherv_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": true, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length group size) containing the number of elements that are received from each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{i} specifies the displacement relative to \\mpiarg{recvbuf} at which to place the incoming data from \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "displs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of recv buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of receiving \\MPI/ process", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_get": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Get", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of origin buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "origin_addr", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in origin buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in origin buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of target", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "displacement from window start to the beginning of the target buffer", + "func_type": "", + "kind": "RMA_DISPLACEMENT_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_disp", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in target buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in target buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "window used for communication", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_get_accumulate": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Get_accumulate", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_addr", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in origin buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in origin buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of result buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "result_addr", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in result buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "result_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in result buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "result_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of target", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "displacement from start of window to beginning of target buffer", + "func_type": "", + "kind": "RMA_DISPLACEMENT_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_disp", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in target buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in target buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "accumulate operator", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_get_address": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Get_address", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "location in caller memory", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "location", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "address of location", + "func_type": "", + "kind": "DISPLACEMENT", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "address", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_get_count": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Get_count", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "return status of receive operation", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "status", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each receive buffer entry", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of received entries", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "count", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_get_elements": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Get_elements", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "return status of receive operation", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "status", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype used by receive operation", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of received basic elements", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "count", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_get_elements_x": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Get_elements_x", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "return status of receive operation", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "status", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype used by receive operation", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of received basic elements", + "func_type": "", + "kind": "NUM_BYTES", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "count", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_get_hw_resource_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Get_hw_resource_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object created", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "hw_info", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_get_library_version": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Get_library_version", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "version number", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": "MPI_MAX_LIBRARY_VERSION_STRING", + "lis_direction": "out", + "name": "version", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "Length (in printable characters) of the result returned in \\mpiarg{version}", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "resultlen", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_get_processor_name": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Get_processor_name", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "A unique specifier for the actual (as opposed to virtual) node.", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": "MPI_MAX_PROCESSOR_NAME", + "lis_direction": "out", + "name": "name", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "Length (in printable characters) of the result returned in \\mpiarg{name}", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "resultlen", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_get_version": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Get_version", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "version number", + "func_type": "", + "kind": "VERSION", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "version", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "subversion number", + "func_type": "", + "kind": "VERSION", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "subversion", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_graph_create": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Graph_create", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "input communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm_old", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of nodes in graph", + "func_type": "", + "kind": "COMM_SIZE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "nnodes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "array of integers describing node degrees (see below)", + "func_type": "", + "kind": "INDEX", + "large_only": false, + "length": "nnodes", + "lis_direction": "in", + "name": "index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "array of integers describing graph edges (see below)", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "edges", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "ranks may be reordered (\\mpicode{true}) or not (\\mpicode{false})", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "reorder", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new communicator with associated graph topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "comm_graph", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_graph_get": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Graph_get", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated graph topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of vector \\mpiarg{index} in the calling program", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "maxindex", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of vector \\mpiarg{edges} in the calling program", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "maxedges", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of integers containing the graph structure (for details see the definition of \\mpifunc{MPI_GRAPH_CREATE})", + "func_type": "", + "kind": "INDEX", + "large_only": false, + "length": "maxindex", + "lis_direction": "out", + "name": "index", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of integers containing the graph structure", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": "maxedges", + "lis_direction": "out", + "name": "edges", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_graph_map": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Graph_map", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "input communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of graph nodes", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "nnodes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array specifying the graph structure (for details see the definition of \\mpifunc{MPI_GRAPH_CREATE})", + "func_type": "", + "kind": "INDEX", + "large_only": false, + "length": "nnodes", + "lis_direction": "in", + "name": "index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array specifying the graph structure", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "edges", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "reordered rank of the calling \\MPI/ process; \\mpiconst{MPI_UNDEFINED} if the calling \\MPI/ process does not belong to graph", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newrank", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_graph_neighbors": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Graph_neighbors", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated graph topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of \\MPI/ process in group of \\mpiarg{comm}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size of array \\mpiarg{neighbors}", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "maxneighbors", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "ranks of \\MPI/ processes that are neighbors to specified \\MPI/ process", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": "maxneighbors", + "lis_direction": "out", + "name": "neighbors", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_graph_neighbors_count": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Graph_neighbors_count", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated graph topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of \\MPI/ process in group of \\mpiarg{comm}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of neighbors of specified \\MPI/ process", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "nneighbors", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_graphdims_get": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Graphdims_get", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated graph topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of nodes in graph (same as number of \\MPI/ processes in the group of \\mpiarg{comm})", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "nnodes", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of edges in graph", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "nedges", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_grequest_cancel_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Grequest_cancel_function", + "name_f90": "GREQUEST_CANCEL_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "complete", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_grequest_complete": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Grequest_complete", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "generalized request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "request", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_grequest_free_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Grequest_free_function", + "name_f90": "GREQUEST_FREE_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_grequest_query_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Grequest_query_function", + "name_f90": "GREQUEST_QUERY_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_grequest_start": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Grequest_start", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "callback function invoked when request status is queried", + "func_type": "MPI_Grequest_query_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "query_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "callback function invoked when request is freed", + "func_type": "MPI_Grequest_free_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "free_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "callback function invoked when request is cancelled", + "func_type": "MPI_Grequest_cancel_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "cancel_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "extra state", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "generalized request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_group_c2f": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_c2f", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "F90_GROUP" + }, + "mpi_group_compare": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_compare", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "first group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group1", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "second group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group2", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "result", + "func_type": "", + "kind": "GROUP_COMPARISON", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "result", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_group_difference": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_difference", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "first group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group1", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "second group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group2", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "difference group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newgroup", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_group_excl": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_excl", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in array \\mpiarg{ranks}", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "n", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "array of integer ranks of \\MPI/ processes in \\mpiarg{group} not to appear in \\mpiarg{newgroup}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": "n", + "lis_direction": "in", + "name": "ranks", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new group derived from above, preserving the order defined by \\mpiarg{group}", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newgroup", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_group_f2c": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_f2c", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "F90_GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "GROUP" + }, + "mpi_group_free": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_free", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "group", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_group_from_session_pset": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_from_session_pset", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "session", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "name of process set to use to create the new group", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "pset_name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new group derived from supplied session and process set", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newgroup", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_group_fromint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_fromint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEY_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "GROUP" + }, + "mpi_group_incl": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_incl", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in array \\mpiarg{ranks} (and size of \\mpiarg{newgroup})", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "n", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "ranks of processes in \\mpiarg{group} to appear in \\mpiarg{newgroup}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": "n", + "lis_direction": "in", + "name": "ranks", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new group derived from above, in the order defined by \\mpiarg{ranks}", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newgroup", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_group_intersection": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_intersection", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "first group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group1", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "second group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group2", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "intersection group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newgroup", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_group_range_excl": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_range_excl", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of triplets in array \\mpiarg{ranges}", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "n", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "a one-dimensional array of integer triplets, of the form (first rank, last rank, stride) indicating ranks in \\mpiarg{group} of \\MPI/ processes to be excluded from the output group \\mpiarg{newgroup}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": [ + "n", + "3" + ], + "lis_direction": "in", + "name": "ranges", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new group derived from above, preserving the order in \\mpiarg{group}", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newgroup", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_group_range_incl": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_range_incl", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of triplets in array \\mpiarg{ranges}", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "n", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "a one-dimensional array of integer triplets, of the form (first rank, last rank, stride) indicating ranks in \\mpiarg{group} of \\MPI/ processes to be included in \\mpiarg{newgroup}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": [ + "n", + "3" + ], + "lis_direction": "in", + "name": "ranges", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new group derived from above, in the order defined by \\mpiarg{ranges}", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newgroup", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_group_rank": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_rank", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of the calling \\MPI/ process in group, or \\mpiconst{MPI_UNDEFINED} if the \\MPI/ process is not a member", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "rank", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_group_size": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_size", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of \\MPI/ processes in the group", + "func_type": "", + "kind": "COMM_SIZE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "size", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_group_toint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_toint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "KEY_INDEX" + }, + "mpi_group_translate_ranks": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_translate_ranks", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group1", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group1", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in \\mpiarg{ranks1} and \\mpiarg{ranks2} arrays", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "n", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "array of zero or more valid ranks in group1", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": "n", + "lis_direction": "in", + "name": "ranks1", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group2", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group2", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of corresponding ranks in group2, \\mpiconst{MPI_UNDEFINED} when no correspondence exists.", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": "n", + "lis_direction": "out", + "name": "ranks2", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_group_union": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Group_union", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "first group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group1", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "second group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group2", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "union group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newgroup", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_iallgather": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Iallgather", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements received from any \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_iallgatherv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Iallgatherv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length group size) containing the number of elements that are received from each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{i} specifies the displacement (relative to \\mpiarg{recvbuf}) at which to place the incoming data from \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "displs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_iallreduce": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Iallreduce", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of send buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ialltoall": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ialltoall", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent to each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements received from any \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ialltoallv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ialltoallv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length group size) specifying the number of elements to send to each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{j} specifies the displacement (relative to \\mpiarg{sendbuf}) from which to take the outgoing data destined for \\MPI/ process \\mpicode{j}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length group size) specifying the number of elements that can be received from each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{i} specifies the displacement (relative to \\mpiarg{recvbuf}) at which to place the incoming data from \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "rdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ialltoallw": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ialltoallw", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size) specifying the number of elements to send to each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{j} specifies the displacement in bytes (relative to \\mpiarg{sendbuf}) from which to take the outgoing data destined for \\MPI/ process \\mpicode{j}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "array of datatypes (of length group size). Entry \\mpicode{j} specifies the type of data to send to \\MPI/ process \\mpicode{j}", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendtypes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size) specifying the number of elements that can be received from each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{i} specifies the displacement in bytes (relative to \\mpiarg{recvbuf}) at which to place the incoming data from \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "rdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "array of datatypes (of length group size). Entry \\mpicode{i} specifies the type of data received from \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvtypes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ibarrier": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ibarrier", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ibcast": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ibcast", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "buffer", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of broadcast root", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ibsend": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ibsend", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each send buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_iexscan": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Iexscan", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in input buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of input buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "intra-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_igather": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Igather", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements for any single receive", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of recv buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of receiving \\MPI/ process", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_igatherv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Igatherv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": true, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length group size) containing the number of elements that are received from each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{i} specifies the displacement relative to \\mpiarg{recvbuf} at which to place the incoming data from \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "displs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of recv buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of receiving \\MPI/ process", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_improbe": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Improbe", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of source or \\mpiconst{MPI_ANY_SOURCE}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag or \\mpiconst{MPI_ANY_TAG}", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if there is a matching message that can be received", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "returned message", + "func_type": "", + "kind": "MESSAGE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "message", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_imrecv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Imrecv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in receive buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each receive buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message", + "func_type": "", + "kind": "MESSAGE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "message", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ineighbor_allgather": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ineighbor_allgather", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent to each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements received from each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated virtual topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ineighbor_allgatherv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ineighbor_allgatherv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent to each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length indegree) containing the number of elements that are received from each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length indegree). Entry \\mpicode{i} specifies the displacement (relative to \\mpiarg{recvbuf}) at rwhich to place the incoming data from neighbor \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "displs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated virtual topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ineighbor_alltoall": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ineighbor_alltoall", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent to each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements received from each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated virtual topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ineighbor_alltoallv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ineighbor_alltoallv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length outdegree) specifying the number of elements to send to each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length outdegree). Entry \\mpicode{j} specifies the displacement (relative to \\mpiarg{sendbuf}) from which send the outgoing data to neighbor \\mpicode{j}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length indegree) specifying the number of elements that are received from each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length indegree). Entry \\mpicode{i} specifies the displacement (relative to \\mpiarg{recvbuf}) at which to place the incoming data from neighbor \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "rdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated virtual topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ineighbor_alltoallw": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ineighbor_alltoallw", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length outdegree) specifying the number of elements to send to each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length outdegree). Entry \\mpicode{j} specifies the displacement in bytes (relative to \\mpiarg{sendbuf}) from which to take the outgoing data destined for neighbor \\mpicode{j}", + "func_type": "", + "kind": "DISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "array of datatypes (of length outdegree). Entry \\mpicode{j} specifies the type of data to send to neighbor \\mpicode{j}", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendtypes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length indegree) specifying the number of elements that are received from each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length indegree). Entry \\mpicode{i} specifies the displacement in bytes (relative to \\mpiarg{recvbuf}) at which to place the incoming data from neighbor \\mpicode{i}", + "func_type": "", + "kind": "DISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "rdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "array of datatypes (of length indegree). Entry \\mpicode{i} specifies the type of data received from neighbor \\mpicode{i}", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvtypes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated virtual topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_info_c2f": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Info_c2f", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "F90_INFO" + }, + "mpi_info_create": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Info_create", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object created", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "info", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_info_create_env": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Info_create_env", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ARGUMENT_COUNT", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "argc", + "optional": false, + "param_direction": "inout", + "pointer": false, + "root_only": false, + "suppress": "lis_parameter f08_parameter f90_parameter" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ARGUMENT_LIST", + "large_only": false, + "length": "argc", + "lis_direction": "inout", + "name": "argv", + "optional": false, + "param_direction": "inout", + "pointer": false, + "root_only": false, + "suppress": "lis_parameter f08_parameter f90_parameter" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "info", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_info_delete": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Info_delete", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "key", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "key", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_info_dup": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Info_dup", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object created", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newinfo", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_info_f2c": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Info_f2c", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "F90_INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "INFO" + }, + "mpi_info_free": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Info_free", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "info", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_info_fromint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Info_fromint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEY_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "INFO" + }, + "mpi_info_get": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Info_get", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "key", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "key", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of value associated with \\mpiarg{key}", + "func_type": "", + "kind": "INFO_VALUE_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "valuelen", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "value", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": "valuelen", + "lis_direction": "out", + "name": "value", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if \\mpiarg{key} defined, \\mpicode{false} if not", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_info_get_nkeys": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Info_get_nkeys", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of defined keys", + "func_type": "", + "kind": "KEY_INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "nkeys", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_info_get_nthkey": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Info_get_nthkey", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key number", + "func_type": "", + "kind": "KEY_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "n", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "key", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_info_get_string": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Info_get_string", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "key", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "key", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of buffer", + "func_type": "", + "kind": "INFO_VALUE_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "buflen", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "value", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "value", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if \\mpiarg{key} is defined, \\mpicode{false} otherwise", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_info_get_valuelen": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Info_get_valuelen", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "key", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "key", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of value associated with \\mpiarg{key}", + "func_type": "", + "kind": "INFO_VALUE_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "valuelen", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if \\mpiarg{key} defined, \\mpicode{false} if not", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_info_set": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Info_set", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "key", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "key", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "value", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "value", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_info_toint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Info_toint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "KEY_INDEX" + }, + "mpi_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ARGUMENT_COUNT", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "argc", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "lis_parameter f08_parameter f90_parameter" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ARGUMENT_LIST", + "large_only": false, + "length": "argc", + "lis_direction": "inout", + "name": "argv", + "optional": false, + "param_direction": "inout", + "pointer": true, + "root_only": false, + "suppress": "lis_parameter f08_parameter f90_parameter" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_init_thread": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Init_thread", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ARGUMENT_COUNT", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "argc", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "lis_parameter f08_parameter f90_parameter" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ARGUMENT_LIST", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "argv", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "lis_parameter f08_parameter f90_parameter" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "desired level of thread support", + "func_type": "", + "kind": "THREAD_LEVEL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "required", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "provided level of thread support", + "func_type": "", + "kind": "THREAD_LEVEL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "provided", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_initialized": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Initialized", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "Flag is true if \\mpifunc{MPI_INIT} or \\mpifunc{MPI_INIT_THREAD} has been called and false otherwise", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_intercomm_create": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Intercomm_create", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "local intra-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "local_comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of local group leader in \\mpiarg{local_comm}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "local_leader", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "``peer'' communicator; significant only at the \\mpiarg{local_leader}", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "peer_comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of remote group leader in \\mpiarg{peer_comm}; significant only at the \\mpiarg{local_leader}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "remote_leader", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new inter-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newintercomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_intercomm_create_from_groups": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Intercomm_create_from_groups", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "local group", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "local_group", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of local group leader in \\mpiarg{local\\_group}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "local_leader", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "remote group, significant only at \\mpiarg{local\\_leader}", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "remote_group", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of remote group leader in \\mpiarg{remote\\_group}, significant only at \\mpiarg{local\\_leader}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "remote_leader", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "unique identifier for this operation", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "stringtag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "error handler to be attached to new inter-communicator", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errhandler", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new inter-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newintercomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_intercomm_merge": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Intercomm_merge", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "inter-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "intercomm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "ordering of the local and remote groups in the new intra-communicator", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "high", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new intra-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newintracomm", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_iprobe": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Iprobe", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of source or \\mpiconst{MPI_ANY_SOURCE}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag or \\mpiconst{MPI_ANY_TAG}", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if there is a matching message that can be received", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_irecv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Irecv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in receive buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each receive buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of source or \\mpiconst{MPI_ANY_SOURCE}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag or \\mpiconst{MPI_ANY_TAG}", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ireduce": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ireduce", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": true, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of send buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "reduce operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of the root", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ireduce_scatter": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ireduce_scatter", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array specifying the number of elements in result distributed to each \\MPI/ process.", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of input buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ireduce_scatter_block": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ireduce_scatter_block", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "element count per block", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of send and receive buffers", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_irsend": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Irsend", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each send buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_is_thread_main": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Is_thread_main", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "true if calling thread is main thread, false otherwise", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_iscan": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Iscan", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in input buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of input buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_iscatter": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Iscatter", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent to each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in receive buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of sending \\MPI/ process", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_iscatterv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Iscatterv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length group size) specifying the number of elements to send to each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{i} specifies the displacement (relative to \\mpiarg{sendbuf}) from which to take the outgoing data to \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "displs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in receive buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of sending \\MPI/ process", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_isend": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Isend", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each send buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_isendrecv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Isendrecv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each send buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "send tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in receive buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each receive buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of source or \\mpiconst{MPI_ANY_SOURCE}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "receive tag or \\mpiconst{MPI_ANY_TAG}", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_isendrecv_replace": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Isendrecv_replace", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of send and receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "buf", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send and receive buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "type of elements in send and receive buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "send message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of source or \\mpiconst{MPI_ANY_SOURCE}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "receive message tag or \\mpiconst{MPI_ANY_TAG}", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_issend": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Issend", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each send buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_keyval_create": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": true, + "render_main": true + }, + "name": "MPI_Keyval_create", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "Copy callback function for \\mpiarg{keyval}", + "func_type": "MPI_Copy_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "copy_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "Delete callback function for \\mpiarg{keyval}", + "func_type": "MPI_Delete_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "delete_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value for future access", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "keyval", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "Extra state for callback functions", + "func_type": "", + "kind": "EXTRA_STATE2", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_keyval_free": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": true, + "render_main": true + }, + "name": "MPI_Keyval_free", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "Frees the integer key value", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "keyval", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_lookup_name": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Lookup_name", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "a service name", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "service_name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "implementation-specific information", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "a port name", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": "MPI_MAX_PORT_NAME", + "lis_direction": "out", + "name": "port_name", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_message_c2f": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Message_c2f", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "MESSAGE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "message", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "F90_MESSAGE" + }, + "mpi_message_f2c": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Message_f2c", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "F90_MESSAGE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "message", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "MESSAGE" + }, + "mpi_message_fromint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Message_fromint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEY_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "message", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "MESSAGE" + }, + "mpi_message_toint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Message_toint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "MESSAGE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "message", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "KEY_INDEX" + }, + "mpi_mprobe": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Mprobe", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of source or \\mpiconst{MPI_ANY_SOURCE}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag or \\mpiconst{MPI_ANY_TAG}", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "returned message", + "func_type": "", + "kind": "MESSAGE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "message", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_mrecv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Mrecv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in receive buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each receive buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message", + "func_type": "", + "kind": "MESSAGE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "message", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_neighbor_allgather": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Neighbor_allgather", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent to each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements received from each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated virtual topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_neighbor_allgather_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Neighbor_allgather_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent to each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements received from each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated virtual topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_neighbor_allgatherv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Neighbor_allgatherv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent to each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "nonnegative integer array (of length indegree) containing the number of elements that are received from each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array (of length indegree). Entry \\mpicode{i} specifies the displacement (relative to \\mpiarg{recvbuf}) at which to place the incoming data from neighbor \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "displs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated virtual topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_neighbor_allgatherv_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Neighbor_allgatherv_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent to each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length indegree) containing the number of elements that are received from each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array (of length indegree). Entry \\mpicode{i} specifies the displacement (relative to \\mpiarg{recvbuf}) at which to place the incoming data from neighbor \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "displs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated virtual topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_neighbor_alltoall": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Neighbor_alltoall", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent to each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements received from each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated virtual topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_neighbor_alltoall_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Neighbor_alltoall_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent to each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements received from each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated virtual topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_neighbor_alltoallv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Neighbor_alltoallv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "nonnegative integer array (of length outdegree) specifying the number of elements to send to each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array (of length outdegree). Entry \\mpicode{j} specifies the displacement (relative to \\mpiarg{sendbuf}) from which to send the outgoing data to neighbor \\mpicode{j}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "nonnegative integer array (of length indegree) specifying the number of elements that are received from each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array (of length indegree). Entry \\mpicode{i} specifies the displacement (relative to \\mpiarg{recvbuf}) at which to place the incoming data from neighbor \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "rdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated virtual topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_neighbor_alltoallv_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Neighbor_alltoallv_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length outdegree) specifying the number of elements to send to each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length outdegree). Entry \\mpicode{j} specifies the displacement (relative to \\mpiarg{sendbuf}) from which send the outgoing data to neighbor \\mpicode{j}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length indegree) specifying the number of elements that are received from each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length indegree). Entry \\mpicode{i} specifies the displacement (relative to \\mpiarg{recvbuf}) at which to place the incoming data from neighbor \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "rdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated virtual topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_neighbor_alltoallw": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Neighbor_alltoallw", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "nonnegative integer array (of length outdegree) specifying the number of elements to send to each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array (of length outdegree). Entry \\mpicode{j} specifies the displacement in bytes (relative to \\mpiarg{sendbuf}) from which to take the outgoing data destined for neighbor \\mpicode{j}", + "func_type": "", + "kind": "DISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "array of datatypes (of length outdegree). Entry \\mpicode{j} specifies the type of data to send to neighbor \\mpicode{j}", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendtypes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "nonnegative integer array (of length indegree) specifying the number of elements that are received from each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array (of length indegree). Entry \\mpicode{i} specifies the displacement in bytes (relative to \\mpiarg{recvbuf}) at which to place the incoming data from neighbor \\mpicode{i}", + "func_type": "", + "kind": "DISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "rdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "array of datatypes (of length indegree). Entry \\mpicode{i} specifies the type of data received from neighbor \\mpicode{i}", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvtypes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated virtual topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_neighbor_alltoallw_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Neighbor_alltoallw_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length outdegree) specifying the number of elements to send to each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length outdegree). Entry \\mpicode{j} specifies the displacement in bytes (relative to \\mpiarg{sendbuf}) from which to take the outgoing data destined for neighbor \\mpicode{j}", + "func_type": "", + "kind": "DISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "array of datatypes (of length outdegree). Entry \\mpicode{j} specifies the type of data to send to neighbor \\mpicode{j}", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendtypes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length indegree) specifying the number of elements that are received from each neighbor", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length indegree). Entry \\mpicode{i} specifies the displacement in bytes (relative to \\mpiarg{recvbuf}) at which to place the incoming data from neighbor \\mpicode{i}", + "func_type": "", + "kind": "DISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "rdispls", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "array of datatypes (of length indegree). Entry \\mpicode{i} specifies the type of data received from neighbor \\mpicode{i}", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvtypes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator with associated virtual topology", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_null_copy_fn": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": "MPI_Copy_function", + "proxy_render": false, + "render_main": true + }, + "name": "MPI_NULL_COPY_FN", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldcomm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE2", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL_10", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_in", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL_10", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_out", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierr", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_null_delete_fn": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": "MPI_Delete_function", + "proxy_render": false, + "render_main": true + }, + "name": "MPI_NULL_DELETE_FN", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL_10", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE2", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_op_c2f": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Op_c2f", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "F90_OP" + }, + "mpi_op_commutative": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Op_commutative", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if \\mpiarg{op} is commutative, \\mpicode{false} otherwise", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "commute", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_op_create": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": false, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Op_create", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "user defined function", + "func_type": "MPI_User_function", + "kind": "POLYFUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "user_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if commutative; \\mpicode{false} otherwise.", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "commute", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "op", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_op_f2c": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Op_f2c", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "F90_OP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "OPERATION" + }, + "mpi_op_free": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Op_free", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "op", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_op_fromint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Op_fromint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEY_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "OPERATION" + }, + "mpi_op_toint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Op_toint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "KEY_INDEX" + }, + "mpi_open_port": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Open_port", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "implementation-specific information on how to establish an address", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "newly established port", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": "MPI_MAX_PORT_NAME", + "lis_direction": "out", + "name": "port_name", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_pack": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Pack", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "input buffer start", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "inbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of input data items", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "incount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each input data item", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "output buffer start", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "outbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "output buffer size, in bytes", + "func_type": "", + "kind": "POLYNUM_BYTES_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "outsize", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "current position in buffer, in bytes", + "func_type": "", + "kind": "POLYDISPLACEMENT_COUNT", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "position", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator for packed message", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_pack_external": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Pack_external", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "data representation", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "datarep", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "input buffer start", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "inbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of input data items", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "incount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each input data item", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "output buffer start", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "outbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "output buffer size, in bytes", + "func_type": "", + "kind": "POLYDTYPE_PACK_SIZE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "outsize", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "current position in buffer, in bytes", + "func_type": "", + "kind": "POLYLOCATION", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "position", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_pack_external_size": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Pack_external_size", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "data representation", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "datarep", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of input data items", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "incount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each input data item", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "output buffer size, in bytes", + "func_type": "", + "kind": "POLYDTYPE_PACK_SIZE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "size", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_pack_size": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Pack_size", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "count argument to packing call", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "incount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype argument to packing call", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator argument to packing call", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "upper bound on size of packed message, in bytes", + "func_type": "", + "kind": "POLYNUM_BYTES_NNI", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "size", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_parrived": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Parrived", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "partitioned communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "request", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "partition to be tested", + "func_type": "", + "kind": "PARTITION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "partition", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if operation completed on the specified partition, \\mpicode{false} if not", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_pcontrol": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Pcontrol", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "Profiling level", + "func_type": "", + "kind": "PROFILE_LEVEL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "level", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "VARARGS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "varargs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_pready": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Pready", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "partition to mark ready for transfer", + "func_type": "", + "kind": "PARTITION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "partition", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "partitioned communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "request", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_pready_list": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Pready_list", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "list length", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "length", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": "true", + "desc": "array of partitions", + "func_type": "", + "kind": "PARTITION", + "large_only": false, + "length": "length", + "lis_direction": "in", + "name": "array_of_partitions", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "partitioned communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "request", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_pready_range": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Pready_range", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "lowest partition ready for transfer", + "func_type": "", + "kind": "PARTITION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "partition_low", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "highest partition ready for transfer", + "func_type": "", + "kind": "PARTITION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "partition_high", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "partitioned communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "request", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_precv_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Precv_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial address of recv buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of partitions", + "func_type": "", + "kind": "PARTITION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "partitions", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements received per partition", + "func_type": "", + "kind": "XFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "type of each element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of source", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_probe": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Probe", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of source or \\mpiconst{MPI_ANY_SOURCE}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag or \\mpiconst{MPI_ANY_TAG}", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_psend_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Psend_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": "true", + "desc": "initial address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of partitions", + "func_type": "", + "kind": "PARTITION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "partitions", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent per partition", + "func_type": "", + "kind": "XFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "type of each element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_publish_name": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Publish_name", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "a service name to associate with the port", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "service_name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "implementation-specific information", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "a port name", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "port_name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_put": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Put", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of origin buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_addr", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in origin buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in origin buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of target", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "displacement from start of window to target buffer", + "func_type": "", + "kind": "RMA_DISPLACEMENT_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_disp", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in target buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in target buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "window used for communication", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_query_thread": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Query_thread", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "provided level of thread support", + "func_type": "", + "kind": "THREAD_LEVEL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "provided", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_raccumulate": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Raccumulate", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_addr", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in origin buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of target", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "displacement from start of window to beginning of target buffer", + "func_type": "", + "kind": "RMA_DISPLACEMENT_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_disp", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in target buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in target buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "accumulate operator", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\RMA/ request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_recv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Recv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in receive buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each receive buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of source or \\mpiconst{MPI_ANY_SOURCE}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag or \\mpiconst{MPI_ANY_TAG}", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_recv_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Recv_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements received", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "type of each element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of source or \\mpiconst{MPI_ANY_SOURCE}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag or \\mpiconst{MPI_ANY_TAG}", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_reduce": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Reduce", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of send buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "reduce operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of the root", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_reduce_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Reduce_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": true, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of send buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "reduce operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of the root", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_reduce_local": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Reduce_local", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "input buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "inbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "combined input and output buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "inoutbuf", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in \\mpiarg{inbuf} and \\mpiarg{inoutbuf} buffers", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of \\mpiarg{inbuf} and \\mpiarg{inoutbuf} buffers", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_reduce_scatter": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Reduce_scatter", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "nonnegative integer array (of length group size) specifying the number of elements of the result distributed to each \\MPI/ process.", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of send and receive buffers", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_reduce_scatter_block": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Reduce_scatter_block", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "element count per block", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of send and receive buffers", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_reduce_scatter_block_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Reduce_scatter_block_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "element count per block", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of send and receive buffers", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_reduce_scatter_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Reduce_scatter_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array specifying the number of elements in result distributed to each \\MPI/ process. This array must be identical on all calling \\MPI/ processes.", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "recvcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of input buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_register_datarep": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": false, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Register_datarep", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "data representation identifier", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datarep", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "function invoked to convert from file representation to native representation", + "func_type": "MPI_Datarep_conversion_function", + "kind": "POLYFUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "read_conversion_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "function invoked to convert from native representation to file representation", + "func_type": "MPI_Datarep_conversion_function", + "kind": "POLYFUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "write_conversion_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "function invoked to get the extent of a datatype as represented in the file", + "func_type": "MPI_Datarep_extent_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dtype_file_extent_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "extra state", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_remove_error_class": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Remove_error_class", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "value for the error class to remove", + "func_type": "", + "kind": "ERROR_CLASS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errorclass", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_remove_error_code": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Remove_error_code", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "error code to be removed", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errorcode", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_remove_error_string": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Remove_error_string", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "error code or class", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errorcode", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_request_c2f": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Request_c2f", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "request", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "F90_REQUEST" + }, + "mpi_request_f2c": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Request_f2c", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "F90_REQUEST", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "request", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "REQUEST" + }, + "mpi_request_free": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Request_free", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "request", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_request_fromint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Request_fromint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEY_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "request", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "REQUEST" + }, + "mpi_request_get_status": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Request_get_status", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "request", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "boolean flag, same as from \\mpifunc{MPI_TEST}", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object if flag is true", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_request_get_status_all": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Request_get_status_all", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "list length", + "func_type": "", + "kind": "ARRAY_LENGTH_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "array of requests", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": "count", + "lis_direction": "in", + "name": "array_of_requests", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "true if all of the operations are complete", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of status objects", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": "*", + "lis_direction": "out", + "name": "array_of_statuses", + "optional": false, + "param_direction": "out", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_request_get_status_any": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Request_get_status_any", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "list length", + "func_type": "", + "kind": "ARRAY_LENGTH_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "array of requests", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": "count", + "lis_direction": "in", + "name": "array_of_requests", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of operation that completed or \\mpiconst{MPI_UNDEFINED} if none completed", + "func_type": "", + "kind": "INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "index", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if one of the operations is complete", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object if flag is true", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_request_get_status_some": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Request_get_status_some", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of array_of_requests", + "func_type": "", + "kind": "ARRAY_LENGTH_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "incount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "array of requests", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": "incount", + "lis_direction": "in", + "name": "array_of_requests", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of completed requests", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "outcount", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of indices of operations that completed", + "func_type": "", + "kind": "INDEX", + "large_only": false, + "length": "*", + "lis_direction": "out", + "name": "array_of_indices", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of status objects for operations that completed", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": "*", + "lis_direction": "out", + "name": "array_of_statuses", + "optional": false, + "param_direction": "out", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_request_toint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Request_toint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "request", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "KEY_INDEX" + }, + "mpi_rget": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Rget", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of origin buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "origin_addr", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in origin buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in origin buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of target", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "displacement from window start to the beginning of the target buffer", + "func_type": "", + "kind": "RMA_DISPLACEMENT_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_disp", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in target buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in target buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "window used for communication", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\RMA/ request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_rget_accumulate": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Rget_accumulate", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_addr", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in origin buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in origin buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of result buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "result_addr", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in result buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "result_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of entries in result buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "result_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of target", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "displacement from start of window to beginning of target buffer", + "func_type": "", + "kind": "RMA_DISPLACEMENT_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_disp", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in target buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in target buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "accumulate operator", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\RMA/ request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_rput": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Rput", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of origin buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_addr", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in origin buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in origin buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "origin_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of target", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "displacement from start of window to target buffer", + "func_type": "", + "kind": "RMA_DISPLACEMENT_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_disp", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of entries in target buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each entry in target buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "target_datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "window used for communication", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\RMA/ request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_rsend": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Rsend", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "initial address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each send buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_rsend_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Rsend_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "type of each element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_scan": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Scan", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in input buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of input buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_scan_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Scan_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "starting address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "starting address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in input buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of elements of input buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "operation", + "func_type": "", + "kind": "OPERATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "op", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_scatter": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Scatter", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent to each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in receive buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of sending \\MPI/ process", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_scatter_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Scatter_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent to each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in receive buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of sending \\MPI/ process", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_scatterv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Scatterv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "nonnegative integer array (of length group size) specifying the number of elements to send to each rank", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{i} specifies the displacement (relative to \\mpiarg{sendbuf}) from which to take the outgoing data to \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "displs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in receive buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of sending \\MPI/ process", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_scatterv_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Scatterv_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "nonnegative integer array (of length group size) specifying the number of elements to send to each \\MPI/ process", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "sendcounts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "integer array (of length group size). Entry \\mpicode{i} specifies the displacement (relative to \\mpiarg{sendbuf}) from which to take the outgoing data to \\MPI/ process \\mpicode{i}", + "func_type": "", + "kind": "POLYDISPLACEMENT", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "displs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "lis_paren" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of send buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": true, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": true, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in receive buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of receive buffer elements", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of sending \\MPI/ process", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "root", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info argument", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communication request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_send": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Send", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "initial address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each send buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_send_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Send_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "type of each element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_sendrecv": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Sendrecv", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "initial address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "type of elements in send buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "send tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial address of receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "recvbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in receive buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "type of elements receive buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of source or \\mpiconst{MPI_ANY_SOURCE}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "receive tag or \\mpiconst{MPI_ANY_TAG}", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_sendrecv_replace": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Sendrecv_replace", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial address of send and receive buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "buf", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send and receive buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "type of elements in send and receive buffer", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "send message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "sendtag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of source or \\mpiconst{MPI_ANY_SOURCE}", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "receive message tag or \\mpiconst{MPI_ANY_TAG}", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "recvtag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_session_attach_buffer": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_attach_buffer", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial buffer address", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buffer", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer size, in bytes", + "func_type": "", + "kind": "POLYNUM_BYTES_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "size", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_session_c2f": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_c2f", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "F90_SESSION" + }, + "mpi_session_call_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_call_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "session with error handler", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errorcode", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_session_create_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_create_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "user defined error handling procedure", + "func_type": "MPI_Session_errhandler_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session_errhandler_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "tilda" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "errhandler", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_session_detach_buffer": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_detach_buffer", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial buffer address", + "func_type": "", + "kind": "C_BUFFER2", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buffer_addr", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer size, in bytes", + "func_type": "", + "kind": "POLYNUM_BYTES", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "size", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_session_errhandler_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_errhandler_function", + "name_f90": "SESSION_ERRHANDLER_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": true, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "error_code", + "optional": false, + "param_direction": "in", + "pointer": true, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "VARARGS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "varargs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + } + ], + "return_kind": "NOTHING" + }, + "mpi_session_f2c": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_f2c", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "F90_SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "SESSION" + }, + "mpi_session_finalize": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_finalize", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "session to be finalized", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "session", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_session_flush_buffer": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_flush_buffer", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_session_fromint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_fromint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEY_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "SESSION" + }, + "mpi_session_get_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_get_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "session", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "error handler currently associated with session", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "errhandler", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_session_get_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_get_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "session", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "see explanation below", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "info_used", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_session_get_nth_pset": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_get_nth_pset", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "session", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of the desired process set name", + "func_type": "", + "kind": "INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "n", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of the pset\\_name argument", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "pset_len", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "name of the \\mpiarg{n}th process set", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "pset_name", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_session_get_num_psets": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_get_num_psets", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "session", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of available process sets", + "func_type": "", + "kind": "ARRAY_LENGTH_NNI", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "npset_names", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_session_get_pset_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_get_pset_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "session", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "name of process set", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "pset_name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object containing information about the given process set", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "info", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_session_iflush_buffer": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_iflush_buffer", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_session_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object to specify thread support level and \\MPI/ implementation specific resources", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "error handler to invoke in the event that an error is encountered during this function call", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errhandler", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new session", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "session", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_session_set_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_set_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "session", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new error handler for session", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errhandler", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_session_toint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Session_toint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "session", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "KEY_INDEX" + }, + "mpi_sizeof": { + "attributes": { + "c_expressible": false, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Sizeof", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "a Fortran variable of numeric intrinsic type", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "x", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "f08_intent f90_parenthesis" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size of machine representation of that type", + "func_type": "", + "kind": "NUM_BYTES_SMALL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "size", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ssend": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ssend", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "initial address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in send buffer", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each send buffer element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_ssend_init": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Ssend_init", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of send buffer", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements sent", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "type of each element", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of destination", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dest", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "message tag", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "request", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_start": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Start", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "request", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_startall": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Startall", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "list length", + "func_type": "", + "kind": "ARRAY_LENGTH_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of requests", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": "count", + "lis_direction": "inout", + "name": "array_of_requests", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_status_c2f": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Status_c2f", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "c_status", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "F90_STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "f_status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CLASS" + }, + "mpi_status_c2f08": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Status_c2f08", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "c_status", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "F08_STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "f08_status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CLASS" + }, + "mpi_status_f082c": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Status_f082c", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "", + "func_type": "", + "kind": "F08_STATUS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "f08_status", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "c_status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CLASS" + }, + "mpi_status_f082f": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": true, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": true, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Status_f082f", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "status object declared as named type", + "func_type": "", + "kind": "F08_STATUS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "f08_status", + "optional": false, + "param_direction": "in", + "pointer": true, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object declared as array", + "func_type": "", + "kind": "F90_STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "f_status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_status_f2c": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Status_f2c", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "", + "func_type": "", + "kind": "F90_STATUS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "f_status", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "c_status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CLASS" + }, + "mpi_status_f2f08": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": true, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": true, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Status_f2f08", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "status object declared as array", + "func_type": "", + "kind": "F90_STATUS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "f_status", + "optional": false, + "param_direction": "in", + "pointer": true, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status object declared as named type", + "func_type": "", + "kind": "F08_STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "f08_status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_status_get_error": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Status_get_error", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "status from which to retrieve error", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "status", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "error set in the \\mpiconst{MPI\\_ERROR} field", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "err", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_status_get_source": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Status_get_source", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "status from which to retrieve source rank", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "status", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank set in the \\mpiconst{MPI\\_SOURCE} field", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "source", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_status_get_tag": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Status_get_tag", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "status from which to retrieve tag", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "status", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "tag set in the \\mpiconst{MPI\\_TAG} field", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "tag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_status_set_cancelled": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Status_set_cancelled", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status with which to associate cancel flag", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "status", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "if true, indicates request was cancelled", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "flag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_status_set_elements": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Status_set_elements", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status with which to associate count", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "status", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype associated with count", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements to associate with status", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_status_set_elements_x": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Status_set_elements_x", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status with which to associate count", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "status", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype associated with count", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements to associate with status", + "func_type": "", + "kind": "XFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_status_set_error": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Status_set_error", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status with which to associate error", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "status", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "error to set in the \\mpiconst{MPI\\_ERROR} field", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "err", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_status_set_source": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Status_set_source", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status with which to associate source rank", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "status", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank to set in the \\mpiconst{MPI\\_SOURCE} field", + "func_type": "", + "kind": "RANK", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_status_set_tag": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Status_set_tag", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "status with which to associate tag", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "status", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "tag to set in the \\mpiconst{MPI\\_TAG} field", + "func_type": "", + "kind": "TAG", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "tag", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_category_changed": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_category_changed", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "update number", + "func_type": "", + "kind": "UPDATE_NUMBER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "update_number", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_category_get_categories": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_category_get_categories", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of the category to be queried, in the range from $0$ to $\\mpiarg{num_cat}-1$", + "func_type": "", + "kind": "CAT_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "cat_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the length of the indices array", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "len", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "an integer array of size \\mpiarg{len}, indicating category indices", + "func_type": "", + "kind": "CAT_INDEX", + "large_only": false, + "length": "len", + "lis_direction": "out", + "name": "indices", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_category_get_cvars": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_category_get_cvars", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of the category to be queried, in the range from $0$ to $\\mpiarg{num_cat}-1$", + "func_type": "", + "kind": "CAT_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "cat_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the length of the indices array", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "len", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "an integer array of size \\mpiarg{len}, indicating control variable indices", + "func_type": "", + "kind": "CVAR_INDEX", + "large_only": false, + "length": "len", + "lis_direction": "out", + "name": "indices", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_category_get_events": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_category_get_events", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of the category to be queried, in the range from $0$ to $\\mpiarg{num_cat}-1$", + "func_type": "", + "kind": "CAT_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "cat_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the length of the indices array", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "len", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "an integer array of size \\mpiarg{len}, indicating event type indices", + "func_type": "", + "kind": "CAT_INDEX", + "large_only": false, + "length": "len", + "lis_direction": "out", + "name": "indices", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_category_get_index": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_category_get_index", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "the name of the category", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the index of the category", + "func_type": "", + "kind": "CAT_INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "cat_index", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_category_get_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_category_get_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of the category to be queried", + "func_type": "", + "kind": "CAT_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "cat_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer to return the string containing the name of the category", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "name", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of the string and/or buffer for \\mpiarg{name}", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "name_len", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer to return the string containing the description of the category", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "desc", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of the string and/or buffer for \\mpiarg{desc}", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "desc_len", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of control variables in the category", + "func_type": "", + "kind": "CVAR_INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "num_cvars", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of performance variables in the category", + "func_type": "", + "kind": "PVAR_INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "num_pvars", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of categories contained in the category", + "func_type": "", + "kind": "CAT_INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "num_categories", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_category_get_num": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_category_get_num", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "current number of categories", + "func_type": "", + "kind": "CAT_INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "num_cat", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_category_get_num_events": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_category_get_num_events", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of the category to be queried", + "func_type": "", + "kind": "CAT_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "cat_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of event types in the category", + "func_type": "", + "kind": "EVENT_INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "num_events", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_category_get_pvars": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_category_get_pvars", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of the category to be queried, in the range from $0$ to $\\mpiarg{num_cat}-1$", + "func_type": "", + "kind": "CAT_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "cat_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the length of the indices array", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "len", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "an integer array of size \\mpiarg{len}, indicating performance variable indices", + "func_type": "", + "kind": "PVAR_INDEX", + "large_only": false, + "length": "len", + "lis_direction": "out", + "name": "indices", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_cvar_get_index": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_cvar_get_index", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "name of the control variable", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of the control variable", + "func_type": "", + "kind": "CVAR_INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "cvar_index", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_cvar_get_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_cvar_get_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of the control variable to be queried, value between $0$ and $\\mpiarg{num_cvar}-1$", + "func_type": "", + "kind": "CVAR_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "cvar_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer to return the string containing the name of the control variable", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "name", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of the string and/or buffer for \\mpiarg{name}", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "name_len", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "verbosity level of this variable", + "func_type": "", + "kind": "TOOL_VAR_VERBOSITY", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "verbosity", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpi/ datatype of the information stored in the control variable", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "datatype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "optional descriptor for enumeration information", + "func_type": "", + "kind": "TOOLS_ENUM", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "enumtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer to return the string containing a description of the control variable", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "desc", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of the string and/or buffer for \\mpiarg{desc}", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "desc_len", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "type of \\mpi/ object to which this variable must be bound", + "func_type": "", + "kind": "BIND_TYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "bind", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "scope of when changes to this variable are possible", + "func_type": "", + "kind": "VARIABLE_SCOPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "scope", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_cvar_get_num": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_cvar_get_num", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "returns number of control variables", + "func_type": "", + "kind": "CVAR_INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "num_cvar", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_cvar_handle_alloc": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_cvar_handle_alloc", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of control variable for which handle is to be allocated", + "func_type": "", + "kind": "CVAR_INDEX_SPECIAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "cvar_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "reference to a handle of the \\mpi/ object to which this variable is supposed to be bound", + "func_type": "", + "kind": "TOOL_MPI_OBJ", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "obj_handle", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "allocated handle", + "func_type": "", + "kind": "CVAR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "handle", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements used to represent this variable", + "func_type": "", + "kind": "TOOLS_NUM_ELEM_SMALL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "count", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_cvar_handle_free": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_cvar_handle_free", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "handle to be freed", + "func_type": "", + "kind": "CVAR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "handle", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_cvar_read": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_cvar_read", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "handle to the control variable to be read", + "func_type": "", + "kind": "CVAR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "handle", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial address of storage location for variable value", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_cvar_write": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_cvar_write", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "handle to the control variable to be written", + "func_type": "", + "kind": "CVAR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "handle", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "initial address of storage location for variable value", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_enum_get_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_enum_get_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "enumeration to be queried", + "func_type": "", + "kind": "TOOLS_ENUM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "enumtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of discrete values represented by this enumeration", + "func_type": "", + "kind": "TOOLENUM_SIZE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "num", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer to return the string containing the name of the enumeration item", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "name", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of the string and/or buffer for \\mpiarg{name}", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "name_len", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_enum_get_item": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_enum_get_item", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "enumeration to be queried", + "func_type": "", + "kind": "TOOLS_ENUM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "enumtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of the value to be queried in this enumeration", + "func_type": "", + "kind": "TOOLENUM_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "variable value", + "func_type": "", + "kind": "TOOL_VAR_VALUE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "value", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer to return the string containing the name of the enumeration item", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "name", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of the string and/or buffer for \\mpiarg{name}", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "name_len", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_event_callback_get_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_callback_get_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "event registration", + "func_type": "", + "kind": "EVENT_REGISTRATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "event_registration", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "callback safety level", + "func_type": "", + "kind": "CALLBACK_SAFETY", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "cb_safety", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "info_used", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_event_callback_set_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_callback_set_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "event registration", + "func_type": "", + "kind": "EVENT_REGISTRATION", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "event_registration", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "callback safety level", + "func_type": "", + "kind": "CALLBACK_SAFETY", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "cb_safety", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_event_cb_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_cb_function", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EVENT_INSTANCE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "event_instance", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EVENT_REGISTRATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "event_registration", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "CALLBACK_SAFETY", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "cb_safety", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "user_data", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "NOTHING" + }, + "mpi_t_event_copy": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_copy", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "event instance provided to the callback function", + "func_type": "", + "kind": "EVENT_INSTANCE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "event_instance", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "user-allocated buffer for event data", + "func_type": "", + "kind": "C_BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buffer", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_event_dropped_cb_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_dropped_cb_function", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "DROPPED_COUNT", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EVENT_REGISTRATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "event_registration", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "SOURCE_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "CALLBACK_SAFETY", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "cb_safety", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "user_data", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "NOTHING" + }, + "mpi_t_event_free_cb_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_free_cb_function", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EVENT_REGISTRATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "event_registration", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "CALLBACK_SAFETY", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "cb_safety", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "user_data", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "NOTHING" + }, + "mpi_t_event_get_index": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_get_index", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "name of the event type", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of the event type", + "func_type": "", + "kind": "EVENT_INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "event_index", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_event_get_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_get_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of the event type to be queried between $0$ and $\\mpiarg{num_events}-1$", + "func_type": "", + "kind": "EVENT_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "event_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer to return the string containing the name of the event type", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "name", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of the string and/or buffer for \\mpiarg{name}", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "name_len", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "verbosity level of this event type", + "func_type": "", + "kind": "TOOL_VAR_VERBOSITY", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "verbosity", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of \\mpi/ basic datatypes used to encode the event data", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": "num_elements", + "lis_direction": "out", + "name": "array_of_datatypes", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of byte displacements of the elements in the event buffer", + "func_type": "", + "kind": "DISPLACEMENT_NNI", + "large_only": false, + "length": "num_elements", + "lis_direction": "out", + "name": "array_of_displacements", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of \\mpiarg{array\\_of\\_datatypes} and \\mpiarg{array\\_of\\_displacements} arrays", + "func_type": "", + "kind": "ARRAY_LENGTH_NNI", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "num_elements", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "optional descriptor for enumeration information", + "func_type": "", + "kind": "TOOLS_ENUM", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "enumtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "optional info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "info", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer to return the string containing a description of the event type", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "desc", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of the string and/or buffer for \\mpiarg{desc}", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "desc_len", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "type of \\mpi/ object to which an event of this type must be bound", + "func_type": "", + "kind": "BIND_TYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "bind", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_event_get_num": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_get_num", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "returns number of event types", + "func_type": "", + "kind": "EVENT_INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "num_events", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_event_get_source": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_get_source", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "event instance provided to the callback function", + "func_type": "", + "kind": "EVENT_INSTANCE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "event_instance", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index identifying the source", + "func_type": "", + "kind": "SOURCE_INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "source_index", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_event_get_timestamp": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_get_timestamp", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "event instance provided to the callback function", + "func_type": "", + "kind": "EVENT_INSTANCE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "event_instance", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "timestamp the event was observed", + "func_type": "", + "kind": "TOOLS_TICK_COUNT", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "event_timestamp", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_event_handle_alloc": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_handle_alloc", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of event type for which the registration handle is to be allocated", + "func_type": "", + "kind": "EVENT_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "event_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "reference to a handle of the \\mpi/ object to which this event is supposed to be bound", + "func_type": "", + "kind": "TOOL_MPI_OBJ", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "obj_handle", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "event registration", + "func_type": "", + "kind": "EVENT_REGISTRATION", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "event_registration", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_event_handle_free": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_handle_free", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "event registration", + "func_type": "", + "kind": "EVENT_REGISTRATION", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "event_registration", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "pointer to a user-controlled buffer", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "user_data", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "pointer to user-defined callback function", + "func_type": "", + "kind": "EVENT_FREE_CB_FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "free_cb_function", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_event_handle_get_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_handle_get_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "event registration", + "func_type": "", + "kind": "EVENT_REGISTRATION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "event_registration", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "info_used", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_event_handle_set_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_handle_set_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "event registration", + "func_type": "", + "kind": "EVENT_REGISTRATION", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "event_registration", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_event_read": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_read", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "event-instance handle provided to the callback function", + "func_type": "", + "kind": "EVENT_INSTANCE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "event_instance", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index into the array of datatypes of the item to be queried", + "func_type": "", + "kind": "INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "element_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "pointer to a memory location to store the item data", + "func_type": "", + "kind": "C_BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buffer", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_event_register_callback": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_register_callback", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "event registration", + "func_type": "", + "kind": "EVENT_REGISTRATION", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "event_registration", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "maximum callback safety level", + "func_type": "", + "kind": "CALLBACK_SAFETY", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "cb_safety", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "pointer to a user-controlled buffer", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "user_data", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "pointer to user-defined callback function", + "func_type": "", + "kind": "EVENT_CB_FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "event_cb_function", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_event_set_dropped_handler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_event_set_dropped_handler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "valid event registration", + "func_type": "", + "kind": "EVENT_REGISTRATION", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "event_registration", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "pointer to user-defined callback function", + "func_type": "", + "kind": "EVENT_DROP_CB_FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "dropped_cb_function", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_finalize": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_finalize", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_init_thread": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_init_thread", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "desired level of thread support", + "func_type": "", + "kind": "THREAD_LEVEL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "required", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "provided level of thread support", + "func_type": "", + "kind": "THREAD_LEVEL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "provided", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_pvar_get_index": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_pvar_get_index", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "the name of the performance variable", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the class of the performance variable", + "func_type": "", + "kind": "PVAR_CLASS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "var_class", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the index of the performance variable", + "func_type": "", + "kind": "PVAR_INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "pvar_index", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_pvar_get_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_pvar_get_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of the performance variable to be queried between $0$ and $\\mpiarg{num_pvar}-1$", + "func_type": "", + "kind": "PVAR_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "pvar_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer to return the string containing the name of the performance variable", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "name", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of the string and/or buffer for \\mpiarg{name}", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "name_len", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "verbosity level of this variable", + "func_type": "", + "kind": "TOOL_VAR_VERBOSITY", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "verbosity", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "class of performance variable", + "func_type": "", + "kind": "PVAR_CLASS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "var_class", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpi/ datatype of the information stored in the performance variable", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "datatype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "optional descriptor for enumeration information", + "func_type": "", + "kind": "TOOLS_ENUM", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "enumtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer to return the string containing a description of the performance variable", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "desc", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of the string and/or buffer for \\mpiarg{desc}", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "desc_len", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "type of \\mpi/ object to which this variable must be bound", + "func_type": "", + "kind": "BIND_TYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "bind", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "flag indicating whether the variable can be written/reset", + "func_type": "", + "kind": "LOGICAL_OPTIONAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "readonly", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "flag indicating whether the variable can be started and stopped or is continuously active", + "func_type": "", + "kind": "LOGICAL_OPTIONAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "continuous", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "flag indicating whether the variable can be atomically read and reset", + "func_type": "", + "kind": "LOGICAL_OPTIONAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "atomic", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_pvar_get_num": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_pvar_get_num", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "returns number of performance variables", + "func_type": "", + "kind": "PVAR_INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "num_pvar", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_pvar_handle_alloc": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_pvar_handle_alloc", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "identifier of performance experiment session", + "func_type": "", + "kind": "PVAR_SESSION", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "pe_session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of performance variable for which handle is to be allocated", + "func_type": "", + "kind": "PVAR_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "pvar_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "reference to a handle of the \\mpi/ object to which this variable is supposed to be bound", + "func_type": "", + "kind": "TOOL_MPI_OBJ", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "obj_handle", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "allocated handle", + "func_type": "", + "kind": "PVAR", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "handle", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements used to represent this variable", + "func_type": "", + "kind": "TOOLS_NUM_ELEM_SMALL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "count", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_pvar_handle_free": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_pvar_handle_free", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "identifier of performance experiment session", + "func_type": "", + "kind": "PVAR_SESSION", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "pe_session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "handle to be freed", + "func_type": "", + "kind": "PVAR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "handle", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_pvar_read": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_pvar_read", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "identifier of performance experiment session", + "func_type": "", + "kind": "PVAR_SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "pe_session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "handle of a performance variable", + "func_type": "", + "kind": "PVAR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "handle", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial address of storage location for variable value", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_pvar_readreset": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_pvar_readreset", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "identifier of performance experiment session", + "func_type": "", + "kind": "PVAR_SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "pe_session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "handle of a performance variable", + "func_type": "", + "kind": "PVAR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "handle", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial address of storage location for variable value", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "buf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_pvar_reset": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_pvar_reset", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "identifier of performance experiment session", + "func_type": "", + "kind": "PVAR_SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "pe_session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "handle of a performance variable", + "func_type": "", + "kind": "PVAR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "handle", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_pvar_session_create": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_pvar_session_create", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "identifier of performance experiment session", + "func_type": "", + "kind": "PVAR_SESSION", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "pe_session", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_pvar_session_free": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_pvar_session_free", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "identifier of performance experiment session", + "func_type": "", + "kind": "PVAR_SESSION", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "pe_session", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_pvar_start": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_pvar_start", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "identifier of performance experiment session", + "func_type": "", + "kind": "PVAR_SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "pe_session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "handle of a performance variable", + "func_type": "", + "kind": "PVAR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "handle", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_pvar_stop": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_pvar_stop", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "identifier of performance experiment session", + "func_type": "", + "kind": "PVAR_SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "pe_session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "handle of a performance variable", + "func_type": "", + "kind": "PVAR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "handle", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_pvar_write": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_pvar_write", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "identifier of performance experiment session", + "func_type": "", + "kind": "PVAR_SESSION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "pe_session", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "handle of a performance variable", + "func_type": "", + "kind": "PVAR", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "handle", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "initial address of storage location for variable value", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "buf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_source_get_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_source_get_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of the source to be queried between $0$ and $\\mpiarg{num_sources}-1$", + "func_type": "", + "kind": "SOURCE_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer to return the string containing the name of the source", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "name", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of the string and/or buffer for \\mpiarg{name}", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "name_len", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "buffer to return the string containing the description of the source", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "desc", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of the string and/or buffer for \\mpiarg{desc}", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "desc_len", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "flag indicating chronological ordering guarantees given by the source", + "func_type": "", + "kind": "SOURCE_ORDERING", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ordering", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the number of ticks per second for the timer of this source", + "func_type": "", + "kind": "TOOLS_TICK_COUNT", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ticks_per_second", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the maximum count of ticks reported by this source before overflow occurs", + "func_type": "", + "kind": "TOOLS_TICK_COUNT", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "max_ticks", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "optional info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "info", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_source_get_num": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_source_get_num", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "returns number of event sources", + "func_type": "", + "kind": "SOURCE_INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "num_sources", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_t_source_get_timestamp": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_T_source_get_timestamp", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of the source", + "func_type": "", + "kind": "SOURCE_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "source_index", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "current timestamp from specified source", + "func_type": "", + "kind": "TOOLS_TICK_COUNT", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "timestamp", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_test": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Test", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "request", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if operation completed", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_test_cancelled": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Test_cancelled", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "status", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if the operation has been cancelled", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_testall": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Testall", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "list length", + "func_type": "", + "kind": "ARRAY_LENGTH_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of requests", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": "count", + "lis_direction": "inout", + "name": "array_of_requests", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if all of the operations are complete", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of status objects", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": "*", + "lis_direction": "out", + "name": "array_of_statuses", + "optional": false, + "param_direction": "out", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_testany": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Testany", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "list length", + "func_type": "", + "kind": "ARRAY_LENGTH_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of requests", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": "count", + "lis_direction": "inout", + "name": "array_of_requests", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of operation that completed or \\mpiconst{MPI_UNDEFINED} if none completed", + "func_type": "", + "kind": "INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "index", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{true} if one of the operations is complete", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_testsome": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Testsome", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of array_of_requests", + "func_type": "", + "kind": "ARRAY_LENGTH_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "incount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of requests", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": "incount", + "lis_direction": "inout", + "name": "array_of_requests", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of completed requests", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "outcount", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of indices of operations that completed", + "func_type": "", + "kind": "INDEX", + "large_only": false, + "length": "*", + "lis_direction": "out", + "name": "array_of_indices", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of status objects for operations that completed", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": "*", + "lis_direction": "out", + "name": "array_of_statuses", + "optional": false, + "param_direction": "out", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_topo_test": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Topo_test", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "topology type of communicator \\mpiarg{comm}", + "func_type": "", + "kind": "TOPOLOGY_TYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_c2f": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_c2f", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "F90_DATATYPE" + }, + "mpi_type_commit": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_commit", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype that is committed", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "datatype", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_contiguous": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_contiguous", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "replication count", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "old datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_copy_attr_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_copy_attr_function", + "name_f90": "TYPE_COPY_ATTR_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "type_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_in", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_out", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_create_darray": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_create_darray", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size of process group", + "func_type": "", + "kind": "COMM_SIZE_PI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "size", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank in process group", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of array dimensions as well as process grid dimensions", + "func_type": "", + "kind": "ARRAY_LENGTH_PI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ndims", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "number of elements of type \\mpiarg{oldtype} in each dimension of global array", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_PI", + "large_only": false, + "length": "ndims", + "lis_direction": "in", + "name": "array_of_gsizes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "distribution of array in each dimension", + "func_type": "", + "kind": "DISTRIB_ENUM", + "large_only": false, + "length": "ndims", + "lis_direction": "in", + "name": "array_of_distribs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "distribution argument in each dimension", + "func_type": "", + "kind": "DTYPE_DISTRIBUTION", + "large_only": false, + "length": "ndims", + "lis_direction": "in", + "name": "array_of_dargs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "size of process grid in each dimension", + "func_type": "", + "kind": "PROCESS_GRID_SIZE", + "large_only": false, + "length": "ndims", + "lis_direction": "in", + "name": "array_of_psizes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array storage order flag", + "func_type": "", + "kind": "ORDER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "order", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "old datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_create_f90_complex": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_create_f90_complex", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "precision, in decimal digits", + "func_type": "", + "kind": "MATH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "p", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "decimal exponent range", + "func_type": "", + "kind": "MATH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "r", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the requested \\MPI/ datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_create_f90_integer": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_create_f90_integer", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "decimal exponent range, i.e., number of decimal digits", + "func_type": "", + "kind": "MATH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "r", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the requested \\MPI/ datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_create_f90_real": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_create_f90_real", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "precision, in decimal digits", + "func_type": "", + "kind": "MATH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "p", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "decimal exponent range", + "func_type": "", + "kind": "MATH", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "r", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the requested \\MPI/ datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_create_hindexed": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_create_hindexed", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of blocks---also number of entries in \\mpiarg{array_of_displacements} and \\mpiarg{array_of_blocklengths}", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "number of elements in each block", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": "count", + "lis_direction": "in", + "name": "array_of_blocklengths", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "byte displacement of each block", + "func_type": "", + "kind": "POLYDISPLACEMENT_AINT_COUNT", + "large_only": false, + "length": "count", + "lis_direction": "in", + "name": "array_of_displacements", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "old datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_create_hindexed_block": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_create_hindexed_block", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of blocks---also number of entries in \\mpiarg{array_of_displacements}", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in each block", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "blocklength", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "byte displacement of each block", + "func_type": "", + "kind": "POLYDISPLACEMENT_AINT_COUNT", + "large_only": false, + "length": "count", + "lis_direction": "in", + "name": "array_of_displacements", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "old datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_create_hvector": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_create_hvector", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of blocks", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in each block", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "blocklength", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of bytes between start of each block", + "func_type": "", + "kind": "POLYDTYPE_STRIDE_BYTES", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "stride", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "old datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_create_indexed_block": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_create_indexed_block", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of blocks---also number of entries in \\mpiarg{array_of_displacements}", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in each block", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "blocklength", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "array of displacements, in multiples of \\mpiarg{oldtype}", + "func_type": "", + "kind": "POLYDISPLACEMENT_COUNT", + "large_only": false, + "length": "count", + "lis_direction": "in", + "name": "array_of_displacements", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "old datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_create_keyval": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_create_keyval", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "copy callback function for \\mpiarg{type_keyval}", + "func_type": "MPI_Type_copy_attr_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "type_copy_attr_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "delete callback function for \\mpiarg{type_keyval}", + "func_type": "MPI_Type_delete_attr_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "type_delete_attr_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value for future access", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "type_keyval", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "extra state for callback function", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_create_resized": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_create_resized", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "input datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new lower bound of datatype", + "func_type": "", + "kind": "POLYDISPLACEMENT_AINT_COUNT", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "lb", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new extent of datatype", + "func_type": "", + "kind": "POLYDISPLACEMENT_AINT_COUNT", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extent", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "output datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_create_struct": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_create_struct", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of blocks---also number of entries in arrays \\mpiarg{array_of_types}, \\mpiarg{array_of_displacements}, and \\mpiarg{array_of_blocklengths}", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "number of elements in each block", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": "count", + "lis_direction": "in", + "name": "array_of_blocklengths", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "byte displacement of each block", + "func_type": "", + "kind": "POLYDISPLACEMENT_AINT_COUNT", + "large_only": false, + "length": "count", + "lis_direction": "in", + "name": "array_of_displacements", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "type of elements in each block", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": "count", + "lis_direction": "in", + "name": "array_of_types", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_create_subarray": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_create_subarray", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of array dimensions", + "func_type": "", + "kind": "ARRAY_LENGTH_PI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ndims", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "number of elements of type \\mpiarg{oldtype} in each dimension of the full array", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_PI", + "large_only": false, + "length": "ndims", + "lis_direction": "in", + "name": "array_of_sizes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "number of elements of type \\mpiarg{oldtype} in each dimension of the subarray", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_PI", + "large_only": false, + "length": "ndims", + "lis_direction": "in", + "name": "array_of_subsizes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "starting coordinates of the subarray in each dimension", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": "ndims", + "lis_direction": "in", + "name": "array_of_starts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array storage order flag", + "func_type": "", + "kind": "ORDER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "order", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "old datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_delete_attr": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_delete_attr", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype from which the attribute is deleted", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "type_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_delete_attr_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_delete_attr_function", + "name_f90": "TYPE_DELETE_ATTR_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "type_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_dup": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_dup", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "copy of \\mpiarg{oldtype}", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_dup_fn": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": "MPI_Type_copy_attr_function", + "proxy_render": false, + "render_main": true + }, + "name": "MPI_TYPE_DUP_FN", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "type_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_in", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_out", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_f2c": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_f2c", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "F90_DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "DATATYPE" + }, + "mpi_type_free": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_free", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype that is freed", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "datatype", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_free_keyval": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_free_keyval", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "type_keyval", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_fromint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_fromint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEY_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "DATATYPE" + }, + "mpi_type_get_attr": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_get_attr", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype to which the attribute is attached", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "type_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "attribute value, unless \\mpiarg{flag}\\mpicode{ = false}", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "attribute_val", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{false} if no attribute is associated with the key", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_get_contents": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_get_contents", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype to decode", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in \\mpiarg{array_of_integers}", + "func_type": "", + "kind": "POLYNUM_PARAM_VALUES", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "max_integers", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in \\mpiarg{array_of_addresses}", + "func_type": "", + "kind": "POLYNUM_PARAM_VALUES", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "max_addresses", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in \\mpiarg{array_of_large_counts}", + "func_type": "", + "kind": "POLYNUM_PARAM_VALUES", + "large_only": true, + "length": null, + "lis_direction": "in", + "name": "max_large_counts", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in \\mpiarg{array_of_datatypes}", + "func_type": "", + "kind": "POLYNUM_PARAM_VALUES", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "max_datatypes", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "contains integer arguments used in constructing \\mpiarg{datatype}", + "func_type": "", + "kind": "GENERIC_DTYPE_INT", + "large_only": false, + "length": "max_integers", + "lis_direction": "out", + "name": "array_of_integers", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "contains address arguments used in constructing \\mpiarg{datatype}", + "func_type": "", + "kind": "DISPLACEMENT", + "large_only": false, + "length": "max_addresses", + "lis_direction": "out", + "name": "array_of_addresses", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "contains large count arguments used in constructing \\mpiarg{datatype}", + "func_type": "", + "kind": "GENERIC_DTYPE_COUNT", + "large_only": true, + "length": "max_large_counts", + "lis_direction": "out", + "name": "array_of_large_counts", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "contains datatype arguments used in constructing \\mpiarg{datatype}", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": "max_datatypes", + "lis_direction": "out", + "name": "array_of_datatypes", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_get_envelope": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_get_envelope", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype to decode", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of input integers used in call constructing \\mpiarg{combiner}", + "func_type": "", + "kind": "POLYNUM_PARAM_VALUES", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "num_integers", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of input addresses used in call constructing \\mpiarg{combiner}", + "func_type": "", + "kind": "POLYNUM_PARAM_VALUES", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "num_addresses", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of input large counts used in call constructing \\mpiarg{combiner}", + "func_type": "", + "kind": "POLYNUM_PARAM_VALUES", + "large_only": true, + "length": null, + "lis_direction": "out", + "name": "num_large_counts", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of input datatypes used in call constructing \\mpiarg{combiner}", + "func_type": "", + "kind": "POLYNUM_PARAM_VALUES", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "num_datatypes", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "combiner", + "func_type": "", + "kind": "COMBINER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "combiner", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_get_extent": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_get_extent", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype to get information on", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "lower bound of datatype", + "func_type": "", + "kind": "POLYDISPLACEMENT_AINT_COUNT", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "lb", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "extent of datatype", + "func_type": "", + "kind": "POLYDISPLACEMENT_AINT_COUNT", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "extent", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_get_extent_x": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_get_extent_x", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype to get information on", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "lower bound of datatype", + "func_type": "", + "kind": "XFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "lb", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "extent of datatype", + "func_type": "", + "kind": "XFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "extent", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_get_name": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_get_name", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype whose name is to be returned", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the name previously stored on the datatype, or an empty string if no such name exists", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": "MPI_MAX_OBJECT_NAME", + "lis_direction": "out", + "name": "type_name", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of returned name", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "resultlen", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_get_true_extent": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_get_true_extent", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype to get information on", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "true lower bound of datatype", + "func_type": "", + "kind": "POLYDISPLACEMENT_AINT_COUNT", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "true_lb", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "true extent of datatype", + "func_type": "", + "kind": "POLYDISPLACEMENT_AINT_COUNT", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "true_extent", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_get_true_extent_x": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_get_true_extent_x", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype to get information on", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "true lower bound of datatype", + "func_type": "", + "kind": "XFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "true_lb", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "true extent of datatype", + "func_type": "", + "kind": "XFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "true_extent", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_get_value_index": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_get_value_index", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of the value in pair", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "value_type", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of the index in pair", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "index_type", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of the value-index pair", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "pair_type", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_indexed": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_indexed", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of blocks---also number of entries in \\mpiarg{array_of_displacements} and \\mpiarg{array_of_blocklengths}", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "number of elements per block", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": "count", + "lis_direction": "in", + "name": "array_of_blocklengths", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "displacement for each block, in multiples of \\mpiarg{oldtype}", + "func_type": "", + "kind": "POLYDISPLACEMENT_COUNT", + "large_only": false, + "length": "count", + "lis_direction": "in", + "name": "array_of_displacements", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "old datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_match_size": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_match_size", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "generic type specifier", + "func_type": "", + "kind": "TYPECLASS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "typeclass", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size, in bytes, of representation", + "func_type": "", + "kind": "TYPECLASS_SIZE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "size", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype with correct type, size", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "datatype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_null_copy_fn": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": "MPI_Type_copy_attr_function", + "proxy_render": false, + "render_main": true + }, + "name": "MPI_TYPE_NULL_COPY_FN", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "type_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_in", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_out", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_null_delete_fn": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": "MPI_Type_delete_attr_function", + "proxy_render": false, + "render_main": true + }, + "name": "MPI_TYPE_NULL_DELETE_FN", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "type_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE_SHOW_INTENT", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_set_attr": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_set_attr", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype to which attribute will be attached", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "type_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "attribute value", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_set_name": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_set_name", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype whose identifier is to be set", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "the character string that is remembered as the name", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "type_name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_size": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_size", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype to get information on", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype size", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "size", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_size_x": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_size_x", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype to get information on", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype size", + "func_type": "", + "kind": "XFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "size", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_type_toint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_toint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "KEY_INDEX" + }, + "mpi_type_vector": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Type_vector", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of blocks", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements in each block", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "blocklength", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of elements between start of each block", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "stride", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "old datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldtype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new datatype", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "newtype", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_unpack": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Unpack", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "input buffer start", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "inbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size of input buffer, in bytes", + "func_type": "", + "kind": "POLYNUM_BYTES_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "insize", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "current position in bytes", + "func_type": "", + "kind": "POLYDISPLACEMENT_COUNT", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "position", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "output buffer start", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "outbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of items to be unpacked", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "outcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of each output data item", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "communicator for packed message", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_unpack_external": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Unpack_external", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "data representation", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": "*", + "lis_direction": "in", + "name": "datarep", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "input buffer start", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "inbuf", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "input buffer size, in bytes", + "func_type": "", + "kind": "POLYDTYPE_PACK_SIZE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "insize", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "current position in buffer, in bytes", + "func_type": "", + "kind": "POLYLOCATION", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "position", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "output buffer start", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "outbuf", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of output data items", + "func_type": "", + "kind": "POLYDTYPE_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "outcount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "datatype of output data item", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_unpublish_name": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Unpublish_name", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "a service name", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "service_name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "implementation-specific information", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "a port name", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "port_name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_user_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_User_function", + "name_f90": "USER_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "C_BUFFER4", + "large_only": false, + "length": "len", + "lis_direction": "in", + "name": "invec", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "C_BUFFER4", + "large_only": false, + "length": "len", + "lis_direction": "in", + "name": "inoutvec", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "POLYXFER_NUM_ELEM", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "len", + "optional": false, + "param_direction": "in", + "pointer": true, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "DATATYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "datatype", + "optional": false, + "param_direction": "in", + "pointer": true, + "root_only": false, + "suppress": "" + } + ], + "return_kind": "NOTHING" + }, + "mpi_wait": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Wait", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "request", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "request", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_waitall": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Waitall", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "list length", + "func_type": "", + "kind": "ARRAY_LENGTH_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of requests", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": "count", + "lis_direction": "inout", + "name": "array_of_requests", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of status objects", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": "*", + "lis_direction": "out", + "name": "array_of_statuses", + "optional": false, + "param_direction": "out", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_waitany": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Waitany", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "list length", + "func_type": "", + "kind": "ARRAY_LENGTH_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "count", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of requests", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": "count", + "lis_direction": "inout", + "name": "array_of_requests", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "index of handle for operation that completed", + "func_type": "", + "kind": "INDEX", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "index", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "status", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_waitsome": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Waitsome", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of array_of_requests", + "func_type": "", + "kind": "ARRAY_LENGTH_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "incount", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of requests", + "func_type": "", + "kind": "REQUEST", + "large_only": false, + "length": "incount", + "lis_direction": "inout", + "name": "array_of_requests", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "number of completed requests", + "func_type": "", + "kind": "ARRAY_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "outcount", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of indices of operations that completed", + "func_type": "", + "kind": "INDEX", + "large_only": false, + "length": "*", + "lis_direction": "out", + "name": "array_of_indices", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "array of status objects for operations that completed", + "func_type": "", + "kind": "STATUS", + "large_only": false, + "length": "*", + "lis_direction": "out", + "name": "array_of_statuses", + "optional": false, + "param_direction": "out", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_allocate": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": "\\>INTERFACE MPI\\_WIN\\_ALLOCATE \\\\ \\>\\>SUBROUTINE MPI\\_WIN\\_ALLOCATE(SIZE, DISP\\_UNIT, INFO, COMM, BASEPTR, \\& \\\\ \\>\\>\\>\\>WIN, IERROR) \\\\ \\>\\>\\>IMPORT :: MPI\\_ADDRESS\\_KIND \\\\ \\>\\>\\>INTEGER :: DISP\\_UNIT, INFO, COMM, WIN, IERROR \\\\ \\>\\>\\>INTEGER(KIND=MPI\\_ADDRESS\\_KIND) :: SIZE, BASEPTR \\\\ \\>\\>END SUBROUTINE \\\\ \\>\\>SUBROUTINE MPI\\_WIN\\_ALLOCATE\\_CPTR(SIZE, DISP\\_UNIT, INFO, COMM, BASEPTR, \\& \\\\ \\>\\>\\>\\>WIN, IERROR) \\\\ \\>\\>\\>USE, INTRINSIC :: ISO\\_C\\_BINDING, ONLY : C\\_PTR \\\\ \\>\\>\\>IMPORT :: MPI\\_ADDRESS\\_KIND \\\\ \\>\\>\\>INTEGER :: DISP\\_UNIT, INFO, COMM, WIN, IERROR \\\\ \\>\\>\\>INTEGER(KIND=MPI\\_ADDRESS\\_KIND) :: SIZE \\\\ \\>\\>\\>TYPE(C\\_PTR) :: BASEPTR \\\\ \\>\\>END SUBROUTINE \\\\ \\>END INTERFACE", + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_allocate", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size of window in bytes", + "func_type": "", + "kind": "WINDOW_SIZE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "size", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "local unit size for displacements, in bytes", + "func_type": "", + "kind": "POLYRMA_DISPLACEMENT", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "disp_unit", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "intra-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "initial address of window", + "func_type": "", + "kind": "C_BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "baseptr", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "win", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_allocate_shared": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": "\\>INTERFACE MPI\\_WIN\\_ALLOCATE\\_SHARED \\\\ \\>\\>SUBROUTINE MPI\\_WIN\\_ALLOCATE\\_SHARED(SIZE, DISP\\_UNIT, INFO, COMM, \\& \\\\ \\>\\>\\>\\>BASEPTR, WIN, IERROR) \\\\ \\>\\>\\>IMPORT :: MPI\\_ADDRESS\\_KIND \\\\ \\>\\>\\>INTEGER :: DISP\\_UNIT, INFO, COMM, WIN, IERROR \\\\ \\>\\>\\>INTEGER(KIND=MPI\\_ADDRESS\\_KIND) :: SIZE, BASEPTR \\\\ \\>\\>END SUBROUTINE \\\\ \\>\\>SUBROUTINE MPI\\_WIN\\_ALLOCATE\\_SHARED\\_CPTR(SIZE, DISP\\_UNIT, INFO, COMM, \\& \\\\ \\>\\>\\>\\>BASEPTR, WIN, IERROR) \\\\ \\>\\>\\>USE, INTRINSIC :: ISO\\_C\\_BINDING, ONLY : C\\_PTR \\\\ \\>\\>\\>IMPORT :: MPI\\_ADDRESS\\_KIND \\\\ \\>\\>\\>INTEGER :: DISP\\_UNIT, INFO, COMM, WIN, IERROR \\\\ \\>\\>\\>INTEGER(KIND=MPI\\_ADDRESS\\_KIND) :: SIZE \\\\ \\>\\>\\>TYPE(C\\_PTR) :: BASEPTR \\\\ \\>\\>END SUBROUTINE \\\\ \\>END INTERFACE", + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_allocate_shared", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size of local window in bytes", + "func_type": "", + "kind": "WINDOW_SIZE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "size", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "local unit size for displacements, in bytes", + "func_type": "", + "kind": "POLYRMA_DISPLACEMENT", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "disp_unit", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "intra-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "address of local allocated window segment", + "func_type": "", + "kind": "C_BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "baseptr", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "win", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_attach": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_attach", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of memory to be attached", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "base", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size of memory to be attached in bytes", + "func_type": "", + "kind": "WIN_ATTACH_SIZE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "size", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_c2f": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_c2f", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "F90_WIN" + }, + "mpi_win_call_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_call_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "window with error handler", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errorcode", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_complete": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_complete", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_copy_attr_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_copy_attr_function", + "name_f90": "WIN_COPY_ATTR_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldwin", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_in", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "attribute_val_out", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_create": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_create", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": true, + "constant": false, + "desc": "initial address of window", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "base", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size of window in bytes", + "func_type": "", + "kind": "WINDOW_SIZE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "size", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "local unit size for displacements, in bytes", + "func_type": "", + "kind": "POLYRMA_DISPLACEMENT", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "disp_unit", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "intra-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "win", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_create_dynamic": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_create_dynamic", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "intra-communicator", + "func_type": "", + "kind": "COMMUNICATOR", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "comm", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "win", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_create_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_create_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "user defined error handling procedure", + "func_type": "MPI_Win_errhandler_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win_errhandler_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "errhandler", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_create_keyval": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_create_keyval", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "copy callback function for \\mpiarg{win_keyval}", + "func_type": "MPI_Win_copy_attr_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win_copy_attr_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "delete callback function for \\mpiarg{win_keyval}", + "func_type": "MPI_Win_delete_attr_function", + "kind": "FUNCTION", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win_delete_attr_fn", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value for future access", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "win_keyval", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "extra state for callback function", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_delete_attr": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_delete_attr", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "window from which the attribute is deleted", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_delete_attr_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_delete_attr_function", + "name_f90": "WIN_DELETE_ATTR_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_detach": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_detach", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": true, + "constant": true, + "desc": "initial address of memory to be detached", + "func_type": "", + "kind": "BUFFER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "base", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "f08_intent" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_dup_fn": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": "MPI_Win_copy_attr_function", + "proxy_render": false, + "render_main": true + }, + "name": "MPI_WIN_DUP_FN", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldwin", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_in", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_out", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_errhandler_function": { + "attributes": { + "c_expressible": true, + "callback": true, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_errhandler_function", + "name_f90": "WIN_ERRHANDLER_FUNCTION", + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": true, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "error_code", + "optional": false, + "param_direction": "in", + "pointer": true, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "VARARGS", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "varargs", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + } + ], + "return_kind": "NOTHING" + }, + "mpi_win_f2c": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_f2c", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "F90_WIN", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "WINDOW" + }, + "mpi_win_fence": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_fence", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ASSERT", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "assert", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_flush": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_flush", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of target \\MPI/ process in the group of the window \\mpiarg{win}", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_flush_all": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_flush_all", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_flush_local": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_flush_local", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of target \\MPI/ process in the group of the window \\mpiarg{win}", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_flush_local_all": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_flush_local_all", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_free": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_free", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "win", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_free_keyval": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_free_keyval", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "win_keyval", + "optional": false, + "param_direction": "inout", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_fromint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_fromint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEY_INDEX", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "WINDOW" + }, + "mpi_win_get_attr": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_get_attr", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "window to which the attribute is attached", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "attribute value, unless \\mpiarg{flag}\\mpicode{ = false}", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "attribute_val", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "\\mpicode{false} if no attribute is associated with the key", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_get_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_get_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "error handler currently associated with window", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "errhandler", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_get_group": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_get_group", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group of \\mpi/ processes that share access to the window", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "group", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_get_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_get_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new info object", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "info_used", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_get_name": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_get_name", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "window whose name is to be returned", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "the name previously stored on the window, or an empty string if no such name exists", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": "MPI_MAX_OBJECT_NAME", + "lis_direction": "out", + "name": "win_name", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "length of returned name", + "func_type": "", + "kind": "STRING_LENGTH", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "resultlen", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_lock": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_lock", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "either \\mpiconst{MPI_LOCK_EXCLUSIVE} or \\mpiconst{MPI_LOCK_SHARED}", + "func_type": "", + "kind": "LOCK_TYPE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "lock_type", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of target \\MPI/ process in the group of the window \\mpiarg{win}", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ASSERT", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "assert", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_lock_all": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_lock_all", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ASSERT", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "assert", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_null_copy_fn": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": "MPI_Win_copy_attr_function", + "proxy_render": false, + "render_main": true + }, + "name": "MPI_WIN_NULL_COPY_FN", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "oldwin", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_in", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val_out", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_null_delete_fn": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": "MPI_Win_delete_attr_function", + "proxy_render": false, + "render_main": true + }, + "name": "MPI_WIN_NULL_DELETE_FN", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "EXTRA_STATE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "extra_state", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "ierror", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "c_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_post": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_post", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group of origin processes", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ASSERT", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "assert", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_set_attr": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_set_attr", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "window to which attribute will be attached", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "key value", + "func_type": "", + "kind": "KEYVAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win_keyval", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "attribute value", + "func_type": "", + "kind": "ATTRIBUTE_VAL", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "attribute_val", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_set_errhandler": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_set_errhandler", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "new error handler for window", + "func_type": "", + "kind": "ERRHANDLER", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "errhandler", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_set_info": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_set_info", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "INFO", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "info", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_set_name": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_set_name", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "window whose identifier is to be set", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "inout", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": true, + "desc": "the character string that is remembered as the name", + "func_type": "", + "kind": "STRING", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win_name", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_shared_query": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": "\\>INTERFACE MPI\\_WIN\\_SHARED\\_QUERY \\\\ \\>\\>SUBROUTINE MPI\\_WIN\\_SHARED\\_QUERY(WIN, RANK, SIZE, DISP\\_UNIT, \\&\\\\ \\>\\>\\>\\>BASEPTR, IERROR) \\\\ \\>\\>\\>IMPORT :: MPI\\_ADDRESS\\_KIND \\\\ \\>\\>\\>INTEGER :: WIN, RANK, DISP\\_UNIT, IERROR \\\\ \\>\\>\\>INTEGER(KIND=MPI\\_ADDRESS\\_KIND) :: SIZE, BASEPTR \\\\ \\>\\>END SUBROUTINE \\\\ \\>\\>SUBROUTINE MPI\\_WIN\\_SHARED\\_QUERY\\_CPTR(WIN, RANK, SIZE, DISP\\_UNIT, \\&\\\\ \\>\\>\\>\\>BASEPTR, IERROR) \\\\ \\>\\>\\>USE, INTRINSIC :: ISO\\_C\\_BINDING, ONLY : C\\_PTR \\\\ \\>\\>\\>IMPORT :: MPI\\_ADDRESS\\_KIND \\\\ \\>\\>\\>INTEGER :: WIN, RANK, DISP\\_UNIT, IERROR \\\\ \\>\\>\\>INTEGER(KIND=MPI\\_ADDRESS\\_KIND) :: SIZE \\\\ \\>\\>\\>TYPE(C\\_PTR) :: BASEPTR \\\\ \\>\\>END SUBROUTINE \\\\ \\>END INTERFACE", + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_shared_query", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "shared memory window", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank in the group of window win or \\mpiconst{MPI_PROC_NULL}", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "size of the window segment", + "func_type": "", + "kind": "WINDOW_SIZE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "size", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "local unit size for displacements, in bytes", + "func_type": "", + "kind": "POLYRMA_DISPLACEMENT", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "disp_unit", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "address for load/store access to window segment", + "func_type": "", + "kind": "C_BUFFER", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "baseptr", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_start": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_start", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "group of target processes", + "func_type": "", + "kind": "GROUP", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "group", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ASSERT", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "assert", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_sync": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_sync", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_test": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_test", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "success flag", + "func_type": "", + "kind": "LOGICAL", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "flag", + "optional": false, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_toint": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": false, + "f90_expressible": false, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": true, + "lis_expressible": false, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_toint", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": false, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "KEY_INDEX" + }, + "mpi_win_unlock": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_unlock", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "rank of target \\MPI/ process in the group of the window \\mpiarg{win}", + "func_type": "", + "kind": "RANK_NNI", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "rank", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_unlock_all": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_unlock_all", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_win_wait": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Win_wait", + "name_f90": null, + "parameters": [ + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "WINDOW", + "large_only": false, + "length": null, + "lis_direction": "in", + "name": "win", + "optional": false, + "param_direction": "in", + "pointer": null, + "root_only": false, + "suppress": "" + }, + { + "array_type": "", + "asynchronous": false, + "constant": false, + "desc": "", + "func_type": "", + "kind": "ERROR_CODE", + "large_only": false, + "length": null, + "lis_direction": "out", + "name": "ierror", + "optional": true, + "param_direction": "out", + "pointer": null, + "root_only": false, + "suppress": "c_parameter lis_parameter" + } + ], + "return_kind": "ERROR_CODE" + }, + "mpi_wtick": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Wtick", + "name_f90": null, + "parameters": [], + "return_kind": "TICK_RESOLUTION" + }, + "mpi_wtime": { + "attributes": { + "c_expressible": true, + "callback": false, + "capitalized": false, + "deprecated": false, + "execute_once": false, + "f08_abstract_interface": true, + "f08_expressible": true, + "f90_expressible": true, + "f90_index_overload": null, + "f90_use_colons": false, + "index_upper": false, + "lis_expressible": true, + "not_with_mpif": false, + "predefined_function": null, + "proxy_render": false, + "render_main": true + }, + "name": "MPI_Wtime", + "name_f90": null, + "parameters": [], + "return_kind": "WALL_TIME" + } +} \ No newline at end of file diff --git a/docs/mpi-standard-abi.json b/docs/mpi-standard-abi.json new file mode 120000 index 00000000000..776929366e6 --- /dev/null +++ b/docs/mpi-standard-abi.json @@ -0,0 +1 @@ +mpi-standard-5.0-abi.json \ No newline at end of file diff --git a/docs/mpi-standard-apis.json b/docs/mpi-standard-apis.json index 795396cb200..d3c4a4c64eb 120000 --- a/docs/mpi-standard-apis.json +++ b/docs/mpi-standard-apis.json @@ -1 +1 @@ -mpi-standard-4.1-apis.json \ No newline at end of file +mpi-standard-5.0-apis.json \ No newline at end of file diff --git a/ompi/include/mpi.h.in b/ompi/include/mpi.h.in index 76f6c4f1f5c..24ca5ac7c61 100644 --- a/ompi/include/mpi.h.in +++ b/ompi/include/mpi.h.in @@ -1437,21 +1437,21 @@ OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_ub; #define MPI_TYPECLASS_REAL 2 #define MPI_TYPECLASS_COMPLEX 3 +/* + * Predefined info keys + */ +#define MPI_INFO_KEY_SESSION_PSET_SIZE "mpi_size" + +#ifndef OMPI_NO_MPI_PROTOTYPES /* Aint helper macros (MPI-3.1) */ #define MPI_Aint_add(base, disp) ((MPI_Aint) ((char *) (base) + (disp))) #define MPI_Aint_diff(addr1, addr2) ((MPI_Aint) ((char *) (addr1) - (char *) (addr2))) #define PMPI_Aint_add(base, disp) MPI_Aint_add(base, disp) #define PMPI_Aint_diff(addr1, addr2) MPI_Aint_diff(addr1, addr2) -/* - * Predefined info keys - */ -#define MPI_INFO_KEY_SESSION_PSET_SIZE "mpi_size" - /* * MPI API */ -#ifndef OMPI_NO_MPI_PROTOTYPES OMPI_DECLSPEC int MPI_Abi_supported(int *flag); OMPI_DECLSPEC int MPI_Abi_version(int *abi_major, int *abi_minor); OMPI_DECLSPEC int MPI_Abi_details(int *buflen, char *details, MPI_Info *info); diff --git a/ompi/mpi/Makefile.am b/ompi/mpi/Makefile.am index 80ae278fde2..87d20ff2d87 100644 --- a/ompi/mpi/Makefile.am +++ b/ompi/mpi/Makefile.am @@ -24,6 +24,7 @@ EXTRA_DIST += \ mpi/fortran/configure-fortran-output-bottom.h \ mpi/help-mpi-api.txt \ mpi/bindings/bindings.py \ + mpi/bindings/c_header.py \ mpi/bindings/ompi_bindings/consts.py \ mpi/bindings/ompi_bindings/c.py \ mpi/bindings/ompi_bindings/c_type.py \ diff --git a/ompi/mpi/bindings/c_header.py b/ompi/mpi/bindings/c_header.py new file mode 100644 index 00000000000..78f3a01ae24 --- /dev/null +++ b/ompi/mpi/bindings/c_header.py @@ -0,0 +1,246 @@ +# Copyright (c) 2025 Joe Downs. All rights reserved. +# +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +import argparse +import re +import json +import sys +import os +from pathlib import Path + +# ============================= Constants / Globals ============================ +DIR = Path(".") +OUTPUT = DIR / "mpi.h" +INPUT = DIR / "abi.h.in" +JSON_PATH = DIR / "abi.json" + +ABI_INTERNAL = "_ABI_INTERNAL" + +categories_dict = {} +MANGLE_NAMES = False + +INTERNAL_DATATYPES = [ + "MPI_Comm", + "MPI_Datatype", + "MPI_Errhandler", + "MPI_File", + "MPI_Group", + "MPI_Info", + "MPI_Message", + "MPI_Op", + "MPI_Request", + "MPI_Session", + "MPI_Status", + "MPI_Win", + "MPI_Comm_copy_attr_function", + "MPI_Comm_delete_attr_function", + "MPI_Type_copy_attr_function", + "MPI_Type_delete_attr_function", + "MPI_Win_delete_attr_function", + "MPI_Win_copy_attr_function", + # TODO: these two are deprecated, get rid of them + "MPI_Copy_function", + "MPI_Delete_function", +] + +ENUM_CATEGORIES = [ + "ERROR_CLASSES", + "MODE_CONSTANTS", + "ASSORTED_CONSTANTS", + "THREADS_CONSTANTS", + "FILE_OPERATIONS_CONSTANTS", + "DATATYPE_DECODING_CONSTANTS", + "F90_DATATYPE_MATCHING_CONSTANTS", + "COMMUNICATOR_GROUP_COMP_RESULTS", + "TOPOLOGIES", + "COMMUNICATOR_SPLIT_TYPE", + "WINDOW_LOCK_TYPE_CONSTANTS", + "WINDOW_CREATE_FLAVORS", + "WINDOW_MODELS", + "FILE_POS_CONSTANTS", + "FILE_OP_CONSTANTS", + "ENV_INQ_AND_ATTR_KEYS", + "FORTRAN_STATUS_ARRAY_SIZE_AND_INDEX_C", + "C_PREPROCESSOR_CONSTANTS_FORTRAN_PARAMETERS", + "TOOL_INFO_IFACE_VERBOSITY_LEVELS", + "TOOL_INFO_IFACE_VAR_ASSOCIATIONS", + "TOOL_INFO_IFACE_VAR_SCOPES", + "TOOL_INFO_IFACE_PVAR_CLASSES", + "TOOL_INFO_IFACE_SOURCE_ORDERINGS", + "TOOL_INFO_IFACE_CB_SAFETY_REQ_LEVELS", +] + + +# ============================== Argument Parsing ============================== +parser = argparse.ArgumentParser() +parser.add_argument("--abi-json", type=str, help=f"path to ABI JSON file [{DIR}/]") +parser.add_argument("-i", "--input", type=str, help="input path for the .h.in file") +parser.add_argument("-o", "--output", type=str, help="output path for the header file") +parser.add_argument("--mangle-names", help="enable name mangling for constants and datatypes", action="store_true") +parser.add_argument("--no-mangle", help="disable name mangling (default)", action="store_true") +parser.add_argument("--pympistd-dir", type=str, help="directory for the pympistandard library") + +args = parser.parse_args() + +if args.abi_json: + JSON_PATH = Path(args.abi_json) +if args.mangle_names: + MANGLE_NAMES = True +if args.no_mangle: + MANGLE_NAMES = False +if args.output: + OUTPUT = Path(args.output) +if args.input: + INPUT = Path(args.input) +if args.pympistd_dir: + PYMPISTANDARD_DIR = Path(args.pympistd_dir) + +# A bit of a hack to load the pympistandard module, which is in +# the Open MPI '3rd-party" tree in the source dir. +pympi_dir = PYMPISTANDARD_DIR / "src" +sys.path.insert(0, str(pympi_dir.resolve())) + +import pympistandard as std + +# ================================== Load JSON ================================= +with open(JSON_PATH) as f: + abi = json.load(f) + +CONSTS = abi["constants"] +CATEGORIES = abi["categories"] + +# ============================================================================== + +# Populating the `categories` dictionary +for category in CATEGORIES.values(): + name = category["name"] + categories_dict[name] = [] + for value in CONSTS.values(): + if value["category"] == name: + categories_dict[name].append(value) + +# ================================== Functions ================================= +# TODO: we need to add/fix/figure out the pympistandard's way for properly +# defining callback functions. pympistandard just prints out the regular +# prototype instead of `(function_name)(arguments)` +def cb_declaration(proc_expression): + func_str = str(proc_expression) + func_str_list = func_str.split() + func_name, arg_1 = func_str_list[2].split("(") + if MANGLE_NAMES: + func_name = f"{func_name}{ABI_INTERNAL}" + decl_string = f"{' '.join(func_str_list[:2])} ({func_name})({arg_1} {' '.join(func_str_list[3:])};\n" + return decl_string + +def output_constant(const, use_enum: bool, mangle_name: bool): + spacing = 45 + name = const["name"] + abi_value = const["abi_value"] + c_type = const["handle_types"]["c"]["type"] + if c_type is None: + return None + if mangle_name: + name = f"{name}{ABI_INTERNAL}" + spacing = 55 + #c_type = f"{c_type}{ABI_INTERNAL}" + def_name = f"#define {name}" + if use_enum: + def_name = f" {name}" + value = f"= {abi_value}," + elif c_type == "int": + value = f"{abi_value}" + else: + value = f"(({c_type}) {abi_value})" + return def_name + " " * (spacing - len(def_name) + 1) + value + "\n" + +# ========================= Manipulate Template Header ========================= +lines = [] +with open(INPUT, 'r') as header_in: + lines = header_in.readlines() + +# Match lines that start with `$CATEGORY:`. Any amount of whitespace is allowed +# in the case of indenting. However, only preceding whitespace is allowed so +# that commented-out lines are NOT included. +category_pattern = re.compile(r"^[\s]*\$CATEGORY:([A-Z_0-9]+)\$$") +output = [] + +for line in lines: + category = category_pattern.search(line) + # If there's no match, category is None. Then we just want to preserve the + # line as-is. + if category: + category = category.group(1) + use_enum = False + # Only some values should be in `enums`, otherwise just use `#define`s + if category in ENUM_CATEGORIES: + use_enum = True + if use_enum: + output.append("enum {\n") + # Print out each `#define` / assignment for the constants + for constant in categories_dict[category]: + line = output_constant(constant, use_enum, MANGLE_NAMES) + if line is not None: + output.append(line) + if use_enum: + output.append("};\n") + else: + output.append(line) + +# ============================= Function Prototypes ============================ +std.use_api_version() + +output.append("\n") +output.append("/* Callback functions */\n") +for proc in std.CALLBACKS.values(): + output.append(cb_declaration(proc.express.iso_c)) + if proc.has_embiggenment(): + output.append(cb_declaration(proc.express.embiggen.iso_c)) + +output.append("\n") +output.append("/* MPI API */\n") +for proc in std.all_iso_c_procedures(): + output.append(f"{proc.express.iso_c};\n") + if proc.has_embiggenment(): + output.append(f"{proc.express.embiggen.iso_c};\n") + +output.append("\n") +output.append("/* Profiling MPI API */\n") +for proc in std.all_iso_c_procedures(): + output.append(f"{proc.express.profile.iso_c};\n") + # TODO: this is a hack and we need to add/fix/figure out the pympistandard + # module to natively print out an embiggened version + if proc.has_embiggenment(): + binding = proc.express.embiggen.iso_c.__str__().split() + output.append(f"{binding[0]} P{' '.join(binding[1:])};\n") + +# ================================ Final Output ================================ +output.append("#endif /* _ABI_INTERNAL_ */") + +for i, line in enumerate(output): + line = line.replace(r"\ldots", "...") + if MANGLE_NAMES: + # Replace datatypes with their internal ABI counterparts + for datatype in INTERNAL_DATATYPES: + # Need to include the extra space here or else we'll edit functions + # like "MPI_Group_difference" + datatype_pattern = r"([\( ]?)(" + datatype + r")([; \*\)]{1})" + line = re.sub(datatype_pattern, f"\\g<1>\\g<2>{ABI_INTERNAL}\\g<3>", line) + if "MPI_Fint" in line: + # Comment out a line if it has references to MPI_Fint, we don't need + # that for the ABI + line = f"/* {line} */" + # TODO: pympistandard creates `MPI_Info_create_env` with its `argv` + # parameter being of type `char *` instead of `char **` --- as defined in + # the standard. + if "MPI_Info_create_env" in line: + line = line.replace("char argv[]", "char *argv[]") + output[i] = line + +with open(OUTPUT, 'tw') as header_out: + header_out.writelines(output) diff --git a/ompi/mpi/bindings/ompi_bindings/consts.py b/ompi/mpi/bindings/ompi_bindings/consts.py index 0701e20d700..f6bea7cd360 100644 --- a/ompi/mpi/bindings/ompi_bindings/consts.py +++ b/ompi/mpi/bindings/ompi_bindings/consts.py @@ -8,7 +8,6 @@ # $HEADER$ # """Constants used for generating bindings.""" -import re FORTRAN_ERROR_NAME = 'ierror' C_ERROR_NAME = 'ierr' diff --git a/ompi/mpi/c/Makefile.am b/ompi/mpi/c/Makefile.am index e0fa9e61a75..00af976172f 100644 --- a/ompi/mpi/c/Makefile.am +++ b/ompi/mpi/c/Makefile.am @@ -577,26 +577,25 @@ if OMPI_GENERATE_BINDINGS source \ ompi \ $< -abi.h: $(prototype_sources) - $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ - --builddir $(abs_top_builddir) \ - --srcdir $(abs_top_srcdir) \ - --output $@ \ - c \ - header \ - --srcdir $(srcdir) \ - $(prototype_sources) -standard_abi/mpi.h: $(prototype_sources) + +# Non-mangled version +standard_abi/mpi.h: $(top_srcdir)/docs/mpi-standard-apis.json $(top_srcdir)/ompi/mpi/bindings/c_header.py mkdir -p standard_abi - $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ - --builddir $(abs_top_builddir) \ - --srcdir $(abs_top_srcdir) \ - --output $@ \ - c \ - header \ - --srcdir $(srcdir) \ - --external \ - $(prototype_sources) + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/c_header.py \ + --input $(top_srcdir)/ompi/mpi/c/abi.h.in \ + --abi-json $(top_srcdir)/docs/mpi-standard-abi.json \ + --pympistd $(top_srcdir)/3rd-party/pympistandard \ + --output $(top_srcdir)/ompi/mpi/c/standard_abi/mpi.h + +# Mangled version +abi.h: $(top_srcdir)/docs/mpi-standard-apis.json $(top_srcdir)/ompi/mpi/bindings/c_header.py + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/c_header.py \ + --input $(top_srcdir)/ompi/mpi/c/abi.h.in \ + --output $(top_srcdir)/ompi/mpi/c/abi.h \ + --abi-json $(top_srcdir)/docs/mpi-standard-abi.json \ + --pympistd-dir $(top_srcdir)/3rd-party/pympistandard \ + --mangle-names + %_abi_generated.c: %.c.in $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ --builddir $(abs_top_builddir) \ @@ -608,7 +607,7 @@ standard_abi/mpi.h: $(prototype_sources) $< endif -MAINTAINERCLEANFILES = *_generated.c abi.h +MAINTAINERCLEANFILES = *_generated.c $(nobase_include_HEADERS) if OMPI_STANDARD_ABI include Makefile_abi.include endif diff --git a/ompi/mpi/c/abi.h.in b/ompi/mpi/c/abi.h.in new file mode 100644 index 00000000000..c4040502a89 --- /dev/null +++ b/ompi/mpi/c/abi.h.in @@ -0,0 +1,213 @@ +/* + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#ifndef _ABI_INTERNAL_ +#define _ABI_INTERNAL_ + +/* TODO: figure out which includes we need, change to <> instead of "" */ +#include "stddef.h" +#include "stdint.h" + +/* #include */ + +#define MPI_VERSION 5 +#define MPI_SUBVERSION 0 + +#define MPI_ABI_VERSION 1 +#define MPI_ABI_SUBVERSION 0 + +/* TODO: add comment why this is hardcoded to avoid extra generation logic */ +typedef struct MPI_ABI_Comm * MPI_Comm; +typedef struct MPI_ABI_Datatype * MPI_Datatype; +typedef struct MPI_ABI_Errhandler * MPI_Errhandler; +typedef struct MPI_ABI_File * MPI_File; +typedef struct MPI_ABI_Group * MPI_Group; +typedef struct MPI_ABI_Info * MPI_Info; +typedef struct MPI_ABI_Message * MPI_Message; +typedef struct MPI_ABI_Op * MPI_Op; +typedef struct MPI_ABI_Request * MPI_Request; +typedef struct MPI_ABI_Session * MPI_Session; +typedef struct MPI_ABI_Win * MPI_Win; + +/* /\* MPI_Aint is defined to be intptr_t (or equivalent to it, if compiler support is absent). */ +/* * The only acceptable alternative to intptr_t is the C89 type equivalent to it. *\/ */ +/* #if !defined(MPI_ABI_Aint) */ +/* #define MPI_ABI_Aint intptr_t */ +/* #endif */ +/* typedef MPI_ABI_Aint MPI_Aint; */ +/* #undef MPI_ABI_Aint */ + +/* /\* MPI_Offset will be 64b on all relevant systems. */ +/* * We allow for MPI implementations supporting for 128b filesystems. *\/ */ +/* #if !defined(MPI_ABI_Offset) */ +/* #define MPI_ABI_Offset int64_t */ +/* #endif */ +/* typedef MPI_ABI_Offset MPI_Offset; */ +/* #undef MPI_ABI_Offset */ + +/* /\* MPI_Count must be large enough to hold the larger of MPI_Aint and MPI_Offset. */ +/* * Platforms where MPI_Aint is larger than MPI_Offset are extremely rare. *\/ */ +/* #if !defined(MPI_ABI_Count) */ +/* #define MPI_ABI_Count MPI_Offset */ +/* #endif */ +/* typedef MPI_ABI_Count MPI_Count; */ +/* #undef MPI_ABI_Count */ + +typedef struct { + int MPI_SOURCE; + int MPI_TAG; + int MPI_ERROR; + int MPI_internal[5]; +} MPI_Status; + +/*****************************************************************************/ +/* The following categories and values are taken, in order, from Section A.1 */ +/* ("Defined Values and Handles") of the MPI Standard, v5.0. Each category */ +/* (header comment followed by block of assignments) corresponds to a table */ +/* within Section A.1. */ +/*****************************************************************************/ + +/* Error classes */ +$CATEGORY:ERROR_CLASSES$ + +/* Buffer address constants */ +$CATEGORY:BUFFER_ADDR_CONSTANTS$ + +/* Constants specifying empty or ignored input */ +$CATEGORY:EMPTY_IGNORE_INPUT_CONSTANTS$ + +/* Maximum sizes for strings */ +$CATEGORY:MAX_STR_SIZE_CONSTANTS$ + +/* Mode constants */ +$CATEGORY:MODE_CONSTANTS$ + +/* Assorted constants */ +$CATEGORY:ASSORTED_CONSTANTS$ + +/* Threads constants */ +$CATEGORY:THREADS_CONSTANTS$ + +/* File operations constants */ +$CATEGORY:FILE_OPERATIONS_CONSTANTS$ + +/* Datatype decoding constants */ +$CATEGORY:DATATYPE_DECODING_CONSTANTS$ + +/* F90 datatype matching constants */ +$CATEGORY:F90_DATATYPE_MATCHING_CONSTANTS$ + +/* Results of communicator and group comparisons */ +$CATEGORY:COMMUNICATOR_GROUP_COMP_RESULTS$ + +/* Topologies */ +$CATEGORY:TOPOLOGIES$ + +/* Communicator split type constants */ +$CATEGORY:COMMUNICATOR_SPLIT_TYPE$ + +/* Window lock type constants */ +$CATEGORY:WINDOW_LOCK_TYPE_CONSTANTS$ + +/* MPI window create flavors */ +$CATEGORY:WINDOW_CREATE_FLAVORS$ + +/* MPI window models */ +$CATEGORY:WINDOW_MODELS$ + +/* File positioning constants */ +$CATEGORY:FILE_POS_CONSTANTS$ + +/* File operation constants */ +$CATEGORY:FILE_OP_CONSTANTS$ + +/* Environmental inquiry and predefined attribute keys */ +$CATEGORY:ENV_INQ_AND_ATTR_KEYS$ + +/* Fortran support method specific constants */ +/* $CATEGORY:FORTRAN_SUPPORT_METHOD_CONSTANTS$ */ + +/* Status array size and reserved index values (Fortran only) */ +/* $CATEGORY:STATUS_ARRAY_SIZE_AND_INDEX_FORTRAN$ */ + +/* Fortran status array size and reserved index values (C only) */ +$CATEGORY:FORTRAN_STATUS_ARRAY_SIZE_AND_INDEX_C$ + +/* Variable address size (Fortran only) */ +/* $CATEGORY:VARIABLE_ADDR_SIZE_FORTRAN$ */ + +/* Reserved communicators */ +$CATEGORY:RESERVED_COMMUNICATORS$ + +/* Named predefined datatypes */ +$CATEGORY:PREDEFINED_DATATYPES$ + +/* Optional datatypes (Fortran) */ +$CATEGORY:OPT_DATATYPES_FORTRAN$ + +/* Datatypes for reduction functions (C) */ +$CATEGORY:REDUCTION_FUNC_DATATYPES_C$ + +/* Datatypes for reduction functions (Fortran) */ +$CATEGORY:REDUCTION_FUNC_DATATYPES_FORTRAN$ + +/* Predefined message handles */ +$CATEGORY:MSG_HANDLES$ + +/* Predefined error-handling specifiers */ +$CATEGORY:ERROR_SPECIFIERS$ + +/* Environmental inquiry info key */ +$CATEGORY:ENV_INQ_INFO_KEY$ + +/* Collective operators */ +$CATEGORY:COLLECTIVE_OPS$ + +/* Predefined group handles */ +$CATEGORY:GROUP_HANDLES$ + +/* Other predefined handles */ +$CATEGORY:OTHER_HANDLES$ + +/* Predefined functions */ +$CATEGORY:FUNCTIONS$ + +/* Deprecated predefined functions */ +$CATEGORY:DEPRECATED_FUNCS$ + +/* C preprocessor constants and Fortran parameters */ +/* $CATEGORY:C_PREPROCESSOR_CONSTANTS_FORTRAN_PARAMETERS$ */ + +/* Handles used in the MPI tool information interface */ +$CATEGORY:TOOL_INFO_IFACE_HANDLES$ + +/* Verbosity levels in the MPI tool information interface */ +$CATEGORY:TOOL_INFO_IFACE_VERBOSITY_LEVELS$ + +/* + * Constants to identify associations of variables in the MPI tool information + * interface + */ +$CATEGORY:TOOL_INFO_IFACE_VAR_ASSOCIATIONS$ + +/* + * Constants describing the scope of a control variable in the MPI tool + * information interface + */ +$CATEGORY:TOOL_INFO_IFACE_VAR_SCOPES$ + +/* Performance variable classes used by the MPI tool information interface */ +$CATEGORY:TOOL_INFO_IFACE_PVAR_CLASSES$ + +/* Source event ordering guarantees in the MPI tool information interface */ +$CATEGORY:TOOL_INFO_IFACE_SOURCE_ORDERINGS$ + +/* + * Callback safety requirement levels used in the MPI tool information interface + */ +$CATEGORY:TOOL_INFO_IFACE_CB_SAFETY_REQ_LEVELS$ diff --git a/ompi/mpi/c/abi_converters.h b/ompi/mpi/c/abi_converters.h index d274dd1a8f6..71e51cb4697 100644 --- a/ompi/mpi/c/abi_converters.h +++ b/ompi/mpi/c/abi_converters.h @@ -547,16 +547,16 @@ __opal_attribute_always_inline__ static inline void ompi_convert_abi_status_inte void *ptr = &out->_ucount; out->MPI_SOURCE = inp->MPI_SOURCE; out->MPI_TAG = inp->MPI_TAG; - out->_cancelled = inp->MPI_Internal[0]; - memcpy(ptr, &inp->MPI_Internal[1],sizeof(out->_ucount)); + out->_cancelled = inp->MPI_internal[0]; + memcpy(ptr, &inp->MPI_internal[1],sizeof(out->_ucount)); out->MPI_ERROR = ompi_convert_abi_error_intern_error(inp->MPI_ERROR); } __opal_attribute_always_inline__ static inline void ompi_convert_intern_status_abi_status(MPI_Status_ABI_INTERNAL *out, MPI_Status *inp) { - void *ptr = &out->MPI_Internal[1]; + void *ptr = &out->MPI_internal[1]; out->MPI_SOURCE = inp->MPI_SOURCE; out->MPI_TAG = inp->MPI_TAG; - out->MPI_Internal[0] =inp->_cancelled; + out->MPI_internal[0] =inp->_cancelled; memcpy(ptr, &inp->_ucount,sizeof(inp->_ucount)); } From 5c47dab6d866951a9c1cc5c9f5f5feb06267e2e7 Mon Sep 17 00:00:00 2001 From: Howard Pritchard Date: Thu, 21 Aug 2025 11:42:38 -0600 Subject: [PATCH 4/5] ABI: multiple fixes Many fixes and improvements contributed by dalcinl. Add fortran support functions and some other functions missing from initial work. Return to generating converter functions as part of the build out of the abi variants. Signed-off-by: Howard Pritchard Co-authored-by: Lisandro Dalcin --- .gitignore | 4 + VERSION | 13 +- config/ompi_fortran_check_logical_array.m4 | 4 +- config/ompi_fortran_get_value_true.m4 | 60 +- configure.ac | 1 + docs/Makefile.am | 30 + docs/building-apps/index.rst | 4 +- docs/building-apps/mpi-abi.rst | 36 + .../man3/MPI_Abi_get_fortran_booleans.3.rst | 40 + .../man3/MPI_Abi_get_fortran_info.3.rst | 37 + docs/man-openmpi/man3/MPI_Abi_get_info.3.rst | 36 + .../man3/MPI_Abi_get_version.3.rst | 41 + .../man3/MPI_Abi_set_fortran_booleans.3.rst | 40 + .../man3/MPI_Abi_set_fortran_info.3.rst | 39 + docs/man-openmpi/man3/MPI_Comm_fromint.3.rst | 54 + docs/man-openmpi/man3/MPI_Comm_toint.3.rst | 9 + .../man3/MPI_Errhandler_fromint.3.rst | 9 + .../man3/MPI_Errhandler_toint.3.rst | 9 + docs/man-openmpi/man3/MPI_Errors.3.rst | 6 +- docs/man-openmpi/man3/MPI_File_fromint.3.rst | 9 + docs/man-openmpi/man3/MPI_File_toint.3.rst | 9 + docs/man-openmpi/man3/MPI_Group_fromint.3.rst | 9 + docs/man-openmpi/man3/MPI_Group_toint.3.rst | 9 + docs/man-openmpi/man3/MPI_Info_fromint.3.rst | 9 + docs/man-openmpi/man3/MPI_Info_toint.3.rst | 9 + .../man3/MPI_Message_fromint.3.rst | 9 + docs/man-openmpi/man3/MPI_Message_toint.3.rst | 9 + docs/man-openmpi/man3/MPI_Op_fromint.3.rst | 9 + docs/man-openmpi/man3/MPI_Op_toint.3.rst | 9 + .../man3/MPI_Request_fromint.3.rst | 9 + docs/man-openmpi/man3/MPI_Request_toint.3.rst | 9 + .../man3/MPI_Session_fromint.3.rst | 9 + docs/man-openmpi/man3/MPI_Session_toint.3.rst | 9 + .../man-openmpi/man3/MPI_Status_fromint.3.rst | 9 + docs/man-openmpi/man3/MPI_Status_toint.3.rst | 9 + docs/man-openmpi/man3/MPI_Type_fromint.3.rst | 9 + docs/man-openmpi/man3/MPI_Type_toint.3.rst | 9 + docs/man-openmpi/man3/MPI_Win_fromint.3.rst | 9 + docs/man-openmpi/man3/MPI_Win_toint.3.rst | 9 + docs/man-openmpi/man3/index.rst | 30 + docs/mpi-standard-5.0-abi.json | 78 +- ompi/Makefile.am | 7 +- ompi/attribute/attribute.c | 2 - ompi/attribute/attribute.h | 3 +- ompi/datatype/ompi_datatype_internal.h | 22 + ompi/errhandler/errcode.c | 3 + ompi/errhandler/errhandler.c | 16 +- ompi/errhandler/errhandler.h | 21 +- ompi/errhandler/errhandler_invoke.c | 4 + ompi/include/mpi.h.in | 60 +- ompi/include/mpif-values.py | 1 + ompi/info/Makefile.am | 2 +- ompi/mca/bml/r2/Makefile.am | 2 +- ompi/mca/coll/accelerator/Makefile.am | 2 +- ompi/mca/coll/acoll/Makefile.am | 2 +- ompi/mca/coll/basic/Makefile.am | 2 +- ompi/mca/coll/demo/Makefile.am | 2 +- ompi/mca/coll/inter/Makefile.am | 2 +- ompi/mca/coll/libnbc/Makefile.am | 2 +- ompi/mca/coll/monitoring/Makefile.am | 2 +- ompi/mca/coll/portals4/Makefile.am | 2 +- ompi/mca/coll/self/Makefile.am | 2 +- ompi/mca/coll/sync/Makefile.am | 2 +- ompi/mca/coll/tuned/Makefile.am | 2 +- ompi/mca/coll/ucc/Makefile.am | 2 +- ompi/mca/coll/xhc/Makefile.am | 2 +- ompi/mca/common/monitoring/Makefile.am | 2 +- ompi/mca/fbtl/ime/Makefile.am | 4 +- ompi/mca/fbtl/posix/Makefile.am | 2 +- ompi/mca/fs/ime/Makefile.am | 4 +- ompi/mca/fs/lustre/Makefile.am | 2 +- ompi/mca/fs/ufs/Makefile.am | 2 +- .../hook/comm_method/hook_comm_method_fns.c | 2 - ompi/mca/mtl/ofi/Makefile.am | 2 +- ompi/mca/mtl/portals4/Makefile.am | 2 +- ompi/mca/mtl/psm2/Makefile.am | 2 +- ompi/mca/op/aarch64/Makefile.am | 2 +- ompi/mca/op/avx/Makefile.am | 2 +- ompi/mca/op/example/Makefile.am | 2 +- ompi/mca/osc/monitoring/Makefile.am | 2 +- ompi/mca/osc/portals4/Makefile.am | 2 +- ompi/mca/osc/rdma/Makefile.am | 2 +- ompi/mca/osc/sm/Makefile.am | 2 +- ompi/mca/osc/ucx/Makefile.am | 2 +- ompi/mca/part/persist/Makefile.am | 2 +- ompi/mca/pml/cm/Makefile.am | 2 +- ompi/mca/pml/monitoring/Makefile.am | 2 +- ompi/mca/pml/ob1/Makefile.am | 2 +- ompi/mca/pml/ucx/Makefile.am | 2 +- ompi/mca/pml/v/Makefile.am | 2 +- ompi/mca/topo/basic/Makefile.am | 2 +- ompi/mca/topo/example/Makefile.am | 2 +- ompi/mca/topo/treematch/Makefile.am | 2 +- ompi/mca/vprotocol/pessimist/Makefile.am | 2 +- ompi/mpi/Makefile.am | 11 + ompi/mpi/README_ABI.md | 183 ++ ompi/mpi/bindings/bindings.py | 7 + ompi/mpi/bindings/c_header.py | 128 +- ompi/mpi/bindings/ompi_bindings/c.py | 844 +++++-- ompi/mpi/bindings/ompi_bindings/c_type.py | 2098 +++++++++++++++-- ompi/mpi/bindings/ompi_bindings/consts.py | 414 +++- ompi/mpi/bindings/ompi_bindings/parser.py | 34 +- ompi/mpi/bindings/ompi_bindings/util.py | 26 +- ompi/mpi/c/Makefile.am | 267 ++- ompi/mpi/c/Makefile_abi.include | 47 +- ompi/mpi/c/abi.h.in | 80 +- ompi/mpi/c/abi_converters.h | 567 ----- ompi/mpi/c/abi_details.c | 36 - ompi/mpi/c/abi_get_fortran_booleans.c.in | 48 + ompi/mpi/c/abi_get_fortran_info.c.in | 45 + ompi/mpi/c/abi_get_info.c.in | 57 + .../c/{abi_version.c => abi_get_version.c.in} | 19 +- ompi/mpi/c/abi_set_fortran_booleans.c.in | 47 + ompi/mpi/c/abi_set_fortran_info.c.in | 45 + ompi/mpi/c/abi_supported.c | 28 - ompi/mpi/c/accumulate.c.in | 4 +- ompi/mpi/c/add_error_class.c.in | 2 +- ompi/mpi/c/add_error_code.c.in | 2 +- ompi/mpi/c/add_error_string.c.in | 4 +- ompi/mpi/c/aint_add_abi.c | 40 + ompi/mpi/c/aint_diff_abi.c | 41 + ompi/mpi/c/allgather.c.in | 2 +- ompi/mpi/c/allgather_init.c.in | 4 +- ompi/mpi/c/allgatherv.c.in | 4 +- ompi/mpi/c/allgatherv_init.c.in | 4 +- ompi/mpi/c/allreduce.c.in | 4 +- ompi/mpi/c/allreduce_init.c.in | 4 +- ompi/mpi/c/alltoall.c.in | 4 +- ompi/mpi/c/alltoall_init.c.in | 4 +- ompi/mpi/c/alltoallv.c.in | 4 +- ompi/mpi/c/alltoallv_init.c.in | 4 +- ompi/mpi/c/alltoallw.c.in | 4 +- ompi/mpi/c/alltoallw_init.c.in | 8 +- ompi/mpi/c/attr_delete.c.in | 2 +- ompi/mpi/c/attr_fn_abi.c | 127 + ompi/mpi/c/attr_get.c.in | 2 +- ompi/mpi/c/attr_put.c.in | 2 +- ompi/mpi/c/bcast.c.in | 2 +- ompi/mpi/c/bcast_init.c.in | 2 +- ompi/mpi/c/bindings.h | 6 + ompi/mpi/c/bsend.c.in | 6 +- ompi/mpi/c/bsend_init.c.in | 6 +- ompi/mpi/c/buffer_attach.c.in | 2 +- ompi/mpi/c/buffer_detach.c.in | 6 +- ompi/mpi/c/cart_shift.c.in | 4 +- ompi/mpi/c/comm_accept.c.in | 2 +- ompi/mpi/c/comm_attach_buffer.c.in | 2 +- ompi/mpi/c/comm_call_errhandler.c.in | 2 +- ompi/mpi/c/comm_compare.c.in | 2 +- ompi/mpi/c/comm_connect.c.in | 2 +- ompi/mpi/c/comm_create_errhandler.c.in | 11 +- ompi/mpi/c/comm_create_keyval.c.in | 9 +- ompi/mpi/c/comm_delete_attr.c.in | 2 +- ompi/mpi/c/comm_detach_buffer.c.in | 6 +- ompi/mpi/c/comm_disconnect.c.in | 2 +- ompi/mpi/c/comm_free.c.in | 2 +- ompi/mpi/c/comm_free_keyval.c.in | 2 +- ompi/mpi/c/comm_fromint_abi.c | 60 + ompi/mpi/c/comm_fromint_ompi.c | 49 + ompi/mpi/c/comm_get_attr.c.in | 23 +- ompi/mpi/c/comm_get_name.c.in | 2 +- ompi/mpi/c/comm_join.c.in | 2 +- ompi/mpi/c/comm_set_attr.c.in | 6 +- ompi/mpi/c/comm_spawn.c.in | 6 +- ompi/mpi/c/comm_spawn_multiple.c.in | 10 +- ompi/mpi/c/comm_split_type.c.in | 2 +- ompi/mpi/c/comm_toint_abi.c | 66 + ompi/mpi/c/comm_toint_ompi.c | 54 + ompi/mpi/c/compare_and_swap.c.in | 4 +- ompi/mpi/c/dist_graph_create.c.in | 2 +- ompi/mpi/c/dist_graph_create_adjacent.c.in | 6 +- ompi/mpi/c/errhandler_free.c.in | 5 +- ompi/mpi/c/errhandler_fromint_abi.c | 60 + ompi/mpi/c/errhandler_fromint_ompi.c | 49 + ompi/mpi/c/errhandler_toint_abi.c | 64 + ompi/mpi/c/errhandler_toint_ompi.c | 53 + ompi/mpi/c/error_class.c.in | 2 +- ompi/mpi/c/error_string.c.in | 4 +- ompi/mpi/c/exscan.c.in | 4 +- ompi/mpi/c/exscan_init.c.in | 4 +- ompi/mpi/c/fetch_and_op.c.in | 4 +- ompi/mpi/c/file_call_errhandler.c.in | 2 +- ompi/mpi/c/file_create_errhandler.c.in | 10 +- ompi/mpi/c/file_fromint_abi.c | 61 + ompi/mpi/c/file_fromint_ompi.c | 49 + ompi/mpi/c/file_get_amode.c.in | 4 +- ompi/mpi/c/file_iwrite.c.in | 4 +- ompi/mpi/c/file_iwrite_all.c.in | 4 +- ompi/mpi/c/file_iwrite_at.c.in | 4 +- ompi/mpi/c/file_iwrite_at_all.c.in | 4 +- ompi/mpi/c/file_iwrite_shared.c.in | 4 +- ompi/mpi/c/file_open.c.in | 4 +- ompi/mpi/c/file_seek.c.in | 4 +- ompi/mpi/c/file_seek_shared.c.in | 4 +- ompi/mpi/c/file_set_view.c.in | 5 + ompi/mpi/c/file_toint_abi.c | 66 + ompi/mpi/c/file_toint_ompi.c | 54 + ompi/mpi/c/file_write.c.in | 4 +- ompi/mpi/c/file_write_all.c.in | 4 +- ompi/mpi/c/file_write_all_begin.c.in | 4 +- ompi/mpi/c/file_write_all_end.c.in | 4 +- ompi/mpi/c/file_write_at.c.in | 4 +- ompi/mpi/c/file_write_at_all.c.in | 4 +- ompi/mpi/c/file_write_at_all_begin.c.in | 4 +- ompi/mpi/c/file_write_at_all_end.c.in | 4 +- ompi/mpi/c/file_write_ordered.c.in | 4 +- ompi/mpi/c/file_write_ordered_begin.c.in | 4 +- ompi/mpi/c/file_write_ordered_end.c.in | 4 +- ompi/mpi/c/file_write_shared.c.in | 4 +- ompi/mpi/c/gather.c.in | 6 +- ompi/mpi/c/gather_init.c.in | 6 +- ompi/mpi/c/gatherv.c.in | 6 +- ompi/mpi/c/gatherv_init.c.in | 6 +- ompi/mpi/c/get.c.in | 2 +- ompi/mpi/c/get_accumulate.c.in | 6 +- ompi/mpi/c/get_address.c.in | 4 +- ompi/mpi/c/get_library_version.c.in | 16 +- ompi/mpi/c/get_processor_name.c.in | 6 +- ompi/mpi/c/group_compare.c.in | 2 +- ompi/mpi/c/group_free.c.in | 6 +- ompi/mpi/c/group_fromint_abi.c | 60 + ompi/mpi/c/group_fromint_ompi.c | 49 + ompi/mpi/c/group_toint_abi.c | 64 + ompi/mpi/c/group_toint_ompi.c | 54 + ompi/mpi/c/group_translate_ranks.c.in | 4 +- ompi/mpi/c/iallgather.c.in | 4 +- ompi/mpi/c/iallgatherv.c.in | 4 +- ompi/mpi/c/iallreduce.c.in | 4 +- ompi/mpi/c/ialltoall.c.in | 4 +- ompi/mpi/c/ialltoallv.c.in | 4 +- ompi/mpi/c/ialltoallw.c.in | 9 +- ompi/mpi/c/ibcast.c.in | 2 +- ompi/mpi/c/ibsend.c.in | 6 +- ompi/mpi/c/iexscan.c.in | 4 +- ompi/mpi/c/igather.c.in | 6 +- ompi/mpi/c/igatherv.c.in | 6 +- ompi/mpi/c/improbe.c.in | 10 +- ompi/mpi/c/imrecv.c.in | 4 +- ompi/mpi/c/ineighbor_allgather.c.in | 4 +- ompi/mpi/c/ineighbor_allgatherv.c.in | 4 +- ompi/mpi/c/ineighbor_alltoall.c.in | 4 +- ompi/mpi/c/ineighbor_alltoallv.c.in | 4 +- ompi/mpi/c/ineighbor_alltoallw.c.in | 8 +- ompi/mpi/c/info_delete.c.in | 2 +- ompi/mpi/c/info_free.c.in | 5 +- ompi/mpi/c/info_fromint_abi.c | 56 + ompi/mpi/c/info_fromint_ompi.c | 54 + ompi/mpi/c/info_get.c.in | 2 +- ompi/mpi/c/info_get_nthkey.c.in | 2 +- ompi/mpi/c/info_get_string.c.in | 2 +- ompi/mpi/c/info_get_valuelen.c.in | 2 +- ompi/mpi/c/info_set.c.in | 4 +- ompi/mpi/c/info_toint_abi.c | 65 + ompi/mpi/c/info_toint_ompi.c | 53 + ompi/mpi/c/init_thread.c.in | 4 +- ompi/mpi/c/iprobe.c.in | 6 +- ompi/mpi/c/irecv.c.in | 2 +- ompi/mpi/c/ireduce.c.in | 6 +- ompi/mpi/c/ireduce_scatter.c.in | 4 +- ompi/mpi/c/ireduce_scatter_block.c.in | 4 +- ompi/mpi/c/irsend.c.in | 6 +- ompi/mpi/c/iscan.c.in | 4 +- ompi/mpi/c/iscatter.c.in | 6 +- ompi/mpi/c/iscatterv.c.in | 6 +- ompi/mpi/c/isend.c.in | 4 +- ompi/mpi/c/isendrecv.c.in | 8 +- ompi/mpi/c/isendrecv_replace.c.in | 2 +- ompi/mpi/c/issend.c.in | 6 +- ompi/mpi/c/message_fromint_abi.c | 61 + ompi/mpi/c/message_fromint_ompi.c | 49 + ompi/mpi/c/message_toint_abi.c | 70 + ompi/mpi/c/message_toint_ompi.c | 59 + ompi/mpi/c/mprobe.c.in | 2 +- ompi/mpi/c/mrecv.c.in | 2 +- ompi/mpi/c/neighbor_allgather.c.in | 4 +- ompi/mpi/c/neighbor_allgather_init.c.in | 4 +- ompi/mpi/c/neighbor_allgatherv.c.in | 4 +- ompi/mpi/c/neighbor_allgatherv_init.c.in | 4 +- ompi/mpi/c/neighbor_alltoall.c.in | 4 +- ompi/mpi/c/neighbor_alltoall_init.c.in | 4 +- ompi/mpi/c/neighbor_alltoallv.c.in | 4 +- ompi/mpi/c/neighbor_alltoallv_init.c.in | 4 +- ompi/mpi/c/neighbor_alltoallw.c.in | 8 +- ompi/mpi/c/neighbor_alltoallw_init.c.in | 8 +- ompi/mpi/c/ompi_abi_fortran.c | 481 ++++ ompi/mpi/c/op_create.c.in | 6 + ompi/mpi/c/op_free.c.in | 5 +- ompi/mpi/c/op_fromint_abi.c | 61 + ompi/mpi/c/op_fromint_ompi.c | 49 + ompi/mpi/c/op_toint_abi.c | 64 + ompi/mpi/c/op_toint_ompi.c | 54 + ompi/mpi/c/pack.c.in | 4 +- ompi/mpi/c/pack_external.c.in | 4 +- ompi/mpi/c/pcontrol.c | 6 + ompi/mpi/c/precv_init.c.in | 2 +- ompi/mpi/c/probe.c.in | 2 +- ompi/mpi/c/psend_init.c.in | 4 +- ompi/mpi/c/put.c.in | 6 +- ompi/mpi/c/query_thread.c.in | 2 +- ompi/mpi/c/raccumulate.c.in | 6 +- ompi/mpi/c/recv.c.in | 2 +- ompi/mpi/c/recv_init.c.in | 4 +- ompi/mpi/c/reduce.c.in | 6 +- ompi/mpi/c/reduce_init.c.in | 6 +- ompi/mpi/c/reduce_local.c.in | 4 +- ompi/mpi/c/reduce_scatter.c.in | 4 +- ompi/mpi/c/reduce_scatter_block.c.in | 4 +- ompi/mpi/c/reduce_scatter_block_init.c.in | 4 +- ompi/mpi/c/reduce_scatter_init.c.in | 4 +- ompi/mpi/c/remove_error_class.c.in | 2 +- ompi/mpi/c/remove_error_code.c.in | 2 +- ompi/mpi/c/remove_error_string.c.in | 2 +- ompi/mpi/c/request_fromint_abi.c | 61 + ompi/mpi/c/request_fromint_ompi.c | 50 + ompi/mpi/c/request_get_status_some.c.in | 4 +- ompi/mpi/c/request_toint_abi.c | 69 + ompi/mpi/c/request_toint_ompi.c | 59 + ompi/mpi/c/rget.c.in | 2 +- ompi/mpi/c/rget_accumulate.c.in | 6 +- ompi/mpi/c/rput.c.in | 6 +- ompi/mpi/c/rsend.c.in | 4 +- ompi/mpi/c/rsend_init.c.in | 6 +- ompi/mpi/c/scan.c.in | 4 +- ompi/mpi/c/scan_init.c.in | 4 +- ompi/mpi/c/scatter.c.in | 6 +- ompi/mpi/c/scatter_init.c.in | 6 +- ompi/mpi/c/scatterv.c.in | 6 +- ompi/mpi/c/scatterv_init.c.in | 6 +- ompi/mpi/c/send.c.in | 4 +- ompi/mpi/c/send_init.c.in | 6 +- ompi/mpi/c/sendrecv.c.in | 8 +- ompi/mpi/c/sendrecv_replace.c.in | 2 +- ompi/mpi/c/session_attach_buffer.c.in | 2 +- ompi/mpi/c/session_call_errhandler.c.in | 2 +- ompi/mpi/c/session_create_errhandler.c.in | 10 +- ompi/mpi/c/session_detach_buffer.c.in | 6 +- ompi/mpi/c/session_fromint_abi.c | 61 + ompi/mpi/c/session_fromint_ompi.c | 49 + ompi/mpi/c/session_toint_abi.c | 64 + ompi/mpi/c/session_toint_ompi.c | 54 + ompi/mpi/c/ssend.c.in | 4 +- ompi/mpi/c/ssend_init.c.in | 6 +- ompi/mpi/c/startall.c.in | 2 +- ompi/mpi/c/status_get_error.c.in | 2 +- ompi/mpi/c/status_get_source.c.in | 2 +- ompi/mpi/c/status_get_tag.c.in | 2 +- ompi/mpi/c/status_set_error.c.in | 2 +- ompi/mpi/c/status_set_source.c.in | 2 +- ompi/mpi/c/status_set_tag.c.in | 2 +- ompi/mpi/c/testall.c.in | 6 +- ompi/mpi/c/testany.c.in | 4 +- ompi/mpi/c/testsome.c.in | 6 +- ompi/mpi/c/topo_test.c.in | 2 +- ompi/mpi/c/type_commit.c.in | 2 +- ompi/mpi/c/type_create_darray.c.in | 10 +- ompi/mpi/c/type_create_keyval.c.in | 10 +- ompi/mpi/c/type_create_subarray.c.in | 2 +- ompi/mpi/c/type_delete_attr.c.in | 2 +- ompi/mpi/c/type_free.c.in | 5 +- ompi/mpi/c/type_free_keyval.c.in | 2 +- ompi/mpi/c/type_fromint_abi.c | 60 + ompi/mpi/c/type_fromint_ompi.c | 51 + ompi/mpi/c/type_get_attr.c.in | 2 +- ompi/mpi/c/type_get_contents.c.in_nbc | 83 + ompi/mpi/c/type_get_contents_c.c.in_obc | 86 + ...velope.c.in => type_get_envelope.c.in_nbc} | 10 +- ...elope_c.c => type_get_envelope_c.c.in_obc} | 21 +- ompi/mpi/c/type_get_name.c.in | 2 +- ompi/mpi/c/type_match_size.c.in | 4 +- ompi/mpi/c/type_set_attr.c.in | 2 +- ompi/mpi/c/type_set_name.c.in | 4 +- ompi/mpi/c/type_toint_abi.c | 70 + ompi/mpi/c/type_toint_ompi.c | 61 + ompi/mpi/c/unpack.c.in | 4 +- ompi/mpi/c/unpack_external.c.in | 4 +- ompi/mpi/c/waitany.c.in | 4 +- ompi/mpi/c/waitsome.c.in | 2 +- ompi/mpi/c/win_call_errhandler.c.in | 2 +- ompi/mpi/c/win_create_errhandler.c.in | 10 +- ompi/mpi/c/win_create_keyval.c.in | 10 +- ompi/mpi/c/win_delete_attr.c.in | 2 +- ompi/mpi/c/win_detach.c.in | 4 +- ompi/mpi/c/win_fence.c.in | 2 +- ompi/mpi/c/win_free.c.in | 5 +- ompi/mpi/c/win_free_keyval.c.in | 2 +- ompi/mpi/c/win_fromint_abi.c | 61 + ompi/mpi/c/win_fromint_ompi.c | 50 + ompi/mpi/c/win_get_attr.c.in | 42 +- ompi/mpi/c/win_lock.c.in | 4 +- ompi/mpi/c/win_lock_all.c.in | 4 +- ompi/mpi/c/win_post.c.in | 4 +- ompi/mpi/c/win_set_attr.c.in | 2 +- ompi/mpi/c/win_shared_query.c.in | 2 +- ompi/mpi/c/win_start.c.in | 4 +- ompi/mpi/c/win_toint_abi.c | 66 + ompi/mpi/c/win_toint_ompi.c | 54 + ompi/mpi/c/{wtick.c => wtick.c.in} | 11 +- ompi/mpi/fortran/mpif-h/Makefile.am | 6 + .../mpif-h/abi_get_fortran_booleans_f.c | 91 + .../fortran/mpif-h/abi_get_fortran_info_f.c | 71 + ompi/mpi/fortran/mpif-h/abi_get_info_f.c | 71 + ompi/mpi/fortran/mpif-h/abi_get_version_f.c | 83 + .../mpif-h/abi_set_fortran_booleans_f.c | 83 + .../fortran/mpif-h/abi_set_fortran_info_f.c | 67 + .../fortran/mpif-h/comm_create_errhandler_f.c | 2 +- .../fortran/mpif-h/file_create_errhandler_f.c | 2 +- ompi/mpi/fortran/mpif-h/profile/Makefile.am | 6 + ompi/mpi/fortran/mpif-h/prototypes_mpi.h | 7 + .../mpif-h/session_create_errhandler_f.c | 2 +- .../fortran/mpif-h/win_create_errhandler_f.c | 2 +- .../use-mpi-f08/Makefile.prototype_files | 6 + .../use-mpi-f08/abi_get_fortran_booleans.c.in | 30 + .../use-mpi-f08/abi_get_fortran_info.c.in | 26 + .../mpi/fortran/use-mpi-f08/abi_get_info.c.in | 26 + .../fortran/use-mpi-f08/abi_get_version.c.in | 36 + .../use-mpi-f08/abi_set_fortran_booleans.c.in | 24 + .../use-mpi-f08/abi_set_fortran_info.c.in | 21 + .../Makefile.prototype_files | 6 + ompi/mpi/tool/Makefile.am | 116 +- ompi/mpi/tool/Makefile_abi.include | 56 + ompi/mpi/tool/category_changed.c | 3 + ompi/mpi/tool/category_get_categories.c | 3 + ompi/mpi/tool/category_get_cvars.c | 3 + ompi/mpi/tool/category_get_events.c | 3 + ompi/mpi/tool/category_get_index.c | 3 + ompi/mpi/tool/category_get_info.c | 3 + ompi/mpi/tool/category_get_num.c | 3 + ompi/mpi/tool/category_get_num_events.c | 3 + ompi/mpi/tool/category_get_pvars.c | 3 + ompi/mpi/tool/cvar_get_index.c | 3 + .../{cvar_get_info.c => cvar_get_info.c.in} | 13 +- ompi/mpi/tool/cvar_get_num.c | 3 + ..._handle_alloc.c => cvar_handle_alloc.c.in} | 11 +- ...ar_handle_free.c => cvar_handle_free.c.in} | 9 +- ompi/mpi/tool/{cvar_read.c => cvar_read.c.in} | 9 +- .../tool/{cvar_write.c => cvar_write.c.in} | 9 +- .../{enum_get_info.c => enum_get_info.c.in} | 9 +- .../{enum_get_item.c => enum_get_item.c.in} | 11 +- ompi/mpi/tool/event_callback_get_info.c | 38 - ...et_info.c => event_callback_get_info.c.in} | 13 +- ...et_info.c => event_callback_set_info.c.in} | 11 +- .../tool/{event_read.c => event_copy.c.in} | 9 +- ompi/mpi/tool/event_get_index.c | 3 + ompi/mpi/tool/event_get_info.c | 38 - ...vent_handle_free.c => event_get_info.c.in} | 17 +- ompi/mpi/tool/event_get_num.c | 3 + ...ent_get_source.c => event_get_source.c.in} | 10 +- ...t_timestamp.c => event_get_timestamp.c.in} | 10 +- ...handle_alloc.c => event_handle_alloc.c.in} | 11 +- ompi/mpi/tool/event_handle_free.c.in | 29 + ..._set_info.c => event_handle_get_info.c.in} | 11 +- ompi/mpi/tool/event_handle_set_info.c.in | 29 + ompi/mpi/tool/event_read.c.in | 26 + ompi/mpi/tool/event_register_callback.c | 36 - ompi/mpi/tool/event_register_callback.c.in | 29 + ompi/mpi/tool/event_set_dropped_handler.c | 35 - ..._copy.c => event_set_dropped_handler.c.in} | 9 +- ompi/mpi/tool/finalize.c | 3 + ompi/mpi/tool/init_thread.c | 3 + ompi/mpi/tool/pvar_get_index.c | 3 + .../{pvar_get_info.c => pvar_get_info.c.in} | 15 +- ompi/mpi/tool/pvar_get_num.c | 3 + ..._handle_alloc.c => pvar_handle_alloc.c.in} | 11 +- ...ar_handle_free.c => pvar_handle_free.c.in} | 9 +- ompi/mpi/tool/{pvar_read.c => pvar_read.c.in} | 11 +- .../{pvar_readreset.c => pvar_readreset.c.in} | 11 +- .../tool/{pvar_reset.c => pvar_reset.c.in} | 9 +- ...sion_create.c => pvar_session_create.c.in} | 9 +- ..._session_free.c => pvar_session_free.c.in} | 9 +- .../tool/{pvar_start.c => pvar_start.c.in} | 9 +- ompi/mpi/tool/{pvar_stop.c => pvar_stop.c.in} | 9 +- .../tool/{pvar_write.c => pvar_write.c.in} | 11 +- ompi/mpi/tool/source_get_info.c | 34 - ompi/mpi/tool/source_get_info.c.in | 28 + ompi/mpi/tool/source_get_num.c | 3 + ompi/mpi/tool/source_get_timestamp.c | 3 + ompi/op/op.c | 1 + ompi/op/op.h | 15 + 478 files changed, 9817 insertions(+), 2196 deletions(-) create mode 100644 docs/building-apps/mpi-abi.rst create mode 100644 docs/man-openmpi/man3/MPI_Abi_get_fortran_booleans.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Abi_get_fortran_info.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Abi_get_info.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Abi_get_version.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Abi_set_fortran_booleans.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Abi_set_fortran_info.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Comm_fromint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Comm_toint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Errhandler_fromint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Errhandler_toint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_File_fromint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_File_toint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Group_fromint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Group_toint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Info_fromint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Info_toint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Message_fromint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Message_toint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Op_fromint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Op_toint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Request_fromint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Request_toint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Session_fromint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Session_toint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Status_fromint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Status_toint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Type_fromint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Type_toint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Win_fromint.3.rst create mode 100644 docs/man-openmpi/man3/MPI_Win_toint.3.rst create mode 100644 ompi/mpi/README_ABI.md delete mode 100644 ompi/mpi/c/abi_converters.h delete mode 100644 ompi/mpi/c/abi_details.c create mode 100644 ompi/mpi/c/abi_get_fortran_booleans.c.in create mode 100644 ompi/mpi/c/abi_get_fortran_info.c.in create mode 100644 ompi/mpi/c/abi_get_info.c.in rename ompi/mpi/c/{abi_version.c => abi_get_version.c.in} (53%) create mode 100644 ompi/mpi/c/abi_set_fortran_booleans.c.in create mode 100644 ompi/mpi/c/abi_set_fortran_info.c.in delete mode 100644 ompi/mpi/c/abi_supported.c create mode 100644 ompi/mpi/c/aint_add_abi.c create mode 100644 ompi/mpi/c/aint_diff_abi.c create mode 100644 ompi/mpi/c/attr_fn_abi.c create mode 100644 ompi/mpi/c/comm_fromint_abi.c create mode 100644 ompi/mpi/c/comm_fromint_ompi.c create mode 100644 ompi/mpi/c/comm_toint_abi.c create mode 100644 ompi/mpi/c/comm_toint_ompi.c create mode 100644 ompi/mpi/c/errhandler_fromint_abi.c create mode 100644 ompi/mpi/c/errhandler_fromint_ompi.c create mode 100644 ompi/mpi/c/errhandler_toint_abi.c create mode 100644 ompi/mpi/c/errhandler_toint_ompi.c create mode 100644 ompi/mpi/c/file_fromint_abi.c create mode 100644 ompi/mpi/c/file_fromint_ompi.c create mode 100644 ompi/mpi/c/file_toint_abi.c create mode 100644 ompi/mpi/c/file_toint_ompi.c create mode 100644 ompi/mpi/c/group_fromint_abi.c create mode 100644 ompi/mpi/c/group_fromint_ompi.c create mode 100644 ompi/mpi/c/group_toint_abi.c create mode 100644 ompi/mpi/c/group_toint_ompi.c create mode 100644 ompi/mpi/c/info_fromint_abi.c create mode 100644 ompi/mpi/c/info_fromint_ompi.c create mode 100644 ompi/mpi/c/info_toint_abi.c create mode 100644 ompi/mpi/c/info_toint_ompi.c create mode 100644 ompi/mpi/c/message_fromint_abi.c create mode 100644 ompi/mpi/c/message_fromint_ompi.c create mode 100644 ompi/mpi/c/message_toint_abi.c create mode 100644 ompi/mpi/c/message_toint_ompi.c create mode 100644 ompi/mpi/c/ompi_abi_fortran.c create mode 100644 ompi/mpi/c/op_fromint_abi.c create mode 100644 ompi/mpi/c/op_fromint_ompi.c create mode 100644 ompi/mpi/c/op_toint_abi.c create mode 100644 ompi/mpi/c/op_toint_ompi.c create mode 100644 ompi/mpi/c/request_fromint_abi.c create mode 100644 ompi/mpi/c/request_fromint_ompi.c create mode 100644 ompi/mpi/c/request_toint_abi.c create mode 100644 ompi/mpi/c/request_toint_ompi.c create mode 100644 ompi/mpi/c/session_fromint_abi.c create mode 100644 ompi/mpi/c/session_fromint_ompi.c create mode 100644 ompi/mpi/c/session_toint_abi.c create mode 100644 ompi/mpi/c/session_toint_ompi.c create mode 100644 ompi/mpi/c/type_fromint_abi.c create mode 100644 ompi/mpi/c/type_fromint_ompi.c create mode 100644 ompi/mpi/c/type_get_contents.c.in_nbc create mode 100644 ompi/mpi/c/type_get_contents_c.c.in_obc rename ompi/mpi/c/{type_get_envelope.c.in => type_get_envelope.c.in_nbc} (86%) rename ompi/mpi/c/{type_get_envelope_c.c => type_get_envelope_c.c.in_obc} (77%) create mode 100644 ompi/mpi/c/type_toint_abi.c create mode 100644 ompi/mpi/c/type_toint_ompi.c create mode 100644 ompi/mpi/c/win_fromint_abi.c create mode 100644 ompi/mpi/c/win_fromint_ompi.c create mode 100644 ompi/mpi/c/win_toint_abi.c create mode 100644 ompi/mpi/c/win_toint_ompi.c rename ompi/mpi/c/{wtick.c => wtick.c.in} (91%) create mode 100644 ompi/mpi/fortran/mpif-h/abi_get_fortran_booleans_f.c create mode 100644 ompi/mpi/fortran/mpif-h/abi_get_fortran_info_f.c create mode 100644 ompi/mpi/fortran/mpif-h/abi_get_info_f.c create mode 100644 ompi/mpi/fortran/mpif-h/abi_get_version_f.c create mode 100644 ompi/mpi/fortran/mpif-h/abi_set_fortran_booleans_f.c create mode 100644 ompi/mpi/fortran/mpif-h/abi_set_fortran_info_f.c create mode 100644 ompi/mpi/fortran/use-mpi-f08/abi_get_fortran_booleans.c.in create mode 100644 ompi/mpi/fortran/use-mpi-f08/abi_get_fortran_info.c.in create mode 100644 ompi/mpi/fortran/use-mpi-f08/abi_get_info.c.in create mode 100644 ompi/mpi/fortran/use-mpi-f08/abi_get_version.c.in create mode 100644 ompi/mpi/fortran/use-mpi-f08/abi_set_fortran_booleans.c.in create mode 100644 ompi/mpi/fortran/use-mpi-f08/abi_set_fortran_info.c.in create mode 100644 ompi/mpi/tool/Makefile_abi.include rename ompi/mpi/tool/{cvar_get_info.c => cvar_get_info.c.in} (85%) rename ompi/mpi/tool/{cvar_handle_alloc.c => cvar_handle_alloc.c.in} (87%) rename ompi/mpi/tool/{cvar_handle_free.c => cvar_handle_free.c.in} (72%) rename ompi/mpi/tool/{cvar_read.c => cvar_read.c.in} (92%) rename ompi/mpi/tool/{cvar_write.c => cvar_write.c.in} (87%) rename ompi/mpi/tool/{enum_get_info.c => enum_get_info.c.in} (82%) rename ompi/mpi/tool/{enum_get_item.c => enum_get_item.c.in} (82%) delete mode 100644 ompi/mpi/tool/event_callback_get_info.c rename ompi/mpi/tool/{event_handle_set_info.c => event_callback_get_info.c.in} (69%) rename ompi/mpi/tool/{event_handle_get_info.c => event_callback_set_info.c.in} (68%) rename ompi/mpi/tool/{event_read.c => event_copy.c.in} (73%) delete mode 100644 ompi/mpi/tool/event_get_info.c rename ompi/mpi/tool/{event_handle_free.c => event_get_info.c.in} (57%) rename ompi/mpi/tool/{event_get_source.c => event_get_source.c.in} (71%) rename ompi/mpi/tool/{event_get_timestamp.c => event_get_timestamp.c.in} (70%) rename ompi/mpi/tool/{event_handle_alloc.c => event_handle_alloc.c.in} (65%) create mode 100644 ompi/mpi/tool/event_handle_free.c.in rename ompi/mpi/tool/{event_callback_set_info.c => event_handle_get_info.c.in} (66%) create mode 100644 ompi/mpi/tool/event_handle_set_info.c.in create mode 100644 ompi/mpi/tool/event_read.c.in delete mode 100644 ompi/mpi/tool/event_register_callback.c create mode 100644 ompi/mpi/tool/event_register_callback.c.in delete mode 100644 ompi/mpi/tool/event_set_dropped_handler.c rename ompi/mpi/tool/{event_copy.c => event_set_dropped_handler.c.in} (74%) rename ompi/mpi/tool/{pvar_get_info.c => pvar_get_info.c.in} (85%) rename ompi/mpi/tool/{pvar_handle_alloc.c => pvar_handle_alloc.c.in} (85%) rename ompi/mpi/tool/{pvar_handle_free.c => pvar_handle_free.c.in} (84%) rename ompi/mpi/tool/{pvar_read.c => pvar_read.c.in} (77%) rename ompi/mpi/tool/{pvar_readreset.c => pvar_readreset.c.in} (69%) rename ompi/mpi/tool/{pvar_reset.c => pvar_reset.c.in} (84%) rename ompi/mpi/tool/{pvar_session_create.c => pvar_session_create.c.in} (80%) rename ompi/mpi/tool/{pvar_session_free.c => pvar_session_free.c.in} (77%) rename ompi/mpi/tool/{pvar_start.c => pvar_start.c.in} (86%) rename ompi/mpi/tool/{pvar_stop.c => pvar_stop.c.in} (87%) rename ompi/mpi/tool/{pvar_write.c => pvar_write.c.in} (77%) delete mode 100644 ompi/mpi/tool/source_get_info.c create mode 100644 ompi/mpi/tool/source_get_info.c.in diff --git a/.gitignore b/.gitignore index b1acecb1e82..9c4c6b2e537 100644 --- a/.gitignore +++ b/.gitignore @@ -537,7 +537,11 @@ docs/man ompi/mpi/c/*_generated*.c ompi/mpi/c/standard_*.c ompi/mpi/c/abi.h +ompi/mpi/c/abi_get_info.c +ompi/mpi/c/abi_converters.h +ompi/mpi/c/abi_converters.c ompi/mpi/c/standard_abi +ompi/mpi/tool/*_generated*.c # Generated Fortran Bindings ompi/mpi/fortran/use-mpi-f08/*_generated.F90 diff --git a/VERSION b/VERSION index 44eb7329d5d..58df142aa4f 100644 --- a/VERSION +++ b/VERSION @@ -20,8 +20,8 @@ minor=1 release=0 # MPI Standard Compliance Level -mpi_standard_version=3 -mpi_standard_subversion=1 +mpi_standard_version=5 +mpi_standard_subversion=0 # OMPI required dependency versions. # List in x.y.z format. @@ -92,6 +92,14 @@ date="Unreleased developer copy" # but they are "public" within the OMPI code base and select 3rd party # software packages. +# The current and age values of the libmpi_abi shared library are +# implicitly determined by the MPI ABI definition of the +# version of the MPI specification supported by this Open MPI release. +# The MPI ABI is intended not to break backward compatibility, +# so presumably the current and age values will move in lock step. +# We assume we have flexibility with the revision number as +# bugs are fixed, etc. + # Version numbers are described in the Libtool current:revision:age # format. @@ -100,6 +108,7 @@ libmpi_mpifh_so_version=0:0:0 libmpi_usempi_tkr_so_version=0:0:0 libmpi_usempi_ignore_tkr_so_version=0:0:0 libmpi_usempif08_so_version=0:0:0 +libmpi_abi_so_version=0:0:0 libopen_pal_so_version=0:0:0 libmpi_java_so_version=0:0:0 liboshmem_so_version=0:0:0 diff --git a/config/ompi_fortran_check_logical_array.m4 b/config/ompi_fortran_check_logical_array.m4 index 3d2a6de48d8..6186e161e90 100644 --- a/config/ompi_fortran_check_logical_array.m4 +++ b/config/ompi_fortran_check_logical_array.m4 @@ -11,6 +11,8 @@ dnl All rights reserved. dnl Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. dnl Copyright (c) 2015 Research Organization for Information Science dnl and Technology (RIST). All rights reserved. +dnl Copyright (c) 2025 Triad National Security, LLC. All rights +dnl reserved. dnl $COPYRIGHT$ dnl dnl Additional copyrights may follow @@ -64,7 +66,7 @@ void ompi_check_f(ompi_fortran_logical_t * logical) FILE *f=fopen("conftestval", "w"); if (!f) exit(1); - if (logical[[0]] == 0 && + if (logical[[0]] == $ompi_cv_fortran_false_value && logical[[1]] == $ompi_cv_fortran_true_value) result = 1; fprintf(f, "%d\n", result); diff --git a/config/ompi_fortran_get_value_true.m4 b/config/ompi_fortran_get_value_true.m4 index 8e68a86bf6b..0c4dbf0e688 100644 --- a/config/ompi_fortran_get_value_true.m4 +++ b/config/ompi_fortran_get_value_true.m4 @@ -11,6 +11,8 @@ dnl All rights reserved. dnl Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. dnl Copyright (c) 2015 Research Organization for Information Science dnl and Technology (RIST). All rights reserved. +dnl Copyright (c) 2025 Triad National Security, LLC. All rights +dnl reserved. dnl $COPYRIGHT$ dnl dnl Additional copyrights may follow @@ -27,16 +29,22 @@ AC_DEFUN([OMPI_FORTRAN_GET_VALUE_TRUE],[ if test "$ompi_cv_fortran_true_value" = "0" ; then unset ompi_cv_fortran_true_value fi + if test "$ompi_cv_fortran_false_value" = "0" ; then + unset ompi_cv_fortran_false_value + fi AS_VAR_PUSHDEF([fortran_true_var], [ompi_cv_fortran_true_value]) + AS_VAR_PUSHDEF([fortran_false_var], + [ompi_cv_fortran_false_value]) AC_CACHE_CHECK([Fortran value for .TRUE. logical type], fortran_true_var, [if test "$1" = "none" || \ test $OMPI_TRY_FORTRAN_BINDINGS -eq $OMPI_FORTRAN_NO_BINDINGS || \ test $ompi_fortran_happy -eq 0 ; then - value=77 + tvalue=77 + fvalue=77 else # # C module @@ -98,6 +106,14 @@ EOF CALL ompi_print(value) end EOF + cat > conftestf2.f < conftestf.f <delete_attr_fn).attr_##type##_delete_fn)) \ ((ompi_##type##_t *)object, \ key, attr_val, \ @@ -382,7 +381,6 @@ do { \ else { \ void *in, *out; \ in = translate_to_c(in_attr); \ - /* TODO: NEED SUPPORT FOR ABI */ \ if ((err = (*((keyval_obj->copy_attr_fn).attr_##type##_copy_fn)) \ ((ompi_##type##_t *)old_object, key, keyval_obj->extra_state.c_ptr, \ in, &out, &flag)) == MPI_SUCCESS) { \ diff --git a/ompi/attribute/attribute.h b/ompi/attribute/attribute.h index 7520297ebb4..6292f1b0c55 100644 --- a/ompi/attribute/attribute.h +++ b/ompi/attribute/attribute.h @@ -50,7 +50,6 @@ #define OMPI_KEYVAL_PREDEFINED 0x0001 #define OMPI_KEYVAL_F77 0x0002 #define OMPI_KEYVAL_F77_INT 0x0004 -#define OMPI_KEYVAL_ABI 0x0008 BEGIN_C_DECLS @@ -137,7 +136,7 @@ struct ompi_attribute_keyval_t { copy/delete attribute functions properly and error checking */ int attr_flag; /**< flag field: contains "OMPI_KEYVAL_PREDEFINED", - "OMPI_KEYVAL_F77", "OMPI_KEYVAL_ABI", etc. */ + "OMPI_KEYVAL_F77" */ ompi_attribute_fn_ptr_union_t copy_attr_fn; /**< Copy function for the attribute */ ompi_attribute_fn_ptr_union_t delete_attr_fn; /**< Delete function for the diff --git a/ompi/datatype/ompi_datatype_internal.h b/ompi/datatype/ompi_datatype_internal.h index 28ee9acfe4f..be82bad523e 100644 --- a/ompi/datatype/ompi_datatype_internal.h +++ b/ompi/datatype/ompi_datatype_internal.h @@ -393,6 +393,28 @@ # define OMPI_DATATYPE_MPI_REAL16 OMPI_DATATYPE_MPI_UNAVAILABLE #endif +/* COMPLEX */ +#if !OMPI_SIZEOF_FORTRAN_COMPLEX4 +#undef OMPI_DATATYPE_MPI_COMPLEX4 +#define OMPI_DATATYPE_MPI_COMPLEX4 OMPI_DATATYPE_MPI_UNAVAILABLE +#endif + +#if !OMPI_SIZEOF_FORTRAN_COMPLEX8 +#undef OMPI_DATATYPE_MPI_COMPLEX8 +#define OMPI_DATATYPE_MPI_COMPLEX8 OMPI_DATATYPE_MPI_UNAVAILABLE +#endif + +#if !OMPI_SIZEOF_FORTRAN_COMPLEX16 +#undef OMPI_DATATYPE_MPI_COMPLEX16 +#define OMPI_DATATYPE_MPI_COMPLEX16 OMPI_DATATYPE_MPI_UNAVAILABLE +#endif + +#if !OMPI_SIZEOF_FORTRAN_COMPLEX32 +#undef OMPI_DATATYPE_MPI_COMPLEX32 +#define OMPI_DATATYPE_MPI_COMPLEX32 OMPI_DATATYPE_MPI_UNAVAILABLE +#endif + + /* * C++ datatypes, these map to C datatypes. */ diff --git a/ompi/errhandler/errcode.c b/ompi/errhandler/errcode.c index 8c6a13cdb82..a69bd861a3b 100644 --- a/ompi/errhandler/errcode.c +++ b/ompi/errhandler/errcode.c @@ -129,6 +129,7 @@ static ompi_mpi_errcode_t ompi_err_revoked; static ompi_mpi_errcode_t ompi_err_session; static ompi_mpi_errcode_t ompi_err_value_too_large; static ompi_mpi_errcode_t ompi_err_errhandler; +static ompi_mpi_errcode_t ompi_err_abi; static void ompi_mpi_errcode_construct(ompi_mpi_errcode_t* errcode); static void ompi_mpi_errcode_destruct(ompi_mpi_errcode_t* errcode); @@ -248,6 +249,7 @@ int ompi_mpi_errcode_init (void) CONSTRUCT_ERRCODE( ompi_err_session, MPI_ERR_SESSION, "MPI_ERR_SESSION: Invalid session handle" ); CONSTRUCT_ERRCODE( ompi_err_value_too_large, MPI_ERR_VALUE_TOO_LARGE, "MPI_ERR_VALUE_TOO_LARGE: Value is too large to store" ); CONSTRUCT_ERRCODE( ompi_err_errhandler, MPI_ERR_ERRHANDLER, "MPI_ERR_ERRHANDLER: Invalid error handler handle" ); + CONSTRUCT_ERRCODE( ompi_err_abi, MPI_ERR_ABI, "MPI_ERR_ABI: Invalid call to abi fortran method" ); /* Per MPI-3 p353:27-32, MPI_LASTUSEDCODE must be >= MPI_ERR_LASTCODE. So just start it as == MPI_ERR_LASTCODE. */ @@ -367,6 +369,7 @@ int ompi_mpi_errcode_finalize (void) OBJ_DESTRUCT(&ompi_err_session); OBJ_DESTRUCT(&ompi_err_value_too_large); OBJ_DESTRUCT(&ompi_err_errhandler); + OBJ_DESTRUCT(&ompi_err_abi); OBJ_DESTRUCT(&ompi_mpi_errcodes); ompi_mpi_errcode_lastpredefined = 0; opal_mutex_unlock(&errcode_lock); diff --git a/ompi/errhandler/errhandler.c b/ompi/errhandler/errhandler.c index 17fd48dbe9b..818687b6ea0 100644 --- a/ompi/errhandler/errhandler.c +++ b/ompi/errhandler/errhandler.c @@ -255,7 +255,8 @@ void ompi_errhandler_free (ompi_errhandler_t *errhandler) ompi_errhandler_t *ompi_errhandler_create(ompi_errhandler_type_t object_type, ompi_errhandler_generic_handler_fn_t *func, - ompi_errhandler_lang_t lang) + ompi_errhandler_lang_t lang, + ompi_errhandler_converter_fn_t *converter) { ompi_errhandler_t *new_errhandler; int ret; @@ -298,6 +299,11 @@ ompi_errhandler_t *ompi_errhandler_create(ompi_errhandler_type_t object_type, default: break; } + if (NULL != converter) { + new_errhandler->eh_converter_fn = converter; + } else { + new_errhandler->eh_converter_fn = NULL; + } } if (NULL != new_errhandler) { @@ -626,9 +632,9 @@ static void ompi_errhandler_destruct(ompi_errhandler_t *errhandler) /* reset the ompi_errhandler_f_to_c_table entry - make sure that the entry is in the table */ - if (NULL!= opal_pointer_array_get_item(&ompi_errhandler_f_to_c_table, + if (NULL!= opal_pointer_array_get_item(&ompi_errhandler_f_to_c_table, errhandler->eh_f_to_c_index)) { - opal_pointer_array_set_item(&ompi_errhandler_f_to_c_table, - errhandler->eh_f_to_c_index, NULL); - } + opal_pointer_array_set_item(&ompi_errhandler_f_to_c_table, + errhandler->eh_f_to_c_index, NULL); + } } diff --git a/ompi/errhandler/errhandler.h b/ompi/errhandler/errhandler.h index 40909f3f140..430b6d6bd40 100644 --- a/ompi/errhandler/errhandler.h +++ b/ompi/errhandler/errhandler.h @@ -17,7 +17,7 @@ * reserved. * Copyright (c) 2016 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2018-2021 Triad National Security, LLC. All rights + * Copyright (c) 2018-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -68,6 +68,13 @@ typedef void (ompi_errhandler_fortran_handler_fn_t)(MPI_Fint *, */ typedef void (ompi_errhandler_generic_handler_fn_t)(void *, int *, ...); + +/** + * Typedef for converter function (internal MPI ABI support) + */ + +typedef void (ompi_errhandler_converter_fn_t)(void *object, int object_type, int *err_code); + /** * Enum to denote what language the error handler was created from */ @@ -108,12 +115,17 @@ struct ompi_errhandler_t { /* Function pointers. Note that we *have* to have all 4 types (vs., for example, a union) because the predefined errhandlers can be invoked on any MPI object type, so we need callbacks for - all of three. */ + all four. */ MPI_Comm_errhandler_function *eh_comm_fn; ompi_file_errhandler_function *eh_file_fn; MPI_Win_errhandler_function *eh_win_fn; MPI_Session_errhandler_function *eh_instance_fn; ompi_errhandler_fortran_handler_fn_t *eh_fort_fn; + /* + * use a single function for converting OMPI internal handles to ABI + * compliant ones. Only used for user defined errhandlers. + */ + ompi_errhandler_converter_fn_t *eh_converter_fn; /* index in Fortran <-> C translation array */ int eh_f_to_c_index; @@ -185,6 +197,7 @@ OMPI_DECLSPEC extern ompi_errhandler_t* ompi_initial_error_handler_eh; */ OMPI_DECLSPEC extern void (*ompi_initial_error_handler)(struct ompi_communicator_t **comm, int *error_code, ...); + /** * Forward declaration so that we don't have to include * request/request.h here. @@ -381,6 +394,7 @@ extern opal_atomic_int32_t ompi_instance_count; * @param[in] object_type Enum of the type of MPI object * @param[in] func Function pointer of the error handler * @param[in] language Calling language + * @param[in] converter Optional converter function (used internally for MPI ABI) * * @returns errhandler Pointer to the ompi_errorhandler_t that will be * created and returned @@ -400,7 +414,8 @@ extern opal_atomic_int32_t ompi_instance_count; */ OMPI_DECLSPEC ompi_errhandler_t *ompi_errhandler_create(ompi_errhandler_type_t object_type, ompi_errhandler_generic_handler_fn_t *func, - ompi_errhandler_lang_t language); + ompi_errhandler_lang_t language, + ompi_errhandler_converter_fn_t *converter); OMPI_DECLSPEC void ompi_errhandler_free (ompi_errhandler_t *errhandler); diff --git a/ompi/errhandler/errhandler_invoke.c b/ompi/errhandler/errhandler_invoke.c index d9d3ede4677..22d115816f3 100644 --- a/ompi/errhandler/errhandler_invoke.c +++ b/ompi/errhandler/errhandler_invoke.c @@ -84,6 +84,7 @@ int ompi_errhandler_invoke(ompi_errhandler_t *errhandler, void *mpi_object, comm = (ompi_communicator_t *) mpi_object; switch (errhandler->eh_lang) { case OMPI_ERRHANDLER_LANG_C: + if(NULL != errhandler->eh_converter_fn) errhandler->eh_converter_fn((void *)&comm, object_type, &err_code); errhandler->eh_comm_fn(&comm, &err_code, message, NULL); break; @@ -99,6 +100,7 @@ int ompi_errhandler_invoke(ompi_errhandler_t *errhandler, void *mpi_object, win = (ompi_win_t *) mpi_object; switch (errhandler->eh_lang) { case OMPI_ERRHANDLER_LANG_C: + if(NULL != errhandler->eh_converter_fn) errhandler->eh_converter_fn((void *)&win, object_type, &err_code); errhandler->eh_win_fn(&win, &err_code, message, NULL); break; @@ -114,6 +116,7 @@ int ompi_errhandler_invoke(ompi_errhandler_t *errhandler, void *mpi_object, file = (ompi_file_t *) mpi_object; switch (errhandler->eh_lang) { case OMPI_ERRHANDLER_LANG_C: + if(NULL != errhandler->eh_converter_fn) errhandler->eh_converter_fn((void *)&file, object_type, &err_code); errhandler->eh_file_fn(&file, &err_code, message, NULL); break; @@ -129,6 +132,7 @@ int ompi_errhandler_invoke(ompi_errhandler_t *errhandler, void *mpi_object, instance = (ompi_instance_t *) mpi_object; switch (errhandler->eh_lang) { case OMPI_ERRHANDLER_LANG_C: + if(NULL != errhandler->eh_converter_fn) errhandler->eh_converter_fn((void *)&instance, object_type, &err_code); errhandler->eh_instance_fn(&instance, &err_code, message, NULL); break; diff --git a/ompi/include/mpi.h.in b/ompi/include/mpi.h.in index 24ca5ac7c61..78661ea3218 100644 --- a/ompi/include/mpi.h.in +++ b/ompi/include/mpi.h.in @@ -764,6 +764,7 @@ enum { #define MPI_ERR_SESSION 78 #define MPI_ERR_VALUE_TOO_LARGE 79 #define MPI_ERR_ERRHANDLER 80 +#define MPI_ERR_ABI 81 /* Per MPI-3 p349 47, MPI_ERR_LASTCODE must be >= the last predefined MPI_ERR_ code. Set the last code to allow some room for adding @@ -1452,9 +1453,12 @@ OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_ub; /* * MPI API */ -OMPI_DECLSPEC int MPI_Abi_supported(int *flag); -OMPI_DECLSPEC int MPI_Abi_version(int *abi_major, int *abi_minor); -OMPI_DECLSPEC int MPI_Abi_details(int *buflen, char *details, MPI_Info *info); +OMPI_DECLSPEC int MPI_Abi_get_version(int *abi_major, int *abi_minor); +OMPI_DECLSPEC int MPI_Abi_get_info(MPI_Info *info); +OMPI_DECLSPEC int MPI_Abi_get_fortran_info(MPI_Info *info); +OMPI_DECLSPEC int MPI_Abi_set_fortran_info(MPI_Info info); +OMPI_DECLSPEC int MPI_Abi_get_fortran_booleans(int logical_size, void *logical_true, void *logical_false, int *is_set); +OMPI_DECLSPEC int MPI_Abi_set_fortran_booleans(int logical_size, void *logical_true, void *logical_false); OMPI_DECLSPEC int MPI_Abort(MPI_Comm comm, int errorcode); OMPI_DECLSPEC int MPI_Accumulate(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, @@ -1638,6 +1642,7 @@ OMPI_DECLSPEC int MPI_Comm_idup_with_info(MPI_Comm comm, MPI_Info info, MPI_Com OMPI_DECLSPEC MPI_Comm MPI_Comm_f2c(MPI_Fint comm); OMPI_DECLSPEC int MPI_Comm_free_keyval(int *comm_keyval); OMPI_DECLSPEC int MPI_Comm_free(MPI_Comm *comm); +OMPI_DECLSPEC MPI_Comm MPI_Comm_fromint(int comm); OMPI_DECLSPEC int MPI_Comm_get_attr(MPI_Comm comm, int comm_keyval, void *attribute_val, int *flag); OMPI_DECLSPEC int MPI_Dist_graph_create(MPI_Comm comm_old, int n, const int nodes[], @@ -1691,6 +1696,7 @@ OMPI_DECLSPEC int MPI_Comm_spawn_multiple(int count, char *array_of_commands[], OMPI_DECLSPEC int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm); OMPI_DECLSPEC int MPI_Comm_split_type(MPI_Comm comm, int split_type, int key, MPI_Info info, MPI_Comm *newcomm); OMPI_DECLSPEC int MPI_Comm_test_inter(MPI_Comm comm, int *flag); +OMPI_DECLSPEC int MPI_Comm_toint(MPI_Comm comm); OMPI_DECLSPEC int MPI_Compare_and_swap(const void *origin_addr, const void *compare_addr, void *result_addr, MPI_Datatype datatype, int target_rank, MPI_Aint target_disp, MPI_Win win); @@ -1698,6 +1704,8 @@ OMPI_DECLSPEC int MPI_Dims_create(int nnodes, int ndims, int dims[]); OMPI_DECLSPEC MPI_Fint MPI_Errhandler_c2f(MPI_Errhandler errhandler); OMPI_DECLSPEC MPI_Errhandler MPI_Errhandler_f2c(MPI_Fint errhandler); OMPI_DECLSPEC int MPI_Errhandler_free(MPI_Errhandler *errhandler); +OMPI_DECLSPEC MPI_Errhandler MPI_Errhandler_fromint(int errhandler); +OMPI_DECLSPEC int MPI_Errhandler_toint(MPI_Errhandler errhandler); OMPI_DECLSPEC int MPI_Error_class(int errorcode, int *errorclass); OMPI_DECLSPEC int MPI_Error_string(int errorcode, char *string, int *resultlen); OMPI_DECLSPEC int MPI_Exscan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, @@ -1719,6 +1727,7 @@ OMPI_DECLSPEC MPI_File MPI_File_f2c(MPI_Fint file); OMPI_DECLSPEC int MPI_File_call_errhandler(MPI_File fh, int errorcode); OMPI_DECLSPEC int MPI_File_create_errhandler(MPI_File_errhandler_function *function, MPI_Errhandler *errhandler); +OMPI_DECLSPEC MPI_File MPI_File_fromint(int file); OMPI_DECLSPEC int MPI_File_set_errhandler( MPI_File file, MPI_Errhandler errhandler); OMPI_DECLSPEC int MPI_File_get_errhandler( MPI_File file, MPI_Errhandler *errhandler); OMPI_DECLSPEC int MPI_File_open(MPI_Comm comm, const char *filename, int amode, @@ -1777,6 +1786,7 @@ OMPI_DECLSPEC int MPI_File_read_all(MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status); OMPI_DECLSPEC int MPI_File_read_all_c(MPI_File fh, void *buf, MPI_Count count, MPI_Datatype datatype, MPI_Status *status); +OMPI_DECLSPEC int MPI_File_toint(MPI_File file); OMPI_DECLSPEC int MPI_File_write(MPI_File fh, const void *buf, int count, MPI_Datatype datatype, MPI_Status *status); OMPI_DECLSPEC int MPI_File_write_c(MPI_File fh, const void *buf, MPI_Count count, @@ -1956,6 +1966,7 @@ OMPI_DECLSPEC int MPI_Group_excl(MPI_Group group, int n, const int ranks[], OMPI_DECLSPEC MPI_Group MPI_Group_f2c(MPI_Fint group); OMPI_DECLSPEC int MPI_Group_free(MPI_Group *group); OMPI_DECLSPEC int MPI_Group_from_session_pset (MPI_Session session, const char *pset_name, MPI_Group *newgroup); +OMPI_DECLSPEC MPI_Group MPI_Group_fromint(int group); OMPI_DECLSPEC int MPI_Group_incl(MPI_Group group, int n, const int ranks[], MPI_Group *newgroup); OMPI_DECLSPEC int MPI_Group_intersection(MPI_Group group1, MPI_Group group2, @@ -1966,6 +1977,7 @@ OMPI_DECLSPEC int MPI_Group_range_incl(MPI_Group group, int n, int ranges[][3], MPI_Group *newgroup); OMPI_DECLSPEC int MPI_Group_rank(MPI_Group group, int *rank); OMPI_DECLSPEC int MPI_Group_size(MPI_Group group, int *size); +OMPI_DECLSPEC int MPI_Group_toint(MPI_Group group); OMPI_DECLSPEC int MPI_Group_translate_ranks(MPI_Group group1, int n, const int ranks1[], MPI_Group group2, int ranks2[]); OMPI_DECLSPEC int MPI_Group_union(MPI_Group group1, MPI_Group group2, @@ -1988,11 +2000,13 @@ OMPI_DECLSPEC int MPI_Info_delete(MPI_Info info, const char *key); OMPI_DECLSPEC int MPI_Info_dup(MPI_Info info, MPI_Info *newinfo); OMPI_DECLSPEC MPI_Info MPI_Info_f2c(MPI_Fint info); OMPI_DECLSPEC int MPI_Info_free(MPI_Info *info); +OMPI_DECLSPEC MPI_Info MPI_Info_fromint(int info); OMPI_DECLSPEC int MPI_Info_get_nkeys(MPI_Info info, int *nkeys); OMPI_DECLSPEC int MPI_Info_get_nthkey(MPI_Info info, int n, char *key); OMPI_DECLSPEC int MPI_Info_get_string(MPI_Info info, const char *key, int *buflen, char *value, int *flag); OMPI_DECLSPEC int MPI_Info_set(MPI_Info info, const char *key, const char *value); +OMPI_DECLSPEC int MPI_Info_toint(MPI_Info info); OMPI_DECLSPEC int MPI_Init(int *argc, char ***argv); OMPI_DECLSPEC int MPI_Initialized(int *flag); OMPI_DECLSPEC int MPI_Init_thread(int *argc, char ***argv, int required, @@ -2041,6 +2055,8 @@ OMPI_DECLSPEC int MPI_Is_thread_main(int *flag); OMPI_DECLSPEC int MPI_Lookup_name(const char *service_name, MPI_Info info, char *port_name); OMPI_DECLSPEC MPI_Fint MPI_Message_c2f(MPI_Message message); OMPI_DECLSPEC MPI_Message MPI_Message_f2c(MPI_Fint message); +OMPI_DECLSPEC MPI_Message MPI_Message_fromint(int message); +OMPI_DECLSPEC int MPI_Message_toint(MPI_Message message); OMPI_DECLSPEC int MPI_Mprobe(int source, int tag, MPI_Comm comm, MPI_Message *message, MPI_Status *status); @@ -2145,6 +2161,8 @@ OMPI_DECLSPEC int MPI_Op_create_c(MPI_User_function_c *function, int commute, M OMPI_DECLSPEC int MPI_Open_port(MPI_Info info, char *port_name); OMPI_DECLSPEC MPI_Op MPI_Op_f2c(MPI_Fint op); OMPI_DECLSPEC int MPI_Op_free(MPI_Op *op); +OMPI_DECLSPEC MPI_Op MPI_Op_fromint(int op); +OMPI_DECLSPEC int MPI_Op_toint(MPI_Op op); OMPI_DECLSPEC int MPI_Pack_external(const char datarep[], const void *inbuf, int incount, MPI_Datatype datatype, void *outbuf, MPI_Aint outsize, MPI_Aint *position); @@ -2255,6 +2273,7 @@ OMPI_DECLSPEC int MPI_Remove_error_string(int errorcode); OMPI_DECLSPEC MPI_Fint MPI_Request_c2f(MPI_Request request); OMPI_DECLSPEC MPI_Request MPI_Request_f2c(MPI_Fint request); OMPI_DECLSPEC int MPI_Request_free(MPI_Request *request); +OMPI_DECLSPEC MPI_Request MPI_Request_fromint(int request); OMPI_DECLSPEC int MPI_Request_get_status(MPI_Request request, int *flag, MPI_Status *status); OMPI_DECLSPEC int MPI_Request_get_status_all(int count, const MPI_Request array_of_requests[], int *flag, @@ -2263,6 +2282,7 @@ OMPI_DECLSPEC int MPI_Request_get_status_any(int count, const MPI_Request array_ int *flag, MPI_Status *status); OMPI_DECLSPEC int MPI_Request_get_status_some(int incount, const MPI_Request array_of_requests[], int *outcount, int array_of_indices[], MPI_Status array_of_statuses[]); +OMPI_DECLSPEC int MPI_Request_toint(MPI_Request request); OMPI_DECLSPEC int MPI_Rget(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win, MPI_Request *request); @@ -2377,6 +2397,7 @@ OMPI_DECLSPEC int MPI_Session_detach_buffer(MPI_Session session, void *buffer_a OMPI_DECLSPEC int MPI_Session_detach_buffer_c(MPI_Session session, void *buffer_addr, MPI_Count *size); OMPI_DECLSPEC int MPI_Session_finalize (MPI_Session *session); OMPI_DECLSPEC int MPI_Session_flush_buffer(MPI_Session session); +OMPI_DECLSPEC MPI_Session MPI_Session_fromint(int session); OMPI_DECLSPEC int MPI_Session_get_errhandler(MPI_Session session, MPI_Errhandler *erhandler); OMPI_DECLSPEC int MPI_Session_get_info (MPI_Session session, MPI_Info *info_used); OMPI_DECLSPEC int MPI_Session_get_num_psets (MPI_Session session, MPI_Info info, int *npset_names); @@ -2387,6 +2408,7 @@ OMPI_DECLSPEC int MPI_Session_init (MPI_Info info, MPI_Errhandler errhandler, MPI_Session *session); OMPI_DECLSPEC MPI_Session MPI_Session_f2c (MPI_Fint session); OMPI_DECLSPEC int MPI_Session_set_errhandler(MPI_Session session, MPI_Errhandler errhandler); +OMPI_DECLSPEC int MPI_Session_toint(MPI_Session session); OMPI_DECLSPEC int MPI_Ssend_init(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request); @@ -2500,6 +2522,7 @@ OMPI_DECLSPEC int MPI_Type_delete_attr(MPI_Datatype type, int type_keyval); OMPI_DECLSPEC int MPI_Type_dup(MPI_Datatype type, MPI_Datatype *newtype); OMPI_DECLSPEC int MPI_Type_free(MPI_Datatype *type); OMPI_DECLSPEC int MPI_Type_free_keyval(int *type_keyval); +OMPI_DECLSPEC MPI_Datatype MPI_Type_fromint(int datatype); OMPI_DECLSPEC MPI_Datatype MPI_Type_f2c(MPI_Fint datatype); OMPI_DECLSPEC int MPI_Type_get_attr(MPI_Datatype type, int type_keyval, void *attribute_val, int *flag); @@ -2545,6 +2568,7 @@ OMPI_DECLSPEC int MPI_Type_set_attr(MPI_Datatype type, int type_keyval, OMPI_DECLSPEC int MPI_Type_set_name(MPI_Datatype type, const char *type_name); OMPI_DECLSPEC int MPI_Type_size(MPI_Datatype type, int *size); OMPI_DECLSPEC int MPI_Type_size_c(MPI_Datatype type, MPI_Count *size); +OMPI_DECLSPEC int MPI_Type_toint(MPI_Datatype type); OMPI_DECLSPEC int MPI_Type_vector(int count, int blocklength, int stride, MPI_Datatype oldtype, MPI_Datatype *newtype); OMPI_DECLSPEC int MPI_Type_vector_c(MPI_Count count, MPI_Count blocklength, MPI_Count stride, @@ -2602,6 +2626,7 @@ OMPI_DECLSPEC int MPI_Win_flush_local(int rank, MPI_Win win); OMPI_DECLSPEC int MPI_Win_flush_local_all(MPI_Win win); OMPI_DECLSPEC int MPI_Win_free(MPI_Win *win); OMPI_DECLSPEC int MPI_Win_free_keyval(int *win_keyval); +OMPI_DECLSPEC MPI_Win MPI_Win_fromint(int win); OMPI_DECLSPEC int MPI_Win_get_attr(MPI_Win win, int win_keyval, void *attribute_val, int *flag); OMPI_DECLSPEC int MPI_Win_get_errhandler(MPI_Win win, MPI_Errhandler *errhandler); @@ -2620,6 +2645,7 @@ OMPI_DECLSPEC int MPI_Win_shared_query_c(MPI_Win win, int rank, MPI_Aint *size, OMPI_DECLSPEC int MPI_Win_start(MPI_Group group, int mpi_assert, MPI_Win win); OMPI_DECLSPEC int MPI_Win_sync(MPI_Win win); OMPI_DECLSPEC int MPI_Win_test(MPI_Win win, int *flag); +OMPI_DECLSPEC int MPI_Win_toint(MPI_Win win); OMPI_DECLSPEC int MPI_Win_unlock(int rank, MPI_Win win); OMPI_DECLSPEC int MPI_Win_unlock_all(MPI_Win win); OMPI_DECLSPEC int MPI_Win_wait(MPI_Win win); @@ -2629,6 +2655,12 @@ OMPI_DECLSPEC double MPI_Wtime(void); /* * Profiling MPI API */ +OMPI_DECLSPEC int PMPI_Abi_get_version(int *abi_major, int *abi_minor); +OMPI_DECLSPEC int PMPI_Abi_get_info(MPI_Info *info); +OMPI_DECLSPEC int PMPI_Abi_get_fortran_info(MPI_Info *info); +OMPI_DECLSPEC int PMPI_Abi_set_fortran_info(MPI_Info info); +OMPI_DECLSPEC int PMPI_Abi_get_fortran_booleans(int logical_size, void *logical_true, void *logical_false, int *is_set); +OMPI_DECLSPEC int PMPI_Abi_set_fortran_booleans(int logical_size, void *logical_true, void *logical_false); OMPI_DECLSPEC int PMPI_Abort(MPI_Comm comm, int errorcode); OMPI_DECLSPEC int PMPI_Accumulate(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, @@ -2812,6 +2844,7 @@ OMPI_DECLSPEC int PMPI_Comm_idup_with_info(MPI_Comm comm, MPI_Info info, MPI_Co OMPI_DECLSPEC MPI_Comm PMPI_Comm_f2c(MPI_Fint comm); OMPI_DECLSPEC int PMPI_Comm_free_keyval(int *comm_keyval); OMPI_DECLSPEC int PMPI_Comm_free(MPI_Comm *comm); +OMPI_DECLSPEC MPI_Comm PMPI_Comm_fromint(int comm); OMPI_DECLSPEC int PMPI_Comm_get_attr(MPI_Comm comm, int comm_keyval, void *attribute_val, int *flag); OMPI_DECLSPEC int PMPI_Dist_graph_create(MPI_Comm comm_old, int n, const int nodes[], @@ -2865,6 +2898,7 @@ OMPI_DECLSPEC int PMPI_Comm_spawn_multiple(int count, char *array_of_commands[] OMPI_DECLSPEC int PMPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm); OMPI_DECLSPEC int PMPI_Comm_split_type(MPI_Comm comm, int split_type, int key, MPI_Info info, MPI_Comm *newcomm); OMPI_DECLSPEC int PMPI_Comm_test_inter(MPI_Comm comm, int *flag); +OMPI_DECLSPEC int PMPI_Comm_toint(MPI_Comm comm); OMPI_DECLSPEC int PMPI_Compare_and_swap(const void *origin_addr, const void *compare_addr, void *result_addr, MPI_Datatype datatype, int target_rank, MPI_Aint target_disp, MPI_Win win); @@ -2872,6 +2906,8 @@ OMPI_DECLSPEC int PMPI_Dims_create(int nnodes, int ndims, int dims[]); OMPI_DECLSPEC MPI_Fint PMPI_Errhandler_c2f(MPI_Errhandler errhandler); OMPI_DECLSPEC MPI_Errhandler PMPI_Errhandler_f2c(MPI_Fint errhandler); OMPI_DECLSPEC int PMPI_Errhandler_free(MPI_Errhandler *errhandler); +OMPI_DECLSPEC MPI_Errhandler PMPI_Errhandler_fromint(int errhandler); +OMPI_DECLSPEC int PMPI_Errhandler_toint(MPI_Errhandler errhandler); OMPI_DECLSPEC int PMPI_Error_class(int errorcode, int *errorclass); OMPI_DECLSPEC int PMPI_Error_string(int errorcode, char *string, int *resultlen); OMPI_DECLSPEC int PMPI_Exscan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, @@ -2893,6 +2929,7 @@ OMPI_DECLSPEC MPI_File PMPI_File_f2c(MPI_Fint file); OMPI_DECLSPEC int PMPI_File_call_errhandler(MPI_File fh, int errorcode); OMPI_DECLSPEC int PMPI_File_create_errhandler(MPI_File_errhandler_function *function, MPI_Errhandler *errhandler); +OMPI_DECLSPEC MPI_File PMPI_File_fromint(int file); OMPI_DECLSPEC int PMPI_File_set_errhandler( MPI_File file, MPI_Errhandler errhandler); OMPI_DECLSPEC int PMPI_File_get_errhandler( MPI_File file, MPI_Errhandler *errhandler); OMPI_DECLSPEC int PMPI_File_open(MPI_Comm comm, const char *filename, int amode, @@ -2951,6 +2988,7 @@ OMPI_DECLSPEC int PMPI_File_read_all(MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status); OMPI_DECLSPEC int PMPI_File_read_all_c(MPI_File fh, void *buf, MPI_Count count, MPI_Datatype datatype, MPI_Status *status); +OMPI_DECLSPEC int PMPI_File_toint(MPI_File file); OMPI_DECLSPEC int PMPI_File_write(MPI_File fh, const void *buf, int count, MPI_Datatype datatype, MPI_Status *status); OMPI_DECLSPEC int PMPI_File_write_c(MPI_File fh, const void *buf, MPI_Count count, @@ -3130,6 +3168,7 @@ OMPI_DECLSPEC int PMPI_Group_excl(MPI_Group group, int n, const int ranks[], OMPI_DECLSPEC MPI_Group PMPI_Group_f2c(MPI_Fint group); OMPI_DECLSPEC int PMPI_Group_free(MPI_Group *group); OMPI_DECLSPEC int PMPI_Group_from_session_pset (MPI_Session session, const char *pset_name, MPI_Group *newgroup); +OMPI_DECLSPEC MPI_Group PMPI_Group_fromint(int group); OMPI_DECLSPEC int PMPI_Group_incl(MPI_Group group, int n, const int ranks[], MPI_Group *newgroup); OMPI_DECLSPEC int PMPI_Group_intersection(MPI_Group group1, MPI_Group group2, @@ -3140,6 +3179,7 @@ OMPI_DECLSPEC int PMPI_Group_range_incl(MPI_Group group, int n, int ranges[][3] MPI_Group *newgroup); OMPI_DECLSPEC int PMPI_Group_rank(MPI_Group group, int *rank); OMPI_DECLSPEC int PMPI_Group_size(MPI_Group group, int *size); +OMPI_DECLSPEC int PMPI_Group_toint(MPI_Group group); OMPI_DECLSPEC int PMPI_Group_translate_ranks(MPI_Group group1, int n, const int ranks1[], MPI_Group group2, int ranks2[]); OMPI_DECLSPEC int PMPI_Group_union(MPI_Group group1, MPI_Group group2, @@ -3162,11 +3202,13 @@ OMPI_DECLSPEC int PMPI_Info_delete(MPI_Info info, const char *key); OMPI_DECLSPEC int PMPI_Info_dup(MPI_Info info, MPI_Info *newinfo); OMPI_DECLSPEC MPI_Info PMPI_Info_f2c(MPI_Fint info); OMPI_DECLSPEC int PMPI_Info_free(MPI_Info *info); +OMPI_DECLSPEC MPI_Info PMPI_Info_fromint(int info); OMPI_DECLSPEC int PMPI_Info_get_nkeys(MPI_Info info, int *nkeys); OMPI_DECLSPEC int PMPI_Info_get_nthkey(MPI_Info info, int n, char *key); OMPI_DECLSPEC int PMPI_Info_get_string(MPI_Info info, const char *key, int *buflen, char *value, int *flag); OMPI_DECLSPEC int PMPI_Info_set(MPI_Info info, const char *key, const char *value); +OMPI_DECLSPEC int PMPI_Info_toint(MPI_Info info); OMPI_DECLSPEC int PMPI_Init(int *argc, char ***argv); OMPI_DECLSPEC int PMPI_Initialized(int *flag); OMPI_DECLSPEC int PMPI_Init_thread(int *argc, char ***argv, int required, @@ -3215,6 +3257,8 @@ OMPI_DECLSPEC int PMPI_Is_thread_main(int *flag); OMPI_DECLSPEC int PMPI_Lookup_name(const char *service_name, MPI_Info info, char *port_name); OMPI_DECLSPEC MPI_Fint PMPI_Message_c2f(MPI_Message message); OMPI_DECLSPEC MPI_Message PMPI_Message_f2c(MPI_Fint message); +OMPI_DECLSPEC MPI_Message PMPI_Message_fromint(int message); +OMPI_DECLSPEC int PMPI_Message_toint(MPI_Message message); OMPI_DECLSPEC int PMPI_Mprobe(int source, int tag, MPI_Comm comm, MPI_Message *message, MPI_Status *status); @@ -3319,6 +3363,8 @@ OMPI_DECLSPEC int PMPI_Op_create_c(MPI_User_function_c *function, int commute, OMPI_DECLSPEC int PMPI_Open_port(MPI_Info info, char *port_name); OMPI_DECLSPEC MPI_Op PMPI_Op_f2c(MPI_Fint op); OMPI_DECLSPEC int PMPI_Op_free(MPI_Op *op); +OMPI_DECLSPEC MPI_Op PMPI_Op_fromint(int op); +OMPI_DECLSPEC int PMPI_Op_toint(MPI_Op op); OMPI_DECLSPEC int PMPI_Pack_external(const char datarep[], const void *inbuf, int incount, MPI_Datatype datatype, void *outbuf, MPI_Aint outsize, MPI_Aint *position); @@ -3429,6 +3475,7 @@ OMPI_DECLSPEC int PMPI_Remove_error_string(int errorcode); OMPI_DECLSPEC MPI_Fint PMPI_Request_c2f(MPI_Request request); OMPI_DECLSPEC MPI_Request PMPI_Request_f2c(MPI_Fint request); OMPI_DECLSPEC int PMPI_Request_free(MPI_Request *request); +OMPI_DECLSPEC MPI_Request PMPI_Request_fromint(int request); OMPI_DECLSPEC int PMPI_Request_get_status(MPI_Request request, int *flag, MPI_Status *status); OMPI_DECLSPEC int PMPI_Request_get_status_all(int count, const MPI_Request array_of_requests[], int *flag, @@ -3437,6 +3484,7 @@ OMPI_DECLSPEC int PMPI_Request_get_status_any(int count, const MPI_Request array int *flag, MPI_Status *status); OMPI_DECLSPEC int PMPI_Request_get_status_some(int incount, const MPI_Request array_of_requests[], int *outcount, int array_of_indices[], MPI_Status array_of_statuses[]); +OMPI_DECLSPEC int PMPI_Request_toint(MPI_Request request); OMPI_DECLSPEC int PMPI_Rget(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win, MPI_Request *request); @@ -3551,6 +3599,7 @@ OMPI_DECLSPEC int PMPI_Session_detach_buffer(MPI_Session session, void *buffer_ OMPI_DECLSPEC int PMPI_Session_detach_buffer_c(MPI_Session session, void *buffer_addr, MPI_Count *size); OMPI_DECLSPEC int PMPI_Session_finalize (MPI_Session *session); OMPI_DECLSPEC int PMPI_Session_flush_buffer(MPI_Session session); +OMPI_DECLSPEC MPI_Session PMPI_Session_fromint(int session); OMPI_DECLSPEC int PMPI_Session_get_errhandler(MPI_Session session, MPI_Errhandler *erhandler); OMPI_DECLSPEC int PMPI_Session_get_info (MPI_Session session, MPI_Info *info_used); OMPI_DECLSPEC int PMPI_Session_get_num_psets (MPI_Session session, MPI_Info info, int *npset_names); @@ -3561,6 +3610,7 @@ OMPI_DECLSPEC int PMPI_Session_init (MPI_Info info, MPI_Errhandler errhandler, MPI_Session *session); OMPI_DECLSPEC MPI_Session PMPI_Session_f2c (MPI_Fint session); OMPI_DECLSPEC int PMPI_Session_set_errhandler(MPI_Session session, MPI_Errhandler errhandler); +OMPI_DECLSPEC int PMPI_Session_toint(MPI_Session session); OMPI_DECLSPEC int PMPI_Ssend_init(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request); @@ -3674,6 +3724,7 @@ OMPI_DECLSPEC int PMPI_Type_delete_attr(MPI_Datatype type, int type_keyval); OMPI_DECLSPEC int PMPI_Type_dup(MPI_Datatype type, MPI_Datatype *newtype); OMPI_DECLSPEC int PMPI_Type_free(MPI_Datatype *type); OMPI_DECLSPEC int PMPI_Type_free_keyval(int *type_keyval); +OMPI_DECLSPEC MPI_Datatype PMPI_Type_fromint(int datatype); OMPI_DECLSPEC MPI_Datatype PMPI_Type_f2c(MPI_Fint datatype); OMPI_DECLSPEC int PMPI_Type_get_attr(MPI_Datatype type, int type_keyval, void *attribute_val, int *flag); @@ -3719,6 +3770,7 @@ OMPI_DECLSPEC int PMPI_Type_set_attr(MPI_Datatype type, int type_keyval, OMPI_DECLSPEC int PMPI_Type_set_name(MPI_Datatype type, const char *type_name); OMPI_DECLSPEC int PMPI_Type_size(MPI_Datatype type, int *size); OMPI_DECLSPEC int PMPI_Type_size_c(MPI_Datatype type, MPI_Count *size); +OMPI_DECLSPEC int PMPI_Type_toint(MPI_Datatype type); OMPI_DECLSPEC int PMPI_Type_vector(int count, int blocklength, int stride, MPI_Datatype oldtype, MPI_Datatype *newtype); OMPI_DECLSPEC int PMPI_Type_vector_c(MPI_Count count, MPI_Count blocklength, MPI_Count stride, @@ -3776,6 +3828,7 @@ OMPI_DECLSPEC int PMPI_Win_flush_local(int rank, MPI_Win win); OMPI_DECLSPEC int PMPI_Win_flush_local_all(MPI_Win win); OMPI_DECLSPEC int PMPI_Win_free(MPI_Win *win); OMPI_DECLSPEC int PMPI_Win_free_keyval(int *win_keyval); +OMPI_DECLSPEC MPI_Win PMPI_Win_fromint(int win); OMPI_DECLSPEC int PMPI_Win_get_attr(MPI_Win win, int win_keyval, void *attribute_val, int *flag); OMPI_DECLSPEC int PMPI_Win_get_errhandler(MPI_Win win, MPI_Errhandler *errhandler); @@ -3794,6 +3847,7 @@ OMPI_DECLSPEC int PMPI_Win_shared_query_c(MPI_Win win, int rank, MPI_Aint *size OMPI_DECLSPEC int PMPI_Win_start(MPI_Group group, int mpi_assert, MPI_Win win); OMPI_DECLSPEC int PMPI_Win_sync(MPI_Win win); OMPI_DECLSPEC int PMPI_Win_test(MPI_Win win, int *flag); +OMPI_DECLSPEC int PMPI_Win_toint(MPI_Win win); OMPI_DECLSPEC int PMPI_Win_unlock(int rank, MPI_Win win); OMPI_DECLSPEC int PMPI_Win_unlock_all(MPI_Win win); OMPI_DECLSPEC int PMPI_Win_wait(MPI_Win win); diff --git a/ompi/include/mpif-values.py b/ompi/include/mpif-values.py index 53159d5d8dd..511b9b42114 100755 --- a/ompi/include/mpif-values.py +++ b/ompi/include/mpif-values.py @@ -301,6 +301,7 @@ 'MPI_ERR_SESSION': 78, 'MPI_ERR_VALUE_TOO_LARGE': 79, 'MPI_ERR_ERRHANDLER': 80, + 'MPI_ERR_ABI': 81, 'MPI_ERR_LASTCODE': 92, 'MPI_IDENT': 0, 'MPI_CONGRUENT': 1, diff --git a/ompi/info/Makefile.am b/ompi/info/Makefile.am index 171d7877185..3cdfdcb2f92 100644 --- a/ompi/info/Makefile.am +++ b/ompi/info/Makefile.am @@ -24,6 +24,6 @@ headers += \ info/info.h \ info/info_memkind.h -lib@OMPI_LIBMPI_NAME@_la_SOURCES += \ +libopen_mpi_la_SOURCES += \ info/info.c \ info/info_memkind.c diff --git a/ompi/mca/bml/r2/Makefile.am b/ompi/mca/bml/r2/Makefile.am index ea4e7eccc0e..3e99b8f593a 100644 --- a/ompi/mca/bml/r2/Makefile.am +++ b/ompi/mca/bml/r2/Makefile.am @@ -37,7 +37,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_bml_r2_la_SOURCES = $(r2_sources) mca_bml_r2_la_LDFLAGS = -module -avoid-version -mca_bml_r2_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_bml_r2_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_bml_r2_la_SOURCES = $(r2_sources) diff --git a/ompi/mca/coll/accelerator/Makefile.am b/ompi/mca/coll/accelerator/Makefile.am index 635d4cb9886..baf66d569e7 100644 --- a/ompi/mca/coll/accelerator/Makefile.am +++ b/ompi/mca/coll/accelerator/Makefile.am @@ -33,7 +33,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_accelerator_la_SOURCES = $(sources) mca_coll_accelerator_la_LDFLAGS = -module -avoid-version -mca_coll_accelerator_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_coll_accelerator_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_accelerator_la_SOURCES =$(sources) diff --git a/ompi/mca/coll/acoll/Makefile.am b/ompi/mca/coll/acoll/Makefile.am index 705ed5bf479..8af811e91fa 100644 --- a/ompi/mca/coll/acoll/Makefile.am +++ b/ompi/mca/coll/acoll/Makefile.am @@ -38,7 +38,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_acoll_la_SOURCES = $(sources) mca_coll_acoll_la_LDFLAGS = -module -avoid-version $(coll_acoll_LDFLAGS) -mca_coll_acoll_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la $(coll_acoll_LIBS) +mca_coll_acoll_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la $(coll_acoll_LIBS) noinst_LTLIBRARIES = $(component_noinst) libmca_coll_acoll_la_SOURCES =$(sources) diff --git a/ompi/mca/coll/basic/Makefile.am b/ompi/mca/coll/basic/Makefile.am index ad89fe227fb..bfdb72648d0 100644 --- a/ompi/mca/coll/basic/Makefile.am +++ b/ompi/mca/coll/basic/Makefile.am @@ -63,7 +63,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_basic_la_SOURCES = $(sources) mca_coll_basic_la_LDFLAGS = -module -avoid-version -mca_coll_basic_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_coll_basic_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_basic_la_SOURCES =$(sources) diff --git a/ompi/mca/coll/demo/Makefile.am b/ompi/mca/coll/demo/Makefile.am index 2ae6731cefa..7faab4a2e1c 100644 --- a/ompi/mca/coll/demo/Makefile.am +++ b/ompi/mca/coll/demo/Makefile.am @@ -57,7 +57,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_demo_la_SOURCES = $(sources) mca_coll_demo_la_LDFLAGS = -module -avoid-version -mca_coll_demo_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_coll_demo_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_demo_la_SOURCES = $(sources) diff --git a/ompi/mca/coll/inter/Makefile.am b/ompi/mca/coll/inter/Makefile.am index c82b9f513b9..7eb258ad724 100644 --- a/ompi/mca/coll/inter/Makefile.am +++ b/ompi/mca/coll/inter/Makefile.am @@ -34,7 +34,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_inter_la_SOURCES = $(sources) mca_coll_inter_la_LDFLAGS = -module -avoid-version -mca_coll_inter_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_coll_inter_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_inter_la_SOURCES = $(sources) diff --git a/ompi/mca/coll/libnbc/Makefile.am b/ompi/mca/coll/libnbc/Makefile.am index 09b30b4e172..2877636cd87 100644 --- a/ompi/mca/coll/libnbc/Makefile.am +++ b/ompi/mca/coll/libnbc/Makefile.am @@ -72,7 +72,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_libnbc_la_SOURCES = $(sources) mca_coll_libnbc_la_LDFLAGS = -module -avoid-version -mca_coll_libnbc_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_coll_libnbc_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_libnbc_la_SOURCES =$(sources) diff --git a/ompi/mca/coll/monitoring/Makefile.am b/ompi/mca/coll/monitoring/Makefile.am index cb1eed8b135..0643ef408ab 100644 --- a/ompi/mca/coll/monitoring/Makefile.am +++ b/ompi/mca/coll/monitoring/Makefile.am @@ -46,7 +46,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_monitoring_la_SOURCES = $(monitoring_sources) mca_coll_monitoring_la_LDFLAGS = -module -avoid-version -mca_coll_monitoring_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_coll_monitoring_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(OMPI_TOP_BUILDDIR)/ompi/mca/common/monitoring/libmca_common_monitoring.la noinst_LTLIBRARIES = $(component_noinst) diff --git a/ompi/mca/coll/portals4/Makefile.am b/ompi/mca/coll/portals4/Makefile.am index 7070e01f2e6..54d3c53c4c9 100644 --- a/ompi/mca/coll/portals4/Makefile.am +++ b/ompi/mca/coll/portals4/Makefile.am @@ -33,7 +33,7 @@ AM_CPPFLAGS = $(coll_portals4_CPPFLAGS) mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_portals4_la_SOURCES = $(local_sources) -mca_coll_portals4_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_coll_portals4_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(coll_portals4_LIBS) mca_coll_portals4_la_LDFLAGS = -module -avoid-version $(coll_portals4_LDFLAGS) diff --git a/ompi/mca/coll/self/Makefile.am b/ompi/mca/coll/self/Makefile.am index c4e5e13dc86..333e428db7c 100644 --- a/ompi/mca/coll/self/Makefile.am +++ b/ompi/mca/coll/self/Makefile.am @@ -55,7 +55,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_self_la_SOURCES = $(sources) mca_coll_self_la_LDFLAGS = -module -avoid-version -mca_coll_self_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_coll_self_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_self_la_SOURCES =$(sources) diff --git a/ompi/mca/coll/sync/Makefile.am b/ompi/mca/coll/sync/Makefile.am index d1fcfff91b5..0b6406ed0ff 100644 --- a/ompi/mca/coll/sync/Makefile.am +++ b/ompi/mca/coll/sync/Makefile.am @@ -46,7 +46,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_sync_la_SOURCES = $(sources) mca_coll_sync_la_LDFLAGS = -module -avoid-version -mca_coll_sync_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_coll_sync_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_sync_la_SOURCES =$(sources) diff --git a/ompi/mca/coll/tuned/Makefile.am b/ompi/mca/coll/tuned/Makefile.am index 73f1f22a171..819bd0e8510 100644 --- a/ompi/mca/coll/tuned/Makefile.am +++ b/ompi/mca/coll/tuned/Makefile.am @@ -61,7 +61,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_tuned_la_SOURCES = $(sources) mca_coll_tuned_la_LDFLAGS = -module -avoid-version -mca_coll_tuned_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_coll_tuned_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_tuned_la_SOURCES =$(sources) diff --git a/ompi/mca/coll/ucc/Makefile.am b/ompi/mca/coll/ucc/Makefile.am index 95ec95401ac..5c3918a0ca9 100644 --- a/ompi/mca/coll/ucc/Makefile.am +++ b/ompi/mca/coll/ucc/Makefile.am @@ -50,7 +50,7 @@ endif mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_ucc_la_SOURCES = $(coll_ucc_sources) -mca_coll_ucc_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_coll_ucc_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(coll_ucc_LIBS) mca_coll_ucc_la_LDFLAGS = -module -avoid-version $(coll_ucc_LDFLAGS) diff --git a/ompi/mca/coll/xhc/Makefile.am b/ompi/mca/coll/xhc/Makefile.am index 9351e214200..e61047590cc 100644 --- a/ompi/mca/coll/xhc/Makefile.am +++ b/ompi/mca/coll/xhc/Makefile.am @@ -40,7 +40,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_coll_xhc_la_SOURCES = $(sources) mca_coll_xhc_la_LDFLAGS = -module -avoid-version -mca_coll_xhc_la_LIBADD = $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_coll_xhc_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_coll_xhc_la_SOURCES = $(sources) diff --git a/ompi/mca/common/monitoring/Makefile.am b/ompi/mca/common/monitoring/Makefile.am index d0dfa439f7d..5d96bf94475 100644 --- a/ompi/mca/common/monitoring/Makefile.am +++ b/ompi/mca/common/monitoring/Makefile.am @@ -34,7 +34,7 @@ endif ompi_monitoring_prof_la_LDFLAGS= \ -module -avoid-version -shared $(WRAPPER_EXTRA_LDFLAGS) ompi_monitoring_prof_la_LIBADD = \ - $(top_builddir)/ompi/libopen-mpi.la \ + $(top_builddir)/ompi/libopen_mpi.la \ $(top_builddir)/opal/lib@OPAL_LIB_NAME@.la if OPAL_INSTALL_BINARIES diff --git a/ompi/mca/fbtl/ime/Makefile.am b/ompi/mca/fbtl/ime/Makefile.am index 41908982b5e..295ac5e271c 100644 --- a/ompi/mca/fbtl/ime/Makefile.am +++ b/ompi/mca/fbtl/ime/Makefile.am @@ -30,11 +30,11 @@ AM_CPPFLAGS = $(fbtl_ime_CPPFLAGS) mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_fbtl_ime_la_SOURCES = $(fbtl_ime_sources) -mca_fbtl_ime_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_fbtl_ime_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(fbtl_ime_LIBS) mca_fbtl_ime_la_LDFLAGS = -module -avoid-version $(fbtl_ime_LDFLAGS) noinst_LTLIBRARIES = $(component_noinst) libmca_fbtl_ime_la_SOURCES = $(fbtl_ime_sources) libmca_fbtl_ime_la_LIBADD = $(fbtl_ime_LIBS) -libmca_fbtl_ime_la_LDFLAGS = -module -avoid-version $(fbtl_ime_LDFLAGS) \ No newline at end of file +libmca_fbtl_ime_la_LDFLAGS = -module -avoid-version $(fbtl_ime_LDFLAGS) diff --git a/ompi/mca/fbtl/posix/Makefile.am b/ompi/mca/fbtl/posix/Makefile.am index 37a98c30e48..b2ffebc8c87 100644 --- a/ompi/mca/fbtl/posix/Makefile.am +++ b/ompi/mca/fbtl/posix/Makefile.am @@ -34,7 +34,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_fbtl_posix_la_SOURCES = $(sources) mca_fbtl_posix_la_LDFLAGS = -module -avoid-version -mca_fbtl_posix_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_fbtl_posix_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(OMPI_TOP_BUILDDIR)/ompi/mca/common/ompio/libmca_common_ompio.la noinst_LTLIBRARIES = $(component_noinst) diff --git a/ompi/mca/fs/ime/Makefile.am b/ompi/mca/fs/ime/Makefile.am index 9afbc08115a..a3ec71a3861 100644 --- a/ompi/mca/fs/ime/Makefile.am +++ b/ompi/mca/fs/ime/Makefile.am @@ -37,11 +37,11 @@ AM_CPPFLAGS = $(fs_ime_CPPFLAGS) mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_fs_ime_la_SOURCES = $(fs_ime_sources) -mca_fs_ime_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_fs_ime_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(fs_ime_LIBS) mca_fs_ime_la_LDFLAGS = -module -avoid-version $(fs_ime_LDFLAGS) noinst_LTLIBRARIES = $(component_noinst) libmca_fs_ime_la_SOURCES = $(fs_ime_sources) libmca_fs_ime_la_LIBADD = $(fs_ime_LIBS) -libmca_fs_ime_la_LDFLAGS = -module -avoid-version $(fs_ime_LDFLAGS) \ No newline at end of file +libmca_fs_ime_la_LDFLAGS = -module -avoid-version $(fs_ime_LDFLAGS) diff --git a/ompi/mca/fs/lustre/Makefile.am b/ompi/mca/fs/lustre/Makefile.am index 9f862506c7d..a06825c4ff9 100644 --- a/ompi/mca/fs/lustre/Makefile.am +++ b/ompi/mca/fs/lustre/Makefile.am @@ -43,7 +43,7 @@ AM_CPPFLAGS = $(fs_lustre_CPPFLAGS) mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_fs_lustre_la_SOURCES = $(fs_lustre_sources) -mca_fs_lustre_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_fs_lustre_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(fs_lustre_LIBS) mca_fs_lustre_la_LDFLAGS = -module -avoid-version $(fs_lustre_LDFLAGS) diff --git a/ompi/mca/fs/ufs/Makefile.am b/ompi/mca/fs/ufs/Makefile.am index aa2e4b728fd..b93d36cd8b9 100644 --- a/ompi/mca/fs/ufs/Makefile.am +++ b/ompi/mca/fs/ufs/Makefile.am @@ -34,7 +34,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_fs_ufs_la_SOURCES = $(sources) mca_fs_ufs_la_LDFLAGS = -module -avoid-version -mca_fs_ufs_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_fs_ufs_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_fs_ufs_la_SOURCES = $(sources) diff --git a/ompi/mca/hook/comm_method/hook_comm_method_fns.c b/ompi/mca/hook/comm_method/hook_comm_method_fns.c index 86d7447c72f..5570a292ef4 100644 --- a/ompi/mca/hook/comm_method/hook_comm_method_fns.c +++ b/ompi/mca/hook/comm_method/hook_comm_method_fns.c @@ -511,7 +511,6 @@ ompi_report_comm_methods(int called_from_location) free(p); } -#if 0 MPI_Datatype mydt; MPI_Op myop; MPI_Type_contiguous(sizeof(comm_method_string_conversion_t), MPI_BYTE, &mydt); @@ -522,7 +521,6 @@ ompi_report_comm_methods(int called_from_location) leader_comm->c_coll->coll_allreduce_module); MPI_Op_free(&myop); MPI_Type_free(&mydt); -#endif // Sort communication method string arrays after reduction qsort(&comm_method_string_conversion.str[1], diff --git a/ompi/mca/mtl/ofi/Makefile.am b/ompi/mca/mtl/ofi/Makefile.am index 9f88e85ca5b..e64dc6e04fb 100644 --- a/ompi/mca/mtl/ofi/Makefile.am +++ b/ompi/mca/mtl/ofi/Makefile.am @@ -81,7 +81,7 @@ mca_mtl_ofi_la_SOURCES = $(mtl_ofi_sources) mca_mtl_ofi_la_LDFLAGS = \ $(mtl_ofi_LDFLAGS) \ -module -avoid-version -mca_mtl_ofi_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_mtl_ofi_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(OPAL_TOP_BUILDDIR)/opal/mca/common/ofi/lib@OPAL_LIB_NAME@mca_common_ofi.la \ $(mtl_ofi_LIBS) diff --git a/ompi/mca/mtl/portals4/Makefile.am b/ompi/mca/mtl/portals4/Makefile.am index 437b9343d24..51df5802458 100644 --- a/ompi/mca/mtl/portals4/Makefile.am +++ b/ompi/mca/mtl/portals4/Makefile.am @@ -60,7 +60,7 @@ endif mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_mtl_portals4_la_SOURCES = $(local_sources) -mca_mtl_portals4_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_mtl_portals4_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(mtl_portals4_LIBS) mca_mtl_portals4_la_LDFLAGS = -module -avoid-version $(mtl_portals4_LDFLAGS) diff --git a/ompi/mca/mtl/psm2/Makefile.am b/ompi/mca/mtl/psm2/Makefile.am index af1878c4f08..44ed7091f6b 100644 --- a/ompi/mca/mtl/psm2/Makefile.am +++ b/ompi/mca/mtl/psm2/Makefile.am @@ -59,7 +59,7 @@ endif mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_mtl_psm2_la_SOURCES = $(mtl_psm2_sources) -mca_mtl_psm2_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_mtl_psm2_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(mtl_psm2_LIBS) mca_mtl_psm2_la_LDFLAGS = -module -avoid-version $(mtl_psm2_LDFLAGS) diff --git a/ompi/mca/op/aarch64/Makefile.am b/ompi/mca/op/aarch64/Makefile.am index 564a8928b2a..ad0eeba0016 100644 --- a/ompi/mca/op/aarch64/Makefile.am +++ b/ompi/mca/op/aarch64/Makefile.am @@ -68,7 +68,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_op_aarch64_la_SOURCES = $(sources) mca_op_aarch64_la_LIBADD = $(specialized_op_libs) -mca_op_aarch64_la_LDFLAGS = -module -avoid-version $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la +mca_op_aarch64_la_LDFLAGS = -module -avoid-version $(top_builddir)/ompi/libopen_mpi.la # Specific information for static builds. diff --git a/ompi/mca/op/avx/Makefile.am b/ompi/mca/op/avx/Makefile.am index 022c2dc7da0..a413336c367 100644 --- a/ompi/mca/op/avx/Makefile.am +++ b/ompi/mca/op/avx/Makefile.am @@ -86,7 +86,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_op_avx_la_SOURCES = $(sources) mca_op_avx_la_LIBADD = $(specialized_op_libs) -mca_op_avx_la_LDFLAGS = -module -avoid-version $(top_builddir)/ompi/libopen-mpi.la +mca_op_avx_la_LDFLAGS = -module -avoid-version $(top_builddir)/ompi/libopen_mpi.la # Specific information for static builds. diff --git a/ompi/mca/op/example/Makefile.am b/ompi/mca/op/example/Makefile.am index 5b2f80ee706..24f922ec3a4 100644 --- a/ompi/mca/op/example/Makefile.am +++ b/ompi/mca/op/example/Makefile.am @@ -71,7 +71,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component) mca_op_example_la_SOURCES = $(component_sources) mca_op_example_la_LDFLAGS = -module -avoid-version -mca_op_example_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_op_example_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la # Specific information for static builds. # diff --git a/ompi/mca/osc/monitoring/Makefile.am b/ompi/mca/osc/monitoring/Makefile.am index 2567b2a4b54..f40c1e2098b 100644 --- a/ompi/mca/osc/monitoring/Makefile.am +++ b/ompi/mca/osc/monitoring/Makefile.am @@ -31,7 +31,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_osc_monitoring_la_SOURCES = $(monitoring_sources) mca_osc_monitoring_la_LDFLAGS = -module -avoid-version -mca_osc_monitoring_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_osc_monitoring_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(OMPI_TOP_BUILDDIR)/ompi/mca/common/monitoring/libmca_common_monitoring.la noinst_LTLIBRARIES = $(component_noinst) diff --git a/ompi/mca/osc/portals4/Makefile.am b/ompi/mca/osc/portals4/Makefile.am index 3971fafa7ac..6d584ccfd83 100644 --- a/ompi/mca/osc/portals4/Makefile.am +++ b/ompi/mca/osc/portals4/Makefile.am @@ -36,7 +36,7 @@ endif mcacomponentdir = $(pkglibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_osc_portals4_la_SOURCES = $(portals4_sources) -mca_osc_portals4_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_osc_portals4_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(osc_portals4_LIBS) mca_osc_portals4_la_LDFLAGS = -module -avoid-version $(osc_portals4_LDFLAGS) diff --git a/ompi/mca/osc/rdma/Makefile.am b/ompi/mca/osc/rdma/Makefile.am index 0af844602c1..99ee60409ff 100644 --- a/ompi/mca/osc/rdma/Makefile.am +++ b/ompi/mca/osc/rdma/Makefile.am @@ -63,7 +63,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_osc_rdma_la_SOURCES = $(rdma_sources) mca_osc_rdma_la_LDFLAGS = -module -avoid-version -mca_osc_rdma_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_osc_rdma_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_osc_rdma_la_SOURCES = $(rdma_sources) diff --git a/ompi/mca/osc/sm/Makefile.am b/ompi/mca/osc/sm/Makefile.am index db6aedf13f8..9b6183211df 100644 --- a/ompi/mca/osc/sm/Makefile.am +++ b/ompi/mca/osc/sm/Makefile.am @@ -34,7 +34,7 @@ endif mcacomponentdir = $(pkglibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_osc_sm_la_SOURCES = $(sm_sources) -mca_osc_sm_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_osc_sm_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(osc_sm_LIBS) mca_osc_sm_la_LDFLAGS = -module -avoid-version $(osc_sm_LDFLAGS) diff --git a/ompi/mca/osc/ucx/Makefile.am b/ompi/mca/osc/ucx/Makefile.am index 4c3fbd6da91..2918c41f7c2 100644 --- a/ompi/mca/osc/ucx/Makefile.am +++ b/ompi/mca/osc/ucx/Makefile.am @@ -34,7 +34,7 @@ endif mcacomponentdir = $(pkglibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_osc_ucx_la_SOURCES = $(ucx_sources) -mca_osc_ucx_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la $(osc_ucx_LIBS) \ +mca_osc_ucx_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la $(osc_ucx_LIBS) \ $(OPAL_TOP_BUILDDIR)/opal/mca/common/ucx/lib@OPAL_LIB_NAME@mca_common_ucx.la mca_osc_ucx_la_LDFLAGS = -module -avoid-version $(osc_ucx_LDFLAGS) diff --git a/ompi/mca/part/persist/Makefile.am b/ompi/mca/part/persist/Makefile.am index 910ea0a59ad..1fe95537d85 100644 --- a/ompi/mca/part/persist/Makefile.am +++ b/ompi/mca/part/persist/Makefile.am @@ -42,7 +42,7 @@ local_sources = \ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_part_persist_la_SOURCES = $(local_sources) -mca_part_persist_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_part_persist_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(part_persist_LIBS) mca_part_persist_la_LDFLAGS = -module -avoid-version $(part_persist_LDFLAGS) diff --git a/ompi/mca/pml/cm/Makefile.am b/ompi/mca/pml/cm/Makefile.am index fa7327d6372..6ad6675ab88 100644 --- a/ompi/mca/pml/cm/Makefile.am +++ b/ompi/mca/pml/cm/Makefile.am @@ -43,7 +43,7 @@ local_sources = \ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_pml_cm_la_SOURCES = $(local_sources) -mca_pml_cm_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_pml_cm_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(pml_cm_LIBS) mca_pml_cm_la_LDFLAGS = -module -avoid-version $(pml_cm_LDFLAGS) diff --git a/ompi/mca/pml/monitoring/Makefile.am b/ompi/mca/pml/monitoring/Makefile.am index 6e4215de807..1d5f5099a08 100644 --- a/ompi/mca/pml/monitoring/Makefile.am +++ b/ompi/mca/pml/monitoring/Makefile.am @@ -32,7 +32,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_pml_monitoring_la_SOURCES = $(monitoring_sources) mca_pml_monitoring_la_LDFLAGS = -module -avoid-version -mca_pml_monitoring_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la \ +mca_pml_monitoring_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la \ $(OMPI_TOP_BUILDDIR)/ompi/mca/common/monitoring/libmca_common_monitoring.la noinst_LTLIBRARIES = $(component_noinst) diff --git a/ompi/mca/pml/ob1/Makefile.am b/ompi/mca/pml/ob1/Makefile.am index 4a84f9ec69b..7223d101e03 100644 --- a/ompi/mca/pml/ob1/Makefile.am +++ b/ompi/mca/pml/ob1/Makefile.am @@ -72,7 +72,7 @@ mcacomponent_LTLIBRARIES = $(component_install) mca_pml_ob1_la_SOURCES = $(ob1_sources) mca_pml_ob1_la_LDFLAGS = -module -avoid-version -mca_pml_ob1_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_pml_ob1_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_pml_ob1_la_SOURCES = $(ob1_sources) diff --git a/ompi/mca/pml/ucx/Makefile.am b/ompi/mca/pml/ucx/Makefile.am index 04ab6a445a0..bf4147bbdb0 100644 --- a/ompi/mca/pml/ucx/Makefile.am +++ b/ompi/mca/pml/ucx/Makefile.am @@ -37,7 +37,7 @@ endif mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_pml_ucx_la_SOURCES = $(local_sources) -mca_pml_ucx_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la $(pml_ucx_LIBS) \ +mca_pml_ucx_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la $(pml_ucx_LIBS) \ $(OPAL_TOP_BUILDDIR)/opal/mca/common/ucx/lib@OPAL_LIB_NAME@mca_common_ucx.la mca_pml_ucx_la_LDFLAGS = -module -avoid-version $(pml_ucx_LDFLAGS) diff --git a/ompi/mca/pml/v/Makefile.am b/ompi/mca/pml/v/Makefile.am index e68c373e09a..5d51a7f1b16 100644 --- a/ompi/mca/pml/v/Makefile.am +++ b/ompi/mca/pml/v/Makefile.am @@ -32,7 +32,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_pml_v_la_SOURCES = $(local_sources) mca_pml_v_la_LDFLAGS = -module -avoid-version -mca_pml_v_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_pml_v_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_pml_v_la_SOURCES = $(local_sources) diff --git a/ompi/mca/topo/basic/Makefile.am b/ompi/mca/topo/basic/Makefile.am index 907f5ffa282..f808fbecf31 100644 --- a/ompi/mca/topo/basic/Makefile.am +++ b/ompi/mca/topo/basic/Makefile.am @@ -37,7 +37,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component) mca_topo_basic_la_SOURCES = $(component_sources) mca_topo_basic_la_LDFLAGS = -module -avoid-version -mca_topo_basic_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_topo_basic_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(lib) libmca_topo_basic_la_SOURCES = $(lib_sources) diff --git a/ompi/mca/topo/example/Makefile.am b/ompi/mca/topo/example/Makefile.am index 29e78f455a0..0c22d9d4798 100644 --- a/ompi/mca/topo/example/Makefile.am +++ b/ompi/mca/topo/example/Makefile.am @@ -46,7 +46,7 @@ mcacomponentdir = $(pkglibdir) mcacomponent_LTLIBRARIES = $(component) mca_topo_example_la_SOURCES = $(component_sources) mca_topo_example_la_LDFLAGS = -module -avoid-version -mca_topo_example_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_topo_example_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(lib) libmca_topo_example_la_SOURCES = $(lib_sources) diff --git a/ompi/mca/topo/treematch/Makefile.am b/ompi/mca/topo/treematch/Makefile.am index eeb694a136f..89c18bf6eda 100644 --- a/ompi/mca/topo/treematch/Makefile.am +++ b/ompi/mca/topo/treematch/Makefile.am @@ -43,7 +43,7 @@ mcacomponentdir = $(pkglibdir) mcacomponent_LTLIBRARIES = $(component) mca_topo_treematch_la_SOURCES = $(component_sources) mca_topo_treematch_la_LDFLAGS = -module -avoid-version $(topo_treematch_LDFLAGS) -mca_topo_treematch_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la $(topo_treematch_LIBS) +mca_topo_treematch_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la $(topo_treematch_LIBS) noinst_LTLIBRARIES = $(lib) libmca_topo_treematch_la_SOURCES = $(lib_sources) diff --git a/ompi/mca/vprotocol/pessimist/Makefile.am b/ompi/mca/vprotocol/pessimist/Makefile.am index 8f931fccb8e..33029f28f55 100644 --- a/ompi/mca/vprotocol/pessimist/Makefile.am +++ b/ompi/mca/vprotocol/pessimist/Makefile.am @@ -50,7 +50,7 @@ mcacomponentdir = $(ompilibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_vprotocol_pessimist_la_SOURCES = $(local_sources) mca_vprotocol_pessimist_la_LDFLAGS = -module -avoid-version -mca_vprotocol_pessimist_la_LIBADD = $(top_builddir)/ompi/libopen-mpi.la +mca_vprotocol_pessimist_la_LIBADD = $(top_builddir)/ompi/libopen_mpi.la noinst_LTLIBRARIES = $(component_noinst) libmca_vprotocol_pessimist_la_SOURCES = $(local_sources) diff --git a/ompi/mpi/Makefile.am b/ompi/mpi/Makefile.am index 87d20ff2d87..f5ac36358e6 100644 --- a/ompi/mpi/Makefile.am +++ b/ompi/mpi/Makefile.am @@ -31,3 +31,14 @@ EXTRA_DIST += \ mpi/bindings/ompi_bindings/fortran.py \ mpi/bindings/ompi_bindings/fortran_type.py \ mpi/bindings/ompi_bindings/util.py + +# +# attr_fn.c needs to be slurped into libopen_mpi +# as it defines the OMPI native variants of +# built-in copy/del attribute functions and these +# are used in some component plugins +# + +libopen_mpi_la_SOURCES += \ + mpi/c/attr_fn.c + diff --git a/ompi/mpi/README_ABI.md b/ompi/mpi/README_ABI.md new file mode 100644 index 00000000000..ea680510b98 --- /dev/null +++ b/ompi/mpi/README_ABI.md @@ -0,0 +1,183 @@ +# MPI-5 ABI support + +Last updated: December 2025 + +This README describes the current approach to supporting the MPI-5 +Application Binary Interface (ABI). The MPI ABI is described in +Chapter 20 of the MPI-5 standard. The standardized values for +constants, etc. are presented in Appendix A of that document. + +## What does having a defined ABI mean to applications? + +By supporting a standardized ABI, an MPI application can be built +against one implementation of MPI (e.g.) MPICH, but at runtime +can use the ABI compatible Open MPI implementation of the library. +This only applies to dynamically linked applications. + +In principle a single mpi.h include file can be used, for example +the one provided at https://github.com/mpi-forum/mpi-abi-stubs. + +The MPI ABI specifies the file name of the ABI MPI +library (libmpi_abi). It does not explicitly specify the shared library +name(SONAME), but it presumably is libmpi_abi.0. Note we need for this to +by the same name as that used by the MPICH implementation of the MPI ABI. +The major and minor versions of the library are specified in this chapter as well. +See the top level VERSION file for adjusting the SONAME. + +The name of the compiler wrapper - mpicc_abi - is also specified. + +## Refactor of Open MPI to support the MPI ABI + +Relatively few changes were made to the internal components of Open MPI +to support the ABI, but the way in which it is structured in terms of +internal libraries has been changed. + +There are now two top level libraries, one to support the OMPI ABI, +and the other the MPI ABI. The internal components of Open MPI are now +placed in separate library, against which both of the ABI specific +libraries are linked. The structure is depicted below: + + MPI ABI OMPI ABI + +----------------------+----------------------+ + | libmpi_abi.la | libmpi.la | + +----------------------+----------------------+ + | libopen_mpi.la | + +----------------------+----------------------+ + +Note the ability to change the name of the OMPI ABI library (libmpi.la) +is still supported, so in the code base Makefiles this library actually +appears as lib@OMPI_LIBMPI_NAME@.la). + +The Fortran OMPI libraries are linked against libmpi.so.0. + +## Installation considerations + +The MPI and OMPI libraries are installed in the same /lib +folder. They have different file names so this presents no problems. +The OMPI ABI include files are installed in /include as usual. +The MPI ABI include file is installed in /include/standard_abi. +The mpicc_abi compiler wrapper points the c compiler to the MPI ABI mpi.h and +links the executable/shared library against libmpi_abi. + +## Generating the ABI compliant mpi.h + +Rather than use the mpi.h at https://github.com/mpi-forum/mpi-abi-stubs, +it was decided to develop infrastructure for building it from the latex +content of the MPI standard. It turns out that this was the better route +as bugs were found both in the standard itself and the mpi-abi-stubs repo +mpi.h while developing this infrastructure. + +Generation of the mpi.h (and a shadow abi.h) include files involves four +components: + +1. pympistandard at https://github.com/mpi-forum/pympistandard. This + is now included in the 3rd-party folder. + +2. two json files: mpi-standard-apis.json and mpi-standard-abi.json. + The former is generated as part of the build process for the MPI standard. + The later is generated via a tool (not yet incorporated in the upstream + MPI standard code base). The tool converts the values embedded in the + appendix A latex file into a json file specifying the values for MPI + constants, e.g. value of MPI_COMM_WORLD. These json files reside in + the top level docs folder. Note the first json file is also used to + generate makefile content. + +3. A tool - c_header.py was written to parse the two json files + described above and generate the MPI ABI compliant mpi.h and a name mangled + version - abi.h. Eventually this tool will be incorporated into the + binding infrastructure. More on the binding infrastructure below. + The tool uses methods from pympistandard. + +4. The c_header.py tool uses a template file - abi.h.in located in + the ompi/mpi/c folder to generate the MPI ABI mpi.h and the name + mangled version - abi.h. The template is just used to structure how the + various blocks of the resulting mpi.h are placed, not the actual content. + The tool uses methods from pympistandard. + +## Generating the MPI ABI compliant c bindings + +The ABI compliant c bindings are generated using the binding infrastructure +originally developed to support big count. The infrastructure was significantly +enhanced to support generation of the MPI ABI bindings. + +This infrastructure uses templates (\*.c.in) files to generate up to four +variants: OMPI ABI int count, OMPI ABI big count, MPI ABI int count, +MPI ABI big count. There are a small set of functions which have +only int count or big count. The templates for these files have +suffixes of (\*.c.in_obc for big count only and \*.c.in_nbc for int +count only). + +Note a number of procedures (e.g. all the _f2c/_c2f) are not present in +the MPI ABI. Likewise there are restrictions as to which deprecated +procedures are include in the MPI ABI. These restrictions are managed +via the ompi/mpi/c/Makefile.am and ompi/mpi/c/Makefile_abi.include make +files. + +Generation of the OMPI ABI sources files only involves the code changes +that were done to support big count. + +The MPI ABI source file generation is more complex. The source files +generated include both the OMPI ABI mpi.h and the name +mangled MPI ABI abi.h include files. Thus the generated source files +have two definitions of MPI predefined constants. As an example +in a MPI ABI source file there are two world communicator values defined: +MPI_COMM_WORLD, and MPI_COMM_WORLD_ABI_INTERNAL. The former +is the OMPI ABI defintion of the world communicator(address of a +global variable) , the later being the MPI ABI value for this constant (an integer). + +The bindings framework parses the input argument types to the function +and generates calls to appropriate converter methods to convert any MPI ABI +constants in the arguments to OMPI ABI ones. A wrapped version +of the original function code is then called. Any output arguments +that require conversion are converted from the OMPI ABI values back to MPI ABI ones. +This includes fields in MPI_Status objects which require conversion +and error return values from the wrapped code. + +The bindings framework also generates two helper files - abi_converter.h +and abi_converter.c in addition to the generated OMPI and MPI ABI +source files. + +There are several implications of this approach. + +First very few changes have to made to the internal Open MPI source code. + +A second is that top level MPI ABI c entry points are expecting +argument values using MPI ABI constants. Thus calling top +level MPI functions from within libompi_mpi will not work +properly. + +A third is there are a few places in non-blocking/persistent +methods where arrays of converted values need to be allocated, +and freed upon completion of the non-blocking collective or release +of the persistent request. + +## Handling user defined functions + +The standard specifies a number of user defined functions + +1. attribute copy and delete functions +2. operator functions (for reduction operations) +3. errhandler functions +4. generalized request related functions +5. datarep functions +6. MPI_T event callback functions. + +The MPI ABI support for these functions varies. For attribute related +functions, a wrapper generation approach is taken. The wrapper converts +OMPI ABI constants to MPI ABI ones as needed. No changes are needed +to OMPI internal functions to support these. + +Operator functions are handled by extending the internal support for +ops functions to allow for invocation of a translation routine to +convert the datatype argument from the OMPI ABI to MPI ABI values +as appropriate. A similar approach is taken for error handlers. + +Generalized requests don't need special support as the MPI Status +structure for both MPI and OMPI ABIs are similar enough as to not +require conversion. + +OMPI doesn't really support datarep functions so currently there +is no need for any argument conversion operations for these functions. + +The MPI_T event implementation is just a set of stubs so there's +no need for special support for MPI_T_event callback functions. diff --git a/ompi/mpi/bindings/bindings.py b/ompi/mpi/bindings/bindings.py index 9fa858db93b..fb9733c3480 100644 --- a/ompi/mpi/bindings/bindings.py +++ b/ompi/mpi/bindings/bindings.py @@ -57,10 +57,17 @@ def main(): parser_header.add_argument('--external', action='store_true', help='generate external mpi.h header file') parser_header.add_argument('--srcdir', help='source directory') parser_header.set_defaults(handler=lambda args, out: c.generate_header(args, out)) + parser_header = subparsers_c.add_parser('converters', help='generate converter header file or source file') + parser_header.add_argument('--type', choices=('include_file', 'source_file'), + help='generate the converter function include file or source file') + parser_header.set_defaults(handler=lambda args, out: c.generate_converters(args, out)) parser_gen = subparsers_c.add_parser('source', help='generate source file from template file') # parser = argparse.ArgumentParser(description='C ABI binding generation code') parser_gen.add_argument('type', choices=('ompi', 'standard'), help='generate the OMPI ABI functions or the standard ABI functions') + parser_gen.add_argument('--mpit', action='store_true', help='generate MPI T code') + parser_gen.add_argument('--suppress_bc', action='store_true', help='do not generate big count variant') + parser_gen.add_argument('--suppress_nbc', action='store_true', help='do not generate int count variant') parser_gen.add_argument('source_file', help='template file to use for C code generation') parser_gen.set_defaults(handler=lambda args, out: c.generate_source(args, out)) args = parser.parse_args() diff --git a/ompi/mpi/bindings/c_header.py b/ompi/mpi/bindings/c_header.py index 78f3a01ae24..41eb20de699 100644 --- a/ompi/mpi/bindings/c_header.py +++ b/ompi/mpi/bindings/c_header.py @@ -40,15 +40,53 @@ "MPI_Win", "MPI_Comm_copy_attr_function", "MPI_Comm_delete_attr_function", + "MPI_Comm_errhandler_function", + "MPI_File_errhandler_function", + "MPI_Session_errhandler_function", "MPI_Type_copy_attr_function", "MPI_Type_delete_attr_function", "MPI_Win_delete_attr_function", "MPI_Win_copy_attr_function", + "MPI_Win_errhandler_function", + "MPI_T_enum", + "MPI_T_cvar_handle", + "MPI_T_pvar_handle", + "MPI_T_pvar_session", + "MPI_T_event_instance", + "MPI_T_event_registration", + "MPI_T_cb_safety", + "MPI_T_source_order", # TODO: these two are deprecated, get rid of them "MPI_Copy_function", "MPI_Delete_function", ] +DEPRECATED_FUNCTIONS = [ + "MPI_Address", + "MPI_Type_hindexed", + "MPI_Type_hvector", + "MPI_Type_struct", + "MPI_Type_extent", + "MPI_Type_lb", + "MPI_Type_lb", + "MPI_LB", + "MPI_UB", + "MPI_Errhandler_create", + "MPI_Errhandler_get", + "MPI_Errhandler_set", + "MPI_Keyval_create", + "MPI_Keyval_free", + "MPI_DUP_FN" + "MPI_NULL_COPY_FN" + "MPI_NULL_DELETE_FN" + "MPI_Attr_delete", + "MPI_Attr_get", + "MPI_Attr_put", + "MPI_COMBINER_HVECTOR_INTEGER", + "MPI_COMBINER_HINDEXED_INTEGER", + "MPI_COMBINER_STRUCT_INTEGER", +] + ENUM_CATEGORIES = [ "ERROR_CLASSES", "MODE_CONSTANTS", @@ -169,6 +207,7 @@ def output_constant(const, use_enum: bool, mangle_name: bool): # that commented-out lines are NOT included. category_pattern = re.compile(r"^[\s]*\$CATEGORY:([A-Z_0-9]+)\$$") output = [] +c_type = str() for line in lines: category = category_pattern.search(line) @@ -181,14 +220,33 @@ def output_constant(const, use_enum: bool, mangle_name: bool): if category in ENUM_CATEGORIES: use_enum = True if use_enum: - output.append("enum {\n") + for constant in categories_dict[category]: + c_type = constant["handle_types"]["c"]["type"] + if c_type == "int": + output.append("enum {\n") + else: + if MANGLE_NAMES: + line = f'typedef enum {c_type}{ABI_INTERNAL}' + else: + line = f'typedef enum {c_type}' + line = line + " {\n" + output.append(line) + break # Print out each `#define` / assignment for the constants for constant in categories_dict[category]: line = output_constant(constant, use_enum, MANGLE_NAMES) if line is not None: output.append(line) if use_enum: - output.append("};\n") + if c_type == "int": + output.append("};\n") + else: + if MANGLE_NAMES: + line = f'{c_type}{ABI_INTERNAL};' + else: + line = f'{c_type};' + line = "} " + line + "\n" + output.append(line) else: output.append(line) @@ -219,22 +277,78 @@ def output_constant(const, use_enum: bool, mangle_name: bool): binding = proc.express.embiggen.iso_c.__str__().split() output.append(f"{binding[0]} P{' '.join(binding[1:])};\n") +# ================================ Odds and ends for mangle case =============== +if MANGLE_NAMES: + output.append("\n") + output.append("/*\n") + output.append(" * define externs to help with attributes\n") + output.append(" */\n") + output.append("extern int ompi_abi_mpi_proc_null_val;\n") + output.append("extern int ompi_abi_mpi_any_source_val;\n") + output.append("extern int ompi_abi_mpi_win_flavor_create;\n") + output.append("extern int ompi_abi_mpi_win_flavor_allocate;\n") + output.append("extern int ompi_abi_mpi_win_flavor_shared;\n") + output.append("extern int ompi_abi_mpi_win_flavor_dynamic;\n") + output.append("extern int ompi_abi_mpi_win_model_unified;\n") + output.append("extern int ompi_abi_mpi_win_model_separate;\n") + output.append("extern int ompi_abi_mpi_lastusedcode;\n") + output.append("\n") + output.append("int ABI_C_MPI_COMM_NULL_DELETE_FN( MPI_Comm_ABI_INTERNAL comm, int comm_keyval, void* attribute_val_out, void* extra_state );\n") + output.append("int ABI_C_MPI_COMM_NULL_COPY_FN( MPI_Comm_ABI_INTERNAL comm, int comm_keyval, void* extra_state, void* attribute_val_in, void* attribute_val_out, int* flag );\n") + output.append("int ABI_C_MPI_COMM_DUP_FN( MPI_Comm_ABI_INTERNAL comm, int comm_keyval, void* extra_state, void* attribute_val_in, void* attribute_val_out, int* flag );\n") + output.append("int ABI_C_MPI_TYPE_NULL_DELETE_FN( MPI_Datatype_ABI_INTERNAL datatype, int type_keyval, void* attribute_val_out, void* extra_state );\n") + output.append("int ABI_C_MPI_TYPE_NULL_COPY_FN( MPI_Datatype_ABI_INTERNAL datatype, int type_keyval, void* extra_state, void* attribute_val_in, void* attribute_val_out, int* flag );\n") + output.append("int ABI_C_MPI_TYPE_DUP_FN( MPI_Datatype_ABI_INTERNAL datatype, int type_keyval, void* extra_state, void* attribute_val_in, void* attribute_val_out, int* flag );\n") + output.append("int ABI_C_MPI_WIN_NULL_DELETE_FN( MPI_Win_ABI_INTERNAL window, int win_keyval, void* attribute_val_out, void* extra_state );\n") + output.append("int ABI_C_MPI_WIN_NULL_COPY_FN( MPI_Win_ABI_INTERNAL window, int win_keyval, void* extra_state, void* attribute_val_in, void* attribute_val_out, int* flag );\n") + output.append("int ABI_C_MPI_WIN_DUP_FN( MPI_Win_ABI_INTERNAL window, int win_keyval, void* extra_state, void* attribute_val_in, void* attribute_val_out, int* flag );\n") + output.append("\n") + # ================================ Final Output ================================ -output.append("#endif /* _ABI_INTERNAL_ */") +output.append("#if defined(__cplusplus)\n") +output.append("}\n") +output.append("#endif\n") +output.append("#endif /* MPI_H_ABI */") +# === some compilers are finicky about not having empy line at end of include file ===== +output.append("\n") + +#replacements = {'MPI_COUNT':'MPI_Count_ABI_INTERNAL', +# 'MPI_AINT':'MPI_Aint_ABI_INTERNAL', +# 'MPI_OFFSET':'MPI_Offset_ABI_INTERNAL'} +replacements = {'MPI_COUNT':'MPI_Count', + 'MPI_AINT':'MPI_Aint', + 'MPI_OFFSET':'MPI_Offset'} for i, line in enumerate(output): line = line.replace(r"\ldots", "...") + for key, value in replacements.items(): + if MANGLE_NAMES: + value = value+'_ABI_INTERNAL' + line = line.replace(f'@{key}@', value) if MANGLE_NAMES: + # Replace datatypes with their internal ABI counterparts for datatype in INTERNAL_DATATYPES: # Need to include the extra space here or else we'll edit functions # like "MPI_Group_difference" datatype_pattern = r"([\( ]?)(" + datatype + r")([; \*\)]{1})" line = re.sub(datatype_pattern, f"\\g<1>\\g<2>{ABI_INTERNAL}\\g<3>", line) - if "MPI_Fint" in line: - # Comment out a line if it has references to MPI_Fint, we don't need - # that for the ABI - line = f"/* {line} */" + # TODO: need to enhance pympistandard to be able to prune out deprecated functions + # This stands in as a workaround + comment_out = False + comment_out = any(i in line for i in DEPRECATED_FUNCTIONS) + + # function is not in the ABI standard (things in MPI 5.1 chapter 19 sections 19.3.4 and 19.3.5 + # TODO: need to enhance pympistandard to have field in json to indicate a + # function is not in the ABI standard (things in MPI 5.1 chapter 19 sections 19.3.4 and 19.3.5 + if "MPI_Fint" in line or "MPI_F08_status" in line: + comment_out = True + + if comment_out == True: + # Comment out a line if it has references to MPI_Fint or MPI_F08_status, since + # functions with these argument types are not in the ABI + line = line[:-1] + line = f"/* {line} */" + "\n" # TODO: pympistandard creates `MPI_Info_create_env` with its `argv` # parameter being of type `char *` instead of `char **` --- as defined in # the standard. diff --git a/ompi/mpi/bindings/ompi_bindings/c.py b/ompi/mpi/bindings/ompi_bindings/c.py index e51260b55fa..7de3ec1d39b 100644 --- a/ompi/mpi/bindings/ompi_bindings/c.py +++ b/ompi/mpi/bindings/ompi_bindings/c.py @@ -34,6 +34,8 @@ from ompi_bindings.c_type import Type from ompi_bindings.parser import SourceTemplate +c_intrinsic_types = ['char', 'int', 'long int', 'void'] +#OMPI_ABI_HANDLE_BASE_OFFSET = '16385' class ABIHeaderBuilder: """ABI header builder code.""" @@ -80,6 +82,139 @@ def dump_lines(self, lines): for line in lines: self.dump(line) + def define(self, type_, name, value): + self.dump(f'#define {name} OMPI_CAST_CONSTANT({type_}, {value})') + + def define_all(self, type_, constants): + for i, const in enumerate(constants): + self.define(self.mangle_name(type_), self.mangle_name(const), i + 1) + self.dump() + + def dump_header(self): + header_guard = '_ABI_INTERNAL_' + self.dump(f'#ifndef {header_guard}') + self.dump(f'#define {header_guard}') + + self.dump('#include "stddef.h"') + self.dump('#include "stdint.h"') + + self.dump(""" +#if defined(c_plusplus) || defined(__cplusplus) +extern "C" { +#endif +""") + + self.dump(""" +#if defined(c_plusplus) || defined(__cplusplus) +#define OMPI_CAST_CONSTANT(type, value) (static_cast (static_cast (value))) +#else +#define OMPI_CAST_CONSTANT(type, value) ((type) ((void *) value)) +#endif +""") + + for i, err in enumerate(consts.ERROR_CLASSES): + self.dump(f'#define {self.mangle_name(err)} {i + 1}') + self.dump() + + self.define_all('MPI_Datatype', consts.PREDEFINED_DATATYPES) + self.define_all('MPI_Op', consts.RESERVED_OPS) + self.define_all('MPI_Comm', consts.RESERVED_COMMUNICATORS) + self.define_all('MPI_Errhandler', consts.RESERVED_ERRHANDLERS) + self.define_all('MPI_Group', consts.RESERVED_GROUPS) + self.define_all('MPI_Request', consts.RESERVED_REQUESTS) + self.define_all('MPI_Session', consts.RESERVED_SESSIONS) + self.define_all('MPI_Win', consts.RESERVED_WINDOWS) + self.define_all('MPI_Info', consts.RESERVED_INFOS) + self.define_all('MPI_File', consts.RESERVED_FILES) + self.define_all('MPI_Message', consts.RESERVED_MESSAGES) + + for name, value in consts.VARIOUS_CONSTANTS.items(): + self.dump(f'#define {self.mangle_name(name)} {value}') + self.dump() + + status_type = self.mangle_name('MPI_Status') + for i, name in enumerate(consts.IGNORED_STATUS_HANDLES): + self.define(f'{status_type} *', self.mangle_name(name), i + 1) + self.dump() + + for i, name in enumerate(consts.COMMUNICATOR_SPLIT_TYPES): + self.dump(f'#define {self.mangle_name(name)} {i}') + self.dump() + + for mpi_type, c_type in consts.C_OPAQUE_TYPES.items(): + self.dump(f'typedef {c_type} {self.mangle_name(mpi_type)};') + self.dump() + + for handle in consts.C_HANDLES: + prefix, suffix = handle.split('_') + name = f'{prefix}_ABI_{suffix}' + self.dump(f'typedef struct {self.mangle_name(name)} *{self.mangle_name(handle)};') + self.dump() + self.dump(""" +struct MPI_Status_ABI { + int MPI_SOURCE; + int MPI_TAG; + int MPI_ERROR; + int MPI_Internal[5]; +};""") + self.dump(f'typedef struct MPI_Status_ABI {self.mangle_name("MPI_Status")};') + self.dump() + # user functions + self.dump('typedef int (MPI_Copy_function)(MPI_Comm_ABI_INTERNAL, int, void *, void *, void *, int *);') + self.dump('typedef int (MPI_Delete_function)(MPI_Comm_ABI_INTERNAL, int, void *, void *);') +# +# generate prototypes for user call back functions +# + for handle in consts.C_ATTRIBUTE_OBJS: + prefix, suffix = handle.split('_') + copy_callback_func_name = f'{handle}_copy_attr_function' + copy_callback_func_name = f'{self.mangle_name(copy_callback_func_name)}' + delete_callback_func_name = f'{handle}_delete_attr_function' + delete_callback_func_name = f'{self.mangle_name(delete_callback_func_name)}' + # + # stupid MPI standard naming consistency + # + if handle == 'MPI_Type': + obj_arg_type = f'{self.mangle_name("MPI_Datatype")}' + else: + obj_arg_type = f'{self.mangle_name(handle)}' + obj_arg_name = f'old{suffix}'.lower() + obj_arg = f'{obj_arg_type} {obj_arg_name}' + keyval_arg = f'int {suffix}_keyval'.lower() + self.dump(f'typedef int ({copy_callback_func_name})({obj_arg}, {keyval_arg}, void *, void *, void *,int *);') + self.dump(f'typedef int ({delete_callback_func_name})({obj_arg}, {keyval_arg}, void *, void *);') + + # Function signatures + for sig in self.signatures: + self.dump(f'{sig};') + self.dump('int MPI_Abi_details(int *buflen, char *details, MPI_Info *info);') + self.dump('int MPI_Abi_version(int *abi_major, int *abi_minor);') + + self.dump(""" +#if defined(c_plusplus) || defined(__cplusplus) +} +#endif +""") + self.dump(f'#endif /* {header_guard} */') + +class ABIConverterBuilder: + """ABI converter builder code.""" + + def __init__(self, out): + self.out = out + + def mangle_name(self, extname): + """Mangle names""" + return util.abi_internal_name(extname) + + def dump(self, *pargs, **kwargs): + self.out.dump(*pargs, **kwargs) + + def dump_lines(self, lines): + lines = util.indent_lines(lines, 4 * ' ', start=1) + for line in lines: + self.dump(line) + def generate_error_convert_fn(self): self.dump(f'{consts.INLINE_ATTRS} int {ConvertFuncs.ERROR_CLASS}(int error_class)') self.dump('{') @@ -89,16 +224,105 @@ def generate_error_convert_fn(self): lines.append(f'case {self.mangle_name(error)}:') lines.append(f'return {error};') lines.append('default:') - lines.append('return error_class;') + lines.append('return (error_class - %s);' % ('OMPI_ABI_HANDLE_BASE_OFFSET')) lines.append('}') self.dump_lines(lines) self.dump('}') - def generic_convert(self, fn_name, param_name, type_, value_names): - intern_type = self.mangle_name(type_) + def generate_error_convert_fn_intern_to_abi(self): + self.dump(f'{consts.INLINE_ATTRS} int {ConvertOMPIToStandard.ERROR_CLASS}(int error_class)') + self.dump('{') + lines = [] + lines.append('switch (error_class) {') + for error in consts.ERROR_CLASSES: + lines.append(f'case {error}:') + lines.append(f'return {self.mangle_name(error)};') + lines.append('default:') + lines.append('return (error_class + %s);' % ('OMPI_ABI_HANDLE_BASE_OFFSET')) + lines.append('}') + self.dump_lines(lines) + self.dump('}') + + def generate_new_datatype_convert_fn(self): + arg_type = self.mangle_name('MPI_Datatype') + self.dump(f'{consts.INLINE_ATTRS} MPI_Datatype {ConvertFuncs.DATATYPE}({arg_type} datatype)') + self.dump('{') + lines = [] + for i, value_name in enumerate(consts.PREDEFINED_DATATYPES): + intern_name = self.mangle_name(value_name) + if i == 0: + lines.append('if (%s == datatype) {' % (intern_name)) + else: + lines.append('} else if (%s == datatype) {' % (intern_name)) + lines.append(f'return {value_name};') + # + # now shoe-horn in optional fortran predefined types + # + lines.append('#if OMPI_BUILD_FORTRAN_BINDINGS') + for i,value_name in enumerate(consts.PREDEFINED_OPTIONAL_FORTRAN_DATATYPES): + intern_name = self.mangle_name(value_name) + base_type = value_name[4:] + lines.append('} else if (%s == datatype) {' % (intern_name)) + lines.append(f'#if OMPI_HAVE_FORTRAN_{base_type}') + lines.append(f'return {value_name};') + lines.append('#else') + lines.append('return MPI_DATATYPE_NULL;') + lines.append('#endif') + lines.append('#endif /* OMPI_BUILD_FORTRAN_BINDINGS */') + lines.append('}') + lines.append(f'return (MPI_Datatype) datatype;') + self.dump_lines(lines) + self.dump('}') + + def generate_new_datatype_convert_fn_intern_to_abi(self): + return_type = self.mangle_name('MPI_Datatype') + self.dump(f'{consts.INLINE_ATTRS} {return_type} {ConvertOMPIToStandard.DATATYPE}(MPI_Datatype datatype)') + self.dump('{') + lines = [] + for i, value_name in enumerate(consts.PREDEFINED_DATATYPES): + intern_name = self.mangle_name(value_name) + if i == 0: + lines.append('if (%s == datatype) {' % (value_name)) + else: + lines.append('} else if (%s == datatype) {' % (value_name)) + lines.append(f'return {intern_name};') + # + # now shoe-horn in optional fortran predefined types + # + mangle_null_name = self.mangle_name('MPI_DATATYPE_NULL') + lines.append('#if OMPI_BUILD_FORTRAN_BINDINGS') + for i,value_name in enumerate(consts.PREDEFINED_OPTIONAL_FORTRAN_DATATYPES): + intern_name = self.mangle_name(value_name) + base_type = value_name[4:] + lines.append(f'#if OMPI_HAVE_FORTRAN_{base_type}') + lines.append('} else if (%s == datatype) {' % (value_name)) + lines.append(f'return {intern_name};') + lines.append('#endif') + lines.append('#endif /* OMPI_BUILD_FORTRAN_BINDINGS */') + lines.append('}') + lines.append(f'return ({return_type}) datatype;') + self.dump_lines(lines) + self.dump('}') + + def generic_convert(self, fn_name, param_name, type_, value_names, offset=None): + is_ptr_arg = False + tmp_type = type_ + if (tmp_type[-1] == '*'): + is_ptr_arg = True + tmp_type = tmp_type[:-1].strip() + if tmp_type not in c_intrinsic_types: + intern_type = self.mangle_name(tmp_type) + else: + intern_type = tmp_type + if (is_ptr_arg == True): + intern_type = intern_type + ' *' self.dump(f'{consts.INLINE_ATTRS} {type_} {fn_name}({intern_type} {param_name})') self.dump('{') lines = [] + if (offset != None): + lines.append('if (%s <= %s) {' % (offset, param_name)) + lines.append('return (%s - %s);' % (param_name, offset)) + lines.append('}') for i, value_name in enumerate(value_names): intern_name = self.mangle_name(value_name) if i == 0: @@ -111,8 +335,18 @@ def generic_convert(self, fn_name, param_name, type_, value_names): self.dump_lines(lines) self.dump('}') - def generic_convert_reverse(self, fn_name, param_name, type_, value_names): - intern_type = self.mangle_name(type_) + def generic_convert_reverse(self, fn_name, param_name, type_, value_names, offset=None): + is_ptr_arg = False + tmp_type = type_ + if (tmp_type[-1] == '*'): + is_ptr_arg = True + tmp_type = tmp_type[:-1].strip() + if tmp_type not in c_intrinsic_types: + intern_type = self.mangle_name(tmp_type) + else: + intern_type = tmp_type + if (is_ptr_arg == True): + intern_type = intern_type + ' *' self.dump(f'{consts.INLINE_ATTRS} {intern_type} {fn_name}({type_} {param_name})') self.dump('{') lines = [] @@ -124,7 +358,10 @@ def generic_convert_reverse(self, fn_name, param_name, type_, value_names): lines.append('} else if (%s == %s) {' % (value_name, param_name)) lines.append(f'return {intern_name};') lines.append('}') - lines.append(f'return ({intern_type}) {param_name};') + if (offset == None): + lines.append(f'return ({intern_type}) {param_name};') + else: + lines.append(f'return ({intern_type}) ({param_name} + {offset});') self.dump_lines(lines) self.dump('}') @@ -158,6 +395,24 @@ def generate_errhandler_convert_fn(self): def generate_errhandler_convert_fn_intern_to_abi(self): self.generic_convert_reverse(ConvertOMPIToStandard.ERRHANDLER, 'errorhandler', 'MPI_Errhandler', consts.RESERVED_ERRHANDLERS) + def generate_comm_copy_attr_convert_fn(self): + self.generic_convert(ConvertFuncs.COMM_COPY_ATTR_FUNCTION, 'comm_copy_attr_fn', 'MPI_Comm_copy_attr_function *', consts.RESERVED_COMM_COPY_ATTR_FNS) + + def generate_comm_delete_attr_convert_fn(self): + self.generic_convert(ConvertFuncs.COMM_DELETE_ATTR_FUNCTION, 'comm_delete_attr_fn', 'MPI_Comm_delete_attr_function *', consts.RESERVED_COMM_DEL_ATTR_FNS) + + def generate_type_copy_attr_convert_fn(self): + self.generic_convert(ConvertFuncs.TYPE_COPY_ATTR_FUNCTION, 'type_copy_attr_fn', 'MPI_Type_copy_attr_function *', consts.RESERVED_TYPE_COPY_ATTR_FNS) + + def generate_type_delete_attr_convert_fn(self): + self.generic_convert(ConvertFuncs.TYPE_DELETE_ATTR_FUNCTION, 'type_delete_attr_fn', 'MPI_Type_delete_attr_function *', consts.RESERVED_TYPE_DEL_ATTR_FNS) + + def generate_win_copy_attr_convert_fn(self): + self.generic_convert(ConvertFuncs.WIN_COPY_ATTR_FUNCTION, 'win_copy_attr_fn', 'MPI_Win_copy_attr_function *', consts.RESERVED_WIN_COPY_ATTR_FNS) + + def generate_win_delete_attr_convert_fn(self): + self.generic_convert(ConvertFuncs.WIN_DELETE_ATTR_FUNCTION, 'win_delete_attr_fn', 'MPI_Win_delete_attr_function *', consts.RESERVED_WIN_DEL_ATTR_FNS) + def generate_group_convert_fn(self): self.generic_convert(ConvertFuncs.GROUP, 'group', 'MPI_Group', consts.RESERVED_GROUPS) @@ -171,7 +426,7 @@ def generate_message_convert_fn_intern_to_abi(self): self.generic_convert_reverse(ConvertOMPIToStandard.MESSAGE, 'message', 'MPI_Message', consts.RESERVED_MESSAGES) def generate_op_convert_fn(self): - self.generic_convert(ConvertFuncs.OP, 'op', 'MPI_Op', consts.COLLECTIVE_OPERATIONS) + self.generic_convert(ConvertFuncs.OP, 'op', 'MPI_Op', consts.RESERVED_OPS) def generate_op_convert_fn_intern_to_abi(self): self.generic_convert_reverse(ConvertOMPIToStandard.OP, 'op', 'MPI_Op', consts.RESERVED_OPS) @@ -188,6 +443,180 @@ def generate_win_convert_fn(self): def generate_win_convert_fn_intern_to_abi(self): self.generic_convert_reverse(ConvertOMPIToStandard.WIN, 'win', 'MPI_Win', consts.RESERVED_WINDOWS) + def generate_attr_key_convert_fn(self): + self.generic_convert(ConvertFuncs.ATTR_KEY, 'key', 'int', consts.RESERVED_ATTR_KEYS, 'OMPI_ABI_HANDLE_BASE_OFFSET') + + def generate_attr_key_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.ATTR_KEY, 'key', 'int', consts.RESERVED_ATTR_KEYS, 'OMPI_ABI_HANDLE_BASE_OFFSET') + + def generate_comm_cmp_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.COMM_CMP, 'result', 'int', consts.COMM_GROUP_COMPARE_VALS) + + def generate_ts_level_convert_fn(self): + self.generic_convert(ConvertFuncs.TS_LEVEL, 'level', 'int', consts.TS_LEVEL_VALUES) + + def generate_ts_level_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.TS_LEVEL, 'level', 'int', consts.TS_LEVEL_VALUES) + + def generate_tag_convert_fn(self): + self.generic_convert(ConvertFuncs.TAG, 'tag', 'int', consts.RESERVED_TAGS) + + def generate_tag_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.TAG, 'tag', 'int', consts.RESERVED_TAGS) + + def generate_source_convert_fn(self): + self.generic_convert(ConvertFuncs.SOURCE, 'source', 'int', consts.RESERVED_SOURCE) + + def generate_source_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.SOURCE, 'tag', 'int', consts.RESERVED_SOURCE) + + def generate_root_convert_fn(self): + self.generic_convert(ConvertFuncs.ROOT, 'root', 'int', consts.RESERVED_ROOT) + + def generate_pvar_session_convert_fn(self): + self.generic_convert(ConvertFuncs.PVAR_SESSION, 'pe_session', 'MPI_T_pvar_session', consts.RESERVED_PVAR_SESSIONS) + + def generate_pvar_session_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.PVAR_SESSION, 'pe_session', 'MPI_T_pvar_session', consts.RESERVED_PVAR_SESSIONS) + + def generate_cvar_handle_convert_fn(self): + self.generic_convert(ConvertFuncs.CVAR_HANDLE, 'cvar_handle', 'MPI_T_cvar_handle', consts.RESERVED_CVAR_HANDLES) + + def generate_cvar_handle_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.CVAR_HANDLE, 'cvar_handle', 'MPI_T_cvar_handle', consts.RESERVED_CVAR_HANDLES) + + def generate_pvar_handle_convert_fn(self): + self.generic_convert(ConvertFuncs.PVAR_HANDLE, 'pvar_handle', 'MPI_T_pvar_handle', consts.RESERVED_PVAR_HANDLES) + + def generate_pvar_handle_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.PVAR_HANDLE, 'pvar_handle', 'MPI_T_pvar_handle', consts.RESERVED_PVAR_HANDLES) + + def generate_t_enum_convert_fn(self): + self.generic_convert(ConvertFuncs.T_ENUM, 't_enum', 'MPI_T_enum', consts.RESERVED_T_ENUMS) + + def generate_t_enum_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.T_ENUM, 'pvar_handle', 'MPI_T_enum', consts.RESERVED_T_ENUMS) + + def generate_t_bind_convert_fn(self): + self.generic_convert(ConvertFuncs.T_BIND, 'bind', 'int', consts.T_BIND_VALUES) + + def generate_t_bind_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.T_BIND, 'bind', 'int', consts.T_BIND_VALUES) + + def generate_t_verbosity_convert_fn(self): + self.generic_convert(ConvertFuncs.T_VERBOSITY, 'verbosity', 'int', consts.T_VERBOSITY_VALUES) + + def generate_t_verbosity_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.T_VERBOSITY, 'verbosity', 'int', consts.T_VERBOSITY_VALUES) + + def generate_t_source_order_convert_fn(self): + self.generic_convert(ConvertFuncs.T_SOURCE_ORDER, 'order', 'MPI_T_source_order', consts.T_SOURCE_ORDER_VALUES) + + def generate_t_source_order_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.T_SOURCE_ORDER, 'order', 'MPI_T_source_order', consts.T_SOURCE_ORDER_VALUES) + + def generate_pvar_class_convert_fn(self): + self.generic_convert(ConvertFuncs.PVAR_CLASS, 'pvar_class', 'int', consts.T_PVAR_CLASS_VALUES) + + def generate_pvar_class_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.PVAR_CLASS, 'order', 'int', consts.T_PVAR_CLASS_VALUES) + + def generate_t_cb_safety_convert_fn(self): + self.generic_convert(ConvertFuncs.T_CB_SAFETY, 'safety', 'MPI_T_cb_safety', consts.T_CB_SAFETY_VALUES) + + def generate_comm_split_type_convert_fn(self): + self.generic_convert(ConvertFuncs.SPLIT_TYPE, 'split_type', 'int', consts.COMMUNICATOR_SPLIT_TYPES) + + def generate_weight_convert_fn(self): + self.generic_convert(ConvertFuncs.WEIGHTS, 'weights', 'int *', consts.RESERVED_WEIGHTS) + + def generate_subarray_order_convert_fn(self): + self.generic_convert(ConvertFuncs.SUBARRAY_ORDER, 'order', 'int', consts.SUBARRAY_ORDER_TYPES) + + def generate_subarray_distrib_types_convert_fn(self): + self.generic_convert(ConvertFuncs.SUBARRAY_DISTRIB_TYPES, 'dist', 'int', consts.SUBARRAY_DISTRIB_TYPES) + + def generate_subarray_dargs_types_convert_fn(self): + self.generic_convert(ConvertFuncs.SUBARRAY_DARGS_TYPES, 'darg', 'int', consts.SUBARRAY_DARGS_TYPES) + + def generate_whence_convert_fn(self): + self.generic_convert(ConvertFuncs.WHENCE, 'whence', 'int', consts.WHENCE_VALUES) + + def generate_combiner_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.COMBINER, 'combiner', 'int', consts.COMBINER_VALUES) + + def generate_typeclass_convert_fn(self): + self.generic_convert(ConvertFuncs.TYPECLASS, 'typeclass', 'int', consts.TYPECLASS_VALUES) + + def generate_win_lock_convert_fn(self): + self.generic_convert(ConvertFuncs.WIN_LOCK, 'lock_assert', 'int', consts.WIN_LOCK_VALUES) + + def generate_topo_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.TOPO, 'status', 'int', consts.TOPO_VALUES) + + def generate_buffer_convert_fn(self): + self.generic_convert(ConvertFuncs.BUFFER, 'buffer', 'void *', consts.BUFFER_VALUES) + + def generate_buffer_convert_fn_intern_to_abi(self): + self.generic_convert_reverse(ConvertOMPIToStandard.BUFFER, 'buffer', 'void *', consts.BUFFER_VALUES) + + def generate_mode_bits_convert_fn(self): + self.dump(f'{consts.INLINE_ATTRS} int {ConvertFuncs.MODE_BITS}(int mode_bits)') + self.dump('{') + lines = [] + lines.append('int ret_value = 0;') + for value_name in consts.MODE_BITS: + intern_name = self.mangle_name(value_name) + lines.append('if (%s & mode_bits ) {' % (intern_name)) + lines.append('ret_value |= %s;' % (value_name)) + lines.append('}') + lines.append('return ret_value;') + self.dump_lines(lines) + self.dump('}') + + def generate_mode_bits_convert_fn_intern_to_abi(self): + self.dump(f'{consts.INLINE_ATTRS} int {ConvertOMPIToStandard.MODE_BITS}(int mode_bits)') + self.dump('{') + lines = [] + lines.append('int ret_value = 0;') + for value_name in consts.MODE_BITS: + intern_name = self.mangle_name(value_name) + lines.append('if (%s & mode_bits ) {' % (value_name)) + lines.append('ret_value |= %s;' % (intern_name)) + lines.append('}') + lines.append('return ret_value;') + self.dump_lines(lines) + self.dump('}') + + def generate_rma_mode_bits_convert_fn(self): + self.dump(f'{consts.INLINE_ATTRS} int {ConvertFuncs.RMA_MODE_BITS}(int mode_bits)') + self.dump('{') + lines = [] + lines.append('int ret_value = 0;') + for value_name in consts.RMA_MODE_BITS: + intern_name = self.mangle_name(value_name) + lines.append('if (%s & mode_bits ) {' % (intern_name)) + lines.append('ret_value |= %s;' % (value_name)) + lines.append('}') + lines.append('return ret_value;') + self.dump_lines(lines) + self.dump('}') + + def generate_rma_mode_bits_convert_fn_intern_to_abi(self): + self.dump(f'{consts.INLINE_ATTRS} int {ConvertOMPIToStandard.RMA_MODE_BITS}(int mode_bits)') + self.dump('{') + lines = [] + lines.append('int ret_value = 0;') + for value_name in consts.RMA_MODE_BITS: + intern_name = self.mangle_name(value_name) + lines.append('if (%s & mode_bits ) {' % (value_name)) + lines.append('ret_value |= %s;' % (intern_name)) + lines.append('}') + lines.append('return ret_value;') + self.dump_lines(lines) + self.dump('}') + + def generate_pointer_convert_fn(self, type_, fn_name, constants): abi_type = self.mangle_name(type_) self.dump(f'{consts.INLINE_ATTRS} void {fn_name}({abi_type} *ptr)') @@ -205,7 +634,8 @@ def generate_pointer_convert_fn(self, type_, fn_name, constants): self.dump('}') def generate_request_convert_fn(self): - self.generate_pointer_convert_fn('MPI_Request', ConvertFuncs.REQUEST, consts.RESERVED_REQUESTS) +# self.generate_pointer_convert_fn('MPI_Request', ConvertFuncs.REQUEST, consts.RESERVED_REQUESTS) + self.generic_convert(ConvertFuncs.REQUEST, 'request', 'MPI_Request', consts.RESERVED_REQUESTS) def generate_request_convert_fn_intern_to_abi(self): self.generic_convert_reverse(ConvertOMPIToStandard.REQUEST, 'request', 'MPI_Request', consts.RESERVED_REQUESTS) @@ -219,10 +649,10 @@ def generate_status_convert_fn(self): self.dump(f'{consts.INLINE_ATTRS} void {ConvertFuncs.STATUS}({type_} *out, {abi_type} *inp)') self.dump('{') self.dump(' void *ptr = &out->_ucount;') - self.dump(' out->MPI_SOURCE = inp->MPI_SOURCE;') - self.dump(' out->MPI_TAG = inp->MPI_TAG;') - self.dump(' out->_cancelled = inp->MPI_Internal[0];') - self.dump(' memcpy(ptr, &inp->MPI_Internal[1],sizeof(out->_ucount));') + self.dump(f' out->MPI_SOURCE = {ConvertFuncs.SOURCE}(inp->MPI_SOURCE);') + self.dump(f' out->MPI_TAG = {ConvertFuncs.TAG}(inp->MPI_TAG);') + self.dump(' out->_cancelled = inp->MPI_internal[0];') + self.dump(' memcpy(ptr, &inp->MPI_internal[1], sizeof(out->_ucount));') self.dump(f' out->MPI_ERROR = {ConvertFuncs.ERROR_CLASS}(inp->MPI_ERROR);') # Ignoring the private fields for now self.dump('}') @@ -232,15 +662,48 @@ def generate_status_convert_fn_intern_to_abi(self): abi_type = self.mangle_name(type_) self.dump(f'{consts.INLINE_ATTRS} void {ConvertOMPIToStandard.STATUS}({abi_type} *out, {type_} *inp)') self.dump('{') - self.dump(' void *ptr = &out->MPI_Internal[1];') - self.dump(' out->MPI_SOURCE = inp->MPI_SOURCE;') - self.dump(' out->MPI_TAG = inp->MPI_TAG;') - self.dump(' out->MPI_Internal[0] =inp->_cancelled;') - self.dump(' memcpy(ptr, &inp->_ucount,sizeof(inp->_ucount));') -# self.dump(f' out->MPI_ERROR = {ConvertOMPIToStandard.ERROR_CLASS}(inp->MPI_ERROR);') + self.dump(' void *ptr = &out->MPI_internal[1];') + self.dump(f' out->MPI_SOURCE = {ConvertOMPIToStandard.SOURCE}(inp->MPI_SOURCE);') + self.dump(f' out->MPI_TAG = {ConvertOMPIToStandard.TAG}(inp->MPI_TAG);') + self.dump(' out->MPI_internal[0] = inp->_cancelled;') + self.dump(' memcpy(ptr, &inp->_ucount, sizeof(inp->_ucount));') + self.dump(f' out->MPI_ERROR = {ConvertOMPIToStandard.ERROR_CLASS}(inp->MPI_ERROR);') # Ignoring the private fields for now self.dump('}') + def generate_errhandler_args_convert_fn_intern_to_abi(self, header_only=False): + if header_only == True: + self.dump(f'void ompi_convert_errhandler_args_intern_to_abi(void *object, int object_type, int *err_code);') + return + self.dump(f'void ompi_convert_errhandler_args_intern_to_abi(void *object, int object_type, int *err_code)') + self.dump('{') + lines = [] + lines.append('ompi_communicator_t **comm;') + lines.append('ompi_file_t **file;') + lines.append('ompi_instance_t **instance;') + lines.append('ompi_win_t **win;') + lines.append(f'*err_code = {ConvertOMPIToStandard.ERROR_CLASS}(*err_code);') + lines.append('switch(object_type) {') + lines.append('case OMPI_ERRHANDLER_TYPE_COMM:') + lines.append('comm = (ompi_communicator_t **)object;') + lines.append(f'*comm = (ompi_communicator_t *){ConvertOMPIToStandard.COMM}(*comm);') + lines.append('break;') + lines.append('case OMPI_ERRHANDLER_TYPE_WIN:') + lines.append('win = (ompi_win_t **)object;') + lines.append(f'*win = (ompi_win_t *){ConvertOMPIToStandard.WIN}(*win);') + lines.append('break;') + lines.append('case OMPI_ERRHANDLER_TYPE_FILE:') + lines.append('file = (ompi_file_t **)object;') + lines.append(f'*file = (ompi_file_t *){ConvertOMPIToStandard.FILE}(*file);') + lines.append('break;') + lines.append('case OMPI_ERRHANDLER_TYPE_INSTANCE:') + lines.append('instance = (ompi_instance_t **)object;') + lines.append(f'*instance = (ompi_instance_t *){ConvertOMPIToStandard.SESSION}(*instance);') + lines.append('break;') + lines.append('};') + self.dump_lines(lines); + self.dump('}') + def define(self, type_, name, value): self.dump(f'#define {name} OMPI_CAST_CONSTANT({type_}, {value})') @@ -249,8 +712,9 @@ def define_all(self, type_, constants): self.define(self.mangle_name(type_), self.mangle_name(const), i + 1) self.dump() - def dump_header(self): - header_guard = '_ABI_INTERNAL_' + def dump_include_file_code(self): + '''generate code to use in include source file for converter functions''' + header_guard = '_ABI_CONVERTERS_' self.dump(f'#ifndef {header_guard}') self.dump(f'#define {header_guard}') @@ -262,125 +726,122 @@ def dump_header(self): extern "C" { #endif """) + self.dump('/*') + self.dump(' * see section 20.3.4 of the MPI 5.0 standard') + self.dump(' */') + self.dump('#define OMPI_ABI_HANDLE_BASE_OFFSET 16385') + self.dump('\n') + self.dump('/*') + self.dump(' * helper functions for abi generated routines ') + self.dump(' */') + self.dump(f'{consts.INLINE_ATTRS} void *ompi_abi_malloc(MPI_Count count, size_t elsize)') + self.dump('{') + lines = [] + lines.append('void *aptr = NULL;') + lines.append('if (count > 0) {') + lines.append('aptr = (void *)malloc(count * elsize);') + lines.append('assert(NULL != aptr);') + lines.append('}') + lines.append('return aptr;') + lines.append('}') + lines.append('\n') + self.dump_lines(lines) - self.dump(""" -#if defined(c_plusplus) || defined(__cplusplus) -#define OMPI_CAST_CONSTANT(type, value) (static_cast (static_cast (value))) -#else -#define OMPI_CAST_CONSTANT(type, value) ((type) ((void *) value)) -#endif -""") - - for i, err in enumerate(consts.ERROR_CLASSES): - self.dump(f'#define {self.mangle_name(err)} {i + 1}') - self.dump() - - self.define_all('MPI_Datatype', consts.PREDEFINED_DATATYPES) - self.define_all('MPI_Op', consts.COLLECTIVE_OPERATIONS) - self.define_all('MPI_Op', consts.RESERVED_OPS) - self.define_all('MPI_Comm', consts.RESERVED_COMMUNICATORS) - self.define_all('MPI_Errhandler', consts.RESERVED_ERRHANDLERS) - self.define_all('MPI_Group', consts.RESERVED_GROUPS) - self.define_all('MPI_Request', consts.RESERVED_REQUESTS) - self.define_all('MPI_Session', consts.RESERVED_SESSIONS) - self.define_all('MPI_Win', consts.RESERVED_WINDOWS) - self.define_all('MPI_Info', consts.RESERVED_INFOS) - self.define_all('MPI_File', consts.RESERVED_FILES) - self.define_all('MPI_Message', consts.RESERVED_MESSAGES) - - for name, value in consts.VARIOUS_CONSTANTS.items(): - self.dump(f'#define {self.mangle_name(name)} {value}') - self.dump() - - status_type = self.mangle_name('MPI_Status') - for i, name in enumerate(consts.IGNORED_STATUS_HANDLES): - self.define(f'{status_type} *', self.mangle_name(name), i + 1) - self.dump() - - for i, name in enumerate(consts.COMMUNICATOR_SPLIT_TYPES): - self.dump(f'#define {self.mangle_name(name)} {i}') - self.dump() - - for mpi_type, c_type in consts.C_OPAQUE_TYPES.items(): - self.dump(f'typedef {c_type} {self.mangle_name(mpi_type)};') - self.dump() - - for handle in consts.C_HANDLES: - prefix, suffix = handle.split('_') - name = f'{prefix}_ABI_{suffix}' - self.dump(f'typedef struct {self.mangle_name(name)} *{self.mangle_name(handle)};') - self.dump() - self.dump(""" -struct MPI_Status_ABI { - int MPI_SOURCE; - int MPI_TAG; - int MPI_ERROR; - int MPI_Internal[5]; -};""") - self.dump(f'typedef struct MPI_Status_ABI {self.mangle_name("MPI_Status")};') - self.dump() - # user functions - self.dump('typedef int (MPI_Copy_function)(MPI_Comm_ABI_INTERNAL, int, void *, void *, void *, int *);') - self.dump('typedef int (MPI_Delete_function)(MPI_Comm_ABI_INTERNAL, int, void *, void *);') -# -# generate prototypes for user call back functions -# - for handle in consts.C_ATTRIBUTE_OBJS: - prefix, suffix = handle.split('_') - copy_callback_func_name = f'{handle}_copy_attr_function' - copy_callback_func_name = f'{self.mangle_name(copy_callback_func_name)}' - delete_callback_func_name = f'{handle}_delete_attr_function' - delete_callback_func_name = f'{self.mangle_name(delete_callback_func_name)}' - # - # stupid MPI standard naming consistency - # - if handle == 'MPI_Type': - obj_arg_type = f'{self.mangle_name("MPI_Datatype")}' - else: - obj_arg_type = f'{self.mangle_name(handle)}' - obj_arg_name = f'old{suffix}'.lower() - obj_arg = f'{obj_arg_type} {obj_arg_name}' - keyval_arg = f'int {suffix}_keyval'.lower() - self.dump(f'typedef int ({copy_callback_func_name})({obj_arg}, {keyval_arg}, void *, void *, void *,int *);') - self.dump(f'typedef int ({delete_callback_func_name})({obj_arg}, {keyval_arg}, void *, void *);') - - # Function signatures - for sig in self.signatures: - self.dump(f'{sig};') - self.dump('int MPI_Abi_details(int *buflen, char *details, MPI_Info *info);') - self.dump('int MPI_Abi_supported(int *flag);') - self.dump('int MPI_Abi_version(int *abi_major, int *abi_minor);') - -# -# the converters are no longer generated -# -# if not self.external: -# # Now generate the conversion code -# self.generate_error_convert_fn() -# self.generate_comm_convert_fn() -# self.generate_comm_convert_fn_intern_to_abi() -# self.generate_info_convert_fn() -# self.generate_info_convert_fn_intern_to_abi() -# self.generate_file_convert_fn() -# self.generate_file_convert_fn_intern_to_abi() -# self.generate_group_convert_fn() -# self.generate_group_convert_fn_intern_to_abi() -# self.generate_datatype_convert_fn() -# self.generate_datatype_convert_fn_intern_to_abi() -# self.generate_errhandler_convert_fn() -# self.generate_errhandler_convert_fn_intern_to_abi() -# self.generate_message_convert_fn() -# self.generate_message_convert_fn_intern_to_abi() -# self.generate_op_convert_fn() -# self.generate_op_convert_fn_intern_to_abi() -# self.generate_session_convert_fn() -# self.generate_session_convert_fn_intern_to_abi() -# self.generate_win_convert_fn() -# self.generate_win_convert_fn_intern_to_abi() -# self.generate_request_convert_fn() -# self.generate_request_convert_fn_intern_to_abi() -# self.generate_status_convert_fn() -# self.generate_status_convert_fn_intern_to_abi() + # + # generate prototypes for methods included in standalond converter methods file + # + self.dump('\n') + self.generate_errhandler_args_convert_fn_intern_to_abi(header_only=True) + self.dump('\n') + + # Now generate the conversion code - there's a reason for the order here + # some converters depend on others being declared earlier in the include + # file + self.generate_error_convert_fn() + self.generate_error_convert_fn_intern_to_abi() + self.generate_comm_convert_fn() + self.generate_comm_convert_fn_intern_to_abi() + self.generate_info_convert_fn() + self.generate_info_convert_fn_intern_to_abi() + self.generate_file_convert_fn() + self.generate_file_convert_fn_intern_to_abi() + self.generate_group_convert_fn() + self.generate_group_convert_fn_intern_to_abi() +# self.generate_datatype_convert_fn() +# self.generate_datatype_convert_fn_intern_to_abi() + self.generate_new_datatype_convert_fn() + self.generate_new_datatype_convert_fn_intern_to_abi() + self.generate_errhandler_convert_fn() + self.generate_errhandler_convert_fn_intern_to_abi() + self.generate_message_convert_fn() + self.generate_message_convert_fn_intern_to_abi() + self.generate_op_convert_fn() + self.generate_op_convert_fn_intern_to_abi() + self.generate_session_convert_fn() + self.generate_session_convert_fn_intern_to_abi() + self.generate_win_convert_fn() + self.generate_win_convert_fn_intern_to_abi() + self.generate_request_convert_fn() + self.generate_request_convert_fn_intern_to_abi() + self.generate_tag_convert_fn() + self.generate_tag_convert_fn_intern_to_abi() + self.generate_source_convert_fn() + self.generate_source_convert_fn_intern_to_abi() + self.generate_status_convert_fn() + self.generate_status_convert_fn_intern_to_abi() + self.generate_attr_key_convert_fn() + self.generate_attr_key_convert_fn_intern_to_abi() + self.generate_ts_level_convert_fn() + self.generate_ts_level_convert_fn_intern_to_abi() + self.generate_pvar_session_convert_fn() + self.generate_pvar_session_convert_fn_intern_to_abi() + self.generate_cvar_handle_convert_fn() + self.generate_cvar_handle_convert_fn_intern_to_abi() + self.generate_pvar_handle_convert_fn() + self.generate_pvar_handle_convert_fn_intern_to_abi() + self.generate_t_enum_convert_fn() + self.generate_t_enum_convert_fn_intern_to_abi() + self.generate_t_bind_convert_fn() + self.generate_t_bind_convert_fn_intern_to_abi() + self.generate_t_verbosity_convert_fn() + self.generate_t_verbosity_convert_fn_intern_to_abi() + self.generate_t_source_order_convert_fn() + self.generate_t_source_order_convert_fn_intern_to_abi() + self.generate_pvar_class_convert_fn() + self.generate_pvar_class_convert_fn_intern_to_abi() + self.generate_mode_bits_convert_fn() + self.generate_mode_bits_convert_fn_intern_to_abi() + self.generate_rma_mode_bits_convert_fn() + self.generate_rma_mode_bits_convert_fn_intern_to_abi() + self.generate_buffer_convert_fn() + self.generate_buffer_convert_fn_intern_to_abi() + + # + # the following only need abi to intern converters + # + self.generate_comm_copy_attr_convert_fn() + self.generate_comm_delete_attr_convert_fn() + self.generate_type_copy_attr_convert_fn() + self.generate_type_delete_attr_convert_fn() + self.generate_win_copy_attr_convert_fn() + self.generate_win_delete_attr_convert_fn() + self.generate_comm_split_type_convert_fn() + self.generate_weight_convert_fn() + self.generate_subarray_order_convert_fn() + self.generate_subarray_distrib_types_convert_fn() + self.generate_subarray_dargs_types_convert_fn() + self.generate_root_convert_fn() + self.generate_t_cb_safety_convert_fn() + self.generate_win_lock_convert_fn() + self.generate_whence_convert_fn() + self.generate_typeclass_convert_fn() + + # + # the following only need intern to abi converters + # + self.generate_comm_cmp_convert_fn_intern_to_abi() + self.generate_combiner_convert_fn_intern_to_abi() + self.generate_topo_convert_fn_intern_to_abi() self.dump(""" #if defined(c_plusplus) || defined(__cplusplus) @@ -389,6 +850,23 @@ def dump_header(self): """) self.dump(f'#endif /* {header_guard} */') + def dump_code(self): + '''generate code to use in standalone source file for converter functions''' + self.dump('#include "stddef.h"') + self.dump('#include "stdint.h"') + self.dump('#include "ompi/communicator/communicator.h"') + self.dump('#include "ompi/win/win.h"') + self.dump('#include "ompi/file/file.h"') + self.dump('#include "ompi/instance/instance.h"') + self.dump('#include "ompi/errhandler/errhandler.h"') + self.dump('#include "ompi/mpi/c/abi.h"') + self.dump('#include "ompi/mpi/c/abi_converters.h"') + + # + # special case converters: + # - errhandler functions convert + # + self.generate_errhandler_args_convert_fn_intern_to_abi() def print_profiling_header(fn_name, out): """Print the profiling header code.""" @@ -416,29 +894,45 @@ def print_cdefs_for_abi(out, abi_type='ompi'): out.dump('#undef OMPI_ABI_SRC') out.dump('#define OMPI_ABI_SRC 1') -def ompi_abi(base_name, template, out): +def generate_replacements(mangle_names=False): + replacements = {} + for key in consts.MAX_STRING_LEN_CONSTANTS: + if mangle_names == True: + val = util.abi_internal_name(key) + else: + val = key + replacements[key] = val + return replacements + +def ompi_abi(base_name, template, out, suppress_bc=False, suppress_nbc=False): """Generate the OMPI ABI functions.""" template.print_header(out) - print_profiling_header(base_name, out) - print_cdefs_for_bigcount(out) - print_cdefs_for_abi(out) - out.dump(template.prototype.signature(base_name, abi_type='ompi')) - template.print_body(func_name=base_name, out=out) + if suppress_nbc == False: + print_profiling_header(base_name, out) + print_cdefs_for_bigcount(out) + print_cdefs_for_abi(out) + out.dump(template.prototype.signature(base_name, abi_type='ompi')) + template.print_body(func_name=base_name, out=out, + replacements=generate_replacements(mangle_names=False)) # Check if we need to generate the bigcount interface - if util.prototype_has_bigcount(template.prototype): - base_name_c = f'{base_name}_c' + if util.prototype_has_bigcount(template.prototype) and suppress_bc == False: + # there are some special cases where we need to explicitly define the bigcount functions in the template file + if base_name[-2:] == "_c": + base_name_c = f'{base_name}' + else: + base_name_c = f'{base_name}_c' print_profiling_header(base_name_c, out) print_cdefs_for_bigcount(out, enable_count=True) print_cdefs_for_abi(out) out.dump(template.prototype.signature(base_name_c, abi_type='ompi', enable_count=True)) - template.print_body(func_name=base_name_c, out=out) - + template.print_body(func_name=base_name_c, out=out, + replacements=generate_replacements(mangle_names=False)) ABI_INTERNAL_HEADER = 'ompi/mpi/c/abi.h' ABI_INTERNAL_CONVERTOR = 'ompi/mpi/c/abi_converters.h' -def standard_abi(base_name, template, out): +def standard_abi(base_name, template, out, suppress_bc=False, suppress_nbc=False): """Generate the standard ABI functions.""" template.print_header(out) out.dump(f'#include "{ABI_INTERNAL_HEADER}"') @@ -457,21 +951,22 @@ def standard_abi(base_name, template, out): out.dump(line) # Static internal function (add a random component to avoid conflicts) - internal_name = f'ompi_abi_{template.prototype.name}' - print_cdefs_for_bigcount(out) - print_cdefs_for_abi(out, abi_type='standard') - internal_sig = template.prototype.signature(internal_name, abi_type='ompi', - enable_count=False) - out.dump(consts.INLINE_ATTRS, internal_sig) - template.print_body(func_name=base_name, out=out) - if util.prototype_has_bigcount(template.prototype): + if suppress_nbc == False: + internal_name = f'ompi_abi_{template.prototype.name}' + print_cdefs_for_bigcount(out) + print_cdefs_for_abi(out, abi_type='standard') + internal_sig = template.prototype.signature(internal_name, abi_type='ompi', + enable_count=False) + out.dump(consts.INLINE_ATTRS, internal_sig) + template.print_body(func_name=base_name, out=out, replacements=generate_replacements(mangle_names=True)) + if util.prototype_has_bigcount(template.prototype) and suppress_bc == False: internal_name = f'ompi_abi_{template.prototype.name}_c' print_cdefs_for_bigcount(out, enable_count=True) print_cdefs_for_abi(out, abi_type='standard') internal_sig = template.prototype.signature(internal_name, abi_type='ompi', enable_count=True) out.dump(consts.INLINE_ATTRS, internal_sig) - template.print_body(func_name=base_name, out=out) + template.print_body(func_name=base_name, out=out, replacements=generate_replacements(mangle_names=True)) def generate_function(prototype, fn_name, internal_fn, out, enable_count=False): """Generate a function for the standard ABI.""" @@ -486,6 +981,10 @@ def generate_function(prototype, fn_name, internal_fn, out, enable_count=False): return_type = prototype.return_type.construct(abi_type='standard') lines.append(f'{return_type.tmp_type_text()} ret_value;') for param in params: + if param.need_async_cleanup == True: + lines.append('int idx = 0;') + break + for param in params: # print("param = " + str(param) + " " + str(param.argument)) if param.init_code: lines.extend(param.init_code) @@ -502,14 +1001,26 @@ def generate_function(prototype, fn_name, internal_fn, out, enable_count=False): out.dump(line) out.dump('}') - internal_name = f'ompi_abi_{template.prototype.name}' - generate_function(template.prototype, base_name, internal_name, out) - if util.prototype_has_bigcount(template.prototype): - base_name_c = f'{base_name}_c' + if suppress_nbc == False: + internal_name = f'ompi_abi_{template.prototype.name}' + generate_function(template.prototype, base_name, internal_name, out) + if util.prototype_has_bigcount(template.prototype) and suppress_bc == False: + if base_name[-2:] == "_c": + base_name_c = f'{base_name}' + else: + base_name_c = f'{base_name}_c' internal_name = f'ompi_abi_{template.prototype.name}_c' generate_function(template.prototype, base_name_c, internal_name, out, enable_count=True) +def generate_converters(args, out): + """Generate ABI conversion methods for either the include file or the standalone source file""" + out.dump(f'/* {consts.GENERATED_MESSAGE} */') + builder = ABIConverterBuilder(out) + if args.type == 'include_file': + builder.dump_include_file_code() + else: + builder.dump_code() def generate_header(args, out): """Generate an ABI header and conversion code.""" @@ -524,8 +1035,11 @@ def generate_source(args, out): """Generate source file.""" out.dump(f'/* {consts.GENERATED_MESSAGE} */') template = SourceTemplate.load(args.source_file, type_constructor=Type.construct) - base_name = util.mpi_fn_name_from_base_fn_name(template.prototype.name) + if args.mpit == True: + base_name = util.mpit_fn_name_from_base_fn_name(template.prototype.name) + else: + base_name = util.mpi_fn_name_from_base_fn_name(template.prototype.name) if args.type == 'ompi': - ompi_abi(base_name, template, out) + ompi_abi(base_name, template, out, args.suppress_bc, args.suppress_nbc) else: - standard_abi(base_name, template, out) + standard_abi(base_name, template, out, args.suppress_bc, args.suppress_nbc) diff --git a/ompi/mpi/bindings/ompi_bindings/c_type.py b/ompi/mpi/bindings/ompi_bindings/c_type.py index 1ea6f1fbc0f..3a707a4c62a 100644 --- a/ompi/mpi/bindings/ompi_bindings/c_type.py +++ b/ompi/mpi/bindings/ompi_bindings/c_type.py @@ -1,4 +1,4 @@ -# Copyright (c) 2024 Triad National Security, LLC. All rights +# Copyright (c) 2024-2025 Triad National Security, LLC. All rights # reserved. # # $COPYRIGHT$ @@ -19,12 +19,13 @@ class Type(ABC): PARAMS_STANDARD_ABI = {} def __init__(self, type_name, name=None, - mangle_name=lambda name: abi_internal_name(name), - count_param=None, **kwargs): + mangle_name=lambda name: util.abi_internal_name(name), + count_param=None, outcount_param=None, **kwargs): self.type = type_name self.name = name self.count_param = count_param - self.mangle_name = util.abi_internal_name + self.outcount_param = outcount_param + self.mangle_name = mangle_name @staticmethod def construct(abi_type, type_name, **kwargs): @@ -32,7 +33,6 @@ def construct(abi_type, type_name, **kwargs): if abi_type == 'ompi': return Type.PARAMS_OMPI_ABI[type_name](type_name, **kwargs) elif abi_type == 'standard': -# print("Checkint oug type " + str(type_name)) return Type.PARAMS_STANDARD_ABI[type_name](type_name, **kwargs) else: raise RuntimeError(f'invalid ABI type {abi_type}') @@ -82,6 +82,7 @@ def tmp_type_text(self, enable_count=False): return self.type_text(enable_count=enable_count) def parameter(self, enable_count=False, **kwargs): + """Peturn the text to be used for this parameter in the prototype declaration.""" return f'{self.type_text(enable_count=enable_count)} {self.name}' @property @@ -89,17 +90,125 @@ def callback_wrapper_code(self): """Return True if this parameter has callback wrapper code to generate.""" return False -@Type.add_type('ERROR_CLASS') + @property + def need_async_cleanup(self): + """Return True if this parameter generates async memory cleanup code.""" + return False + +class StandardABIType(Type): + + @property + def tmpname(self): + return util.abi_tmp_name(self.name) + + @property + def argument(self): + return self.tmpname + + @staticmethod + def async_callback_index(self): + return "idx" + +@Type.add_type('ERROR_CLASS', abi_type=['ompi']) class TypeErrorClass(Type): def type_text(self, enable_count=False): return 'int' def return_code(self, name): - return [f'return {ConvertFuncs.ERROR_CLASS}({name});'] + return [f'return {name};'] + +@Type.add_type('ERROR_CLASS', abi_type=['standard']) +class TypeErrorClassStandard(StandardABIType): + + def type_text(self, enable_count=False): + return 'int' + + @property + def init_code(self): + return [f'int {self.tmpname} = {ConvertFuncs.ERROR_CLASS}({self.name});'] + + def return_code(self, name): + return [f'return {ConvertOMPIToStandard.ERROR_CLASS}({name});'] + + +@Type.add_type('ERROR_CLASS_OUT', abi_type=['ompi']) +class TypeErrorClassOut(Type): + + def type_text(self, enable_count=False): + return 'int *' + +@Type.add_type('ERROR_CLASS_OUT', abi_type=['standard']) +class TypeErrorClassOutStandard(StandardABIType): + + def type_text(self, enable_count=False): + return 'int *' + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.ERROR_CLASS}(*{self.name});'] + + @property + def argument(self): + return f'{self.name}' + +# +# types below seem duplicative of ERROR_CLASS but +# are provided for clarity in the template files +# to distinguish between classes and codes which can +# have different values (in theory) if they are not +# predeinfed by MPI +# +@Type.add_type('ERROR_CODE', abi_type=['ompi']) +class TypeErrorCode(Type): + + def type_text(self, enable_count=False): + return 'int' + + def return_code(self, name): + return [f'return {name};'] + +@Type.add_type('ERROR_CODE', abi_type=['standard']) +class TypeErrorCodeStandard(StandardABIType): + + def type_text(self, enable_count=False): + return 'int' + + @property + def init_code(self): + return [f'int {self.tmpname} = {ConvertFuncs.ERROR_CLASS}({self.name});'] + + def return_code(self, name): + return [f'return {ConvertOMPIToStandard.ERROR_CLASS}({name});'] + + +@Type.add_type('ERROR_CODE_OUT', abi_type=['ompi']) +class TypeErrorCodeOut(Type): + + def type_text(self, enable_count=False): + return 'int *' + +@Type.add_type('ERROR_CODE_OUT', abi_type=['standard']) +class TypeErrorCodeOutStandard(StandardABIType): + + def type_text(self, enable_count=False): + return 'int *' + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.ERROR_CLASS}(*{self.name});'] + + @property + def argument(self): + return f'{self.name}' + +@Type.add_type('BUFFER', abi_type=['ompi']) +class TypeBuffer(Type): + def type_text(self, enable_count=False): + return 'void *' -@Type.add_type('BUFFER') +@Type.add_type('BUFFER_CONST', abi_type=['ompi']) class TypeBuffer(Type): def type_text(self, enable_count=False): @@ -113,6 +222,48 @@ def type_text(self, enable_count=False): return f'void *' +@Type.add_type('BUFFER_ADDR_OUT', abi_type=['ompi']) +class TypeBufferOut(Type): + + def type_text(self, enable_count=False): + return f'void *' + + +@Type.add_type('BUFFER_ADDR_OUT', abi_type=['standard']) +class TypeBufferOutStandard(StandardABIType): + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *(void **){self.name} = {ConvertOMPIToStandard.BUFFER}(*(void **){self.name});'] + + def type_text(self, enable_count=False): + return f'void *' + + @property + def argument(self): + return f'{self.name}' + + +@Type.add_type('BUFFER', abi_type=['standard']) +class TypeBuffer(StandardABIType): + + @property + def init_code(self): + return [f'void *{self.tmpname} = (int *){ConvertFuncs.BUFFER}((void *){self.name});'] + + def type_text(self, enable_count=False): + return 'void *' + +@Type.add_type('BUFFER_CONST', abi_type=['standard']) +class TypeBuffer(StandardABIType): + + @property + def init_code(self): + return [f'void *{self.tmpname} = (int *){ConvertFuncs.BUFFER}((void *){self.name});'] + + def type_text(self, enable_count=False): + return 'const void *' + @Type.add_type('COUNT') class TypeCount(Type): @@ -139,6 +290,14 @@ def parameter(self, enable_count=False, **kwargs): count_type = 'MPI_Count' if enable_count else 'int' return f'const {count_type} {self.name}[]' +@Type.add_type('COUNT_ARRAY_OUT') +class TypeCountArrayOut(TypeCountArray): + """Array of counts out (either int or MPI_Count).""" + + def parameter(self, enable_count=False, **kwargs): + count_type = 'MPI_Count' if enable_count else 'int' + return f'{count_type} {self.name}[]' + @Type.add_type('AINT_COUNT_ARRAY') class TypeAintCountArray(Type): """Array of counts (either MPI_Aint or MPI_Count).""" @@ -154,6 +313,14 @@ def parameter(self, enable_count=False, **kwargs): count_type = 'MPI_Count' if enable_count else 'MPI_Aint' return f'const {count_type} {self.name}[]' +@Type.add_type('AINT_COUNT_ARRAY_OUT') +class TypeAintCountArrayOut(TypeAintCountArray): + """Array of counts (either MPI_Aint or MPI_Count).""" + + def parameter(self, enable_count=False, **kwargs): + count_type = 'MPI_Count' if enable_count else 'MPI_Aint' + return f'{count_type} {self.name}[]' + @Type.add_type('ELEMENT_COUNT') class ElementCountType(Type): """Special count type for MPI_Get_element_x""" @@ -226,6 +393,11 @@ def type_text(self, enable_count=False): def parameter(self, enable_count=False, **kwargs): return f'const MPI_Aint {self.name}[]' +@Type.add_type('AINT_ARRAY_OUT') +class TypeAintArrayOut(TypeAintArray): + + def parameter(self, enable_count=False, **kwargs): + return f'MPI_Aint {self.name}[]' @Type.add_type('INT_OUT') class TypeIntOut(Type): @@ -282,6 +454,15 @@ def type_text(self, enable_count=False): def parameter(self, enable_count=False, **kwargs): return f'const int {self.name}[]' +@Type.add_type('INT_ARRAY_OUT') +class TypeIntArrayOut(TypeIntArray): + + def type_text(self, enable_count=False): + return 'int *' + + def parameter(self, enable_count=False, **kwargs): + return f'int {self.name}[]' + @Type.add_type('INT_AINT_OUT') class TypeIntAintOut(Type): @@ -352,6 +533,11 @@ class TypeDatatypeOut(Type): def type_text(self, enable_count=False): return 'MPI_Datatype *' +@Type.add_type('DATATYPE_INOUT', abi_type=['ompi']) +class TypeDatatypeOut(Type): + + def type_text(self, enable_count=False): + return 'MPI_Datatype *' @Type.add_type('DATATYPE_ARRAY', abi_type=['ompi']) class TypeDatatypeArray(Type): @@ -362,17 +548,31 @@ def type_text(self, enable_count=False): def parameter(self, enable_count=False, **kwargs): return f'const {self.type_text(enable_count=enable_count)} {self.name}[]' +@Type.add_type('NEIGHBOR_DATATYPE_ARRAY', abi_type=['ompi']) +class NeighborDatatypeArray(TypeDatatypeArray): + pass -class StandardABIType(Type): +@Type.add_type('NEIGHBOR_DATATYPE_ARRAY_ASYNC', abi_type=['ompi']) +class NeighborDatatypeArrayAsync(TypeDatatypeArray): + pass - @property - def tmpname(self): - return f'{self.name}_tmp' +@Type.add_type('DATATYPE_ARRAY_OUT', abi_type=['ompi']) +class TypeDatatypeArrayOut(Type): - @property - def argument(self): - return self.tmpname + def type_text(self, enable_count=False): + return 'MPI_Datatype' + + def parameter(self, enable_count=False, **kwargs): + return f'{self.type_text(enable_count=enable_count)} {self.name}[]' +@Type.add_type('DATATYPE_ARRAY_ASYNC', abi_type=['ompi']) +class TypeDatatypeArray(Type): + + def type_text(self, enable_count=False): + return 'MPI_Datatype' + + def parameter(self, enable_count=False, **kwargs): + return f'const {self.type_text(enable_count=enable_count)} {self.name}[]' @Type.add_type('DATATYPE', abi_type=['standard']) class TypeDatatypeStandard(StandardABIType): @@ -396,7 +596,7 @@ class TypeDatatypeOutStandard(StandardABIType): @property def final_code(self): - return [f'*{self.name} = {ConvertOMPIToStandard.DATATYPE}((MPI_Datatype) *{self.name});'] + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.DATATYPE}((MPI_Datatype) *{self.name});'] def type_text(self, enable_count=False): type_name = self.mangle_name('MPI_Datatype') @@ -406,9 +606,25 @@ def type_text(self, enable_count=False): def argument(self): return f'(MPI_Datatype *) {self.name}' -# -# TODO THIS IS NOT COMPLETE -# +@Type.add_type('DATATYPE_INOUT', abi_type=['standard']) +class TypeDatatypeInoutStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_Datatype {self.tmpname} = (NULL != {self.name}) ? {ConvertFuncs.DATATYPE}(*{self.name}) : MPI_DATATYPE_NULL;'] + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.DATATYPE}((MPI_Datatype) {self.tmpname});'] + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_Datatype') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_Datatype *) (NULL != {self.name} ? &{self.tmpname} : NULL)' + @Type.add_type('DATATYPE_ARRAY', abi_type=['standard']) class TypeDatatypeArrayStandard(StandardABIType): @@ -419,15 +635,22 @@ def init_code(self): code.append(f'int size_{self.tmpname} = OMPI_COMM_IS_INTER(comm_{self.tmpname})?ompi_comm_remote_size(comm_{self.tmpname}):ompi_comm_size(comm_{self.tmpname});') else: code = [f'int size_{self.tmpname} = {self.count_param};'] - code.append(f'MPI_Datatype *{self.tmpname} = (MPI_Datatype *)malloc(sizeof(MPI_Datatype) * size_{self.tmpname});') - code.append(f'for(int i=0;idata.release_arrays[idx] == NULL);') + code.append(f'if (NULL != {self.tmpname}) nb_request->data.release_arrays[idx++] = (void *){self.tmpname};') + code.append('nb_request->data.release_arrays[idx] = NULL;') + code.append('} else {') + code.append(f'if (NULL != {self.tmpname}) free({self.tmpname});') + code.append('}') + return code + +@Type.add_type('DATATYPE_ARRAY_OUT', abi_type=['standard']) +class TypeDatatypeArrayOutStandard(StandardABIType): + + @property + def init_code(self): + code = [f'int size_{self.tmpname} = {self.count_param};'] + code.append(f'MPI_Datatype *{self.tmpname} = (MPI_Datatype *)ompi_abi_malloc({self.count_param},sizeof(MPI_Datatype));') + return code + + @property + def final_code(self): + code = [f'if(NULL != {self.tmpname})' + '{'] + code.append(f'for(int i=0;idata.release_arrays[idx] == NULL);') + code.append(f'nb_request->data.release_arrays[idx++] = (void *){self.tmpname};') + code.append('nb_request->data.release_arrays[idx] = NULL;') + code.append('} else {') + code.append(f'if (NULL != {self.tmpname}) free({self.tmpname});') + code.append('}') + return code + @Type.add_type('OP', abi_type=['ompi']) -class TypeDatatype(Type): +class TypeOp(Type): def type_text(self, enable_count=False): return 'MPI_Op' @Type.add_type('OP', abi_type=['standard']) -class TypeDatatype(StandardABIType): +class TypeOpStandard(StandardABIType): @property def init_code(self): @@ -473,13 +794,12 @@ class TypeOpOut(Type): def type_text(self, enable_count=False): return 'MPI_Op *' - @Type.add_type('OP_OUT', abi_type=['standard']) -class TypeOpOutStandard(Type): +class TypeOpOutStandard(StandardABIType): @property def final_code(self): - return [f'*{self.name} = {ConvertOMPIToStandard.OP}((MPI_Op) *{self.name});'] + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.OP}((MPI_Op) *{self.name});'] def type_text(self, enable_count=False): type_name = self.mangle_name('MPI_Op') @@ -489,58 +809,226 @@ def type_text(self, enable_count=False): def argument(self): return f'(MPI_Op *) {self.name}' +@Type.add_type('OP_INOUT', abi_type=['ompi']) +class TypeOpInOut(TypeOpOut): + pass -@Type.add_type('RANK') -class TypeRank(Type): +@Type.add_type('OP_INOUT', abi_type=['standard']) +class TypeOpOutStandard(StandardABIType): + @property + def init_code(self): + return [f'MPI_Op {self.tmpname} = (NULL != {self.name}) ? {ConvertFuncs.OP}(*{self.name}) : MPI_OP_NULL;'] + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.OP}((MPI_Op) {self.tmpname});'] + def type_text(self, enable_count=False): - return 'int' + type_name = self.mangle_name('MPI_Op') + return f'{type_name} *' + @property + def argument(self): + return f'(MPI_Op *) (NULL != {self.name} ? &{self.tmpname} : NULL)' -@Type.add_type('TAG') -class TypeRank(Type): +@Type.add_type('TAG', abi_type=['ompi']) +class TypeTag(Type): def type_text(self, enable_count=False): return 'int' +@Type.add_type('TAG', abi_type=['standard']) +class TypeTagStandard(StandardABIType): -@Type.add_type('COMM', abi_type=['ompi']) -class TypeCommunicator(Type): + @property + def init_code(self): + return [f'int {self.tmpname} = {ConvertFuncs.TAG}({self.name});'] def type_text(self, enable_count=False): - return 'MPI_Comm' - + return 'int' -@Type.add_type('COMM', abi_type=['standard']) -class TypeCommunicatorStandard(StandardABIType): +@Type.add_type('TAG_OUT', abi_type=['ompi']) +class TypeTagOut(Type): - @property - def init_code(self): - return [f'MPI_Comm {self.tmpname} = {ConvertFuncs.COMM}({self.name});'] + def type_text(self, enable_count=False): + return 'int *' - def tmp_type_text(self, enable_count=False): - return 'MPI_Comm' +@Type.add_type('TAG_OUT', abi_type=['standard']) +class TypeTagOutStandard(StandardABIType): - def return_code(self, name): - return [f'return {ConvertOMPIToStandard.COMM}({name});'] + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.TAG}(*{self.name});'] def type_text(self, enable_count=False): - return self.mangle_name('MPI_Comm') + return f'int *' + @property + def argument(self): + return f'(int *) {self.name}' -@Type.add_type('COMM_OUT', abi_type=['ompi']) -class TypeCommunicator(Type): +@Type.add_type('ROOT', abi_type=['ompi']) +class TypeRoot(Type): + + def type_text(self, enable_count=False): + return 'int' + +@Type.add_type('ROOT', abi_type=['standard']) +class TypeRootStandard(StandardABIType): + + @property + def init_code(self): + return [f'int {self.tmpname} = {ConvertFuncs.ROOT}({self.name});'] + + def type_text(self, enable_count=False): + return 'int' + +@Type.add_type('SOURCE', abi_type=['ompi']) +class TypeSource(Type): + + def type_text(self, enable_count=False): + return 'int' + +@Type.add_type('SOURCE', abi_type=['standard']) +class TypeSourceStandard(StandardABIType): + + @property + def init_code(self): + return [f'int {self.tmpname} = {ConvertFuncs.SOURCE}({self.name});'] + + def type_text(self, enable_count=False): + return 'int' + +@Type.add_type('SOURCE_ARRAY', abi_type=['ompi']) +class TypeSourceArray(Type): + + def type_text(self, enable_count=False): + return 'const int*' + + def parameter(self, enable_count=False, **kwargs): + return f'const int {self.name}[]' + +@Type.add_type('SOURCE_ARRAY', abi_type=['standard']) +class TypeSourceArrayStandard(StandardABIType): + + @property + def init_code(self): + code = [(f'int *{self.tmpname} = NULL;')] + code.append('if('+f'{self.name}' + '!= NULL)' + '{') + code.append(f'{self.tmpname} = (int *)ompi_abi_malloc({self.count_param}, sizeof(int));') + code.append(f'if (NULL != {self.tmpname})' + '{') + code.append(f'for(int i=0;i<{self.count_param};i++){{') + code.append(f'{self.tmpname}[i] = {ConvertFuncs.SOURCE}({self.name}[i]);') + code.append('}') + code.append('}') + code.append('}') + return code + + @property + def final_code(self): + code = [f'if({self.tmpname} != NULL){{'] + code.append(f'free({self.tmpname});') + code.append('}') + return code + + def type_text(self, enable_count=False): + return 'int *' + + def parameter(self, enable_count=False, **kwargs): + return f'const int {self.name}[]' + +@Type.add_type('SOURCE_OUT', abi_type=['ompi']) +class TypeSourceOut(Type): + + def type_text(self, enable_count=False): + return 'int *' + +@Type.add_type('SOURCE_OUT', abi_type=['standard']) +class TypeSourceOutStandard(StandardABIType): + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.SOURCE}(*{self.name});'] + + def type_text(self, enable_count=False): + return f'int *' + + @property + def argument(self): + return f'(int *) {self.name}' + +@Type.add_type('SOURCE_ARRAY_OUT', abi_type=['ompi']) +class TypeSourceArrayOut(Type): + + def type_text(self, enable_count=False): + return 'int *' + + def parameter(self, enable_count=False, **kwargs): + return f'int {self.name}[]' + +@Type.add_type('SOURCE_ARRAY_OUT', abi_type=['standard']) +class TypeSourceArrayOutStandard(StandardABIType): + + @property + def init_code(self): + code = [f'int *{self.tmpname} = (int*)ompi_abi_malloc({self.count_param}, sizeof(int));'] + return code + + @property + def final_code(self): + code = [f'if (NULL != {self.name}){{'] + code.append(f'if (NULL != {self.tmpname}){{') + code.append(f'for(int i=0;i<{self.count_param};i++){{') + code.append(f'{self.name}[i] = {ConvertOMPIToStandard.SOURCE}({self.tmpname}[i]);') + code.append('}') + code.append('}') + code.append('}') + code.append(f'if (NULL != {self.tmpname}) free({self.tmpname});') + return code + + def type_text(self, enable_count=False): + return 'int *' + + def parameter(self, enable_count=False, **kwargs): + return f'int {self.name}[]' + +@Type.add_type('COMM', abi_type=['ompi']) +class TypeCommunicator(Type): + + def type_text(self, enable_count=False): + return 'MPI_Comm' + +@Type.add_type('COMM', abi_type=['standard']) +class TypeCommunicatorStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_Comm {self.tmpname} = {ConvertFuncs.COMM}({self.name});'] + + def tmp_type_text(self, enable_count=False): + return 'MPI_Comm' + + def return_code(self, name): + return [f'return {ConvertOMPIToStandard.COMM}({name});'] + + def type_text(self, enable_count=False): + return self.mangle_name('MPI_Comm') + + +@Type.add_type('COMM_OUT', abi_type=['ompi']) +class TypeCommunicatorOut(Type): def type_text(self, enable_count=False): return 'MPI_Comm *' @Type.add_type('COMM_OUT', abi_type=['standard']) -class TypeCommunicator(StandardABIType): +class TypeCommunicatorOutStandard(StandardABIType): @property def final_code(self): - return [f'*{self.name} = {ConvertOMPIToStandard.COMM}((MPI_Comm) *{self.name});'] + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.COMM}((MPI_Comm) *{self.name});'] def type_text(self, enable_count=False): type_name = self.mangle_name('MPI_Comm') @@ -551,6 +1039,33 @@ def argument(self): return f'(MPI_Comm *) {self.name}' +@Type.add_type('COMM_INOUT', abi_type=['ompi']) +class TypeCommInOut(Type): + + def type_text(self, enable_count=False): + return 'MPI_Comm *' + + +@Type.add_type('COMM_INOUT', abi_type=['standard']) +class TypeCommInOutStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_Comm {self.tmpname} = (NULL != {self.name}) ? {ConvertFuncs.COMM}(*{self.name}) : MPI_COMM_NULL;'] + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.COMM}({self.tmpname});'] + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_Comm') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_Comm *) (NULL != {self.name} ? &{self.tmpname} : NULL)' + + @Type.add_type('WIN', abi_type=['ompi']) class TypeWindow(Type): @@ -586,7 +1101,7 @@ class TypeWindowOutStandard(StandardABIType): @property def final_code(self): - return [f'*{self.name} = {ConvertOMPIToStandard.WIN}((MPI_Win) *{self.name});'] + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.WIN}((MPI_Win) *{self.name});'] def type_text(self, enable_count=False): type_name = self.mangle_name('MPI_Win') @@ -596,6 +1111,31 @@ def type_text(self, enable_count=False): def argument(self): return f'(MPI_Win *) {self.name}' +@Type.add_type('WIN_INOUT', abi_type=['ompi']) +class TypeWinInOut(Type): + + def type_text(self, enable_count=False): + return 'MPI_Win *' + + +@Type.add_type('WIN_INOUT', abi_type=['standard']) +class TypeWinInOutStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_Win {self.tmpname} = (NULL != {self.name}) ? {ConvertFuncs.WIN}(*{self.name}) : MPI_WIN_NULL;'] + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.WIN}({self.tmpname});'] + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_Win') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_Win *) (NULL != {self.name} ? &{self.tmpname} : NULL)' @Type.add_type('REQUEST', abi_type=['ompi']) class TypeRequest(Type): @@ -607,12 +1147,16 @@ def type_text(self, enable_count=False): @Type.add_type('REQUEST', abi_type=['standard']) class TypeRequestStandard(StandardABIType): + @property + def init_code(self): + return [f'MPI_Request {self.tmpname} = {ConvertFuncs.REQUEST}({self.name});'] + def type_text(self, enable_count=False): return self.mangle_name('MPI_Request') @property def argument(self): - return f'(MPI_Request) {self.name}' + return f'(MPI_Request) {self.tmpname}' @Type.add_type('REQUEST_CONST', abi_type=['ompi']) class TypeConstRequest(TypeRequest): @@ -626,25 +1170,50 @@ def parameter(self, enable_count=False, **kwargs): else: return f'const MPI_Request {self.name}[]' -# -# TODO ABI NEEDS WORK -# @Type.add_type('REQUEST_CONST', abi_type=['standard']) class TypeConstRequestStandard(TypeRequestStandard): + @property + def init_code(self): + if self.count_param is None: + code = [f'MPI_Request {self.tmpname} = {ConvertFuncs.REQUEST}({self.name});'] + else: + code = [f'int size_{self.tmpname} = {self.count_param};'] + code.append(f'MPI_Request *{self.tmpname} = (MPI_Request *)ompi_abi_malloc(size_{self.tmpname}, sizeof(MPI_Request));') + code.append(f'if(NULL !={self.tmpname})' + '{') + code.append(f'for(int i=0;iuser_copy_fn = copy_fn;') code.append('helper->user_extra_state = extra_state;') - code.append('helper->user_copy_fn = comm_copy_attr_fn;') - code.append('helper->user_delete_fn = comm_delete_attr_fn;') + code.append('extra_state = helper;') return code # TODO: This should be generalized to be reused with type and win @@ -1209,14 +1924,15 @@ def callback_wrapper_code(self): code.append('{') code.append(' ompi_abi_wrapper_helper_t *helper = (ompi_abi_wrapper_helper_t *)extra_state;') code.append(' MPI_Comm_ABI_INTERNAL comm_tmp = ompi_convert_comm_ompi_to_standard(oldcomm);') - code.append(' return helper->user_copy_fn((MPI_Comm_ABI_INTERNAL)comm_tmp, comm_keyval, helper->user_extra_state, attribute_val_in, attribute_val_out, flag);') + code.append(' int comm_keyval_tmp = ompi_convert_attr_key_ompi_to_standard(comm_keyval);') + code.append(' return helper->user_copy_fn((MPI_Comm_ABI_INTERNAL)comm_tmp, comm_keyval_tmp, helper->user_extra_state, attribute_val_in, attribute_val_out, flag);') code.append('}') code.append('static int ompi_abi_delete_attr_fn(MPI_Comm oldcomm, int comm_keyval, void *attribute_val, void *extra_state)') code.append('{') code.append(' ompi_abi_wrapper_helper_t *helper = (ompi_abi_wrapper_helper_t *)extra_state;') code.append(' MPI_Comm_ABI_INTERNAL comm_tmp = ompi_convert_comm_ompi_to_standard(oldcomm);') - code.append(' return helper->user_delete_fn((MPI_Comm_ABI_INTERNAL)comm_tmp, comm_keyval, attribute_val, helper->user_extra_state);') - code.append(' free(helper);') + code.append(' int comm_keyval_tmp = ompi_convert_attr_key_ompi_to_standard(comm_keyval);') + code.append(' return helper->user_delete_fn((MPI_Comm_ABI_INTERNAL)comm_tmp, comm_keyval_tmp, attribute_val, helper->user_extra_state);') code.append('}') return code @@ -1228,15 +1944,32 @@ def type_text(self, enable_count=False): @Type.add_type('COMM_DELETE_ATTR_FUNCTION', abi_type=['standard']) -class TypeCommDeleteAttrFunctionStandard(Type): +class TypeCommDeleteAttrFunctionStandard(StandardABIType): def type_text(self, enable_count=False): type_name = self.mangle_name('MPI_Comm_delete_attr_function') return f'{type_name} *' +# @property +# def argument(self): +# return f'(MPI_Comm_delete_attr_function *) {self.name}' + +# +# note the code generated here relies on that generated for +# COMM_COPY_ATTR_FUNCTION above +# @property - def argument(self): - return f'(MPI_Comm_delete_attr_function *) {self.name}' + def init_code(self): + code = [] + code = [f'MPI_Comm_delete_attr_function *{self.tmpname} = {ConvertFuncs.COMM_DELETE_ATTR_FUNCTION}({self.name});'] + code.append('MPI_Comm_delete_attr_function_ABI_INTERNAL *delete_fn;') + code.append(f'if ({self.name} == MPI_COMM_NULL_DELETE_FN_ABI_INTERNAL)' + '{') + code.append('delete_fn = ABI_C_MPI_COMM_NULL_DELETE_FN;') + code.append('} else {') + code.append(f'delete_fn = {self.name};') + code.append('}') + code.append('helper->user_delete_fn = delete_fn;') + return code @Type.add_type('GREQUEST_QUERY_FUNCTION', abi_type=['ompi']) class TypeGrequestQueryFunction(Type): @@ -1247,8 +1980,6 @@ def type_text(self, enable_count=False): @Type.add_type('GREQUEST_QUERY_FUNCTION', abi_type=['standard']) class TypeGrequestQueryFunctionStandard(Type): - # TODO: This may require a special function to wrap the callback -# pass def type_text(self, enable_count=False): return 'MPI_Grequest_query_function *' @@ -1262,8 +1993,6 @@ def type_text(self, enable_count=False): @Type.add_type('GREQUEST_FREE_FUNCTION', abi_type=['standard']) class TypeGrequestFreeFunctionStandard(Type): - # TODO: This may require a special function to wrap the callback -# pass def type_text(self, enable_count=False): return 'MPI_Grequest_free_function *' @@ -1277,8 +2006,6 @@ def type_text(self, enable_count=False): @Type.add_type('GREQUEST_CANCEL_FUNCTION', abi_type=['standard']) class TypeGrequestCancelFunctionStandard(Type): - # TODO: This may require a special function to wrap the callback -# pass def type_text(self, enable_count=False): return 'MPI_Grequest_cancel_function *' @@ -1295,8 +2022,6 @@ def type_text(self, enable_count=False): @Type.add_type('DATAREP_CONVERSION_FUNCTION', abi_type=['standard']) class TypeDatarepConversionFunctionStandard(Type): - # TODO: This may require a special function to wrap the callback -# pass @property def is_count(self): @@ -1314,8 +2039,6 @@ def type_text(self, enable_count=False): @Type.add_type('DATAREP_EXTENT_FUNCTION', abi_type=['standard']) class TypeDatarepExtentFunctionStandard(Type): - # TODO: This may require a special function to wrap the callback -# pass def type_text(self, enable_count=False): return 'MPI_Datarep_extent_function *' @@ -1328,12 +2051,15 @@ def type_text(self, enable_count=False): @Type.add_type('SESSION_ERRHANDLER_FUNCTION', abi_type=['standard']) -class TypeSessionErrhandlerFunctionStandard(Type): - # TODO: This may require a special function to wrap the callback -# pass +class TypeSessionErrhandlerFunctionStandard(StandardABIType): def type_text(self, enable_count=False): - return 'MPI_Session_errhandler_function *' + type_name = self.mangle_name('MPI_Session_errhandler_function') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_Session_errhandler_function *) {self.name}' @Type.add_type('TYPE_COPY_ATTR_FUNCTION', abi_type=['ompi']) class TypeTypeCopyAttrFunction(Type): @@ -1342,25 +2068,34 @@ def type_text(self, enable_count=False): return 'MPI_Type_copy_attr_function *' @Type.add_type('TYPE_COPY_ATTR_FUNCTION', abi_type=['standard']) -class TypeTypeCopyAttrFunctionStandard(Type): +class TypeTypeCopyAttrFunctionStandard(StandardABIType): def type_text(self, enable_count=False): type_name = self.mangle_name('MPI_Type_copy_attr_function') return f'{type_name} *' - @property - def argument(self): - return f'(MPI_Type_copy_attr_function *) {self.name}' +# @property +# def argument(self): +# return f'(MPI_Type_copy_attr_function *) {self.name}' @property def init_code(self): code = [] - code = ['ompi_abi_wrapper_helper_t *helper = NULL;'] - code.append('helper = ( ompi_abi_wrapper_helper_t *)malloc(sizeof(ompi_abi_wrapper_helper_t));') + code = [f'MPI_Type_copy_attr_function *{self.tmpname} = {ConvertFuncs.TYPE_COPY_ATTR_FUNCTION}({self.name});'] + code.append('ompi_abi_wrapper_helper_t *helper = NULL;') + code.append('MPI_Type_copy_attr_function_ABI_INTERNAL *copy_fn;') + code.append('helper = ( ompi_abi_wrapper_helper_t *)ompi_abi_malloc(1, sizeof(ompi_abi_wrapper_helper_t));') code.append('if (NULL == helper) return MPI_ERR_NO_MEM;') + code.append(f'if ({self.name} == MPI_TYPE_NULL_COPY_FN_ABI_INTERNAL)' + '{') + code.append('copy_fn = ABI_C_MPI_TYPE_NULL_COPY_FN;') + code.append('} else if (' + f'{self.name}' + ' == MPI_TYPE_DUP_FN_ABI_INTERNAL) {') + code.append('copy_fn = ABI_C_MPI_TYPE_DUP_FN;') + code.append('} else {') + code.append(f'copy_fn = {self.name};') + code.append('}') + code.append('helper->user_copy_fn = copy_fn;') code.append('helper->user_extra_state = extra_state;') - code.append('helper->user_copy_fn = type_copy_attr_fn;') - code.append('helper->user_delete_fn = type_delete_attr_fn;') + code.append('extra_state = helper;') return code # TODO: This should be generalized to be reused with type and win @@ -1376,14 +2111,15 @@ def callback_wrapper_code(self): code.append('{') code.append(' ompi_abi_wrapper_helper_t *helper = (ompi_abi_wrapper_helper_t *)extra_state;') code.append(' MPI_Datatype_ABI_INTERNAL type_tmp = ompi_convert_datatype_ompi_to_standard(oldtype);') - code.append(' return helper->user_copy_fn((MPI_Datatype_ABI_INTERNAL)type_tmp, type_keyval, helper->user_extra_state, attribute_val_in, attribute_val_out, flag);') + code.append(' int type_keyval_tmp = ompi_convert_attr_key_ompi_to_standard(type_keyval);') + code.append(' return helper->user_copy_fn((MPI_Datatype_ABI_INTERNAL)type_tmp, type_keyval_tmp, helper->user_extra_state, attribute_val_in, attribute_val_out, flag);') code.append('}') code.append('static int ompi_abi_delete_attr_fn(MPI_Datatype oldtype, int type_keyval, void *attribute_val, void *extra_state)') code.append('{') code.append(' ompi_abi_wrapper_helper_t *helper = (ompi_abi_wrapper_helper_t *)extra_state;') code.append(' MPI_Datatype_ABI_INTERNAL type_tmp = ompi_convert_datatype_ompi_to_standard(oldtype);') - code.append(' return helper->user_delete_fn((MPI_Datatype_ABI_INTERNAL)type_tmp, type_keyval, attribute_val, helper->user_extra_state);') - code.append(' free(helper);') + code.append(' int type_keyval_tmp = ompi_convert_attr_key_ompi_to_standard(type_keyval);') + code.append(' return helper->user_delete_fn((MPI_Datatype_ABI_INTERNAL)type_tmp, type_keyval_tmp, attribute_val, helper->user_extra_state);') code.append('}') return code @@ -1395,18 +2131,34 @@ def type_text(self, enable_count=False): @Type.add_type('TYPE_DELETE_ATTR_FUNCTION', abi_type=['standard']) -class TypeTypeDeleteAttrFunctionStandard(Type): +class TypeTypeDeleteAttrFunctionStandard(StandardABIType): def type_text(self, enable_count=False): type_name = self.mangle_name('MPI_Type_delete_attr_function') return f'{type_name} *' +# @property +# def argument(self): +# return f'(MPI_Type_delete_attr_function *) {self.name}' + +# +# note the code generated here relies on that generated for +# TYPE_COPY_ATTR_FUNCTION above +# @property - def argument(self): - return f'(MPI_Type_delete_attr_function *) {self.name}' + def init_code(self): + code = [] + code = [f'MPI_Type_delete_attr_function *{self.tmpname} = {ConvertFuncs.TYPE_DELETE_ATTR_FUNCTION}({self.name});'] + code.append('MPI_Type_delete_attr_function_ABI_INTERNAL *delete_fn;') + code.append(f'if ({self.name} == MPI_TYPE_NULL_DELETE_FN_ABI_INTERNAL)' + '{') + code.append('delete_fn = ABI_C_MPI_TYPE_NULL_DELETE_FN;') + code.append('} else {') + code.append(f'delete_fn = {self.name};') + code.append('}') + code.append('helper->user_delete_fn = delete_fn;') + return code @Type.add_type('WIN_ERRHANDLER_FUNCTION', abi_type=['ompi']) - class TypeWinErrhandlerFunction(Type): def type_text(self, enable_count=False): @@ -1414,12 +2166,15 @@ def type_text(self, enable_count=False): @Type.add_type('WIN_ERRHANDLER_FUNCTION', abi_type=['standard']) -class TypeWinErrhandlerFunctionStandard(Type): - # TODO: This may require a special function to wrap the callback -# pass - +class TypeWinErrhandlerFunctionStandard(StandardABIType): + def type_text(self, enable_count=False): - return 'MPI_Win_errhandler_function *' + type_name = self.mangle_name('MPI_Win_errhandler_function') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_Win_errhandler_function *) {self.name}' @Type.add_type('WIN_COPY_ATTR_FUNCTION', abi_type=['ompi']) class TypeWinCopyAttrFunction(Type): @@ -1429,25 +2184,34 @@ def type_text(self, enable_count=False): @Type.add_type('WIN_COPY_ATTR_FUNCTION', abi_type=['standard']) -class TypeWinCopyAttrFunctionStandard(Type): +class TypeWinCopyAttrFunctionStandard(StandardABIType): def type_text(self, enable_count=False): type_name = self.mangle_name('MPI_Win_copy_attr_function') return f'{type_name} *' - @property - def argument(self): - return f'(MPI_Win_copy_attr_function *) {self.name}' +# @property +# def argument(self): +# return f'(MPI_Win_copy_attr_function *) {self.name}' @property def init_code(self): - code = [] - code = ['ompi_abi_wrapper_helper_t *helper = NULL;'] - code.append('helper = ( ompi_abi_wrapper_helper_t *)malloc(sizeof(ompi_abi_wrapper_helper_t));') + code = [] + code = [f'MPI_Win_copy_attr_function *{self.tmpname} = {ConvertFuncs.WIN_COPY_ATTR_FUNCTION}({self.name});'] + code.append('ompi_abi_wrapper_helper_t *helper = NULL;') + code.append('MPI_Win_copy_attr_function_ABI_INTERNAL *copy_fn;') + code.append('helper = ( ompi_abi_wrapper_helper_t *)ompi_abi_malloc(1,sizeof(ompi_abi_wrapper_helper_t));') code.append('if (NULL == helper) return MPI_ERR_NO_MEM;') + code.append(f'if ({self.name} == MPI_WIN_NULL_COPY_FN_ABI_INTERNAL)' + '{') + code.append('copy_fn = ABI_C_MPI_WIN_NULL_COPY_FN;') + code.append('} else if (' + f'{self.name}' + ' == MPI_WIN_DUP_FN_ABI_INTERNAL) {') + code.append('copy_fn = ABI_C_MPI_WIN_DUP_FN;') + code.append('} else {') + code.append(f'copy_fn = {self.name};') + code.append('}') + code.append('helper->user_copy_fn = copy_fn;') code.append('helper->user_extra_state = extra_state;') - code.append('helper->user_copy_fn = win_copy_attr_fn;') - code.append('helper->user_delete_fn = win_delete_attr_fn;') + code.append('extra_state = helper;') return code @property @@ -1462,13 +2226,15 @@ def callback_wrapper_code(self): code.append('{') code.append(' ompi_abi_wrapper_helper_t *helper = (ompi_abi_wrapper_helper_t *)extra_state;') code.append(' MPI_Win_ABI_INTERNAL win_tmp = ompi_convert_win_ompi_to_standard(oldwin);') - code.append(' return helper->user_copy_fn((MPI_Win_ABI_INTERNAL)win_tmp, win_keyval, helper->user_extra_state, attribute_val_in, attribute_val_out, flag);') + code.append(' int win_keyval_tmp = ompi_convert_attr_key_ompi_to_standard(win_keyval);') + code.append(' return helper->user_copy_fn((MPI_Win_ABI_INTERNAL)win_tmp, win_keyval_tmp, helper->user_extra_state, attribute_val_in, attribute_val_out, flag);') code.append('}') code.append('static int ompi_abi_delete_attr_fn(MPI_Win oldwin, int win_keyval, void *attribute_val, void *extra_state)') code.append('{') code.append(' ompi_abi_wrapper_helper_t *helper = (ompi_abi_wrapper_helper_t *)extra_state;') code.append(' MPI_Win_ABI_INTERNAL win_tmp = ompi_convert_win_ompi_to_standard(oldwin);') - code.append(' return helper->user_delete_fn((MPI_Win_ABI_INTERNAL)win_tmp, win_keyval, attribute_val, helper->user_extra_state);') + code.append(' int win_keyval_tmp = ompi_convert_attr_key_ompi_to_standard(win_keyval);') + code.append(' return helper->user_delete_fn((MPI_Win_ABI_INTERNAL)win_tmp, win_keyval_tmp, attribute_val, helper->user_extra_state);') code.append(' free(helper);') code.append('}') return code @@ -1482,15 +2248,31 @@ def type_text(self, enable_count=False): @Type.add_type('WIN_DELETE_ATTR_FUNCTION', abi_type=['standard']) -class TypeWinDeleteAttrFunctionStandard(Type): +class TypeWinDeleteAttrFunctionStandard(StandardABIType): def type_text(self, enable_count=False): type_name = self.mangle_name('MPI_Win_delete_attr_function') return f'{type_name} *' +# @property +# def argument(self): +# return f'(MPI_Win_delete_attr_function *) {self.name}' + +# +# note the code generated here relies on that generated for +# WIN_COPY_ATTR_FUNCTION above +# @property - def argument(self): - return f'(MPI_Win_delete_attr_function *) {self.name}' + def init_code(self): + code = [f'MPI_Win_delete_attr_function *{self.tmpname} = {ConvertFuncs.WIN_DELETE_ATTR_FUNCTION}({self.name});'] + code.append('MPI_Win_delete_attr_function_ABI_INTERNAL *delete_fn;') + code.append(f'if ({self.name} == MPI_WIN_NULL_DELETE_FN_ABI_INTERNAL)' + '{') + code.append('delete_fn = ABI_C_MPI_WIN_NULL_DELETE_FN;') + code.append('} else {') + code.append(f'delete_fn = {self.name};') + code.append('}') + code.append('helper->user_delete_fn = delete_fn;') + return code @Type.add_type('ERRHANDLER', abi_type=['ompi']) class TypeErrhandler(Type): @@ -1525,14 +2307,40 @@ def type_text(self, enable_count=False): @Type.add_type('ERRHANDLER_OUT', abi_type=['standard']) class TypeErrhandlerOutStandard(Type): + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.ERRHANDLER}((MPI_Errhandler) *{self.name});'] + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_Errhandler') + return f'{type_name} *' + @property def argument(self): return f'(MPI_Errhandler *) {self.name}' +@Type.add_type('ERRHANDLER_INOUT', abi_type=['ompi']) +class TypeErrhandlerInOut(TypeErrhandlerOut): + pass + +@Type.add_type('ERRHANDLER_INOUT', abi_type=['standard']) +class TypeErrhandlerInOutStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_Errhandler {self.tmpname} = (NULL != {self.name}) ? {ConvertFuncs.ERRHANDLER}(*{self.name}) : MPI_ERRHANDLER_NULL;'] + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.ERRHANDLER}((MPI_Errhandler) {self.tmpname});'] + def type_text(self, enable_count=False): type_name = self.mangle_name('MPI_Errhandler') return f'{type_name} *' - + + @property + def argument(self): + return f'(MPI_Errhandler *) (NULL != {self.name} ? &{self.tmpname} : NULL)' @Type.add_type('GROUP', abi_type=['ompi']) class TypeGroup(Type): @@ -1570,11 +2378,11 @@ def type_text(self, enable_count=False): @Type.add_type('GROUP_OUT', abi_type=['standard']) -class TypeGroupOutStandard(Type): +class TypeGroupOutStandard(StandardABIType): @property def final_code(self): - return [f'*{self.name} = {ConvertOMPIToStandard.GROUP}((MPI_Group) *{self.name});'] + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.GROUP}((MPI_Group) *{self.name});'] def type_text(self, enable_count=False): type_name = self.mangle_name('MPI_Group') @@ -1585,6 +2393,32 @@ def argument(self): return f'(MPI_Group *) {self.name}' +@Type.add_type('GROUP_INOUT', abi_type=['ompi']) +class TypeGroupInOut(Type): + + def type_text(self, enable_count=False): + return 'MPI_Group *' + + +@Type.add_type('GROUP_INOUT', abi_type=['standard']) +class TypeGroupInOutStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_Group {self.tmpname} = (NULL != {self.name}) ? {ConvertFuncs.GROUP}(*{self.name}) : MPI_GROUP_NULL;'] + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.GROUP}({self.tmpname});'] + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_Group') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_Group *) (NULL != {self.name} ? &{self.tmpname} : NULL)' + @Type.add_type('SESSION_INOUT', abi_type=['ompi']) class TypeSessionOut(Type): @@ -1603,11 +2437,11 @@ class TypeSessionInOutStandard(StandardABIType): @property def init_code(self): - return [f'MPI_Session {self.tmpname} = {ConvertFuncs.SESSION}(*{self.name});'] + return [f'MPI_Session {self.tmpname} = (NULL != {self.name}) ? {ConvertFuncs.SESSION}(*{self.name}) : MPI_SESSION_NULL;'] @property def final_code(self): - return [f'*{self.name} = {ConvertOMPIToStandard.SESSION}({self.tmpname});'] + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.SESSION}({self.tmpname});'] def type_text(self, enable_count=False): type_name = self.mangle_name('MPI_Session') @@ -1615,7 +2449,7 @@ def type_text(self, enable_count=False): @property def argument(self): - return f'&{self.tmpname}' + return f'(MPI_Session *) (NULL != {self.name} ? &{self.tmpname} : NULL)' @Type.add_type('SESSION_OUT', abi_type=['standard']) @@ -1623,7 +2457,7 @@ class TypeSessionOutStandard(StandardABIType): @property def final_code(self): - return [f'*{self.name} = {ConvertOMPIToStandard.SESSION}((MPI_Session) *{self.name});'] + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.SESSION}((MPI_Session) *{self.name});'] def type_text(self, enable_count=False): type_name = self.mangle_name('MPI_Session') @@ -1662,3 +2496,905 @@ def return_code(self, name): return [f'return {ConvertOMPIToStandard.SESSION}({name});'] +@Type.add_type('T_ENUM', abi_type=['ompi']) +class TypeTEnum(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_enum' + +@Type.add_type('T_ENUM', abi_type=['standard']) +class TypeTEnumStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_T_enum {self.tmpname} = {ConvertFuncs.T_ENUM}({self.name});'] + + def type_text(self, enable_count=False): + return self.mangle_name('MPI_T_enum') + + def tmp_type_text(self, enable_count=False): + return 'MPI_T_enum' + +@Type.add_type('T_ENUM_OUT', abi_type=['ompi']) +class TypeTEnumOut(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_enum *' + +@Type.add_type('T_ENUM_OUT', abi_type=['standard']) +class TypeTEnumOutStandard(StandardABIType): + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.T_ENUM}((MPI_T_enum) *{self.name});'] + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_T_enum') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_T_enum *) {self.name}' + +@Type.add_type('CVAR_HANDLE', abi_type=['ompi']) +class TypeCvarHandle(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_cvar_handle' + +@Type.add_type('CVAR_HANDLE', abi_type=['standard']) +class TypeCvarHandleStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_T_cvar_handle {self.tmpname} = {ConvertFuncs.CVAR_HANDLE}({self.name});'] + + def type_text(self, enable_count=False): + return self.mangle_name('MPI_T_cvar_handle') + + def tmp_type_text(self, enable_count=False): + return 'MPI_T_cvar_handle' + +@Type.add_type('CVAR_HANDLE_OUT', abi_type=['ompi']) +class TypeCvarHandle(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_cvar_handle *' + +@Type.add_type('CVAR_HANDLE_OUT', abi_type=['standard']) +class TypeCvarHandleStandard(StandardABIType): + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.CVAR_HANDLE}((MPI_T_cvar_handle) *{self.name});'] + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_T_cvar_handle') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_T_cvar_handle *) {self.name}' + +@Type.add_type('CVAR_HANDLE_INOUT', abi_type=['ompi']) +class TypeCvarHandleInOut(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_cvar_handle *' + +@Type.add_type('CVAR_HANDLE_INOUT', abi_type=['standard']) +class TypeCvarHandleInOutStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_T_cvar_handle {self.tmpname} = {ConvertFuncs.CVAR_HANDLE}(*{self.name});'] + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.CVAR_HANDLE}((MPI_T_cvar_handle) {self.tmpname});'] + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_T_cvar_handle') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_T_cvar_handle *) &{self.tmpname}' + +# +# this type is not actually used +# +@Type.add_type('BIND', abi_type=['ompi']) +class TypeBind(Type): + + def type_text(self, enable_count=False): + return 'int' + +@Type.add_type('BIND_OUT', abi_type=['ompi']) +class TypeBindOut(Type): + + def type_text(self, enable_count=False): + return 'int *' + +@Type.add_type('BIND_OUT', abi_type=['standard']) +class TypeBindOutStandard(StandardABIType): + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.T_BIND}(*{self.name});'] + + def type_text(self, enable_count=False): + return 'int *' + + @property + def argument(self): + return self.name + +@Type.add_type('EVENT_REGISTRATION', abi_type=['ompi']) +class TypeEventRegistration(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_event_registration' + +@Type.add_type('EVENT_REGISTRATION', abi_type=['standard']) +class TypeEventRegistrationStandard(StandardABIType): + + def type_text(self, enable_count=False): + return self.mangle_name('MPI_T_event_registration') + + @property + def argument(self): + return f'(MPI_T_event_registration){self.name}' + +@Type.add_type('EVENT_REGISTRATION_OUT', abi_type=['ompi']) +class TypeEventRegistrationOut(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_event_registration *' + +@Type.add_type('EVENT_REGISTRATION_OUT', abi_type=['standard']) +class TypeEventRegistrationOutStandard(StandardABIType): + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_T_event_registration') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_T_event_registration *){self.name}' + +@Type.add_type('PVAR_HANDLE', abi_type=['ompi']) +class TypePvarHandle(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_pvar_handle' + +@Type.add_type('PVAR_HANDLE', abi_type=['standard']) +class TypePvarHandleStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_T_pvar_handle {self.tmpname} = {ConvertFuncs.PVAR_HANDLE}({self.name});'] + + def type_text(self, enable_count=False): + return self.mangle_name('MPI_T_pvar_handle') + + def tmp_type_text(self, enable_count=False): + return 'MPI_T_pvar_handle' + +@Type.add_type('PVAR_HANDLE_OUT', abi_type=['ompi']) +class TypePvarHandleOut(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_pvar_handle *' + +@Type.add_type('PVAR_HANDLE_OUT', abi_type=['standard']) +class TypePvarHandleOutStandard(StandardABIType): + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.PVAR_HANDLE}((MPI_T_pvar_handle) *{self.name});'] + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_T_pvar_handle') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_T_pvar_handle *) {self.name}' + +@Type.add_type('PVAR_HANDLE_INOUT', abi_type=['ompi']) +class TypePvarHandleInout(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_pvar_handle *' + +@Type.add_type('PVAR_HANDLE_INOUT', abi_type=['standard']) +class TypePvarHandleInoutStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_T_pvar_handle {self.tmpname} = {ConvertFuncs.PVAR_HANDLE}(*{self.name});'] + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.PVAR_HANDLE}((MPI_T_pvar_handle){self.tmpname});'] + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_T_pvar_handle') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_T_pvar_handle *)&{self.tmpname}' + +@Type.add_type('PVAR_SESSION', abi_type=['ompi']) +class TypePvarSession(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_pvar_session' + +@Type.add_type('PVAR_SESSION', abi_type=['standard']) +class TypePvarSessionStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_T_pvar_session {self.tmpname} = {ConvertFuncs.PVAR_SESSION}({self.name});'] + + def type_text(self, enable_count=False): + return self.mangle_name('MPI_T_pvar_session') + + def tmp_type_text(self, enable_count=False): + return 'MPI_T_pvar_session' + + +@Type.add_type('PVAR_SESSION_OUT', abi_type=['ompi']) +class TypePvarSessionOut(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_pvar_session *' + +@Type.add_type('PVAR_SESSION_OUT', abi_type=['standard']) +class TypePvarSessionOutStandard(StandardABIType): + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.PVAR_SESSION}((MPI_T_pvar_session)*{self.name});'] + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_T_pvar_session') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_T_pvar_session *){self.name}' + +@Type.add_type('PVAR_SESSION_INOUT', abi_type=['ompi']) +class TypePvarSessionInOut(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_pvar_session *' + + +@Type.add_type('PVAR_SESSION_INOUT', abi_type=['standard']) +class TypePvarSessionInOutStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_T_pvar_session {self.tmpname} = {ConvertFuncs.PVAR_SESSION}(*{self.name});'] + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.PVAR_SESSION}((MPI_T_pvar_session){self.tmpname});'] + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_T_pvar_session') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_T_pvar_session *)&{self.tmpname}' + +@Type.add_type('T_VERBOSITY', abi_type=['ompi']) +class TypeTVerbosity(Type): + + def type_text(self, enable_count=False): + return 'int' + +@Type.add_type('T_VERBOSITY', abi_type=['standard']) +class TypeTVerbosityStandard(StandardABIType): + + @property + def init_code(self): + return [f'int {self.tmpname} = {ConvertFuncs.T_VERBOSITY}({self.name});'] + + def type_text(self, enable_count=False): + return 'int' + + @property + def argument(self): + return self.name + +@Type.add_type('T_VERBOSITY_OUT', abi_type=['ompi']) +class TypeTVerbosityOut(Type): + + def type_text(self, enable_count=False): + return 'int *' + +@Type.add_type('T_VERBOSITY_OUT', abi_type=['standard']) +class TypeTVerbosityOutStandard(StandardABIType): + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.T_VERBOSITY}(*{self.name});'] + + def type_text(self, enable_count=False): + return 'int *' + + @property + def argument(self): + return self.name + +@Type.add_type('PVAR_CLASS', abi_type=['ompi']) +class TypePvarClass(Type): + + def type_text(self, enable_count=False): + return 'int' + +@Type.add_type('PVAR_CLASS', abi_type=['standard']) +class TypePvarClassStandard(StandardABIType): + + @property + def init_code(self): + return [f'int {self.tmpname} = {ConvertFuncs.PVAR_CLASS}({self.name});'] + + def type_text(self, enable_count=False): + return 'int' + + @property + def argument(self): + return self.name + +@Type.add_type('PVAR_CLASS_OUT', abi_type=['ompi']) +class TypePvarClassOut(Type): + + def type_text(self, enable_count=False): + return 'int *' + +@Type.add_type('PVAR_CLASS_OUT', abi_type=['standard']) +class TypePvarClassOutStandard(StandardABIType): + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.PVAR_CLASS}(*{self.name});'] + + def type_text(self, enable_count=False): + return f'int *' + + @property + def argument(self): + return self.name + +@Type.add_type('CB_SAFETY', abi_type=['ompi']) +class TypeCbSafety(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_cb_safety' + +@Type.add_type('CB_SAFETY', abi_type=['standard']) +class TypeCbSafetyStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_T_cb_safety {self.tmpname} = {ConvertFuncs.T_CB_SAFETY}({self.name});'] + + def type_text(self, enable_count=False): + return self.mangle_name('MPI_T_cb_safety') + + def tmp_type_text(self, enable_count=False): + return 'MPI_T_cb_safety' + +@Type.add_type('SOURCE_ORDER', abi_type=['ompi']) +class TypeSourceOrder(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_source_order' + +@Type.add_type('SOURCE_ORDER', abi_type=['standard']) +class TypeSourceOrderStandard(StandardABIType): + + @property + def init_code(self): + return [f'MPI_T_source_order {self.tmpname} = {ConvertFuncs.T_SOURCE_ORDER}({self.name});'] + + def type_text(self, enable_count=False): + return self.mangle_name('MPI_T_source_order') + + @property + def argument(self): + return self.name + +@Type.add_type('SOURCE_ORDER_OUT', abi_type=['ompi']) +class TypeSourceOrderOut(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_source_order *' + +@Type.add_type('SOURCE_ORDER_OUT', abi_type=['standard']) +class TypeSourceOrderOutStandard(StandardABIType): + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.T_SOURCE_ORDER}((MPI_T_source_order) *{self.name});'] + + def type_text(self, enable_count=False): + type_name = self.mangle_name('MPI_T_source_order') + return f'{type_name} *' + + @property + def argument(self): + return f'(MPI_T_source_order *){self.name}' + +@Type.add_type('EVENT_FREE_CB_FUNCTION', abi_type=['ompi']) +class TypeEventFreeCBFunction(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_event_free_cb_function' + +@Type.add_type('EVENT_FREE_CB_FUNCTION', abi_type=['standard']) +class TypeEventFreeCBFunctionStandard(StandardABIType): + + def type_text(self, enable_count=False): + return 'MPI_T_event_free_cb_function' + + @property + def argument(self): + return self.name + +@Type.add_type('EVENT_DROPPED_CB_FUNCTION', abi_type=['ompi']) +class TypeEventDroppedCBFunction(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_event_dropped_cb_function' + +@Type.add_type('EVENT_DROPPED_CB_FUNCTION', abi_type=['standard']) +class TypeEventDroppedCBFunctionStandard(StandardABIType): + + def type_text(self, enable_count=False): + return 'MPI_T_event_dropped_cb_function' + + @property + def argument(self): + return self.name + +@Type.add_type('EVENT_CB_FUNCTION', abi_type=['ompi']) +class TypeEventCBFunctionStandard(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_event_cb_function' + +@Type.add_type('EVENT_CB_FUNCTION', abi_type=['standard']) +class TypeEventCBFunctionStandard(StandardABIType): + + def type_text(self, enable_count=False): + return 'MPI_T_event_cb_function' + + @property + def argument(self): + return self.name + +@Type.add_type('VOID') +class TypeVoid(Type): + + def type_text(self, enable_count=False): + return 'void *' + +@Type.add_type('VOID_CONST') +class TypeVoidConst(Type): + + def type_text(self, enable_count=False): + return 'const void *' + +@Type.add_type('ATTR_KEY', abi_type=['ompi']) +class TypeAttrKey(Type): + + def type_text(self, enable_count=False): + return 'int' + +@Type.add_type('ATTR_KEY', abi_type=['standard']) +class TyperAttrKeyStandard(StandardABIType): + + @property + def init_code(self): + return [f'int {self.tmpname} = {ConvertFuncs.ATTR_KEY}({self.name});'] + + def type_text(self, enable_count=False): + return 'int' + +@Type.add_type('ATTR_KEY_OUT', abi_type=['ompi']) +class TypeAttrKeyOut(Type): + + def type_text(self, enable_count=False): + return 'int *' + +@Type.add_type('ATTR_KEY_OUT', abi_type=['standard']) +class TypeAttrKeyOutStandard(StandardABIType): + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.ATTR_KEY}(*{self.name});'] + + def type_text(self, enable_count=False): + return f'int *' + + @property + def argument(self): + return self.name + +@Type.add_type('ATTR_KEY_INOUT', abi_type=['ompi']) +class TypeAttrKeyInOut(Type): + + def type_text(self, enable_count=False): + return 'int *' + +@Type.add_type('ATTR_KEY_INOUT', abi_type=['standard']) +class TypeAttrKeyINOutStandard(StandardABIType): + + @property + def init_code(self): + return [f'int {self.tmpname} = {ConvertFuncs.ATTR_KEY}(*{self.name});'] + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.ATTR_KEY}({self.tmpname});'] + + def type_text(self, enable_count=False): + return f'int *' + + @property + def argument(self): + return f'&{self.tmpname}' + +@Type.add_type('SPLIT_TYPE', abi_type=['ompi']) +class TypeSplitType(Type): + + def type_text(self, enable_count=False): + return 'int' + +@Type.add_type('SPLIT_TYPE', abi_type=['standard']) +class TyperSplitTypeStandard(StandardABIType): + + @property + def init_code(self): + return [f'int {self.tmpname} = {ConvertFuncs.SPLIT_TYPE}({self.name});'] + + def type_text(self, enable_count=False): + return 'int' + +@Type.add_type('SUBARRAY_ORDER', abi_type=['ompi']) +class TypeSubarrayOrderType(Type): + + def type_text(self, enable_count=False): + return 'int' + +@Type.add_type('SUBARRAY_ORDER', abi_type=['standard']) +class TyperSubArraOrderStandard(StandardABIType): + + @property + def init_code(self): + return [f'int {self.tmpname} = {ConvertFuncs.SUBARRAY_ORDER}({self.name});'] + + def type_text(self, enable_count=False): + return 'int' + +@Type.add_type('WEIGHTS', abi_type=['ompi']) +class TypeWeightType(Type): + + def type_text(self, enable_count=False): + return 'const int *' + + def parameter(self, enable_count=False, **kwargs): + return f'const int {self.name}[]' + +# +# TODO this can be made better if we could handle "const int" +# better as arg to the converter code. +# +@Type.add_type('WEIGHTS', abi_type=['standard']) +class TypeWeightStandard(StandardABIType): + + @property + def init_code(self): + return [f'int *{self.tmpname} = (int *){ConvertFuncs.WEIGHTS}((int *){self.name});'] + + def type_text(self, enable_count=False): + return 'const int *' + + def parameter(self, enable_count=False, **kwargs): + return f'const int * {self.name}' + + @property + def argument(self): + return f'(int *){self.tmpname}' + +@Type.add_type('COMM_CMP_OUT', abi_type=['ompi']) +class TypeCommCmpOut(Type): + + def type_text(self, enable_count=False): + return 'int *' + +@Type.add_type('COMM_CMP_OUT', abi_type=['standard']) +class TypeCommCmpOutStandard(StandardABIType): + + @property + def final_code(self): + return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.COMM_CMP}(*{self.name});'] + + def type_text(self, enable_count=False): + return 'int *' + + @property + def argument(self): + return f'{self.name}' + +@Type.add_type('EVENT_INSTANCE', abi_type=['ompi']) +class TypeEventInstance(Type): + + def type_text(self, enable_count=False): + return 'MPI_T_event_instance' + + +@Type.add_type('EVENT_INSTANCE', abi_type=['standard']) +class TypeEventInstanceStandard(StandardABIType): + + def return_code(self, name): + return [f'return {ConvertOMPIToStandard.COMM}({name});'] + + def type_text(self, enable_count=False): + return self.mangle_name('MPI_T_event_instance') + + @property + def argument(self): + return f'(MPI_T_event_instance){self.name}' + +@Type.add_type('DISTRIB_ARRAY', abi_type=['ompi']) +class TypeDistributionArray(Type): + + def type_text(self, enable_count=False): + return 'const int *' + + def parameter(self, enable_count=False, **kwargs): + return f'const int {self.name}[]' + +@Type.add_type('DISTRIB_ARRAY', abi_type=['standard']) +class TypeDistributioneArrayStandard(StandardABIType): + + @property + def init_code(self): + code = [f'int size_{self.tmpname} = {self.count_param};'] + code.append(f'int *{self.tmpname} = NULL;') + code.append('if('+f'{self.name}' + '!= NULL)' + '{') + code.append(f'{self.tmpname} = (int *)ompi_abi_malloc(size_{self.tmpname}, sizeof(int));') + code.append(f'if (NULL != {self.tmpname}){{') + code.append(f'for(int i=0;i 0 and line: - raise util.BindingError('Extra code found in template; only one function body is allowed') + raise util.BindingError('Extra code found in template %s; only one function body is allowed' % str(fname)) update = line.count('{') - line.count('}') bracket_balance += update @@ -81,7 +95,7 @@ def validate_body(body): line_count += 1 if bracket_balance != 0: - raise util.BindingError('Mismatched brackets found in template') + raise util.BindingError('Mismatched brackets found in template ' + str(fname)) class SourceTemplate: @@ -128,7 +142,7 @@ def load(fname, prefix=None, type_constructor=None): params = [Parameter(param, type_constructor=type_constructor) for param in params] prototype = Prototype(name, return_type, params) # Ensure the body contains only one function - validate_body(body) + validate_body(fname, body) return SourceTemplate(prototype, header, body) def print_header(self, out): diff --git a/ompi/mpi/bindings/ompi_bindings/util.py b/ompi/mpi/bindings/ompi_bindings/util.py index 95e00cc7611..6dfe26a3004 100644 --- a/ompi/mpi/bindings/ompi_bindings/util.py +++ b/ompi/mpi/bindings/ompi_bindings/util.py @@ -116,16 +116,20 @@ def indent_lines(lines, tab, start=0): new_lines = [] indent_count = start for line in lines: - # Closing bracket - if '}' in line: - indent_count -= 1 + # is this a pragma line, if so do not indent + if (line[0] =='#'): + new_lines.append(f'{line}') + else: + # Closing bracket + if '}' in line: + indent_count -= 1 - prefix = indent_count * tab - new_lines.append(f'{prefix}{line}') + prefix = indent_count * tab + new_lines.append(f'{prefix}{line}') - # Opening bracket - if '{' in line: - indent_count += 1 + # Opening bracket + if '{' in line: + indent_count += 1 return new_lines @@ -133,6 +137,9 @@ def mpi_fn_name_from_base_fn_name(name): """Convert from a base name to the standard 'MPI_*' name.""" return f'MPI_{name.capitalize()}' +def mpit_fn_name_from_base_fn_name(name): + """Convert from a base name to the standard 'MPI_T_*' name.""" + return f'MPI_T_{name}' def abi_internal_name(extname): """Convert from the ABI external name to an internal name. @@ -190,3 +197,6 @@ def prototype_needs_callback_wrappers(prototype): """Should this prototype need a callback wrappers""" return any(param.type_name in USER_CALLBACK_NAMES for param in prototype.params) +def abi_tmp_name(name): + """Generate standardized tmp name for a supplied name""" + return f'{name}_tmp' diff --git a/ompi/mpi/c/Makefile.am b/ompi/mpi/c/Makefile.am index 00af976172f..d28cfb7a5be 100644 --- a/ompi/mpi/c/Makefile.am +++ b/ompi/mpi/c/Makefile.am @@ -44,13 +44,21 @@ if BUILD_MPI_BINDINGS_LAYER noinst_LTLIBRARIES += libmpi_c_noprofile.la endif -headers = bindings.h +headers = bindings.h \ + abi.h \ + abi_converters.h # # Template/prototype source files used for generating MPI functions # prototype_sources = \ + abi_get_fortran_info.c.in \ + abi_set_fortran_info.c.in \ + abi_get_fortran_booleans.c.in \ + abi_set_fortran_booleans.c.in \ + abi_get_info.c.in \ + abi_get_version.c.in \ abort.c.in \ accumulate.c.in \ add_error_class.c.in \ @@ -69,9 +77,6 @@ prototype_sources = \ alltoallv_init.c.in \ alltoallw.c.in \ alltoallw_init.c.in \ - attr_delete.c.in \ - attr_get.c.in \ - attr_put.c.in \ barrier.c.in \ barrier_init.c.in \ bcast.c.in \ @@ -94,7 +99,6 @@ prototype_sources = \ close_port.c.in \ comm_accept.c.in \ comm_attach_buffer.c.in \ - comm_c2f.c.in \ comm_call_errhandler.c.in \ comm_compare.c.in \ comm_connect.c.in \ @@ -108,7 +112,6 @@ prototype_sources = \ comm_disconnect.c.in \ comm_dup.c.in \ comm_dup_with_info.c.in \ - comm_f2c.c.in \ comm_flush_buffer.c.in \ comm_free.c.in \ comm_free_keyval.c.in \ @@ -141,20 +144,16 @@ prototype_sources = \ dist_graph_create.c.in \ dist_graph_neighbors.c.in \ dist_graph_neighbors_count.c.in \ - errhandler_c2f.c.in \ - errhandler_f2c.c.in \ errhandler_free.c.in \ error_class.c.in \ error_string.c.in \ exscan.c.in \ exscan_init.c.in \ fetch_and_op.c.in \ - file_c2f.c.in \ file_call_errhandler.c.in \ file_close.c.in \ file_create_errhandler.c.in \ file_delete.c.in \ - file_f2c.c.in \ file_get_amode.c.in \ file_get_atomicity.c.in \ file_get_byte_offset.c.in \ @@ -235,11 +234,9 @@ prototype_sources = \ graph_neighbors_count.c.in \ grequest_complete.c.in \ grequest_start.c.in \ - group_c2f.c.in \ group_compare.c.in \ group_difference.c.in \ group_excl.c.in \ - group_f2c.c.in \ group_free.c.in \ group_from_session_pset.c.in \ group_incl.c.in \ @@ -268,12 +265,10 @@ prototype_sources = \ ineighbor_alltoall.c.in \ ineighbor_alltoallv.c.in \ ineighbor_alltoallw.c.in \ - info_c2f.c.in \ info_create.c.in \ info_create_env.c.in \ info_delete.c.in \ info_dup.c.in \ - info_f2c.c.in \ info_free.c.in \ info_get.c.in \ info_get_nkeys.c.in \ @@ -303,8 +298,6 @@ prototype_sources = \ issend.c.in \ is_thread_main.c.in \ lookup_name.c.in \ - message_c2f.c.in \ - message_f2c.c.in \ mprobe.c.in \ mrecv.c.in \ neighbor_allgather.c.in \ @@ -318,11 +311,9 @@ prototype_sources = \ neighbor_alltoallw.c.in \ neighbor_alltoallw_init.c.in \ open_port.c.in \ - op_c2f.c.in \ op_commutative.c.in \ op_create.c.in \ op_free.c.in \ - op_f2c.c.in \ pack.c.in \ pack_external.c.in \ pack_external_size.c.in \ @@ -348,8 +339,6 @@ prototype_sources = \ reduce_scatter.c.in \ reduce_scatter_init.c.in \ register_datarep.c.in \ - request_c2f.c.in \ - request_f2c.c.in \ remove_error_class.c.in \ remove_error_code.c.in \ remove_error_string.c.in \ @@ -374,11 +363,9 @@ prototype_sources = \ sendrecv.c.in \ sendrecv_replace.c.in \ session_attach_buffer.c.in \ - session_c2f.c.in \ session_call_errhandler.c.in \ session_create_errhandler.c.in \ session_detach_buffer.c.in \ - session_f2c.c.in \ session_finalize.c.in \ session_flush_buffer.c.in \ session_get_errhandler.c.in \ @@ -393,12 +380,6 @@ prototype_sources = \ ssend_init.c.in \ startall.c.in \ start.c.in \ - status_c2f08.c.in \ - status_c2f.c.in \ - status_f082c.c.in \ - status_f082f.c.in \ - status_f2c.c.in \ - status_f2f08.c.in \ status_get_error.c.in \ status_get_source.c.in \ status_get_tag.c.in \ @@ -414,7 +395,6 @@ prototype_sources = \ test_cancelled.c.in \ testsome.c.in \ topo_test.c.in \ - type_c2f.c.in \ type_commit.c.in \ type_contiguous.c.in \ type_create_darray.c.in \ @@ -431,7 +411,6 @@ prototype_sources = \ type_create_subarray.c.in \ type_delete_attr.c.in \ type_dup.c.in \ - type_f2c.c.in \ type_free.c.in \ type_free_keyval.c.in \ type_get_attr.c.in \ @@ -458,7 +437,6 @@ prototype_sources = \ win_allocate.c.in \ win_allocate_shared.c.in \ win_attach.c.in \ - win_c2f.c.in \ win_call_errhandler.c.in \ win_complete.c.in \ win_create.c.in \ @@ -474,7 +452,6 @@ prototype_sources = \ win_flush_local.c.in \ win_free.c.in \ win_free_keyval.c.in \ - win_f2c.c.in \ win_get_attr.c.in \ win_get_errhandler.c.in \ win_get_group.c.in \ @@ -494,37 +471,82 @@ prototype_sources = \ win_unlock_all.c.in \ win_unlock.c.in \ win_wait.c.in \ + wtick.c.in \ wtime.c.in -EXTRA_DIST = $(prototype_sources) +prototype_sources_nbc = \ + type_get_contents.c.in_nbc \ + type_get_envelope.c.in_nbc -# attr_fn.c contains attribute manipulation functions which do not -# profiling implications, and so are always built. -libmpi_c_la_SOURCES = \ - attr_fn.c +prototype_sources_obc = \ + type_get_contents_c.c.in_obc \ + type_get_envelope_c.c.in_obc -# The MPI_Abi_* functions do not require profiling implementations. -libmpi_c_la_SOURCES += \ - abi_details.c \ - abi_supported.c \ - abi_version.c \ - ompi_isendrecv.c \ - ompi_sendrecv.c +# See MPI-5 standard Chapter 20 sections 2 and 4 +prototype_sources_not_in_abi = \ + attr_delete.c.in \ + attr_get.c.in \ + attr_put.c.in \ + comm_c2f.c.in \ + errhandler_c2f.c.in \ + file_c2f.c.in \ + group_c2f.c.in \ + info_c2f.c.in \ + message_c2f.c.in \ + op_c2f.c.in \ + request_c2f.c.in \ + session_c2f.c.in \ + status_c2f08.c.in \ + status_c2f.c.in \ + status_f082c.c.in \ + status_f082f.c.in \ + status_f2f08.c.in \ + type_c2f.c.in \ + win_c2f.c.in \ + comm_f2c.c.in \ + errhandler_f2c.c.in \ + file_f2c.c.in \ + group_f2c.c.in \ + info_f2c.c.in \ + message_f2c.c.in \ + op_f2c.c.in \ + request_f2c.c.in \ + session_f2c.c.in \ + status_f2c.c.in \ + type_f2c.c.in \ + win_f2c.c.in + +EXTRA_DIST = $(prototype_sources) \ + $(prototype_sources_nbc) \ + $(prototype_sources_obc) \ + $(prototype_sources_not_in_abi) \ + abi_converters.h \ + abi_converters.c \ + abi_get_info.c.in \ + abi.h.in + +# functions that do not require profiling implementations. +libmpi_c_la_SOURCES = \ + ompi_isendrecv.c \ + ompi_sendrecv.c \ + ompi_abi_fortran.c libmpi_c_la_LIBADD = libmpi_c_profile.la if BUILD_MPI_BINDINGS_LAYER libmpi_c_la_LIBADD += libmpi_c_noprofile.la endif -nobase_include_HEADERS = abi.h standard_abi/mpi.h +nobase_include_HEADERS = standard_abi/mpi.h # # List of all C files that have profile versions (*_generated.c files were # generated from prototype_sources above). # # -interface_profile_sources = $(prototype_sources:.c.in=_ompi_generated.c) - +interface_profile_sources = $(prototype_sources:.c.in=_ompi_generated.c) \ + $(prototype_sources_not_in_abi:.c.in=_ompi_generated.c) \ + $(prototype_sources_nbc:.c.in_nbc=_ompi_generated.c) \ + $(prototype_sources_obc:.c.in_obc=_ompi_generated.c) # Conditionally install the header files if WANT_INSTALL_HEADERS @@ -536,12 +558,29 @@ endif # have to deal manually # extra_interface_profile_sources = \ + comm_fromint_ompi.c \ + comm_toint_ompi.c \ + errhandler_fromint_ompi.c \ + errhandler_toint_ompi.c \ + file_fromint_ompi.c \ + file_toint_ompi.c \ + group_fromint_ompi.c \ + group_toint_ompi.c \ + info_fromint_ompi.c \ + info_toint_ompi.c \ + message_fromint_ompi.c \ + message_toint_ompi.c \ + op_fromint_ompi.c \ + op_toint_ompi.c \ pcontrol.c \ - type_get_contents.c \ - type_get_contents_c.c \ - type_get_envelope.c \ - type_get_envelope_c.c \ - wtick.c + request_fromint_ompi.c \ + request_toint_ompi.c \ + session_fromint_ompi.c \ + session_toint_ompi.c \ + type_fromint_ompi.c \ + type_toint_ompi.c \ + win_fromint_ompi.c \ + win_toint_ompi.c # The following functions were removed from the MPI standard, but are # retained for ABI compliance reasons. They are listed independently @@ -552,8 +591,8 @@ deprecated_interface_profile_sources = \ errhandler_create.c \ errhandler_get.c \ errhandler_set.c \ - keyval_create.c \ - keyval_free.c \ + keyval_create.c \ + keyval_free.c \ type_extent.c \ type_hindexed.c \ type_hvector.c \ @@ -578,24 +617,87 @@ if OMPI_GENERATE_BINDINGS ompi \ $< -# Non-mangled version +# Deal with oddballs wrt big count +type_get_contents_ompi_generated.c: type_get_contents.c.in_nbc + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ + --builddir $(abs_top_builddir) \ + --srcdir $(abs_top_srcdir) \ + --output $@ \ + c \ + source \ + ompi \ + --suppress_bc \ + $< + +type_get_envelope_ompi_generated.c: type_get_envelope.c.in_nbc + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ + --builddir $(abs_top_builddir) \ + --srcdir $(abs_top_srcdir) \ + --output $@ \ + c \ + source \ + ompi \ + --suppress_bc \ + $< + +type_get_contents_c_ompi_generated.c: type_get_contents_c.c.in_obc + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ + --builddir $(abs_top_builddir) \ + --srcdir $(abs_top_srcdir) \ + --output $@ \ + c \ + source \ + ompi \ + --suppress_nbc \ + $< + +type_get_envelope_c_ompi_generated.c: type_get_envelope_c.c.in_obc + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ + --builddir $(abs_top_builddir) \ + --srcdir $(abs_top_srcdir) \ + --output $@ \ + c \ + source \ + ompi \ + --suppress_nbc \ + $< + +# Non-mangled version of mpi.h standard_abi/mpi.h: $(top_srcdir)/docs/mpi-standard-apis.json $(top_srcdir)/ompi/mpi/bindings/c_header.py mkdir -p standard_abi $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/c_header.py \ --input $(top_srcdir)/ompi/mpi/c/abi.h.in \ --abi-json $(top_srcdir)/docs/mpi-standard-abi.json \ --pympistd $(top_srcdir)/3rd-party/pympistandard \ - --output $(top_srcdir)/ompi/mpi/c/standard_abi/mpi.h + --output $@ -# Mangled version -abi.h: $(top_srcdir)/docs/mpi-standard-apis.json $(top_srcdir)/ompi/mpi/bindings/c_header.py +# Mangled version of mpi.h (abi.h) +abi.h: $(top_srcdir)/docs/mpi-standard-apis.json $(top_srcdir)/ompi/mpi/bindings/c_header.py abi.h.in $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/c_header.py \ --input $(top_srcdir)/ompi/mpi/c/abi.h.in \ - --output $(top_srcdir)/ompi/mpi/c/abi.h \ + --output $@ \ --abi-json $(top_srcdir)/docs/mpi-standard-abi.json \ --pympistd-dir $(top_srcdir)/3rd-party/pympistandard \ --mangle-names +abi_converters.h: abi.h + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ + --builddir $(abs_top_builddir) \ + --srcdir $(abs_top_srcdir) \ + --output $@ \ + c \ + converters \ + --type include_file + +abi_converters.c: abi.h abi_converters.h + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ + --builddir $(abs_top_builddir) \ + --srcdir $(abs_top_srcdir) \ + --output $@ \ + c \ + converters \ + --type source_file + %_abi_generated.c: %.c.in $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ --builddir $(abs_top_builddir) \ @@ -605,9 +707,54 @@ abi.h: $(top_srcdir)/docs/mpi-standard-apis.json $(top_srcdir)/ompi/mpi/bindings source \ standard \ $< + +# Deal with oddballs wrt big count +type_get_contents_abi_generated.c: type_get_contents.c.in_nbc + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ + --builddir $(abs_top_builddir) \ + --srcdir $(abs_top_srcdir) \ + --output $@ \ + c \ + source \ + standard \ + --suppress_bc \ + $< + +type_get_envelope_abi_generated.c: type_get_envelope.c.in_nbc + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ + --builddir $(abs_top_builddir) \ + --srcdir $(abs_top_srcdir) \ + --output $@ \ + c \ + source \ + standard \ + --suppress_bc \ + $< + +type_get_contents_c_abi_generated.c: type_get_contents_c.c.in_obc + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ + --builddir $(abs_top_builddir) \ + --srcdir $(abs_top_srcdir) \ + --output $@ \ + c \ + source \ + standard \ + --suppress_nbc \ + $< + +type_get_envelope_c_abi_generated.c: type_get_envelope_c.c.in_obc + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ + --builddir $(abs_top_builddir) \ + --srcdir $(abs_top_srcdir) \ + --output $@ \ + c \ + source \ + standard \ + --suppress_nbc \ + $< endif -MAINTAINERCLEANFILES = *_generated.c $(nobase_include_HEADERS) +MAINTAINERCLEANFILES = *_generated.c abi_get_info.c abi_converters.c $(nobase_include_HEADERS) if OMPI_STANDARD_ABI include Makefile_abi.include endif diff --git a/ompi/mpi/c/Makefile_abi.include b/ompi/mpi/c/Makefile_abi.include index c082b84e1c0..6a7d06baac4 100644 --- a/ompi/mpi/c/Makefile_abi.include +++ b/ompi/mpi/c/Makefile_abi.include @@ -20,6 +20,7 @@ # Copyright (c) 2021 Amazon.com, Inc. or its affiliates. All Rights # reserved. # Copyright (c) 2025 Advanced Micro Devices, Inc. All Rights reserved. +# Copyright (c) 2025 Triad National Security, LLC. All rights reserved. # $COPYRIGHT$ # # Additional copyrights may follow @@ -36,26 +37,56 @@ if BUILD_MPI_BINDINGS_LAYER noinst_LTLIBRARIES += libmpi_c_abi_noprofile.la endif -BUILT_SOURCES = abi.h standard_abi/mpi.h +BUILT_SOURCES = abi.h abi_converters.h standard_abi/mpi.h libmpi_c_abi_la_SOURCES = \ - attr_fn.c \ - abi_details.c \ - abi_supported.c \ - abi_version.c + abi_converters.c \ + attr_fn_abi.c \ + ompi_isendrecv.c \ + ompi_sendrecv.c \ + ompi_abi_fortran.c -libmpi_c_abi_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES +extra_abi_fns = \ + aint_add_abi.c \ + aint_diff_abi.c \ + comm_fromint_abi.c \ + comm_toint_abi.c \ + errhandler_fromint_abi.c \ + errhandler_toint_abi.c \ + file_fromint_abi.c \ + file_toint_abi.c \ + group_fromint_abi.c \ + group_toint_abi.c \ + info_fromint_abi.c \ + info_toint_abi.c \ + message_fromint_abi.c \ + message_toint_abi.c \ + op_fromint_abi.c \ + op_toint_abi.c \ + pcontrol.c \ + request_fromint_abi.c \ + request_toint_abi.c \ + session_fromint_abi.c \ + session_toint_abi.c \ + type_fromint_abi.c \ + type_toint_abi.c \ + win_fromint_abi.c \ + win_toint_abi.c + +libmpi_c_abi_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES -DOMPI_BUILD_MPI_PROFILING=0 -DOMPI_BUILD_STANDARD_ABI libmpi_c_abi_la_LIBADD = libmpi_c_abi_profile.la if BUILD_MPI_BINDINGS_LAYER libmpi_c_abi_la_LIBADD += libmpi_c_abi_noprofile.la endif abi_interface_profile_sources = $(prototype_sources:.c.in=_abi_generated.c) +abi_interface_profile_sources_nbc = $(prototype_sources_nbc:.c.in_nbc=_abi_generated.c) +abi_interface_profile_sources_obc = $(prototype_sources_obc:.c.in_obc=_abi_generated.c) -libmpi_c_abi_profile_la_SOURCES = $(abi_interface_profile_sources) +libmpi_c_abi_profile_la_SOURCES = $(abi_interface_profile_sources) $(abi_interface_profile_sources_nbc) $(abi_interface_profile_sources_obc) $(extra_abi_fns) libmpi_c_abi_profile_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES -DOMPI_BUILD_MPI_PROFILING=1 -libmpi_c_abi_noprofile_la_SOURCES = $(abi_interface_profile_sources) +libmpi_c_abi_noprofile_la_SOURCES = $(abi_interface_profile_sources) $(abi_interface_profile_sources_nbc) $(abi_interface_profile_sources_obc) $(extra_abi_fns) libmpi_c_abi_noprofile_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES -DOMPI_BUILD_MPI_PROFILING=0 endif diff --git a/ompi/mpi/c/abi.h.in b/ompi/mpi/c/abi.h.in index c4040502a89..e442b1b06f8 100644 --- a/ompi/mpi/c/abi.h.in +++ b/ompi/mpi/c/abi.h.in @@ -1,27 +1,21 @@ -/* - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ +#ifndef MPI_H_ABI +#define MPI_H_ABI -#ifndef _ABI_INTERNAL_ -#define _ABI_INTERNAL_ +#include +#include -/* TODO: figure out which includes we need, change to <> instead of "" */ -#include "stddef.h" -#include "stdint.h" - -/* #include */ +#if defined(__cplusplus) +extern "C" { +#endif +#undef MPI_VERSION #define MPI_VERSION 5 +#undef MPI_SUBVERSION #define MPI_SUBVERSION 0 #define MPI_ABI_VERSION 1 #define MPI_ABI_SUBVERSION 0 -/* TODO: add comment why this is hardcoded to avoid extra generation logic */ typedef struct MPI_ABI_Comm * MPI_Comm; typedef struct MPI_ABI_Datatype * MPI_Datatype; typedef struct MPI_ABI_Errhandler * MPI_Errhandler; @@ -34,29 +28,29 @@ typedef struct MPI_ABI_Request * MPI_Request; typedef struct MPI_ABI_Session * MPI_Session; typedef struct MPI_ABI_Win * MPI_Win; -/* /\* MPI_Aint is defined to be intptr_t (or equivalent to it, if compiler support is absent). */ -/* * The only acceptable alternative to intptr_t is the C89 type equivalent to it. *\/ */ -/* #if !defined(MPI_ABI_Aint) */ -/* #define MPI_ABI_Aint intptr_t */ -/* #endif */ -/* typedef MPI_ABI_Aint MPI_Aint; */ -/* #undef MPI_ABI_Aint */ - -/* /\* MPI_Offset will be 64b on all relevant systems. */ -/* * We allow for MPI implementations supporting for 128b filesystems. *\/ */ -/* #if !defined(MPI_ABI_Offset) */ -/* #define MPI_ABI_Offset int64_t */ -/* #endif */ -/* typedef MPI_ABI_Offset MPI_Offset; */ -/* #undef MPI_ABI_Offset */ - -/* /\* MPI_Count must be large enough to hold the larger of MPI_Aint and MPI_Offset. */ -/* * Platforms where MPI_Aint is larger than MPI_Offset are extremely rare. *\/ */ -/* #if !defined(MPI_ABI_Count) */ -/* #define MPI_ABI_Count MPI_Offset */ -/* #endif */ -/* typedef MPI_ABI_Count MPI_Count; */ -/* #undef MPI_ABI_Count */ +/* MPI_Aint is defined to be intptr_t (or equivalent to it, if compiler support is absent). + * The only acceptable alternative to intptr_t is the C89 type equivalent to it. */ +#if !defined(MPI_ABI_Aint) +#define MPI_ABI_Aint intptr_t +#endif +typedef MPI_ABI_Aint @MPI_AINT@; +#undef MPI_ABI_Aint + +/* MPI_Offset will be 64b on all relevant systems. + * We allow for MPI implementations supporting for 128b filesystems. */ +#if !defined(MPI_ABI_Offset) +#define MPI_ABI_Offset int64_t +#endif +typedef MPI_ABI_Offset @MPI_OFFSET@; +#undef MPI_ABI_Offset + +/* MPI_Count must be large enough to hold the larger of MPI_Aint and MPI_Offset. + * Platforms where MPI_Aint is larger than MPI_Offset are extremely rare. */ +#if !defined(MPI_ABI_Count) +#define MPI_ABI_Count MPI_Offset +#endif +typedef MPI_ABI_Count @MPI_COUNT@; +#undef MPI_ABI_Count typedef struct { int MPI_SOURCE; @@ -65,6 +59,15 @@ typedef struct { int MPI_internal[5]; } MPI_Status; +/* MPI_T types */ + +typedef struct MPI_ABI_T_enum* MPI_T_enum; +typedef struct MPI_ABI_T_cvar_handle* MPI_T_cvar_handle; +typedef struct MPI_ABI_T_pvar_handle* MPI_T_pvar_handle; +typedef struct MPI_ABI_T_pvar_session* MPI_T_pvar_session; +typedef struct MPI_ABI_T_event_registration* MPI_T_event_registration; +typedef struct MPI_ABI_T_event_instance* MPI_T_event_instance; + /*****************************************************************************/ /* The following categories and values are taken, in order, from Section A.1 */ /* ("Defined Values and Handles") of the MPI Standard, v5.0. Each category */ @@ -211,3 +214,4 @@ $CATEGORY:TOOL_INFO_IFACE_SOURCE_ORDERINGS$ * Callback safety requirement levels used in the MPI tool information interface */ $CATEGORY:TOOL_INFO_IFACE_CB_SAFETY_REQ_LEVELS$ + diff --git a/ompi/mpi/c/abi_converters.h b/ompi/mpi/c/abi_converters.h deleted file mode 100644 index 71e51cb4697..00000000000 --- a/ompi/mpi/c/abi_converters.h +++ /dev/null @@ -1,567 +0,0 @@ -/* - * Copyright (c) 2025 Triad National Security, LLC. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#ifndef _ABI_CONVERTORS_ -#define _ABI_CONVERTORS_ - -#if defined(c_plusplus) || defined(__cplusplus) -extern "C" { -#endif - -__opal_attribute_always_inline__ static inline int ompi_convert_abi_error_intern_error(int error_class) -{ - switch (error_class) { - case MPI_SUCCESS_ABI_INTERNAL: - return MPI_SUCCESS; - case MPI_ERR_BUFFER_ABI_INTERNAL: - return MPI_ERR_BUFFER; - case MPI_ERR_COUNT_ABI_INTERNAL: - return MPI_ERR_COUNT; - case MPI_ERR_TYPE_ABI_INTERNAL: - return MPI_ERR_TYPE; - case MPI_ERR_TAG_ABI_INTERNAL: - return MPI_ERR_TAG; - case MPI_ERR_COMM_ABI_INTERNAL: - return MPI_ERR_COMM; - case MPI_ERR_RANK_ABI_INTERNAL: - return MPI_ERR_RANK; - case MPI_ERR_REQUEST_ABI_INTERNAL: - return MPI_ERR_REQUEST; - case MPI_ERR_ROOT_ABI_INTERNAL: - return MPI_ERR_ROOT; - case MPI_ERR_GROUP_ABI_INTERNAL: - return MPI_ERR_GROUP; - case MPI_ERR_OP_ABI_INTERNAL: - return MPI_ERR_OP; - case MPI_ERR_TOPOLOGY_ABI_INTERNAL: - return MPI_ERR_TOPOLOGY; - case MPI_ERR_DIMS_ABI_INTERNAL: - return MPI_ERR_DIMS; - case MPI_ERR_ARG_ABI_INTERNAL: - return MPI_ERR_ARG; - case MPI_ERR_UNKNOWN_ABI_INTERNAL: - return MPI_ERR_UNKNOWN; - case MPI_ERR_TRUNCATE_ABI_INTERNAL: - return MPI_ERR_TRUNCATE; - case MPI_ERR_OTHER_ABI_INTERNAL: - return MPI_ERR_OTHER; - case MPI_ERR_INTERN_ABI_INTERNAL: - return MPI_ERR_INTERN; - case MPI_ERR_PENDING_ABI_INTERNAL: - return MPI_ERR_PENDING; - case MPI_ERR_IN_STATUS_ABI_INTERNAL: - return MPI_ERR_IN_STATUS; - case MPI_ERR_ACCESS_ABI_INTERNAL: - return MPI_ERR_ACCESS; - case MPI_ERR_AMODE_ABI_INTERNAL: - return MPI_ERR_AMODE; - case MPI_ERR_ASSERT_ABI_INTERNAL: - return MPI_ERR_ASSERT; - case MPI_ERR_BAD_FILE_ABI_INTERNAL: - return MPI_ERR_BAD_FILE; - case MPI_ERR_BASE_ABI_INTERNAL: - return MPI_ERR_BASE; - case MPI_ERR_CONVERSION_ABI_INTERNAL: - return MPI_ERR_CONVERSION; - case MPI_ERR_DISP_ABI_INTERNAL: - return MPI_ERR_DISP; - case MPI_ERR_DUP_DATAREP_ABI_INTERNAL: - return MPI_ERR_DUP_DATAREP; - case MPI_ERR_FILE_EXISTS_ABI_INTERNAL: - return MPI_ERR_FILE_EXISTS; - case MPI_ERR_FILE_IN_USE_ABI_INTERNAL: - return MPI_ERR_FILE_IN_USE; - case MPI_ERR_FILE_ABI_INTERNAL: - return MPI_ERR_FILE; - case MPI_ERR_INFO_KEY_ABI_INTERNAL: - return MPI_ERR_INFO_KEY; - case MPI_ERR_INFO_NOKEY_ABI_INTERNAL: - return MPI_ERR_INFO_NOKEY; - case MPI_ERR_INFO_VALUE_ABI_INTERNAL: - return MPI_ERR_INFO_VALUE; - case MPI_ERR_INFO_ABI_INTERNAL: - return MPI_ERR_INFO; - case MPI_ERR_IO_ABI_INTERNAL: - return MPI_ERR_IO; - case MPI_ERR_KEYVAL_ABI_INTERNAL: - return MPI_ERR_KEYVAL; - case MPI_ERR_LOCKTYPE_ABI_INTERNAL: - return MPI_ERR_LOCKTYPE; - case MPI_ERR_NAME_ABI_INTERNAL: - return MPI_ERR_NAME; - case MPI_ERR_NO_MEM_ABI_INTERNAL: - return MPI_ERR_NO_MEM; - case MPI_ERR_NOT_SAME_ABI_INTERNAL: - return MPI_ERR_NOT_SAME; - case MPI_ERR_NO_SPACE_ABI_INTERNAL: - return MPI_ERR_NO_SPACE; - case MPI_ERR_NO_SUCH_FILE_ABI_INTERNAL: - return MPI_ERR_NO_SUCH_FILE; - case MPI_ERR_PORT_ABI_INTERNAL: - return MPI_ERR_PORT; - case MPI_ERR_PROC_ABORTED_ABI_INTERNAL: - return MPI_ERR_PROC_ABORTED; - case MPI_ERR_QUOTA_ABI_INTERNAL: - return MPI_ERR_QUOTA; - case MPI_ERR_READ_ONLY_ABI_INTERNAL: - return MPI_ERR_READ_ONLY; - case MPI_ERR_RMA_ATTACH_ABI_INTERNAL: - return MPI_ERR_RMA_ATTACH; - case MPI_ERR_RMA_CONFLICT_ABI_INTERNAL: - return MPI_ERR_RMA_CONFLICT; - case MPI_ERR_RMA_RANGE_ABI_INTERNAL: - return MPI_ERR_RMA_RANGE; - case MPI_ERR_RMA_SHARED_ABI_INTERNAL: - return MPI_ERR_RMA_SHARED; - case MPI_ERR_RMA_SYNC_ABI_INTERNAL: - return MPI_ERR_RMA_SYNC; - case MPI_ERR_RMA_FLAVOR_ABI_INTERNAL: - return MPI_ERR_RMA_FLAVOR; - case MPI_ERR_SERVICE_ABI_INTERNAL: - return MPI_ERR_SERVICE; - case MPI_ERR_SESSION_ABI_INTERNAL: - return MPI_ERR_SESSION; - case MPI_ERR_SIZE_ABI_INTERNAL: - return MPI_ERR_SIZE; - case MPI_ERR_SPAWN_ABI_INTERNAL: - return MPI_ERR_SPAWN; - case MPI_ERR_UNSUPPORTED_DATAREP_ABI_INTERNAL: - return MPI_ERR_UNSUPPORTED_DATAREP; - case MPI_ERR_UNSUPPORTED_OPERATION_ABI_INTERNAL: - return MPI_ERR_UNSUPPORTED_OPERATION; - case MPI_ERR_WIN_ABI_INTERNAL: - return MPI_ERR_WIN; - case MPI_T_ERR_CANNOT_INIT_ABI_INTERNAL: - return MPI_T_ERR_CANNOT_INIT; - case MPI_T_ERR_NOT_INITIALIZED_ABI_INTERNAL: - return MPI_T_ERR_NOT_INITIALIZED; - case MPI_T_ERR_MEMORY_ABI_INTERNAL: - return MPI_T_ERR_MEMORY; - case MPI_T_ERR_INVALID_ABI_INTERNAL: - return MPI_T_ERR_INVALID; - case MPI_T_ERR_INVALID_INDEX_ABI_INTERNAL: - return MPI_T_ERR_INVALID_INDEX; - case MPI_T_ERR_INVALID_ITEM_ABI_INTERNAL: - return MPI_T_ERR_INVALID_ITEM; - case MPI_T_ERR_INVALID_SESSION_ABI_INTERNAL: - return MPI_T_ERR_INVALID_SESSION; - case MPI_T_ERR_INVALID_HANDLE_ABI_INTERNAL: - return MPI_T_ERR_INVALID_HANDLE; - case MPI_T_ERR_INVALID_NAME_ABI_INTERNAL: - return MPI_T_ERR_INVALID_NAME; - case MPI_T_ERR_OUT_OF_HANDLES_ABI_INTERNAL: - return MPI_T_ERR_OUT_OF_HANDLES; - case MPI_T_ERR_OUT_OF_SESSIONS_ABI_INTERNAL: - return MPI_T_ERR_OUT_OF_SESSIONS; - case MPI_T_ERR_CVAR_SET_NOT_NOW_ABI_INTERNAL: - return MPI_T_ERR_CVAR_SET_NOT_NOW; - case MPI_T_ERR_CVAR_SET_NEVER_ABI_INTERNAL: - return MPI_T_ERR_CVAR_SET_NEVER; - case MPI_T_ERR_PVAR_NO_WRITE_ABI_INTERNAL: - return MPI_T_ERR_PVAR_NO_WRITE; - case MPI_T_ERR_PVAR_NO_STARTSTOP_ABI_INTERNAL: - return MPI_T_ERR_PVAR_NO_STARTSTOP; - case MPI_T_ERR_PVAR_NO_ATOMIC_ABI_INTERNAL: - return MPI_T_ERR_PVAR_NO_ATOMIC; - case MPI_ERR_LASTCODE_ABI_INTERNAL: - return MPI_ERR_LASTCODE; - default: - return error_class; - } -} -__opal_attribute_always_inline__ static inline MPI_Comm ompi_convert_abi_comm_intern_comm(MPI_Comm_ABI_INTERNAL comm) -{ - if (MPI_COMM_NULL_ABI_INTERNAL == comm) { - return MPI_COMM_NULL; - } else if (MPI_COMM_WORLD_ABI_INTERNAL == comm) { - return MPI_COMM_WORLD; - } else if (MPI_COMM_SELF_ABI_INTERNAL == comm) { - return MPI_COMM_SELF; - } - return (MPI_Comm) comm; -} -__opal_attribute_always_inline__ static inline MPI_Comm_ABI_INTERNAL ompi_convert_comm_ompi_to_standard(MPI_Comm comm) -{ - if (MPI_COMM_NULL == comm) { - return MPI_COMM_NULL_ABI_INTERNAL; - } else if (MPI_COMM_WORLD == comm) { - return MPI_COMM_WORLD_ABI_INTERNAL; - } else if (MPI_COMM_SELF == comm) { - return MPI_COMM_SELF_ABI_INTERNAL; - } - return (MPI_Comm_ABI_INTERNAL) comm; -} -__opal_attribute_always_inline__ static inline MPI_Info ompi_convert_abi_info_intern_info(MPI_Info_ABI_INTERNAL info) -{ - if (MPI_INFO_ENV_ABI_INTERNAL == info) { - return MPI_INFO_ENV; - } else if (MPI_INFO_NULL_ABI_INTERNAL == info) { - return MPI_INFO_NULL; - } - return (MPI_Info) info; -} -__opal_attribute_always_inline__ static inline MPI_Info_ABI_INTERNAL ompi_convert_info_ompi_to_standard(MPI_Info info) -{ - if (MPI_INFO_ENV == info) { - return MPI_INFO_ENV_ABI_INTERNAL; - } else if (MPI_INFO_NULL == info) { - return MPI_INFO_NULL_ABI_INTERNAL; - } - return (MPI_Info_ABI_INTERNAL) info; -} -__opal_attribute_always_inline__ static inline MPI_File ompi_convert_abi_file_intern_file(MPI_File_ABI_INTERNAL file) -{ - if (MPI_FILE_NULL_ABI_INTERNAL == file) { - return MPI_FILE_NULL; - } - return (MPI_File) file; -} -__opal_attribute_always_inline__ static inline MPI_File_ABI_INTERNAL ompi_convert_file_ompi_to_standard(MPI_File file) -{ - if (MPI_FILE_NULL == file) { - return MPI_FILE_NULL_ABI_INTERNAL; - } - return (MPI_File_ABI_INTERNAL) file; -} -__opal_attribute_always_inline__ static inline MPI_Group ompi_convert_abi_group_intern_group(MPI_Group_ABI_INTERNAL group) -{ - if (MPI_GROUP_NULL_ABI_INTERNAL == group) { - return MPI_GROUP_NULL; - } - return (MPI_Group) group; -} -__opal_attribute_always_inline__ static inline MPI_Group_ABI_INTERNAL ompi_convert_group_ompi_to_standard(MPI_Group group) -{ - if (MPI_GROUP_NULL == group) { - return MPI_GROUP_NULL_ABI_INTERNAL; - } - return (MPI_Group_ABI_INTERNAL) group; -} -__opal_attribute_always_inline__ static inline MPI_Datatype ompi_convert_abi_datatype_intern_datatype(MPI_Datatype_ABI_INTERNAL datatype) -{ - if (MPI_CHAR_ABI_INTERNAL == datatype) { - return MPI_CHAR; - } else if (MPI_SHORT_ABI_INTERNAL == datatype) { - return MPI_SHORT; - } else if (MPI_INT_ABI_INTERNAL == datatype) { - return MPI_INT; - } else if (MPI_LONG_ABI_INTERNAL == datatype) { - return MPI_LONG; - } else if (MPI_LONG_LONG_INT_ABI_INTERNAL == datatype) { - return MPI_LONG_LONG_INT; - } else if (MPI_LONG_LONG_ABI_INTERNAL == datatype) { - return MPI_LONG_LONG; - } else if (MPI_SIGNED_CHAR_ABI_INTERNAL == datatype) { - return MPI_SIGNED_CHAR; - } else if (MPI_UNSIGNED_CHAR_ABI_INTERNAL == datatype) { - return MPI_UNSIGNED_CHAR; - } else if (MPI_UNSIGNED_SHORT_ABI_INTERNAL == datatype) { - return MPI_UNSIGNED_SHORT; - } else if (MPI_UNSIGNED_ABI_INTERNAL == datatype) { - return MPI_UNSIGNED; - } else if (MPI_UNSIGNED_LONG_ABI_INTERNAL == datatype) { - return MPI_UNSIGNED_LONG; - } else if (MPI_UNSIGNED_LONG_LONG_ABI_INTERNAL == datatype) { - return MPI_UNSIGNED_LONG_LONG; - } else if (MPI_FLOAT_ABI_INTERNAL == datatype) { - return MPI_FLOAT; - } else if (MPI_DOUBLE_ABI_INTERNAL == datatype) { - return MPI_DOUBLE; - } else if (MPI_LONG_DOUBLE_ABI_INTERNAL == datatype) { - return MPI_LONG_DOUBLE; - } else if (MPI_WCHAR_ABI_INTERNAL == datatype) { - return MPI_WCHAR; - } else if (MPI_C_BOOL_ABI_INTERNAL == datatype) { - return MPI_C_BOOL; - } else if (MPI_INT8_T_ABI_INTERNAL == datatype) { - return MPI_INT8_T; - } else if (MPI_INT16_T_ABI_INTERNAL == datatype) { - return MPI_INT16_T; - } else if (MPI_INT32_T_ABI_INTERNAL == datatype) { - return MPI_INT32_T; - } else if (MPI_INT64_T_ABI_INTERNAL == datatype) { - return MPI_INT64_T; - } else if (MPI_UINT8_T_ABI_INTERNAL == datatype) { - return MPI_UINT8_T; - } else if (MPI_UINT16_T_ABI_INTERNAL == datatype) { - return MPI_UINT16_T; - } else if (MPI_UINT32_T_ABI_INTERNAL == datatype) { - return MPI_UINT32_T; - } else if (MPI_UINT64_T_ABI_INTERNAL == datatype) { - return MPI_UINT64_T; - } else if (MPI_AINT_ABI_INTERNAL == datatype) { - return MPI_AINT; - } else if (MPI_COUNT_ABI_INTERNAL == datatype) { - return MPI_COUNT; - } else if (MPI_OFFSET_ABI_INTERNAL == datatype) { - return MPI_OFFSET; - } else if (MPI_C_COMPLEX_ABI_INTERNAL == datatype) { - return MPI_C_COMPLEX; - } else if (MPI_C_FLOAT_COMPLEX_ABI_INTERNAL == datatype) { - return MPI_C_FLOAT_COMPLEX; - } else if (MPI_C_DOUBLE_COMPLEX_ABI_INTERNAL == datatype) { - return MPI_C_DOUBLE_COMPLEX; - } else if (MPI_C_LONG_DOUBLE_COMPLEX_ABI_INTERNAL == datatype) { - return MPI_C_LONG_DOUBLE_COMPLEX; - } else if (MPI_BYTE_ABI_INTERNAL == datatype) { - return MPI_BYTE; - } else if (MPI_PACKED_ABI_INTERNAL == datatype) { - return MPI_PACKED; - } else if (MPI_CXX_BOOL_ABI_INTERNAL == datatype) { - return MPI_CXX_BOOL; - } else if (MPI_CXX_FLOAT_COMPLEX_ABI_INTERNAL == datatype) { - return MPI_CXX_FLOAT_COMPLEX; - } else if (MPI_CXX_DOUBLE_COMPLEX_ABI_INTERNAL == datatype) { - return MPI_CXX_DOUBLE_COMPLEX; - } else if (MPI_CXX_LONG_DOUBLE_COMPLEX_ABI_INTERNAL == datatype) { - return MPI_CXX_LONG_DOUBLE_COMPLEX; - } else if (MPI_FLOAT_INT_ABI_INTERNAL == datatype) { - return MPI_FLOAT_INT; - } else if (MPI_DOUBLE_INT_ABI_INTERNAL == datatype) { - return MPI_DOUBLE_INT; - } else if (MPI_LONG_INT_ABI_INTERNAL == datatype) { - return MPI_LONG_INT; - } else if (MPI_2INT_ABI_INTERNAL == datatype) { - return MPI_2INT; - } else if (MPI_SHORT_INT_ABI_INTERNAL == datatype) { - return MPI_SHORT_INT; - } else if (MPI_LONG_DOUBLE_INT_ABI_INTERNAL == datatype) { - return MPI_LONG_DOUBLE_INT; - } - return (MPI_Datatype) datatype; -} -__opal_attribute_always_inline__ static inline MPI_Datatype_ABI_INTERNAL ompi_convert_datatype_ompi_to_standard(MPI_Datatype datatype) -{ - if (MPI_CHAR == datatype) { - return MPI_CHAR_ABI_INTERNAL; - } else if (MPI_SHORT == datatype) { - return MPI_SHORT_ABI_INTERNAL; - } else if (MPI_INT == datatype) { - return MPI_INT_ABI_INTERNAL; - } else if (MPI_LONG == datatype) { - return MPI_LONG_ABI_INTERNAL; - } else if (MPI_LONG_LONG_INT == datatype) { - return MPI_LONG_LONG_INT_ABI_INTERNAL; - } else if (MPI_LONG_LONG == datatype) { - return MPI_LONG_LONG_ABI_INTERNAL; - } else if (MPI_SIGNED_CHAR == datatype) { - return MPI_SIGNED_CHAR_ABI_INTERNAL; - } else if (MPI_UNSIGNED_CHAR == datatype) { - return MPI_UNSIGNED_CHAR_ABI_INTERNAL; - } else if (MPI_UNSIGNED_SHORT == datatype) { - return MPI_UNSIGNED_SHORT_ABI_INTERNAL; - } else if (MPI_UNSIGNED == datatype) { - return MPI_UNSIGNED_ABI_INTERNAL; - } else if (MPI_UNSIGNED_LONG == datatype) { - return MPI_UNSIGNED_LONG_ABI_INTERNAL; - } else if (MPI_UNSIGNED_LONG_LONG == datatype) { - return MPI_UNSIGNED_LONG_LONG_ABI_INTERNAL; - } else if (MPI_FLOAT == datatype) { - return MPI_FLOAT_ABI_INTERNAL; - } else if (MPI_DOUBLE == datatype) { - return MPI_DOUBLE_ABI_INTERNAL; - } else if (MPI_LONG_DOUBLE == datatype) { - return MPI_LONG_DOUBLE_ABI_INTERNAL; - } else if (MPI_WCHAR == datatype) { - return MPI_WCHAR_ABI_INTERNAL; - } else if (MPI_C_BOOL == datatype) { - return MPI_C_BOOL_ABI_INTERNAL; - } else if (MPI_INT8_T == datatype) { - return MPI_INT8_T_ABI_INTERNAL; - } else if (MPI_INT16_T == datatype) { - return MPI_INT16_T_ABI_INTERNAL; - } else if (MPI_INT32_T == datatype) { - return MPI_INT32_T_ABI_INTERNAL; - } else if (MPI_INT64_T == datatype) { - return MPI_INT64_T_ABI_INTERNAL; - } else if (MPI_UINT8_T == datatype) { - return MPI_UINT8_T_ABI_INTERNAL; - } else if (MPI_UINT16_T == datatype) { - return MPI_UINT16_T_ABI_INTERNAL; - } else if (MPI_UINT32_T == datatype) { - return MPI_UINT32_T_ABI_INTERNAL; - } else if (MPI_UINT64_T == datatype) { - return MPI_UINT64_T_ABI_INTERNAL; - } else if (MPI_AINT == datatype) { - return MPI_AINT_ABI_INTERNAL; - } else if (MPI_COUNT == datatype) { - return MPI_COUNT_ABI_INTERNAL; - } else if (MPI_OFFSET == datatype) { - return MPI_OFFSET_ABI_INTERNAL; - } else if (MPI_C_COMPLEX == datatype) { - return MPI_C_COMPLEX_ABI_INTERNAL; - } else if (MPI_C_FLOAT_COMPLEX == datatype) { - return MPI_C_FLOAT_COMPLEX_ABI_INTERNAL; - } else if (MPI_C_DOUBLE_COMPLEX == datatype) { - return MPI_C_DOUBLE_COMPLEX_ABI_INTERNAL; - } else if (MPI_C_LONG_DOUBLE_COMPLEX == datatype) { - return MPI_C_LONG_DOUBLE_COMPLEX_ABI_INTERNAL; - } else if (MPI_BYTE == datatype) { - return MPI_BYTE_ABI_INTERNAL; - } else if (MPI_PACKED == datatype) { - return MPI_PACKED_ABI_INTERNAL; - } else if (MPI_CXX_BOOL == datatype) { - return MPI_CXX_BOOL_ABI_INTERNAL; - } else if (MPI_CXX_FLOAT_COMPLEX == datatype) { - return MPI_CXX_FLOAT_COMPLEX_ABI_INTERNAL; - } else if (MPI_CXX_DOUBLE_COMPLEX == datatype) { - return MPI_CXX_DOUBLE_COMPLEX_ABI_INTERNAL; - } else if (MPI_CXX_LONG_DOUBLE_COMPLEX == datatype) { - return MPI_CXX_LONG_DOUBLE_COMPLEX_ABI_INTERNAL; - } else if (MPI_FLOAT_INT == datatype) { - return MPI_FLOAT_INT_ABI_INTERNAL; - } else if (MPI_DOUBLE_INT == datatype) { - return MPI_DOUBLE_INT_ABI_INTERNAL; - } else if (MPI_LONG_INT == datatype) { - return MPI_LONG_INT_ABI_INTERNAL; - } else if (MPI_2INT == datatype) { - return MPI_2INT_ABI_INTERNAL; - } else if (MPI_SHORT_INT == datatype) { - return MPI_SHORT_INT_ABI_INTERNAL; - } else if (MPI_LONG_DOUBLE_INT == datatype) { - return MPI_LONG_DOUBLE_INT_ABI_INTERNAL; - } - return (MPI_Datatype_ABI_INTERNAL) datatype; -} -__opal_attribute_always_inline__ static inline MPI_Errhandler ompi_convert_abi_errorhandler_intern_errorhandler(MPI_Errhandler_ABI_INTERNAL errorhandler) -{ - if (MPI_ERRHANDLER_NULL_ABI_INTERNAL == errorhandler) { - return MPI_ERRHANDLER_NULL; - } - return (MPI_Errhandler) errorhandler; -} -__opal_attribute_always_inline__ static inline MPI_Errhandler_ABI_INTERNAL ompi_convert_intern_errorhandler_abi_errorhandler(MPI_Errhandler errorhandler) -{ - if (MPI_ERRHANDLER_NULL == errorhandler) { - return MPI_ERRHANDLER_NULL_ABI_INTERNAL; - } - return (MPI_Errhandler_ABI_INTERNAL) errorhandler; -} -__opal_attribute_always_inline__ static inline MPI_Message ompi_convert_abi_message_intern_message(MPI_Message_ABI_INTERNAL message) -{ - if (MPI_MESSAGE_NULL_ABI_INTERNAL == message) { - return MPI_MESSAGE_NULL; - } else if (MPI_MESSAGE_NO_PROC_ABI_INTERNAL == message) { - return MPI_MESSAGE_NO_PROC; - } - return (MPI_Message) message; -} -__opal_attribute_always_inline__ static inline MPI_Message_ABI_INTERNAL ompi_convert_message_ompi_to_standard(MPI_Message message) -{ - if (MPI_MESSAGE_NULL == message) { - return MPI_MESSAGE_NULL_ABI_INTERNAL; - } else if (MPI_MESSAGE_NO_PROC == message) { - return MPI_MESSAGE_NO_PROC_ABI_INTERNAL; - } - return (MPI_Message_ABI_INTERNAL) message; -} -__opal_attribute_always_inline__ static inline MPI_Op ompi_convert_abi_op_intern_op(MPI_Op_ABI_INTERNAL op) -{ - if (MPI_MAX_ABI_INTERNAL == op) { - return MPI_MAX; - } else if (MPI_MIN_ABI_INTERNAL == op) { - return MPI_MIN; - } else if (MPI_SUM_ABI_INTERNAL == op) { - return MPI_SUM; - } else if (MPI_PROD_ABI_INTERNAL == op) { - return MPI_PROD; - } else if (MPI_MAXLOC_ABI_INTERNAL == op) { - return MPI_MAXLOC; - } else if (MPI_MINLOC_ABI_INTERNAL == op) { - return MPI_MINLOC; - } else if (MPI_BAND_ABI_INTERNAL == op) { - return MPI_BAND; - } else if (MPI_BOR_ABI_INTERNAL == op) { - return MPI_BOR; - } else if (MPI_BXOR_ABI_INTERNAL == op) { - return MPI_BXOR; - } else if (MPI_LAND_ABI_INTERNAL == op) { - return MPI_LAND; - } else if (MPI_LOR_ABI_INTERNAL == op) { - return MPI_LOR; - } else if (MPI_LXOR_ABI_INTERNAL == op) { - return MPI_LXOR; - } else if (MPI_REPLACE_ABI_INTERNAL == op) { - return MPI_REPLACE; - } else if (MPI_NO_OP_ABI_INTERNAL == op) { - return MPI_NO_OP; - } - return (MPI_Op) op; -} -__opal_attribute_always_inline__ static inline MPI_Op_ABI_INTERNAL ompi_convert_op_ompi_to_standard(MPI_Op op) -{ - if (MPI_OP_NULL == op) { - return MPI_OP_NULL_ABI_INTERNAL; - } - return (MPI_Op_ABI_INTERNAL) op; -} -__opal_attribute_always_inline__ static inline MPI_Session ompi_convert_abi_session_intern_session(MPI_Session_ABI_INTERNAL session) -{ - if (MPI_SESSION_NULL_ABI_INTERNAL == session) { - return MPI_SESSION_NULL; - } - return (MPI_Session) session; -} -__opal_attribute_always_inline__ static inline MPI_Session_ABI_INTERNAL ompi_convert_session_ompi_to_standard(MPI_Session session) -{ - if (MPI_SESSION_NULL == session) { - return MPI_SESSION_NULL_ABI_INTERNAL; - } - return (MPI_Session_ABI_INTERNAL) session; -} -__opal_attribute_always_inline__ static inline MPI_Win ompi_convert_abi_win_intern_win(MPI_Win_ABI_INTERNAL win) -{ - if (MPI_WIN_NULL_ABI_INTERNAL == win) { - return MPI_WIN_NULL; - } - return (MPI_Win) win; -} -__opal_attribute_always_inline__ static inline MPI_Win_ABI_INTERNAL ompi_convert_win_ompi_to_standard(MPI_Win win) -{ - if (MPI_WIN_NULL == win) { - return MPI_WIN_NULL_ABI_INTERNAL; - } - return (MPI_Win_ABI_INTERNAL) win; -} -__opal_attribute_always_inline__ static inline void ompi_convert_abi_request_intern_request(MPI_Request_ABI_INTERNAL *ptr) -{ - if (MPI_REQUEST_NULL == (MPI_Request) *ptr) { - *ptr = MPI_REQUEST_NULL_ABI_INTERNAL; - } -} -__opal_attribute_always_inline__ static inline MPI_Request_ABI_INTERNAL ompi_convert_ompi_request_abi_request(MPI_Request request) -{ - if (MPI_REQUEST_NULL == request) { - return MPI_REQUEST_NULL_ABI_INTERNAL; - } - return (MPI_Request_ABI_INTERNAL) request; -} -__opal_attribute_always_inline__ static inline void ompi_convert_abi_status_intern_status(MPI_Status *out, MPI_Status_ABI_INTERNAL *inp) -{ - void *ptr = &out->_ucount; - out->MPI_SOURCE = inp->MPI_SOURCE; - out->MPI_TAG = inp->MPI_TAG; - out->_cancelled = inp->MPI_internal[0]; - memcpy(ptr, &inp->MPI_internal[1],sizeof(out->_ucount)); - out->MPI_ERROR = ompi_convert_abi_error_intern_error(inp->MPI_ERROR); -} -__opal_attribute_always_inline__ static inline void ompi_convert_intern_status_abi_status(MPI_Status_ABI_INTERNAL *out, MPI_Status *inp) -{ - void *ptr = &out->MPI_internal[1]; - out->MPI_SOURCE = inp->MPI_SOURCE; - out->MPI_TAG = inp->MPI_TAG; - out->MPI_internal[0] =inp->_cancelled; - memcpy(ptr, &inp->_ucount,sizeof(inp->_ucount)); -} - -#if defined(c_plusplus) || defined(__cplusplus) -} -#endif - -#endif /* _ABI_CONVERTORS_ */ diff --git a/ompi/mpi/c/abi_details.c b/ompi/mpi/c/abi_details.c deleted file mode 100644 index 8dfc7b6e629..00000000000 --- a/ompi/mpi/c/abi_details.c +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2023 Triad National Security, LLC. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" - -#include - -#include "opal/util/show_help.h" -#include "ompi/runtime/ompi_spc.h" -#include "ompi/mpi/c/bindings.h" -#include "ompi/communicator/communicator.h" -#include "ompi/errhandler/errhandler.h" -#include "ompi/constants.h" -#ifdef OMPI_NO_MPI_PROTOTYPES -#include "ompi/mpi/c/abi.h" -#endif - -static const char ABI_DETAILS[] = "Open MPI Standard ABI 0.1"; - -int MPI_Abi_details(int *buflen, char *details, MPI_Info *info) -{ - if (*buflen >= (int) sizeof(ABI_DETAILS)) { - strcpy(details, ABI_DETAILS); - *buflen = sizeof(ABI_DETAILS); - return MPI_SUCCESS; - } else { - *buflen = 0; - return MPI_ERR_BUFFER; - } -} diff --git a/ompi/mpi/c/abi_get_fortran_booleans.c.in b/ompi/mpi/c/abi_get_fortran_booleans.c.in new file mode 100644 index 00000000000..670b22aea6d --- /dev/null +++ b/ompi/mpi/c/abi_get_fortran_booleans.c.in @@ -0,0 +1,48 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2020 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2018-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/communicator/communicator.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/info/info.h" +#include "ompi/mpi/c/bindings.h" + +PROTOTYPE ERROR_CLASS abi_get_fortran_booleans(INT logical_size, VOID logical_true, + VOID logical_false, INT_OUT is_set) +{ + int ret = MPI_SUCCESS; + + if (MPI_PARAM_CHECK) { + if ((NULL == logical_true) || (NULL == logical_false) || + (NULL == is_set)) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_ARG, + FUNC_NAME); + } + } + + ret = ompi_abi_get_fortran_booleans(logical_size, logical_true, logical_false, is_set); + OMPI_ERRHANDLER_NOHANDLE_RETURN( ret, ret, FUNC_NAME ); +} diff --git a/ompi/mpi/c/abi_get_fortran_info.c.in b/ompi/mpi/c/abi_get_fortran_info.c.in new file mode 100644 index 00000000000..b3ef8014dea --- /dev/null +++ b/ompi/mpi/c/abi_get_fortran_info.c.in @@ -0,0 +1,45 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2020 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2018-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/communicator/communicator.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/info/info.h" + +PROTOTYPE ERROR_CLASS abi_get_fortran_info(INFO_OUT info) +{ + int ret = MPI_SUCCESS; + + if (MPI_PARAM_CHECK) { + if (NULL == info) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_INFO, + FUNC_NAME); + } + } + + ret = ompi_abi_get_fortran_info(info); + OMPI_ERRHANDLER_NOHANDLE_RETURN( ret, ret, FUNC_NAME ); +} diff --git a/ompi/mpi/c/abi_get_info.c.in b/ompi/mpi/c/abi_get_info.c.in new file mode 100644 index 00000000000..1a2b036e9aa --- /dev/null +++ b/ompi/mpi/c/abi_get_info.c.in @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2023-2025 Triad National Security, LLC. All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include + +#include "opal/util/show_help.h" +#include "ompi/runtime/ompi_spc.h" +#include "ompi/mpi/c/bindings.h" +#include "ompi/communicator/communicator.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/constants.h" + +PROTOTYPE ERROR_CLASS abi_get_info(INFO_OUT info) +{ + int ret = OPAL_SUCCESS; + ompi_info_t *newinfo = NULL; + char tmp[16]; + + newinfo = ompi_info_allocate(); + if (NULL == newinfo) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_NO_MEM, + "MPI_Info_dup"); + } + + snprintf(tmp, 16, "%" PRIsize_t, sizeof(MPI_Aint)); + ret = opal_info_set(&newinfo->super, "mpi_aint_size", tmp); + if (OPAL_SUCCESS != ret) { + goto err_cleanup; + } + snprintf(tmp, 16, "%" PRIsize_t, sizeof(MPI_Count)); + ret = opal_info_set(&newinfo->super, "mpi_count_size", tmp); + if (OPAL_SUCCESS != ret) { + goto err_cleanup; + } + snprintf(tmp, 16, "%" PRIsize_t, sizeof(MPI_Offset)); + ret = opal_info_set(&newinfo->super, "mpi_offset_size", tmp); + if (OPAL_SUCCESS != ret) { + goto err_cleanup; + } + + *info = newinfo; + +exit: + OMPI_ERRHANDLER_NOHANDLE_RETURN( ret, ret, FUNC_NAME ); + +err_cleanup: + ompi_info_free(&newinfo); + goto exit; +} diff --git a/ompi/mpi/c/abi_version.c b/ompi/mpi/c/abi_get_version.c.in similarity index 53% rename from ompi/mpi/c/abi_version.c rename to ompi/mpi/c/abi_get_version.c.in index 33d32854893..f22905516dd 100644 --- a/ompi/mpi/c/abi_version.c +++ b/ompi/mpi/c/abi_get_version.c.in @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Triad National Security, LLC. All rights reserved. + * Copyright (c) 2023-2025 Triad National Security, LLC. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -17,14 +17,19 @@ #include "ompi/communicator/communicator.h" #include "ompi/errhandler/errhandler.h" #include "ompi/constants.h" -#ifdef OMPI_NO_MPI_PROTOTYPES -#include "ompi/mpi/c/abi.h" -#endif -int MPI_Abi_version(int *abi_major, int *abi_minor) +PROTOTYPE ERROR_CLASS abi_get_version(INT_OUT abi_major, INT_OUT abi_minor) { +/* + * For the curious see Chapter 20 section 2 of the MPI 5 standard + */ +#if OMPI_ABI_SRC /* 0.1 */ - *abi_major = 0; - *abi_minor = 1; + *abi_major = 1; + *abi_minor = 0; +#else + *abi_major = -1; + *abi_minor = -1; +#endif return MPI_SUCCESS; } diff --git a/ompi/mpi/c/abi_set_fortran_booleans.c.in b/ompi/mpi/c/abi_set_fortran_booleans.c.in new file mode 100644 index 00000000000..653fb56b4bd --- /dev/null +++ b/ompi/mpi/c/abi_set_fortran_booleans.c.in @@ -0,0 +1,47 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2020 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2018-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/communicator/communicator.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/info/info.h" +#include "ompi/mpi/c/bindings.h" + +PROTOTYPE ERROR_CLASS abi_set_fortran_booleans(INT logical_size, VOID logical_true, + VOID logical_false) +{ + int ret = MPI_SUCCESS; + + if (MPI_PARAM_CHECK) { + if ((NULL == logical_true) || (NULL == logical_false)) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_ARG, + FUNC_NAME); + } + } + + ret = ompi_abi_set_fortran_booleans(logical_size, logical_true, logical_false); + OMPI_ERRHANDLER_NOHANDLE_RETURN( ret, ret, FUNC_NAME ); +} diff --git a/ompi/mpi/c/abi_set_fortran_info.c.in b/ompi/mpi/c/abi_set_fortran_info.c.in new file mode 100644 index 00000000000..b7fcaedbed8 --- /dev/null +++ b/ompi/mpi/c/abi_set_fortran_info.c.in @@ -0,0 +1,45 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2020 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2018-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/communicator/communicator.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/info/info.h" + +PROTOTYPE ERROR_CLASS abi_set_fortran_info(INFO info) +{ + int ret = MPI_SUCCESS; + + if (MPI_PARAM_CHECK) { + if (NULL == info) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_INFO, + FUNC_NAME); + } + } + + ret = ompi_abi_set_fortran_info(info); + OMPI_ERRHANDLER_NOHANDLE_RETURN( ret, ret, FUNC_NAME ); +} diff --git a/ompi/mpi/c/abi_supported.c b/ompi/mpi/c/abi_supported.c deleted file mode 100644 index b8b977962ba..00000000000 --- a/ompi/mpi/c/abi_supported.c +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2023 Triad National Security, LLC. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" - -#include - -#include "opal/util/show_help.h" -#include "ompi/runtime/ompi_spc.h" -#include "ompi/mpi/c/bindings.h" -#include "ompi/communicator/communicator.h" -#include "ompi/errhandler/errhandler.h" -#include "ompi/constants.h" -#ifdef OMPI_NO_MPI_PROTOTYPES -#include "ompi/mpi/c/abi.h" -#endif - -int MPI_Abi_supported(int *flag) -{ - *flag = 1; - return MPI_SUCCESS; -} diff --git a/ompi/mpi/c/accumulate.c.in b/ompi/mpi/c/accumulate.c.in index d778f5dc822..dee4f854ab0 100644 --- a/ompi/mpi/c/accumulate.c.in +++ b/ompi/mpi/c/accumulate.c.in @@ -37,8 +37,8 @@ #include "ompi/datatype/ompi_datatype_internal.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS accumulate(BUFFER origin_addr, COUNT origin_count, DATATYPE origin_datatype, - INT target_rank, AINT target_disp, COUNT target_count, +PROTOTYPE ERROR_CLASS accumulate(BUFFER_CONST origin_addr, COUNT origin_count, DATATYPE origin_datatype, + SOURCE target_rank, AINT target_disp, COUNT target_count, DATATYPE target_datatype, OP op, WIN win) { int rc; diff --git a/ompi/mpi/c/add_error_class.c.in b/ompi/mpi/c/add_error_class.c.in index b986e32dcfa..1d266ae3793 100644 --- a/ompi/mpi/c/add_error_class.c.in +++ b/ompi/mpi/c/add_error_class.c.in @@ -31,7 +31,7 @@ #include "ompi/communicator/communicator.h" #include "ompi/attribute/attribute.h" -PROTOTYPE ERROR_CLASS add_error_class(INT_OUT errorclass) +PROTOTYPE ERROR_CLASS add_error_class(ERROR_CLASS_OUT errorclass) { int eclass; int rc; diff --git a/ompi/mpi/c/add_error_code.c.in b/ompi/mpi/c/add_error_code.c.in index 667ee190371..3141c4c090d 100644 --- a/ompi/mpi/c/add_error_code.c.in +++ b/ompi/mpi/c/add_error_code.c.in @@ -31,7 +31,7 @@ #include "ompi/errhandler/errcode.h" #include "ompi/attribute/attribute.h" -PROTOTYPE ERROR_CLASS add_error_code(INT errorclass, INT_OUT errorcode) +PROTOTYPE ERROR_CLASS add_error_code(ERROR_CLASS errorclass, ERROR_CODE_OUT errorcode) { int ecode; int rc; diff --git a/ompi/mpi/c/add_error_string.c.in b/ompi/mpi/c/add_error_string.c.in index d5e1e0e5d74..4cbd39c5601 100644 --- a/ompi/mpi/c/add_error_string.c.in +++ b/ompi/mpi/c/add_error_string.c.in @@ -30,7 +30,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/errhandler/errcode.h" -PROTOTYPE ERROR_CLASS add_error_string(INT errorcode, STRING string) +PROTOTYPE ERROR_CLASS add_error_string(ERROR_CODE errorcode, STRING string) { int rc; @@ -45,7 +45,7 @@ PROTOTYPE ERROR_CLASS add_error_string(INT errorcode, STRING string) return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_ARG, FUNC_NAME); - if ( MPI_MAX_ERROR_STRING < (strlen(string)+1) ) + if ( @MPI_MAX_ERROR_STRING@ < (strlen(string)+1) ) return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_ARG, FUNC_NAME); } diff --git a/ompi/mpi/c/aint_add_abi.c b/ompi/mpi/c/aint_add_abi.c new file mode 100644 index 00000000000..171e19f878d --- /dev/null +++ b/ompi/mpi/c/aint_add_abi.c @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" +#include + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Aint_add = PMPI_Aint_add +#endif +#define MPI_Aint_add PMPI_Aint_add +#endif + +MPI_Aint MPI_Aint_add(MPI_Aint addr1, MPI_Aint addr2) +{ + return (MPI_Aint)((char *)(addr1) + (addr2)); +} + diff --git a/ompi/mpi/c/aint_diff_abi.c b/ompi/mpi/c/aint_diff_abi.c new file mode 100644 index 00000000000..f5c021d8ad4 --- /dev/null +++ b/ompi/mpi/c/aint_diff_abi.c @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" +#include + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Aint_diff = PMPI_Aint_diff +#endif +#define MPI_Aint_diff PMPI_Aint_diff +#endif + +MPI_Aint MPI_Aint_diff(MPI_Aint addr1, MPI_Aint addr2) +{ + return (MPI_Aint)((char *)(addr1) - (char *)(addr2)); +} + diff --git a/ompi/mpi/c/allgather.c.in b/ompi/mpi/c/allgather.c.in index ec9e57c1079..c98d8c6ca6e 100644 --- a/ompi/mpi/c/allgather.c.in +++ b/ompi/mpi/c/allgather.c.in @@ -37,7 +37,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS allgather(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS allgather(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, COMM comm) { diff --git a/ompi/mpi/c/allgather_init.c.in b/ompi/mpi/c/allgather_init.c.in index 54a14756231..718402505b5 100644 --- a/ompi/mpi/c/allgather_init.c.in +++ b/ompi/mpi/c/allgather_init.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,7 +37,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS allgather_init(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS allgather_init(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, COMM comm, INFO info, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/allgatherv.c.in b/ompi/mpi/c/allgatherv.c.in index e0501ce3887..4e243b89d30 100644 --- a/ompi/mpi/c/allgatherv.c.in +++ b/ompi/mpi/c/allgatherv.c.in @@ -17,7 +17,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -38,7 +38,7 @@ #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS allgatherv(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS allgatherv(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY displs, DATATYPE recvtype, COMM comm) { diff --git a/ompi/mpi/c/allgatherv_init.c.in b/ompi/mpi/c/allgatherv_init.c.in index 090b1b9befb..2818f3220a4 100644 --- a/ompi/mpi/c/allgatherv_init.c.in +++ b/ompi/mpi/c/allgatherv_init.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,7 +37,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS allgatherv_init(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS allgatherv_init(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY displs, DATATYPE recvtype, COMM comm, INFO info, REQUEST_INOUT request) diff --git a/ompi/mpi/c/allreduce.c.in b/ompi/mpi/c/allreduce.c.in index 182fa1fd02d..e2d9dad5b0d 100644 --- a/ompi/mpi/c/allreduce.c.in +++ b/ompi/mpi/c/allreduce.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,7 +36,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS allreduce(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT count, +PROTOTYPE ERROR_CLASS allreduce(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT count, DATATYPE datatype, OP op, COMM comm) { int err; diff --git a/ompi/mpi/c/allreduce_init.c.in b/ompi/mpi/c/allreduce_init.c.in index 3f613c2d587..3cbacfdb1fa 100644 --- a/ompi/mpi/c/allreduce_init.c.in +++ b/ompi/mpi/c/allreduce_init.c.in @@ -16,7 +16,7 @@ * and Technology (RIST). All rights reserved. * Copyright (c) 2016 IBM Corporation. All rights reserved. * Copyright (c) 2018 FUJITSU LIMITED. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -38,7 +38,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS allreduce_init(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT count, +PROTOTYPE ERROR_CLASS allreduce_init(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT count, DATATYPE datatype, OP op, COMM comm, INFO info, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/alltoall.c.in b/ompi/mpi/c/alltoall.c.in index 63124937903..00e0237070a 100644 --- a/ompi/mpi/c/alltoall.c.in +++ b/ompi/mpi/c/alltoall.c.in @@ -17,7 +17,7 @@ * Copyright (c) 2014-2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2015 Mellanox Technologies. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,7 +37,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS alltoall(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS alltoall(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, COMM comm) { diff --git a/ompi/mpi/c/alltoall_init.c.in b/ompi/mpi/c/alltoall_init.c.in index becb9f77d54..f3d203c67a8 100644 --- a/ompi/mpi/c/alltoall_init.c.in +++ b/ompi/mpi/c/alltoall_init.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2014-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,7 +37,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS alltoall_init(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS alltoall_init(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, COMM comm, INFO info, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/alltoallv.c.in b/ompi/mpi/c/alltoallv.c.in index dd9fabc5db1..5e9ac16d915 100644 --- a/ompi/mpi/c/alltoallv.c.in +++ b/ompi/mpi/c/alltoallv.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2014-2018 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,7 +36,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS alltoallv(BUFFER sendbuf, COUNT_ARRAY sendcounts, +PROTOTYPE ERROR_CLASS alltoallv(BUFFER_CONST sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY rdispls, DATATYPE recvtype, COMM comm) diff --git a/ompi/mpi/c/alltoallv_init.c.in b/ompi/mpi/c/alltoallv_init.c.in index da7a9358426..868b68b504e 100644 --- a/ompi/mpi/c/alltoallv_init.c.in +++ b/ompi/mpi/c/alltoallv_init.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2014-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,7 +36,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS alltoallv_init(BUFFER sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, +PROTOTYPE ERROR_CLASS alltoallv_init(BUFFER_CONST sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY rdispls, DATATYPE recvtype, COMM comm, INFO info, REQUEST_INOUT request) diff --git a/ompi/mpi/c/alltoallw.c.in b/ompi/mpi/c/alltoallw.c.in index 75f0a131ec2..ec833970431 100644 --- a/ompi/mpi/c/alltoallw.c.in +++ b/ompi/mpi/c/alltoallw.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2014-2018 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,7 +36,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS alltoallw(BUFFER sendbuf, COUNT_ARRAY sendcounts, +PROTOTYPE ERROR_CLASS alltoallw(BUFFER_CONST sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, DATATYPE_ARRAY sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY rdispls, DATATYPE_ARRAY recvtypes, COMM comm) diff --git a/ompi/mpi/c/alltoallw_init.c.in b/ompi/mpi/c/alltoallw_init.c.in index bb37f852993..5ee5c08cca2 100644 --- a/ompi/mpi/c/alltoallw_init.c.in +++ b/ompi/mpi/c/alltoallw_init.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2014-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,9 +36,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS alltoallw_init(BUFFER sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, - DATATYPE_ARRAY sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, - DISP_ARRAY rdispls, DATATYPE_ARRAY recvtypes, COMM comm, +PROTOTYPE ERROR_CLASS alltoallw_init(BUFFER_CONST sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, + DATATYPE_ARRAY_ASYNC sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, + DISP_ARRAY rdispls, DATATYPE_ARRAY_ASYNC recvtypes, COMM comm, INFO info, REQUEST_INOUT request) { int i, size, err; diff --git a/ompi/mpi/c/attr_delete.c.in b/ompi/mpi/c/attr_delete.c.in index 8bc920ad4f5..9ebe98e4fdd 100644 --- a/ompi/mpi/c/attr_delete.c.in +++ b/ompi/mpi/c/attr_delete.c.in @@ -31,7 +31,7 @@ #include "ompi/attribute/attribute.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS attr_delete(COMM comm, INT keyval) +PROTOTYPE ERROR_CLASS attr_delete(COMM comm, ATTR_KEY keyval) { int ret; diff --git a/ompi/mpi/c/attr_fn_abi.c b/ompi/mpi/c/attr_fn_abi.c new file mode 100644 index 00000000000..f8196c4c18b --- /dev/null +++ b/ompi/mpi/c/attr_fn_abi.c @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2018 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + + +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +/* + * variables used for certain predefined attributes, + * e.g. MPI_IO, MPI_HOST + */ +int ompi_abi_mpi_proc_null_val = MPI_PROC_NULL_ABI_INTERNAL; +int ompi_abi_mpi_any_source_val = MPI_ANY_SOURCE_ABI_INTERNAL; +int ompi_abi_mpi_lastusedcode = 0; + +/* + * variables used for certain predefined attributes + * for windows + */ +int ompi_abi_mpi_win_flavor_create = MPI_WIN_FLAVOR_CREATE_ABI_INTERNAL; +int ompi_abi_mpi_win_flavor_allocate = MPI_WIN_FLAVOR_ALLOCATE_ABI_INTERNAL; +int ompi_abi_mpi_win_flavor_shared = MPI_WIN_FLAVOR_SHARED_ABI_INTERNAL; +int ompi_abi_mpi_win_flavor_dynamic = MPI_WIN_FLAVOR_DYNAMIC_ABI_INTERNAL; +int ompi_abi_mpi_win_model_unified = MPI_WIN_UNIFIED_ABI_INTERNAL; +int ompi_abi_mpi_win_model_separate = MPI_WIN_SEPARATE_ABI_INTERNAL; + +/* + * predefined callbacks for win, comm, type attributes + */ +int ABI_C_MPI_TYPE_NULL_DELETE_FN( MPI_Datatype_ABI_INTERNAL datatype, int type_keyval, + void* attribute_val_out, + void* extra_state ) +{ + return MPI_SUCCESS; +} + +int ABI_C_MPI_TYPE_NULL_COPY_FN( MPI_Datatype_ABI_INTERNAL datatype, int type_keyval, + void* extra_state, + void* attribute_val_in, + void* attribute_val_out, + int* flag ) +{ + *flag = 0; + return MPI_SUCCESS; +} + +int ABI_C_MPI_TYPE_DUP_FN( MPI_Datatype_ABI_INTERNAL datatype, int type_keyval, + void* extra_state, + void* attribute_val_in, void* attribute_val_out, + int* flag ) +{ + *flag = 1; + *(void**)attribute_val_out = attribute_val_in; + return MPI_SUCCESS; +} + +int ABI_C_MPI_WIN_NULL_DELETE_FN( MPI_Win_ABI_INTERNAL window, int win_keyval, + void* attribute_val_out, + void* extra_state ) +{ + return MPI_SUCCESS; +} + +int ABI_C_MPI_WIN_NULL_COPY_FN( MPI_Win_ABI_INTERNAL window, int win_keyval, + void* extra_state, + void* attribute_val_in, + void* attribute_val_out, int* flag ) +{ + *flag= 0; + return MPI_SUCCESS; +} + +int ABI_C_MPI_WIN_DUP_FN( MPI_Win_ABI_INTERNAL window, int win_keyval, void* extra_state, + void* attribute_val_in, void* attribute_val_out, + int* flag ) +{ + *flag = 1; + *(void**)attribute_val_out = attribute_val_in; + return MPI_SUCCESS; +} + +int ABI_C_MPI_COMM_NULL_DELETE_FN( MPI_Comm_ABI_INTERNAL comm, int comm_keyval, + void* attribute_val_out, + void* extra_state ) +{ + return MPI_SUCCESS; +} + +int ABI_C_MPI_COMM_NULL_COPY_FN( MPI_Comm_ABI_INTERNAL comm, int comm_keyval, + void* extra_state, + void* attribute_val_in, + void* attribute_val_out, int* flag ) +{ + *flag = 0; + return MPI_SUCCESS; +} + +int ABI_C_MPI_COMM_DUP_FN( MPI_Comm_ABI_INTERNAL comm, int comm_keyval, void* extra_state, + void* attribute_val_in, void* attribute_val_out, + int* flag ) +{ + *flag = 1; + *(void**)attribute_val_out = attribute_val_in; + return MPI_SUCCESS; +} diff --git a/ompi/mpi/c/attr_get.c.in b/ompi/mpi/c/attr_get.c.in index 36b1e1f7a9b..362c3b7cc8a 100644 --- a/ompi/mpi/c/attr_get.c.in +++ b/ompi/mpi/c/attr_get.c.in @@ -30,7 +30,7 @@ #include "ompi/attribute/attribute.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS attr_get(COMM comm, INT keyval, BUFFER_OUT attribute_val, INT_OUT flag) +PROTOTYPE ERROR_CLASS attr_get(COMM comm, ATTR_KEY keyval, BUFFER_OUT attribute_val, INT_OUT flag) { int ret; diff --git a/ompi/mpi/c/attr_put.c.in b/ompi/mpi/c/attr_put.c.in index 4b6e5cd8b5c..8a5f60754d5 100644 --- a/ompi/mpi/c/attr_put.c.in +++ b/ompi/mpi/c/attr_put.c.in @@ -31,7 +31,7 @@ #include "ompi/attribute/attribute.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS attr_put(COMM comm, INT keyval, BUFFER_OUT attribute_val) +PROTOTYPE ERROR_CLASS attr_put(COMM comm, ATTR_KEY keyval, BUFFER_OUT attribute_val) { int ret; diff --git a/ompi/mpi/c/bcast.c.in b/ompi/mpi/c/bcast.c.in index bbb54d24b04..f12922f11c2 100644 --- a/ompi/mpi/c/bcast.c.in +++ b/ompi/mpi/c/bcast.c.in @@ -32,7 +32,7 @@ #include "ompi/runtime/ompi_spc.h" PROTOTYPE ERROR_CLASS bcast(BUFFER_OUT buffer, COUNT count, DATATYPE datatype, - INT root, COMM comm) + ROOT root, COMM comm) { int err; diff --git a/ompi/mpi/c/bcast_init.c.in b/ompi/mpi/c/bcast_init.c.in index 08213a90a0a..d5a827f9ff7 100644 --- a/ompi/mpi/c/bcast_init.c.in +++ b/ompi/mpi/c/bcast_init.c.in @@ -26,7 +26,7 @@ #include "ompi/runtime/ompi_spc.h" PROTOTYPE ERROR_CLASS bcast_init(BUFFER_OUT buffer, COUNT count, DATATYPE datatype, - INT root, COMM comm, INFO info, REQUEST_INOUT request) + ROOT root, COMM comm, INFO info, REQUEST_INOUT request) { int err; diff --git a/ompi/mpi/c/bindings.h b/ompi/mpi/c/bindings.h index 717fe79287f..385ef6f93b1 100644 --- a/ompi/mpi/c/bindings.h +++ b/ompi/mpi/c/bindings.h @@ -25,6 +25,8 @@ #include "ompi_config.h" #include "mpi.h" #include "ompi/datatype/ompi_datatype.h" +#include "ompi/datatype/ompi_datatype_internal.h" +#include "ompi/info/info.h" BEGIN_C_DECLS @@ -120,6 +122,10 @@ int ompi_sendrecv(const void * sendbuf, size_t sendcount, MPI_Datatype sendtype, void * recvbuf, size_t recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status); int ompi_isendrecv(const void * sendbuf, size_t sendcount, MPI_Datatype sendtype, int dest, int sendtag, void * recvbuf, size_t recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Request * request); +int ompi_abi_get_fortran_info(ompi_info_t **info); +int ompi_abi_set_fortran_info(ompi_info_t *info); +int ompi_abi_get_fortran_booleans(int logical_size, void *logical_true, void *logical_false, int *is_set); +int ompi_abi_set_fortran_booleans(int logical_size, void *logical_true, void *logical_false); END_C_DECLS diff --git a/ompi/mpi/c/bsend.c.in b/ompi/mpi/c/bsend.c.in index 833f096d15f..7aeabd5c117 100644 --- a/ompi/mpi/c/bsend.c.in +++ b/ompi/mpi/c/bsend.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,8 +36,8 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS bsend(BUFFER buf, COUNT count, DATATYPE type, INT dest, - INT tag, COMM comm) +PROTOTYPE ERROR_CLASS bsend(BUFFER_CONST buf, COUNT count, DATATYPE type, SOURCE dest, + TAG tag, COMM comm) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/bsend_init.c.in b/ompi/mpi/c/bsend_init.c.in index 7a7bb5b0224..b5855173370 100644 --- a/ompi/mpi/c/bsend_init.c.in +++ b/ompi/mpi/c/bsend_init.c.in @@ -17,7 +17,7 @@ * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2018 FUJITSU LIMITED. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,8 +36,8 @@ #include "ompi/mca/pml/base/pml_base_bsend.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS bsend_init(BUFFER buf, COUNT count, DATATYPE type, - INT dest, INT tag, COMM comm, REQUEST_INOUT request) +PROTOTYPE ERROR_CLASS bsend_init(BUFFER_CONST buf, COUNT count, DATATYPE type, + SOURCE dest, TAG tag, COMM comm, REQUEST_INOUT request) { int rc; diff --git a/ompi/mpi/c/buffer_attach.c.in b/ompi/mpi/c/buffer_attach.c.in index b272f7ce5a4..24b4053a7b1 100644 --- a/ompi/mpi/c/buffer_attach.c.in +++ b/ompi/mpi/c/buffer_attach.c.in @@ -29,7 +29,7 @@ #include "ompi/mca/pml/pml.h" #include "ompi/mca/pml/base/pml_base_bsend.h" -PROTOTYPE ERROR_CLASS buffer_attach(BUFFER_OUT buffer, COUNT size) +PROTOTYPE ERROR_CLASS buffer_attach(BUFFER buffer, COUNT size) { int ret = OMPI_SUCCESS; diff --git a/ompi/mpi/c/buffer_detach.c.in b/ompi/mpi/c/buffer_detach.c.in index 06ddf1ae9a1..8cead4a85c9 100644 --- a/ompi/mpi/c/buffer_detach.c.in +++ b/ompi/mpi/c/buffer_detach.c.in @@ -29,19 +29,19 @@ #include "ompi/mca/pml/pml.h" #include "ompi/mca/pml/base/pml_base_bsend.h" -PROTOTYPE ERROR_CLASS buffer_detach(BUFFER_OUT buffer, COUNT_OUT size) +PROTOTYPE ERROR_CLASS buffer_detach(BUFFER_ADDR_OUT buffer_addr, COUNT_OUT size) { size_t size_arg; int ret = OMPI_SUCCESS; if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); - if (NULL == buffer || NULL == size) { + if (NULL == buffer_addr || NULL == size) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_ARG, FUNC_NAME); } } - ret = mca_pml_base_bsend_detach(BASE_BSEND_BUF, NULL, buffer, &size_arg); + ret = mca_pml_base_bsend_detach(BASE_BSEND_BUF, NULL, buffer_addr, &size_arg); if (MPI_SUCCESS == ret) { #if OMPI_BIGCOUNT_SRC *size = size_arg; diff --git a/ompi/mpi/c/cart_shift.c.in b/ompi/mpi/c/cart_shift.c.in index 3b25ead1fee..b0d005aff4a 100644 --- a/ompi/mpi/c/cart_shift.c.in +++ b/ompi/mpi/c/cart_shift.c.in @@ -13,7 +13,7 @@ * Copyright (c) 2012-2013 Inria. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -32,7 +32,7 @@ #include "ompi/memchecker.h" PROTOTYPE ERROR_CLASS cart_shift(COMM comm, INT direction, INT disp, - INT_OUT rank_source, INT_OUT rank_dest) + SOURCE_OUT rank_source, SOURCE_OUT rank_dest) { int err; diff --git a/ompi/mpi/c/comm_accept.c.in b/ompi/mpi/c/comm_accept.c.in index 5e04389c633..bd85c9562d1 100644 --- a/ompi/mpi/c/comm_accept.c.in +++ b/ompi/mpi/c/comm_accept.c.in @@ -39,7 +39,7 @@ #include "ompi/dpm/dpm.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS comm_accept(STRING port_name, INFO info, INT root, +PROTOTYPE ERROR_CLASS comm_accept(STRING port_name, INFO info, ROOT root, COMM comm, COMM_OUT newcomm) { int rank, rc; diff --git a/ompi/mpi/c/comm_attach_buffer.c.in b/ompi/mpi/c/comm_attach_buffer.c.in index f633e7ab851..d3f6ad5b4fb 100644 --- a/ompi/mpi/c/comm_attach_buffer.c.in +++ b/ompi/mpi/c/comm_attach_buffer.c.in @@ -29,7 +29,7 @@ #include "ompi/mca/pml/pml.h" #include "ompi/mca/pml/base/pml_base_bsend.h" -PROTOTYPE ERROR_CLASS comm_attach_buffer(COMM comm, BUFFER_OUT buffer, COUNT size) +PROTOTYPE ERROR_CLASS comm_attach_buffer(COMM comm, BUFFER buffer, COUNT size) { int ret = OMPI_SUCCESS; diff --git a/ompi/mpi/c/comm_call_errhandler.c.in b/ompi/mpi/c/comm_call_errhandler.c.in index ffe26023940..9099badb76a 100644 --- a/ompi/mpi/c/comm_call_errhandler.c.in +++ b/ompi/mpi/c/comm_call_errhandler.c.in @@ -28,7 +28,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS comm_call_errhandler(COMM comm, INT errorcode) +PROTOTYPE ERROR_CLASS comm_call_errhandler(COMM comm, ERROR_CODE errorcode) { MEMCHECKER( memchecker_comm(comm); diff --git a/ompi/mpi/c/comm_compare.c.in b/ompi/mpi/c/comm_compare.c.in index 7cb247d6baf..7d846a69bf6 100644 --- a/ompi/mpi/c/comm_compare.c.in +++ b/ompi/mpi/c/comm_compare.c.in @@ -29,7 +29,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS comm_compare(COMM comm1, COMM comm2, INT_OUT result) +PROTOTYPE ERROR_CLASS comm_compare(COMM comm1, COMM comm2, COMM_CMP_OUT result) { int rc; diff --git a/ompi/mpi/c/comm_connect.c.in b/ompi/mpi/c/comm_connect.c.in index 006a7a8e042..968fb61988e 100644 --- a/ompi/mpi/c/comm_connect.c.in +++ b/ompi/mpi/c/comm_connect.c.in @@ -39,7 +39,7 @@ #include "ompi/dpm/dpm.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS comm_connect(STRING port_name, INFO info, INT root, +PROTOTYPE ERROR_CLASS comm_connect(STRING port_name, INFO info, ROOT root, COMM comm, COMM_OUT newcomm) { int rank, rc; diff --git a/ompi/mpi/c/comm_create_errhandler.c.in b/ompi/mpi/c/comm_create_errhandler.c.in index 2d1ba927233..0f4cb10ec3b 100644 --- a/ompi/mpi/c/comm_create_errhandler.c.in +++ b/ompi/mpi/c/comm_create_errhandler.c.in @@ -13,9 +13,7 @@ * Copyright (c) 2008-2009 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2018-2021 Triad National Security, LLC. All rights - * reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2018-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,6 +33,11 @@ PROTOTYPE ERROR_CLASS comm_create_errhandler(COMM_ERRHANDLER_FUNCTION function, ERRHANDLER_OUT errhandler) { int err = MPI_SUCCESS; +#if OMPI_ABI_SRC + ompi_errhandler_converter_fn_t *conv_fn = ompi_convert_errhandler_args_intern_to_abi; +#else + ompi_errhandler_converter_fn_t *conv_fn = NULL; +#endif /* Error checking */ @@ -53,7 +56,7 @@ PROTOTYPE ERROR_CLASS comm_create_errhandler(COMM_ERRHANDLER_FUNCTION function, *errhandler = ompi_errhandler_create(OMPI_ERRHANDLER_TYPE_COMM, (ompi_errhandler_generic_handler_fn_t*) function, - OMPI_ERRHANDLER_LANG_C); + OMPI_ERRHANDLER_LANG_C, conv_fn); if (NULL == *errhandler) { err = MPI_ERR_INTERN; } diff --git a/ompi/mpi/c/comm_create_keyval.c.in b/ompi/mpi/c/comm_create_keyval.c.in index e8352be3773..8d2606643a1 100644 --- a/ompi/mpi/c/comm_create_keyval.c.in +++ b/ompi/mpi/c/comm_create_keyval.c.in @@ -14,7 +14,7 @@ * and Technology (RIST). All rights reserved. * Copyright (c) 2022 Amazon.com, Inc. or its affiliates. * All Rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -33,7 +33,7 @@ PROTOTYPE ERROR_CLASS comm_create_keyval(COMM_COPY_ATTR_FUNCTION comm_copy_attr_fn, COMM_DELETE_ATTR_FUNCTION comm_delete_attr_fn, - INT_OUT comm_keyval, BUFFER_OUT extra_state) + ATTR_KEY_OUT comm_keyval, BUFFER_OUT extra_state) { int ret; int flags = 0; @@ -52,13 +52,14 @@ PROTOTYPE ERROR_CLASS comm_create_keyval(COMM_COPY_ATTR_FUNCTION comm_copy_attr_ #if OMPI_ABI_SRC copy_fn.attr_communicator_copy_fn = ompi_abi_copy_attr_fn; del_fn.attr_communicator_delete_fn = ompi_abi_delete_attr_fn; + ret = ompi_attr_create_keyval(COMM_ATTR, copy_fn, del_fn, + comm_keyval, extra_state, flags, extra_state); #else copy_fn.attr_communicator_copy_fn = comm_copy_attr_fn; del_fn.attr_communicator_delete_fn = comm_delete_attr_fn; -#endif - ret = ompi_attr_create_keyval(COMM_ATTR, copy_fn, del_fn, comm_keyval, extra_state, flags, NULL); +#endif OMPI_ERRHANDLER_NOHANDLE_RETURN(ret, MPI_ERR_OTHER, FUNC_NAME); } diff --git a/ompi/mpi/c/comm_delete_attr.c.in b/ompi/mpi/c/comm_delete_attr.c.in index 7d792cd993c..de43fbf6a2e 100644 --- a/ompi/mpi/c/comm_delete_attr.c.in +++ b/ompi/mpi/c/comm_delete_attr.c.in @@ -30,7 +30,7 @@ #include "ompi/attribute/attribute.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS comm_delete_attr(COMM comm, INT comm_keyval) +PROTOTYPE ERROR_CLASS comm_delete_attr(COMM comm, ATTR_KEY comm_keyval) { int ret; diff --git a/ompi/mpi/c/comm_detach_buffer.c.in b/ompi/mpi/c/comm_detach_buffer.c.in index 5d1cac57f4a..601500d3ebc 100644 --- a/ompi/mpi/c/comm_detach_buffer.c.in +++ b/ompi/mpi/c/comm_detach_buffer.c.in @@ -29,14 +29,14 @@ #include "ompi/mca/pml/pml.h" #include "ompi/mca/pml/base/pml_base_bsend.h" -PROTOTYPE ERROR_CLASS comm_detach_buffer(COMM comm, BUFFER_OUT buffer, COUNT_OUT size) +PROTOTYPE ERROR_CLASS comm_detach_buffer(COMM comm, BUFFER_ADDR_OUT buffer_addr, COUNT_OUT size) { size_t size_arg; int ret = OMPI_SUCCESS; if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); - if (NULL == buffer || NULL == size) { + if (NULL == buffer_addr || NULL == size) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_ARG, FUNC_NAME); } if (ompi_comm_invalid(comm)) { @@ -44,7 +44,7 @@ PROTOTYPE ERROR_CLASS comm_detach_buffer(COMM comm, BUFFER_OUT buffer, COUNT_OUT } } - ret = mca_pml_base_bsend_detach(COMM_BSEND_BUF, comm, buffer, &size_arg); + ret = mca_pml_base_bsend_detach(COMM_BSEND_BUF, comm, buffer_addr, &size_arg); if (MPI_SUCCESS == ret) { #if OMPI_BIGCOUNT_SRC *size = size_arg; diff --git a/ompi/mpi/c/comm_disconnect.c.in b/ompi/mpi/c/comm_disconnect.c.in index 17e2ef4e43e..ba4a06f720f 100644 --- a/ompi/mpi/c/comm_disconnect.c.in +++ b/ompi/mpi/c/comm_disconnect.c.in @@ -31,7 +31,7 @@ #include "ompi/memchecker.h" #include "ompi/dpm/dpm.h" -PROTOTYPE ERROR_CLASS comm_disconnect(COMM_OUT comm) +PROTOTYPE ERROR_CLASS comm_disconnect(COMM_INOUT comm) { int ret = MPI_SUCCESS; diff --git a/ompi/mpi/c/comm_free.c.in b/ompi/mpi/c/comm_free.c.in index 9540ab668fd..65a570b6b7f 100644 --- a/ompi/mpi/c/comm_free.c.in +++ b/ompi/mpi/c/comm_free.c.in @@ -28,7 +28,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS comm_free(COMM_OUT comm) +PROTOTYPE ERROR_CLASS comm_free(COMM_INOUT comm) { int ret; diff --git a/ompi/mpi/c/comm_free_keyval.c.in b/ompi/mpi/c/comm_free_keyval.c.in index 85ddf34f124..7fc62086fdd 100644 --- a/ompi/mpi/c/comm_free_keyval.c.in +++ b/ompi/mpi/c/comm_free_keyval.c.in @@ -28,7 +28,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/attribute/attribute.h" -PROTOTYPE ERROR_CLASS comm_free_keyval(INT_OUT comm_keyval) +PROTOTYPE ERROR_CLASS comm_free_keyval(ATTR_KEY_INOUT comm_keyval) { int ret; diff --git a/ompi/mpi/c/comm_fromint_abi.c b/ompi/mpi/c/comm_fromint_abi.c new file mode 100644 index 00000000000..fbd810c153c --- /dev/null +++ b/ompi/mpi/c/comm_fromint_abi.c @@ -0,0 +1,60 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/communicator/communicator.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Comm_fromint = PMPI_Comm_fromint +#endif +#define MPI_Comm_fromint PMPI_Comm_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Comm_fromint"; + +MPI_Comm_ABI_INTERNAL MPI_Comm_fromint(int comm) +{ + int o_index; + intptr_t comm_tmp; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)comm) { + comm_tmp = (intptr_t)comm; + return (MPI_Comm_ABI_INTERNAL)comm_tmp; + } + + o_index = comm - OMPI_ABI_HANDLE_BASE_OFFSET; + + return (MPI_Comm_ABI_INTERNAL)opal_pointer_array_get_item(&ompi_comm_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/comm_fromint_ompi.c b/ompi/mpi/c/comm_fromint_ompi.c new file mode 100644 index 00000000000..04804ce9578 --- /dev/null +++ b/ompi/mpi/c/comm_fromint_ompi.c @@ -0,0 +1,49 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/runtime/params.h" +#include "ompi/communicator/communicator.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Comm_fromint = PMPI_Comm_fromint +#endif +#define MPI_Comm_fromint PMPI_Comm_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Comm_fromint"; + +MPI_Comm MPI_Comm_fromint(int comm) +{ + int o_index; + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + o_index = comm; + + return (MPI_Comm)opal_pointer_array_get_item(&ompi_comm_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/comm_get_attr.c.in b/ompi/mpi/c/comm_get_attr.c.in index 1accf0c2c5e..ed323d62c23 100644 --- a/ompi/mpi/c/comm_get_attr.c.in +++ b/ompi/mpi/c/comm_get_attr.c.in @@ -30,7 +30,8 @@ #include "ompi/attribute/attribute.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS comm_get_attr(COMM comm, INT comm_keyval, + +PROTOTYPE ERROR_CLASS comm_get_attr(COMM comm, ATTR_KEY comm_keyval, BUFFER_OUT attribute_val, INT_OUT flag) { int ret; @@ -57,5 +58,25 @@ PROTOTYPE ERROR_CLASS comm_get_attr(COMM comm, INT comm_keyval, ret = ompi_attr_get_c(comm->c_keyhash, comm_keyval, (void**)attribute_val, flag); +#if OMPI_ABI_SRC + /* + * special cases for attributes attached to MPI_COMM_WORLD + * that are set to MPI_PROC_NULL, MPI_ANY_SOURCE, etc. + * where the value stored internally in ompi use the ompi + * values and we need to return ABI values to the app. + */ + if (MPI_COMM_WORLD == comm) { + if (MPI_HOST == comm_keyval) { + *(int **)attribute_val = &ompi_abi_mpi_proc_null_val; + } else if (MPI_IO == comm_keyval) { + *(int **)attribute_val = &ompi_abi_mpi_any_source_val; + } else if (MPI_LASTUSEDCODE == comm_keyval) { + OPAL_THREAD_LOCK(&comm->c_lock); + ompi_abi_mpi_lastusedcode = ompi_convert_intern_error_abi_error(*(int *)*(void**)attribute_val); + OPAL_THREAD_UNLOCK(&comm->c_lock); + *(int **)attribute_val = &ompi_abi_mpi_lastusedcode; + } + } +#endif OMPI_ERRHANDLER_RETURN(ret, comm, MPI_ERR_OTHER, FUNC_NAME); } diff --git a/ompi/mpi/c/comm_get_name.c.in b/ompi/mpi/c/comm_get_name.c.in index a33e4989bf3..3bd7cfd6a01 100644 --- a/ompi/mpi/c/comm_get_name.c.in +++ b/ompi/mpi/c/comm_get_name.c.in @@ -67,7 +67,7 @@ PROTOTYPE ERROR_CLASS comm_get_name(COMM comm, STRING_OUT name, INT_OUT length) able to completely fit into MPI_MAX_OBJECT_NAME bytes (i.e., name+\0). */ if ( comm->c_flags & OMPI_COMM_NAMEISSET ) { - opal_string_copy(name, comm->c_name, MPI_MAX_OBJECT_NAME); + opal_string_copy(name, comm->c_name, @MPI_MAX_OBJECT_NAME@); *length = (int) strlen(comm->c_name); } else { name[0] = '\0'; diff --git a/ompi/mpi/c/comm_join.c.in b/ompi/mpi/c/comm_join.c.in index 28d6c545c60..7e2e93d1fb4 100644 --- a/ompi/mpi/c/comm_join.c.in +++ b/ompi/mpi/c/comm_join.c.in @@ -159,7 +159,7 @@ PROTOTYPE ERROR_CLASS comm_join(INT fd, COMM_OUT intercomm) ompi_process_name_t rname, tmp_name; ompi_communicator_t *newcomp; - char port_name[MPI_MAX_PORT_NAME]; + char port_name[@MPI_MAX_PORT_NAME@]; if ( MPI_PARAM_CHECK ) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); diff --git a/ompi/mpi/c/comm_set_attr.c.in b/ompi/mpi/c/comm_set_attr.c.in index 9baa10aeac0..f2cc47cac9c 100644 --- a/ompi/mpi/c/comm_set_attr.c.in +++ b/ompi/mpi/c/comm_set_attr.c.in @@ -30,7 +30,11 @@ #include "ompi/attribute/attribute.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS comm_set_attr(COMM comm, INT comm_keyval, +/* + * we use BUFFER type here because for some reason the + * standard uses void * for attribute_val rather than const void *. + */ +PROTOTYPE ERROR_CLASS comm_set_attr(COMM comm, ATTR_KEY comm_keyval, BUFFER_OUT attribute_val) { int ret; diff --git a/ompi/mpi/c/comm_spawn.c.in b/ompi/mpi/c/comm_spawn.c.in index 548fb113d02..6d10871e13d 100644 --- a/ompi/mpi/c/comm_spawn.c.in +++ b/ompi/mpi/c/comm_spawn.c.in @@ -42,13 +42,13 @@ #include "ompi/memchecker.h" PROTOTYPE ERROR_CLASS comm_spawn(STRING command, STRING_ARRAY argv, INT maxprocs, INFO info, - INT root, COMM comm, COMM_OUT intercomm, + ROOT root, COMM comm, COMM_OUT intercomm, INT_OUT array_of_errcodes) { int rank, rc=OMPI_SUCCESS, i, flag; bool send_first = false; /* we wait to be contacted */ ompi_communicator_t *newcomp=MPI_COMM_NULL; - char port_name[MPI_MAX_PORT_NAME]; char *port_string = NULL; + char port_name[@MPI_MAX_PORT_NAME@]; char *port_string = NULL; bool non_mpi = false; MEMCHECKER( @@ -105,7 +105,7 @@ PROTOTYPE ERROR_CLASS comm_spawn(STRING command, STRING_ARRAY argv, INT maxprocs } /* initialize the port name to avoid problems */ - memset(port_name, 0, MPI_MAX_PORT_NAME); + memset(port_name, 0, @MPI_MAX_PORT_NAME@); /* See if the info key "ompi_non_mpi" was set to true */ if (rank == root) { diff --git a/ompi/mpi/c/comm_spawn_multiple.c.in b/ompi/mpi/c/comm_spawn_multiple.c.in index 72b43a2dbc3..11b0af91fac 100644 --- a/ompi/mpi/c/comm_spawn_multiple.c.in +++ b/ompi/mpi/c/comm_spawn_multiple.c.in @@ -42,14 +42,14 @@ #include "ompi/memchecker.h" PROTOTYPE ERROR_CLASS comm_spawn_multiple(INT count, STRING_ARRAY array_of_commands, ARGV array_of_argv, - INT_ARRAY array_of_maxprocs, INFO_ARRAY array_of_info:count, - INT root, COMM comm, COMM_OUT intercomm, - INT_OUT array_of_errcodes) + INT_ARRAY array_of_maxprocs:count, INFO_ARRAY array_of_info:count, + ROOT root, COMM comm, COMM_OUT intercomm, + INT_ARRAY_OUT array_of_errcodes:count) { int i=0, rc=0, rank=0, size=0, flag; ompi_communicator_t *newcomp=MPI_COMM_NULL; bool send_first=false; /* they are contacting us first */ - char port_name[MPI_MAX_PORT_NAME]; char *port_string = NULL; + char port_name[@MPI_MAX_PORT_NAME@]; char *port_string = NULL; bool non_mpi = false, cumulative = false; MEMCHECKER( @@ -150,7 +150,7 @@ PROTOTYPE ERROR_CLASS comm_spawn_multiple(INT count, STRING_ARRAY array_of_comma #endif /* initialize the port name to avoid problems */ - memset(port_name, 0, MPI_MAX_PORT_NAME); + memset(port_name, 0, @MPI_MAX_PORT_NAME@); if ( rank == root ) { diff --git a/ompi/mpi/c/comm_split_type.c.in b/ompi/mpi/c/comm_split_type.c.in index 0bac2380019..3a1efb1e8f1 100644 --- a/ompi/mpi/c/comm_split_type.c.in +++ b/ompi/mpi/c/comm_split_type.c.in @@ -34,7 +34,7 @@ #include "ompi/info/info.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS comm_split_type(COMM comm, INT split_type, INT key, +PROTOTYPE ERROR_CLASS comm_split_type(COMM comm, SPLIT_TYPE split_type, INT key, INFO info, COMM_OUT newcomm) { int rc; diff --git a/ompi/mpi/c/comm_toint_abi.c b/ompi/mpi/c/comm_toint_abi.c new file mode 100644 index 00000000000..ba3bcc8af02 --- /dev/null +++ b/ompi/mpi/c/comm_toint_abi.c @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/communicator/communicator.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Comm_toint = PMPI_Comm_toint +#endif +#define MPI_Comm_toint PMPI_Comm_toint +#endif + +static const char FUNC_NAME[] = "MPI_Comm_toint"; + +int MPI_Comm_toint(MPI_Comm_ABI_INTERNAL comm) +{ + int o_index; + ompi_communicator_t *comm_ptr; + MPI_Comm comm_tmp; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + comm_tmp = ompi_convert_abi_comm_intern_comm(comm); + if ((comm_tmp != MPI_COMM_NULL) && ompi_comm_invalid(comm_tmp)) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_COMM, FUNC_NAME); + } + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)comm) { + intptr_t comm_int = (intptr_t)comm; + return (int)comm_int; + } + + comm_ptr = (ompi_communicator_t *)comm; + o_index = comm_ptr->c_f_to_c_index; + o_index += OMPI_ABI_HANDLE_BASE_OFFSET; + + return o_index; +} diff --git a/ompi/mpi/c/comm_toint_ompi.c b/ompi/mpi/c/comm_toint_ompi.c new file mode 100644 index 00000000000..dfae3455ac8 --- /dev/null +++ b/ompi/mpi/c/comm_toint_ompi.c @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/communicator/communicator.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Comm_toint = PMPI_Comm_toint +#endif +#define MPI_Comm_toint PMPI_Comm_toint +#endif + +static const char FUNC_NAME[] = "MPI_Comm_toint"; + +int MPI_Comm_toint(MPI_Comm comm) +{ + int o_index; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if ((comm != MPI_COMM_NULL) && ompi_comm_invalid(comm)) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_COMM, FUNC_NAME); + } + } + + o_index = comm->c_f_to_c_index; + + return o_index; + +} diff --git a/ompi/mpi/c/compare_and_swap.c.in b/ompi/mpi/c/compare_and_swap.c.in index 5dc5e94e524..2c5950bf046 100644 --- a/ompi/mpi/c/compare_and_swap.c.in +++ b/ompi/mpi/c/compare_and_swap.c.in @@ -16,7 +16,7 @@ * and Technology (RIST). All rights reserved. * Copyright (c) 2015 Los Alamos National Security, LLC. All rights * reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,7 +36,7 @@ #include "ompi/mca/osc/osc.h" #include "ompi/datatype/ompi_datatype.h" -PROTOTYPE ERROR_CLASS compare_and_swap(BUFFER origin_addr, BUFFER compare_addr, BUFFER_OUT result_addr, +PROTOTYPE ERROR_CLASS compare_and_swap(BUFFER_CONST origin_addr, BUFFER_CONST compare_addr, BUFFER_OUT result_addr, DATATYPE datatype, INT target_rank, AINT target_disp, WIN win) { int rc; diff --git a/ompi/mpi/c/dist_graph_create.c.in b/ompi/mpi/c/dist_graph_create.c.in index 693ffb8ac8d..10fc4954744 100644 --- a/ompi/mpi/c/dist_graph_create.c.in +++ b/ompi/mpi/c/dist_graph_create.c.in @@ -28,7 +28,7 @@ #include "ompi/mca/topo/base/base.h" PROTOTYPE ERROR_CLASS dist_graph_create(COMM comm_old, INT n, INT_ARRAY sources, - INT_ARRAY degrees, INT_ARRAY destinations, INT_ARRAY weights, + INT_ARRAY degrees, INT_ARRAY destinations, WEIGHTS weights, INFO info, INT reorder, COMM_OUT newcomm) { mca_topo_base_module_t* topo; diff --git a/ompi/mpi/c/dist_graph_create_adjacent.c.in b/ompi/mpi/c/dist_graph_create_adjacent.c.in index 3423f7dd607..04f6c26e928 100644 --- a/ompi/mpi/c/dist_graph_create_adjacent.c.in +++ b/ompi/mpi/c/dist_graph_create_adjacent.c.in @@ -13,7 +13,7 @@ * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,8 +35,8 @@ PROTOTYPE ERROR_CLASS dist_graph_create_adjacent(COMM comm_old, INT indegree, INT_ARRAY sources, - INT_ARRAY sourceweights, INT outdegree, - INT_ARRAY destinations, INT_ARRAY destweights, + WEIGHTS sourceweights, INT outdegree, + INT_ARRAY destinations, WEIGHTS destweights, INFO info, INT reorder, COMM_OUT comm_dist_graph) { diff --git a/ompi/mpi/c/errhandler_free.c.in b/ompi/mpi/c/errhandler_free.c.in index 6c9153de1d9..abef1c905c8 100644 --- a/ompi/mpi/c/errhandler_free.c.in +++ b/ompi/mpi/c/errhandler_free.c.in @@ -27,7 +27,7 @@ #include "ompi/communicator/communicator.h" #include "ompi/errhandler/errhandler.h" -PROTOTYPE ERROR_CLASS errhandler_free(ERRHANDLER_OUT errhandler) +PROTOTYPE ERROR_CLASS errhandler_free(ERRHANDLER_INOUT errhandler) { /* Error checking */ @@ -36,7 +36,8 @@ PROTOTYPE ERROR_CLASS errhandler_free(ERRHANDLER_OUT errhandler) *and* the reference count is 1 (meaning that this FREE would actually free the underlying intrinsic object). This is ugly but necessary -- see below. */ - if (NULL == errhandler || + if (NULL == errhandler || NULL == *errhandler || + MPI_ERRHANDLER_NULL == *errhandler || (ompi_errhandler_is_intrinsic(*errhandler) && 1 == (*errhandler)->super.obj_reference_count)) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_ERRHANDLER, diff --git a/ompi/mpi/c/errhandler_fromint_abi.c b/ompi/mpi/c/errhandler_fromint_abi.c new file mode 100644 index 00000000000..cc7691b5418 --- /dev/null +++ b/ompi/mpi/c/errhandler_fromint_abi.c @@ -0,0 +1,60 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Errhandler_fromint = PMPI_Errhandler_fromint +#endif +#define MPI_Errhandler_fromint PMPI_Errhandler_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Errhandler_fromint"; + +MPI_Errhandler_ABI_INTERNAL MPI_Errhandler_fromint(int errhandler) +{ + int o_index; + intptr_t errhandler_tmp; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)errhandler) { + errhandler_tmp = (intptr_t)errhandler; + return (MPI_Errhandler_ABI_INTERNAL)errhandler_tmp; + } + + o_index = errhandler - OMPI_ABI_HANDLE_BASE_OFFSET; + assert(o_index >= 0); + + return (MPI_Errhandler_ABI_INTERNAL)opal_pointer_array_get_item(&ompi_errhandler_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/errhandler_fromint_ompi.c b/ompi/mpi/c/errhandler_fromint_ompi.c new file mode 100644 index 00000000000..e87b55f85d9 --- /dev/null +++ b/ompi/mpi/c/errhandler_fromint_ompi.c @@ -0,0 +1,49 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/runtime/params.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Errhandler_fromint = PMPI_Errhandler_fromint +#endif +#define MPI_Errhandler_fromint PMPI_Errhandler_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Errhandler_fromint"; + +MPI_Errhandler MPI_Errhandler_fromint(int errhandler) +{ + int o_index; + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + o_index = errhandler; + + return (MPI_Errhandler)opal_pointer_array_get_item(&ompi_errhandler_f_to_c_table, o_index); +} + diff --git a/ompi/mpi/c/errhandler_toint_abi.c b/ompi/mpi/c/errhandler_toint_abi.c new file mode 100644 index 00000000000..0297823a2d4 --- /dev/null +++ b/ompi/mpi/c/errhandler_toint_abi.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Errhandler_toint = PMPI_Errhandler_toint +#endif +#define MPI_Errhandler_toint PMPI_Errhandler_toint +#endif + +static const char FUNC_NAME[] = "MPI_Errhandler_toint"; + +int MPI_Errhandler_toint(MPI_Errhandler_ABI_INTERNAL errhandler) +{ + int o_index; + ompi_errhandler_t *errhandler_ptr; + intptr_t errhandler_tmp; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if (NULL == errhandler) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_ERRHANDLER, FUNC_NAME); + } + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)errhandler) { + errhandler_tmp = (intptr_t)errhandler; + return (int)errhandler_tmp; + } + + errhandler_ptr = (ompi_errhandler_t *)errhandler; + o_index = errhandler_ptr->eh_f_to_c_index; + o_index += OMPI_ABI_HANDLE_BASE_OFFSET; + + return o_index; +} diff --git a/ompi/mpi/c/errhandler_toint_ompi.c b/ompi/mpi/c/errhandler_toint_ompi.c new file mode 100644 index 00000000000..2b93a4debbd --- /dev/null +++ b/ompi/mpi/c/errhandler_toint_ompi.c @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Errhandler_toint = PMPI_Errhandler_toint +#endif +#define MPI_Errhandler_toint PMPI_Errhandler_toint +#endif + +static const char FUNC_NAME[] = "MPI_Errhandler_toint"; + +int MPI_Errhandler_toint(MPI_Errhandler errhandler) +{ + int o_index; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if (NULL == errhandler) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_ERRHANDLER, FUNC_NAME); + } + } + + o_index = errhandler->eh_f_to_c_index; + + return o_index; + +} diff --git a/ompi/mpi/c/error_class.c.in b/ompi/mpi/c/error_class.c.in index 28a3116126b..a1aa0b7de5f 100644 --- a/ompi/mpi/c/error_class.c.in +++ b/ompi/mpi/c/error_class.c.in @@ -28,7 +28,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/errhandler/errcode.h" -PROTOTYPE ERROR_CLASS error_class(INT errorcode, INT_OUT errorclass) +PROTOTYPE ERROR_CLASS error_class(ERROR_CODE errorcode, ERROR_CLASS_OUT errorclass) { int ret; diff --git a/ompi/mpi/c/error_string.c.in b/ompi/mpi/c/error_string.c.in index 0b3bf36edbe..2f25fcb41e0 100644 --- a/ompi/mpi/c/error_string.c.in +++ b/ompi/mpi/c/error_string.c.in @@ -32,7 +32,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/errhandler/errcode.h" -PROTOTYPE ERROR_CLASS error_string(INT errorcode, STRING_OUT string, +PROTOTYPE ERROR_CLASS error_string(ERROR_CLASS errorcode, STRING_OUT string, INT_OUT resultlen) { int ret; @@ -53,7 +53,7 @@ PROTOTYPE ERROR_CLASS error_string(INT errorcode, STRING_OUT string, } tmpstring = ompi_mpi_errnum_get_string (errorcode); - opal_string_copy(string, tmpstring, MPI_MAX_ERROR_STRING); + opal_string_copy(string, tmpstring, @MPI_MAX_ERROR_STRING@); *resultlen = (int)strlen(string); ompi_mpi_instance_release(); diff --git a/ompi/mpi/c/exscan.c.in b/ompi/mpi/c/exscan.c.in index 0268810658c..7e55508699e 100644 --- a/ompi/mpi/c/exscan.c.in +++ b/ompi/mpi/c/exscan.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015-2018 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,7 +35,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS exscan(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT count, +PROTOTYPE ERROR_CLASS exscan(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT count, DATATYPE datatype, OP op, COMM comm) { int err; diff --git a/ompi/mpi/c/exscan_init.c.in b/ompi/mpi/c/exscan_init.c.in index 7f155d78fe0..7bec1682728 100644 --- a/ompi/mpi/c/exscan_init.c.in +++ b/ompi/mpi/c/exscan_init.c.in @@ -14,7 +14,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,7 +35,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS exscan_init(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT count, +PROTOTYPE ERROR_CLASS exscan_init(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT count, DATATYPE datatype, OP op, COMM comm, INFO info, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/fetch_and_op.c.in b/ompi/mpi/c/fetch_and_op.c.in index 5d26f2ca187..a6192e21171 100644 --- a/ompi/mpi/c/fetch_and_op.c.in +++ b/ompi/mpi/c/fetch_and_op.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,7 +35,7 @@ #include "ompi/mca/osc/osc.h" #include "ompi/datatype/ompi_datatype.h" -PROTOTYPE ERROR_CLASS fetch_and_op(BUFFER origin_addr, BUFFER_OUT result_addr, DATATYPE datatype, +PROTOTYPE ERROR_CLASS fetch_and_op(BUFFER_CONST origin_addr, BUFFER_OUT result_addr, DATATYPE datatype, INT target_rank, AINT target_disp, OP op, WIN win) { int rc; diff --git a/ompi/mpi/c/file_call_errhandler.c.in b/ompi/mpi/c/file_call_errhandler.c.in index 830e3eefc6d..54e60b5d5b0 100644 --- a/ompi/mpi/c/file_call_errhandler.c.in +++ b/ompi/mpi/c/file_call_errhandler.c.in @@ -28,7 +28,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/file/file.h" -PROTOTYPE ERROR_CLASS file_call_errhandler(FILE fh, INT errorcode) +PROTOTYPE ERROR_CLASS file_call_errhandler(FILE fh, ERROR_CODE errorcode) { /* Error checking */ diff --git a/ompi/mpi/c/file_create_errhandler.c.in b/ompi/mpi/c/file_create_errhandler.c.in index f5040e98a12..db4633416b7 100644 --- a/ompi/mpi/c/file_create_errhandler.c.in +++ b/ompi/mpi/c/file_create_errhandler.c.in @@ -13,7 +13,7 @@ * Copyright (c) 2008-2009 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2018-2024 Triad National Security, LLC. All rights + * Copyright (c) 2018-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -34,6 +34,11 @@ PROTOTYPE ERROR_CLASS file_create_errhandler (FILE_ERRHANDLER_FUNCTION function, ERRHANDLER_OUT errhandler) { int err = MPI_SUCCESS; +#if OMPI_ABI_SRC + ompi_errhandler_converter_fn_t *conv_fn = ompi_convert_errhandler_args_intern_to_abi; +#else + ompi_errhandler_converter_fn_t *conv_fn = NULL; +#endif /* Error checking */ @@ -51,7 +56,8 @@ PROTOTYPE ERROR_CLASS file_create_errhandler (FILE_ERRHANDLER_FUNCTION function, *errhandler = ompi_errhandler_create(OMPI_ERRHANDLER_TYPE_FILE, (ompi_errhandler_generic_handler_fn_t*) function, - OMPI_ERRHANDLER_LANG_C); + OMPI_ERRHANDLER_LANG_C, + conv_fn); if (NULL == *errhandler) { err = MPI_ERR_INTERN; } diff --git a/ompi/mpi/c/file_fromint_abi.c b/ompi/mpi/c/file_fromint_abi.c new file mode 100644 index 00000000000..53c229ef514 --- /dev/null +++ b/ompi/mpi/c/file_fromint_abi.c @@ -0,0 +1,61 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/file/file.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_File_fromint = PMPI_File_fromint +#endif +#define MPI_File_fromint PMPI_File_fromint +#endif + +static const char FUNC_NAME[] = "MPI_File_fromint"; + +MPI_File_ABI_INTERNAL MPI_File_fromint(int file) +{ + int o_index; + intptr_t file_tmp; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)file) { + file_tmp = (intptr_t)file; + return (MPI_File_ABI_INTERNAL)file_tmp; + } + + o_index = file - OMPI_ABI_HANDLE_BASE_OFFSET; + assert(o_index >= 0); + + return (MPI_File_ABI_INTERNAL)opal_pointer_array_get_item(&ompi_file_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/file_fromint_ompi.c b/ompi/mpi/c/file_fromint_ompi.c new file mode 100644 index 00000000000..ae5e6e11140 --- /dev/null +++ b/ompi/mpi/c/file_fromint_ompi.c @@ -0,0 +1,49 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/runtime/params.h" +#include "ompi/file/file.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_File_fromint = PMPI_File_fromint +#endif +#define MPI_File_fromint PMPI_File_fromint +#endif + +static const char FUNC_NAME[] = "MPI_File_fromint"; + +MPI_File MPI_File_fromint(int file) +{ + int o_index; + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + o_index = file; + + return (MPI_File)opal_pointer_array_get_item(&ompi_file_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/file_get_amode.c.in b/ompi/mpi/c/file_get_amode.c.in index 8fac4fbb98d..46713c1e0c3 100644 --- a/ompi/mpi/c/file_get_amode.c.in +++ b/ompi/mpi/c/file_get_amode.c.in @@ -12,7 +12,7 @@ * Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -28,7 +28,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/file/file.h" -PROTOTYPE ERROR_CLASS file_get_amode(FILE fh, INT_OUT amode) +PROTOTYPE ERROR_CLASS file_get_amode(FILE fh, MODE_BITS_OUT amode) { int rc; diff --git a/ompi/mpi/c/file_iwrite.c.in b/ompi/mpi/c/file_iwrite.c.in index dd6c3819b86..b391f49976f 100644 --- a/ompi/mpi/c/file_iwrite.c.in +++ b/ompi/mpi/c/file_iwrite.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,7 +35,7 @@ #include "ompi/mca/io/base/io_base_request.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS file_iwrite(FILE fh, BUFFER buf, COUNT count, +PROTOTYPE ERROR_CLASS file_iwrite(FILE fh, BUFFER_CONST buf, COUNT count, DATATYPE datatype, REQUEST_INOUT request) { int rc; diff --git a/ompi/mpi/c/file_iwrite_all.c.in b/ompi/mpi/c/file_iwrite_all.c.in index d543bf76855..3d6a6099d1e 100644 --- a/ompi/mpi/c/file_iwrite_all.c.in +++ b/ompi/mpi/c/file_iwrite_all.c.in @@ -17,7 +17,7 @@ * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,7 +37,7 @@ #include "ompi/mca/io/base/io_base_request.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS file_iwrite_all(FILE fh, BUFFER buf, COUNT count, +PROTOTYPE ERROR_CLASS file_iwrite_all(FILE fh, BUFFER_CONST buf, COUNT count, DATATYPE datatype, REQUEST_INOUT request) { int rc; diff --git a/ompi/mpi/c/file_iwrite_at.c.in b/ompi/mpi/c/file_iwrite_at.c.in index 2b0d05b851c..5dd13b5e016 100644 --- a/ompi/mpi/c/file_iwrite_at.c.in +++ b/ompi/mpi/c/file_iwrite_at.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,7 +35,7 @@ #include "ompi/mca/io/base/io_base_request.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS file_iwrite_at(FILE fh, OFFSET offset, BUFFER buf, +PROTOTYPE ERROR_CLASS file_iwrite_at(FILE fh, OFFSET offset, BUFFER_CONST buf, COUNT count, DATATYPE datatype, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/file_iwrite_at_all.c.in b/ompi/mpi/c/file_iwrite_at_all.c.in index d11c109f4d4..77ab2923ff2 100644 --- a/ompi/mpi/c/file_iwrite_at_all.c.in +++ b/ompi/mpi/c/file_iwrite_at_all.c.in @@ -17,7 +17,7 @@ * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,7 +37,7 @@ #include "ompi/mca/io/base/io_base_request.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS file_iwrite_at_all(FILE fh, OFFSET offset, BUFFER buf, +PROTOTYPE ERROR_CLASS file_iwrite_at_all(FILE fh, OFFSET offset, BUFFER_CONST buf, COUNT count, DATATYPE datatype, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/file_iwrite_shared.c.in b/ompi/mpi/c/file_iwrite_shared.c.in index 4c0bb039391..604f972349e 100644 --- a/ompi/mpi/c/file_iwrite_shared.c.in +++ b/ompi/mpi/c/file_iwrite_shared.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,7 +35,7 @@ #include "ompi/mca/io/base/io_base_request.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS file_iwrite_shared(FILE fh, BUFFER buf, COUNT count, +PROTOTYPE ERROR_CLASS file_iwrite_shared(FILE fh, BUFFER_CONST buf, COUNT count, DATATYPE datatype, REQUEST_INOUT request) { int rc; diff --git a/ompi/mpi/c/file_open.c.in b/ompi/mpi/c/file_open.c.in index a6278068471..54c1f9d6e0a 100644 --- a/ompi/mpi/c/file_open.c.in +++ b/ompi/mpi/c/file_open.c.in @@ -17,7 +17,7 @@ * and Technology (RIST). All rights reserved. * Copyright (c) 2016 University of Houston. All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -40,7 +40,7 @@ extern opal_mutex_t ompi_mpi_file_bootstrap_mutex; -PROTOTYPE ERROR_CLASS file_open(COMM comm, STRING filename, INT amode, +PROTOTYPE ERROR_CLASS file_open(COMM comm, STRING filename, MODE_BITS amode, INFO info, FILE_OUT fh) { int rc; diff --git a/ompi/mpi/c/file_seek.c.in b/ompi/mpi/c/file_seek.c.in index 697940771b1..62ebd000d9e 100644 --- a/ompi/mpi/c/file_seek.c.in +++ b/ompi/mpi/c/file_seek.c.in @@ -12,7 +12,7 @@ * Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -28,7 +28,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/file/file.h" -PROTOTYPE ERROR_CLASS file_seek(FILE fh, OFFSET offset, INT whence) +PROTOTYPE ERROR_CLASS file_seek(FILE fh, OFFSET offset, WHENCE whence) { int rc; diff --git a/ompi/mpi/c/file_seek_shared.c.in b/ompi/mpi/c/file_seek_shared.c.in index e2caa35bb0f..d89528aa2ff 100644 --- a/ompi/mpi/c/file_seek_shared.c.in +++ b/ompi/mpi/c/file_seek_shared.c.in @@ -12,7 +12,7 @@ * Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -28,7 +28,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/file/file.h" -PROTOTYPE ERROR_CLASS file_seek_shared(FILE fh, OFFSET offset, INT whence) +PROTOTYPE ERROR_CLASS file_seek_shared(FILE fh, OFFSET offset, WHENCE whence) { int rc; diff --git a/ompi/mpi/c/file_set_view.c.in b/ompi/mpi/c/file_set_view.c.in index 79ac5c04353..d3adc88a2f6 100644 --- a/ompi/mpi/c/file_set_view.c.in +++ b/ompi/mpi/c/file_set_view.c.in @@ -63,6 +63,11 @@ PROTOTYPE ERROR_CLASS file_set_view(FILE fh, OFFSET disp, DATATYPE etype, OMPI_ERRHANDLER_CHECK(rc, fh, rc, FUNC_NAME); } +#if OMPI_ABI_SRC + if (MPI_DISPLACEMENT_CURRENT_ABI_INTERNAL == disp) { + disp = MPI_DISPLACEMENT_CURRENT; + } +#endif /* Call the back-end io component function */ switch (fh->f_io_version) { diff --git a/ompi/mpi/c/file_toint_abi.c b/ompi/mpi/c/file_toint_abi.c new file mode 100644 index 00000000000..64a8346be16 --- /dev/null +++ b/ompi/mpi/c/file_toint_abi.c @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/file/file.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_File_toint = PMPI_File_toint +#endif +#define MPI_File_toint PMPI_File_toint +#endif + +static const char FUNC_NAME[] = "MPI_File_toint"; + +int MPI_File_toint(MPI_File_ABI_INTERNAL file) +{ + int o_index; + ompi_file_t *file_ptr; + MPI_File file_tmp; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + file_tmp = ompi_convert_abi_file_intern_file(file); + if ((file_tmp != MPI_FILE_NULL) && ompi_file_invalid(file_tmp)) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_FILE, FUNC_NAME); + } + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)file) { + intptr_t file_int = (intptr_t)file; + return (int)file_int; + } + + file_ptr = (ompi_file_t *)file; + o_index = file_ptr->f_f_to_c_index; + o_index += OMPI_ABI_HANDLE_BASE_OFFSET; + + return o_index; +} diff --git a/ompi/mpi/c/file_toint_ompi.c b/ompi/mpi/c/file_toint_ompi.c new file mode 100644 index 00000000000..7ded9697f93 --- /dev/null +++ b/ompi/mpi/c/file_toint_ompi.c @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/file/file.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_File_toint = PMPI_File_toint +#endif +#define MPI_File_toint PMPI_File_toint +#endif + +static const char FUNC_NAME[] = "MPI_File_toint"; + +int MPI_File_toint(MPI_File file) +{ + int o_index; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if ((file != MPI_FILE_NULL) && ompi_file_invalid(file)) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_FILE, FUNC_NAME); + } + } + + o_index = file->f_f_to_c_index; + + return o_index; + +} diff --git a/ompi/mpi/c/file_write.c.in b/ompi/mpi/c/file_write.c.in index 0f737e7f667..7f0dd5e41be 100644 --- a/ompi/mpi/c/file_write.c.in +++ b/ompi/mpi/c/file_write.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -33,7 +33,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS file_write(FILE fh, BUFFER buf, COUNT count, +PROTOTYPE ERROR_CLASS file_write(FILE fh, BUFFER_CONST buf, COUNT count, DATATYPE datatype, STATUS_OUT status) { int rc; diff --git a/ompi/mpi/c/file_write_all.c.in b/ompi/mpi/c/file_write_all.c.in index ace251e326e..902d2a0e627 100644 --- a/ompi/mpi/c/file_write_all.c.in +++ b/ompi/mpi/c/file_write_all.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -33,7 +33,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS file_write_all(FILE fh, BUFFER buf, COUNT count, +PROTOTYPE ERROR_CLASS file_write_all(FILE fh, BUFFER_CONST buf, COUNT count, DATATYPE datatype, STATUS_OUT status) { int rc; diff --git a/ompi/mpi/c/file_write_all_begin.c.in b/ompi/mpi/c/file_write_all_begin.c.in index 2ee5280b860..838703ca7c6 100644 --- a/ompi/mpi/c/file_write_all_begin.c.in +++ b/ompi/mpi/c/file_write_all_begin.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -33,7 +33,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS file_write_all_begin(FILE fh, BUFFER buf, COUNT count, +PROTOTYPE ERROR_CLASS file_write_all_begin(FILE fh, BUFFER_CONST buf, COUNT count, DATATYPE datatype) { int rc; diff --git a/ompi/mpi/c/file_write_all_end.c.in b/ompi/mpi/c/file_write_all_end.c.in index 31f3fa70750..ed7de1db5e9 100644 --- a/ompi/mpi/c/file_write_all_end.c.in +++ b/ompi/mpi/c/file_write_all_end.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -31,7 +31,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/file/file.h" -PROTOTYPE ERROR_CLASS file_write_all_end(FILE fh, BUFFER buf, STATUS_OUT status) +PROTOTYPE ERROR_CLASS file_write_all_end(FILE fh, BUFFER_CONST buf, STATUS_OUT status) { int rc; diff --git a/ompi/mpi/c/file_write_at.c.in b/ompi/mpi/c/file_write_at.c.in index 517046900f2..752d476ae12 100644 --- a/ompi/mpi/c/file_write_at.c.in +++ b/ompi/mpi/c/file_write_at.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -33,7 +33,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS file_write_at(FILE fh, OFFSET offset, BUFFER buf, +PROTOTYPE ERROR_CLASS file_write_at(FILE fh, OFFSET offset, BUFFER_CONST buf, COUNT count, DATATYPE datatype, STATUS_OUT status) { diff --git a/ompi/mpi/c/file_write_at_all.c.in b/ompi/mpi/c/file_write_at_all.c.in index 8bfe767c6fe..2a0285c0064 100644 --- a/ompi/mpi/c/file_write_at_all.c.in +++ b/ompi/mpi/c/file_write_at_all.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -33,7 +33,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS file_write_at_all(FILE fh, OFFSET offset, BUFFER buf, +PROTOTYPE ERROR_CLASS file_write_at_all(FILE fh, OFFSET offset, BUFFER_CONST buf, COUNT count, DATATYPE datatype, STATUS_OUT status) { diff --git a/ompi/mpi/c/file_write_at_all_begin.c.in b/ompi/mpi/c/file_write_at_all_begin.c.in index 90e487d816d..9514e57b503 100644 --- a/ompi/mpi/c/file_write_at_all_begin.c.in +++ b/ompi/mpi/c/file_write_at_all_begin.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -33,7 +33,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS file_write_at_all_begin(FILE fh, OFFSET offset, BUFFER buf, +PROTOTYPE ERROR_CLASS file_write_at_all_begin(FILE fh, OFFSET offset, BUFFER_CONST buf, COUNT count, DATATYPE datatype) { int rc; diff --git a/ompi/mpi/c/file_write_at_all_end.c.in b/ompi/mpi/c/file_write_at_all_end.c.in index e4c372974f3..248931693c0 100644 --- a/ompi/mpi/c/file_write_at_all_end.c.in +++ b/ompi/mpi/c/file_write_at_all_end.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -31,7 +31,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/file/file.h" -PROTOTYPE ERROR_CLASS file_write_at_all_end(FILE fh, BUFFER buf, STATUS_OUT status) +PROTOTYPE ERROR_CLASS file_write_at_all_end(FILE fh, BUFFER_CONST buf, STATUS_OUT status) { int rc; diff --git a/ompi/mpi/c/file_write_ordered.c.in b/ompi/mpi/c/file_write_ordered.c.in index 6b9b1a42e35..0d22b87057c 100644 --- a/ompi/mpi/c/file_write_ordered.c.in +++ b/ompi/mpi/c/file_write_ordered.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -33,7 +33,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS file_write_ordered(FILE fh, BUFFER buf, COUNT count, +PROTOTYPE ERROR_CLASS file_write_ordered(FILE fh, BUFFER_CONST buf, COUNT count, DATATYPE datatype, STATUS_OUT status) { int rc; diff --git a/ompi/mpi/c/file_write_ordered_begin.c.in b/ompi/mpi/c/file_write_ordered_begin.c.in index 68ce2c2fe62..b331f13cf79 100644 --- a/ompi/mpi/c/file_write_ordered_begin.c.in +++ b/ompi/mpi/c/file_write_ordered_begin.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -33,7 +33,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS file_write_ordered_begin(FILE fh, BUFFER buf, COUNT count, +PROTOTYPE ERROR_CLASS file_write_ordered_begin(FILE fh, BUFFER_CONST buf, COUNT count, DATATYPE datatype) { int rc; diff --git a/ompi/mpi/c/file_write_ordered_end.c.in b/ompi/mpi/c/file_write_ordered_end.c.in index d2c95c5bcf5..648f926f91d 100644 --- a/ompi/mpi/c/file_write_ordered_end.c.in +++ b/ompi/mpi/c/file_write_ordered_end.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -31,7 +31,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/file/file.h" -PROTOTYPE ERROR_CLASS file_write_ordered_end(FILE fh, BUFFER buf, STATUS_OUT status) +PROTOTYPE ERROR_CLASS file_write_ordered_end(FILE fh, BUFFER_CONST buf, STATUS_OUT status) { int rc; diff --git a/ompi/mpi/c/file_write_shared.c.in b/ompi/mpi/c/file_write_shared.c.in index be4183cfe70..b2b4fa587e9 100644 --- a/ompi/mpi/c/file_write_shared.c.in +++ b/ompi/mpi/c/file_write_shared.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -33,7 +33,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS file_write_shared(FILE fh, BUFFER buf, COUNT count, +PROTOTYPE ERROR_CLASS file_write_shared(FILE fh, BUFFER_CONST buf, COUNT count, DATATYPE datatype, STATUS_OUT status) { int rc; diff --git a/ompi/mpi/c/gather.c.in b/ompi/mpi/c/gather.c.in index e071da8d748..f980dfd88ca 100644 --- a/ompi/mpi/c/gather.c.in +++ b/ompi/mpi/c/gather.c.in @@ -18,7 +18,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,9 +37,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS gather(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS gather(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, - INT root, COMM comm) + ROOT root, COMM comm) { int err; diff --git a/ompi/mpi/c/gather_init.c.in b/ompi/mpi/c/gather_init.c.in index 6022a42bbf9..8ddaa8e83ce 100644 --- a/ompi/mpi/c/gather_init.c.in +++ b/ompi/mpi/c/gather_init.c.in @@ -17,7 +17,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,9 +37,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS gather_init(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS gather_init(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, - INT root, COMM comm, INFO info, REQUEST_INOUT request) + ROOT root, COMM comm, INFO info, REQUEST_INOUT request) { int err; diff --git a/ompi/mpi/c/gatherv.c.in b/ompi/mpi/c/gatherv.c.in index 1d5dbe469ab..3a2e0743843 100644 --- a/ompi/mpi/c/gatherv.c.in +++ b/ompi/mpi/c/gatherv.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015-2016 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,9 +35,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS gatherv(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS gatherv(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY displs, - DATATYPE recvtype, INT root, COMM comm) + DATATYPE recvtype, ROOT root, COMM comm) { int i, size, err; ompi_count_array_t recvcounts_desc; diff --git a/ompi/mpi/c/gatherv_init.c.in b/ompi/mpi/c/gatherv_init.c.in index afb89860f24..f8b36919fbb 100644 --- a/ompi/mpi/c/gatherv_init.c.in +++ b/ompi/mpi/c/gatherv_init.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,9 +35,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS gatherv_init(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS gatherv_init(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY displs, - DATATYPE recvtype, INT root, COMM comm, + DATATYPE recvtype, ROOT root, COMM comm, INFO info, REQUEST_INOUT request) { int i, size, err; diff --git a/ompi/mpi/c/get.c.in b/ompi/mpi/c/get.c.in index f8aa7674680..acb9b918d87 100644 --- a/ompi/mpi/c/get.c.in +++ b/ompi/mpi/c/get.c.in @@ -35,7 +35,7 @@ #include "ompi/runtime/ompi_spc.h" PROTOTYPE ERROR_CLASS get(BUFFER_OUT origin_addr, COUNT origin_count, - DATATYPE origin_datatype, INT target_rank, + DATATYPE origin_datatype, SOURCE target_rank, AINT target_disp, COUNT target_count, DATATYPE target_datatype, WIN win) { diff --git a/ompi/mpi/c/get_accumulate.c.in b/ompi/mpi/c/get_accumulate.c.in index 9bcc26b1b3b..b92e3756cf0 100644 --- a/ompi/mpi/c/get_accumulate.c.in +++ b/ompi/mpi/c/get_accumulate.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,9 +37,9 @@ #include "ompi/datatype/ompi_datatype_internal.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS get_accumulate(BUFFER origin_addr, COUNT origin_count, DATATYPE origin_datatype, +PROTOTYPE ERROR_CLASS get_accumulate(BUFFER_CONST origin_addr, COUNT origin_count, DATATYPE origin_datatype, BUFFER_OUT result_addr, COUNT result_count, DATATYPE result_datatype, - INT target_rank, AINT target_disp, COUNT target_count, + SOURCE target_rank, AINT target_disp, COUNT target_count, DATATYPE target_datatype, OP op, WIN win) { int rc; diff --git a/ompi/mpi/c/get_address.c.in b/ompi/mpi/c/get_address.c.in index 3aba3b67427..ae38046370d 100644 --- a/ompi/mpi/c/get_address.c.in +++ b/ompi/mpi/c/get_address.c.in @@ -14,7 +14,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -29,7 +29,7 @@ #include "ompi/communicator/communicator.h" #include "ompi/errhandler/errhandler.h" -PROTOTYPE ERROR_CLASS get_address(BUFFER location, AINT_OUT address) +PROTOTYPE ERROR_CLASS get_address(VOID_CONST location, AINT_OUT address) { if( MPI_PARAM_CHECK ) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); diff --git a/ompi/mpi/c/get_library_version.c.in b/ompi/mpi/c/get_library_version.c.in index b8e02e10a7d..cbaa74fec3b 100644 --- a/ompi/mpi/c/get_library_version.c.in +++ b/ompi/mpi/c/get_library_version.c.in @@ -32,7 +32,7 @@ PROTOTYPE ERROR_CLASS get_library_version(STRING_OUT version, INT_OUT resultlen) { int len_left; - char *ptr, tmp[MPI_MAX_LIBRARY_VERSION_STRING]; + char *ptr, tmp[@MPI_MAX_LIBRARY_VERSION_STRING@]; if (MPI_PARAM_CHECK) { /* Per MPI-3, this function can be invoked before @@ -68,9 +68,9 @@ PROTOTYPE ERROR_CLASS get_library_version(STRING_OUT version, INT_OUT resultlen) output string) */ ptr = tmp; len_left = sizeof(tmp); - memset(tmp, 0, MPI_MAX_LIBRARY_VERSION_STRING); + memset(tmp, 0, @MPI_MAX_LIBRARY_VERSION_STRING@); - snprintf(tmp, MPI_MAX_LIBRARY_VERSION_STRING, "Open MPI v%d.%d.%d", + snprintf(tmp, @MPI_MAX_LIBRARY_VERSION_STRING@, "Open MPI v%d.%d.%d", OMPI_MAJOR_VERSION, OMPI_MINOR_VERSION, OMPI_RELEASE_VERSION); ptr += strlen(tmp); len_left -= strlen(tmp); @@ -78,35 +78,35 @@ PROTOTYPE ERROR_CLASS get_library_version(STRING_OUT version, INT_OUT resultlen) if (strlen(OMPI_GREEK_VERSION) > 0) { snprintf(ptr, len_left, "%s", OMPI_GREEK_VERSION); ptr = tmp + strlen(tmp); - len_left = MPI_MAX_LIBRARY_VERSION_STRING - strlen(tmp); + len_left = @MPI_MAX_LIBRARY_VERSION_STRING@ - strlen(tmp); } /* Package name */ if (strlen(OPAL_PACKAGE_STRING) > 0) { snprintf(ptr, len_left, ", package: %s", OPAL_PACKAGE_STRING); ptr = tmp + strlen(tmp); - len_left = MPI_MAX_LIBRARY_VERSION_STRING - strlen(tmp); + len_left = @MPI_MAX_LIBRARY_VERSION_STRING@ - strlen(tmp); } /* Ident string */ if (strlen(OMPI_IDENT_STRING) > 0) { snprintf(ptr, len_left, ", ident: %s", OMPI_IDENT_STRING); ptr = tmp + strlen(tmp); - len_left = MPI_MAX_LIBRARY_VERSION_STRING - strlen(tmp); + len_left = @MPI_MAX_LIBRARY_VERSION_STRING@ - strlen(tmp); } /* Repository revision */ if (strlen(OMPI_REPO_REV) > 0) { snprintf(ptr, len_left, ", repo rev: %s", OMPI_REPO_REV); ptr = tmp + strlen(tmp); - len_left = MPI_MAX_LIBRARY_VERSION_STRING - strlen(tmp); + len_left = @MPI_MAX_LIBRARY_VERSION_STRING@ - strlen(tmp); } /* Release date */ if (strlen(OMPI_RELEASE_DATE) > 0) { snprintf(ptr, len_left, ", %s", OMPI_RELEASE_DATE); ptr = tmp + strlen(tmp); - len_left = MPI_MAX_LIBRARY_VERSION_STRING - strlen(tmp); + len_left = @MPI_MAX_LIBRARY_VERSION_STRING@ - strlen(tmp); } memcpy(version, tmp, strlen(tmp) + 1); diff --git a/ompi/mpi/c/get_processor_name.c.in b/ompi/mpi/c/get_processor_name.c.in index 9902a653e8f..2dc70b3aa7e 100644 --- a/ompi/mpi/c/get_processor_name.c.in +++ b/ompi/mpi/c/get_processor_name.c.in @@ -12,7 +12,7 @@ * Copyright (c) 2006-2008 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -56,8 +56,8 @@ PROTOTYPE ERROR_CLASS get_processor_name(STRING_OUT name, INT_OUT resultlen) Guard against gethostname() returning a *really long* hostname and not null-terminating the string. The Fortran API version will pad to the right if necessary. */ - gethostname(name, (MPI_MAX_PROCESSOR_NAME - 1)); - name[MPI_MAX_PROCESSOR_NAME - 1] = '\0'; + gethostname(name, (@MPI_MAX_PROCESSOR_NAME@ - 1)); + name[@MPI_MAX_PROCESSOR_NAME@ - 1] = '\0'; *resultlen = (int) strlen(name); return MPI_SUCCESS; diff --git a/ompi/mpi/c/group_compare.c.in b/ompi/mpi/c/group_compare.c.in index 728a091396f..06088d77170 100644 --- a/ompi/mpi/c/group_compare.c.in +++ b/ompi/mpi/c/group_compare.c.in @@ -32,7 +32,7 @@ #include "ompi/communicator/communicator.h" #include "ompi/proc/proc.h" -PROTOTYPE ERROR_CLASS group_compare(GROUP group1, GROUP group2, INT_OUT result) +PROTOTYPE ERROR_CLASS group_compare(GROUP group1, GROUP group2, COMM_CMP_OUT result) { int return_value = MPI_SUCCESS; diff --git a/ompi/mpi/c/group_free.c.in b/ompi/mpi/c/group_free.c.in index 6fbc3ee6a36..10e6fd81454 100644 --- a/ompi/mpi/c/group_free.c.in +++ b/ompi/mpi/c/group_free.c.in @@ -29,7 +29,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/group/group.h" -PROTOTYPE ERROR_CLASS group_free(GROUP_OUT group) +PROTOTYPE ERROR_CLASS group_free(GROUP_INOUT group) { int ret; @@ -50,8 +50,8 @@ PROTOTYPE ERROR_CLASS group_free(GROUP_OUT group) if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); - if ((NULL == group) || - (MPI_GROUP_NULL == *group) || (NULL == *group) ) { + if (NULL == group || NULL == *group || + MPI_GROUP_NULL == *group) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_GROUP, FUNC_NAME); } diff --git a/ompi/mpi/c/group_fromint_abi.c b/ompi/mpi/c/group_fromint_abi.c new file mode 100644 index 00000000000..bb370b7228b --- /dev/null +++ b/ompi/mpi/c/group_fromint_abi.c @@ -0,0 +1,60 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/group/group.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Group_fromint = PMPI_Group_fromint +#endif +#define MPI_Group_fromint PMPI_Group_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Group_fromint"; + +MPI_Group_ABI_INTERNAL MPI_Group_fromint(int group) +{ + int o_index; + intptr_t group_tmp; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)group) { + group_tmp = (intptr_t)group; + return (MPI_Group_ABI_INTERNAL)group_tmp; + } + + o_index = group - OMPI_ABI_HANDLE_BASE_OFFSET; + + return (MPI_Group_ABI_INTERNAL)opal_pointer_array_get_item(&ompi_group_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/group_fromint_ompi.c b/ompi/mpi/c/group_fromint_ompi.c new file mode 100644 index 00000000000..2099cb6fb4a --- /dev/null +++ b/ompi/mpi/c/group_fromint_ompi.c @@ -0,0 +1,49 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/runtime/params.h" +#include "ompi/group/group.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Group_fromint = PMPI_Group_fromint +#endif +#define MPI_Group_fromint PMPI_Group_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Group_fromint"; + +MPI_Group MPI_Group_fromint(int group) +{ + int o_index; + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + o_index = group; + + return (MPI_Group)opal_pointer_array_get_item(&ompi_group_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/group_toint_abi.c b/ompi/mpi/c/group_toint_abi.c new file mode 100644 index 00000000000..9d28cb34b7b --- /dev/null +++ b/ompi/mpi/c/group_toint_abi.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/group/group.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Group_toint = PMPI_Group_toint +#endif +#define MPI_Group_toint PMPI_Group_toint +#endif + +static const char FUNC_NAME[] = "MPI_Group_toint"; + +int MPI_Group_toint(MPI_Group_ABI_INTERNAL group) +{ + int o_index; + ompi_group_t *group_ptr; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if (group == NULL) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_GROUP, FUNC_NAME); + } + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)group) { + intptr_t group_int = (intptr_t)group; + return (int)group_int; + } + + group_ptr = (ompi_group_t *)group; + o_index = group_ptr->grp_f_to_c_index; + o_index += OMPI_ABI_HANDLE_BASE_OFFSET; + + return o_index; +} diff --git a/ompi/mpi/c/group_toint_ompi.c b/ompi/mpi/c/group_toint_ompi.c new file mode 100644 index 00000000000..fd088522277 --- /dev/null +++ b/ompi/mpi/c/group_toint_ompi.c @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/group/group.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Group_toint = PMPI_Group_toint +#endif +#define MPI_Group_toint PMPI_Group_toint +#endif + +static const char FUNC_NAME[] = "MPI_Group_toint"; + +int MPI_Group_toint(MPI_Group group) +{ + int o_index; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if( (NULL == group) ) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_GROUP, FUNC_NAME); + } + } + + o_index = group->grp_f_to_c_index; + + return o_index; + +} diff --git a/ompi/mpi/c/group_translate_ranks.c.in b/ompi/mpi/c/group_translate_ranks.c.in index b84f7212f56..d5c7b84d768 100644 --- a/ompi/mpi/c/group_translate_ranks.c.in +++ b/ompi/mpi/c/group_translate_ranks.c.in @@ -32,8 +32,8 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/group/group.h" -PROTOTYPE ERROR_CLASS group_translate_ranks(GROUP group1, INT n_ranks, INT_ARRAY ranks1, - GROUP group2, INT_OUT ranks2) +PROTOTYPE ERROR_CLASS group_translate_ranks(GROUP group1, INT n_ranks, SOURCE_ARRAY ranks1:n_ranks, + GROUP group2, SOURCE_ARRAY_OUT ranks2:n_ranks) { int err; diff --git a/ompi/mpi/c/iallgather.c.in b/ompi/mpi/c/iallgather.c.in index 6bc3d09adee..0688ab7b462 100644 --- a/ompi/mpi/c/iallgather.c.in +++ b/ompi/mpi/c/iallgather.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015-2020 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,7 +36,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS iallgather(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS iallgather(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, COMM comm, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/iallgatherv.c.in b/ompi/mpi/c/iallgatherv.c.in index aa2b543a423..e4e16a17cee 100644 --- a/ompi/mpi/c/iallgatherv.c.in +++ b/ompi/mpi/c/iallgatherv.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,7 +37,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS iallgatherv(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS iallgatherv(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY displs, DATATYPE recvtype, COMM comm, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/iallreduce.c.in b/ompi/mpi/c/iallreduce.c.in index 60be428fa2e..b183a5eb1b2 100644 --- a/ompi/mpi/c/iallreduce.c.in +++ b/ompi/mpi/c/iallreduce.c.in @@ -15,7 +15,7 @@ * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2016 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,7 +37,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS iallreduce(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT count, +PROTOTYPE ERROR_CLASS iallreduce(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT count, DATATYPE datatype, OP op, COMM comm, REQUEST_INOUT request) { int err; diff --git a/ompi/mpi/c/ialltoall.c.in b/ompi/mpi/c/ialltoall.c.in index f6ccdb72815..f9d4470ef50 100644 --- a/ompi/mpi/c/ialltoall.c.in +++ b/ompi/mpi/c/ialltoall.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2014-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,7 +37,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS ialltoall(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS ialltoall(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, COMM comm, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/ialltoallv.c.in b/ompi/mpi/c/ialltoallv.c.in index 838286975ee..daad4f9a459 100644 --- a/ompi/mpi/c/ialltoallv.c.in +++ b/ompi/mpi/c/ialltoallv.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2014-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,7 +36,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS ialltoallv(BUFFER sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, +PROTOTYPE ERROR_CLASS ialltoallv(BUFFER_CONST sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY rdispls, DATATYPE recvtype, COMM comm, REQUEST_INOUT request) diff --git a/ompi/mpi/c/ialltoallw.c.in b/ompi/mpi/c/ialltoallw.c.in index 44e5f4a9e7a..f7e4a5342f9 100644 --- a/ompi/mpi/c/ialltoallw.c.in +++ b/ompi/mpi/c/ialltoallw.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2014-2020 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,9 +36,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS ialltoallw(BUFFER sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, - DATATYPE_ARRAY sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, - DISP_ARRAY rdispls, DATATYPE_ARRAY recvtypes, COMM comm, +PROTOTYPE ERROR_CLASS ialltoallw(BUFFER_CONST sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, + DATATYPE_ARRAY_ASYNC sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, + DISP_ARRAY rdispls, DATATYPE_ARRAY_ASYNC recvtypes, COMM comm, REQUEST_INOUT request) { int i, size, err; @@ -121,6 +121,7 @@ PROTOTYPE ERROR_CLASS ialltoallw(BUFFER sendbuf, COUNT_ARRAY sendcounts, DISP_AR if (OPAL_LIKELY(OMPI_SUCCESS == err)) { ompi_coll_base_retain_datatypes_w(*request, (MPI_IN_PLACE==sendbuf)?NULL:sendtypes, recvtypes, false); } + OMPI_ERRHANDLER_RETURN(err, comm, err, FUNC_NAME); } diff --git a/ompi/mpi/c/ibcast.c.in b/ompi/mpi/c/ibcast.c.in index 70eaea4a18f..3d07183835f 100644 --- a/ompi/mpi/c/ibcast.c.in +++ b/ompi/mpi/c/ibcast.c.in @@ -26,7 +26,7 @@ #include "ompi/runtime/ompi_spc.h" PROTOTYPE ERROR_CLASS ibcast(BUFFER_OUT buffer, COUNT count, DATATYPE datatype, - INT root, COMM comm, REQUEST_INOUT request) + ROOT root, COMM comm, REQUEST_INOUT request) { int err; diff --git a/ompi/mpi/c/ibsend.c.in b/ompi/mpi/c/ibsend.c.in index dbe9b9e0c29..3a01ed165b9 100644 --- a/ompi/mpi/c/ibsend.c.in +++ b/ompi/mpi/c/ibsend.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,8 +36,8 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS ibsend(BUFFER buf, COUNT count, DATATYPE type, INT dest, - INT tag, COMM comm, REQUEST_INOUT request) +PROTOTYPE ERROR_CLASS ibsend(BUFFER_CONST buf, COUNT count, DATATYPE type, SOURCE dest, + TAG tag, COMM comm, REQUEST_INOUT request) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/iexscan.c.in b/ompi/mpi/c/iexscan.c.in index a945d98ae53..20165ac41d6 100644 --- a/ompi/mpi/c/iexscan.c.in +++ b/ompi/mpi/c/iexscan.c.in @@ -14,7 +14,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,7 +35,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS iexscan(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT count, +PROTOTYPE ERROR_CLASS iexscan(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT count, DATATYPE datatype, OP op, COMM comm, REQUEST_INOUT request) { int err; diff --git a/ompi/mpi/c/igather.c.in b/ompi/mpi/c/igather.c.in index 1786e7056eb..87d6bcabe77 100644 --- a/ompi/mpi/c/igather.c.in +++ b/ompi/mpi/c/igather.c.in @@ -17,7 +17,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -38,9 +38,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS igather(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS igather(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, - INT root, COMM comm, REQUEST_INOUT request) + ROOT root, COMM comm, REQUEST_INOUT request) { int err; diff --git a/ompi/mpi/c/igatherv.c.in b/ompi/mpi/c/igatherv.c.in index 346db74a4c9..a7ad57e9792 100644 --- a/ompi/mpi/c/igatherv.c.in +++ b/ompi/mpi/c/igatherv.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,9 +35,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS igatherv(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS igatherv(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY displs, - DATATYPE recvtype, INT root, COMM comm, REQUEST_INOUT request) + DATATYPE recvtype, ROOT root, COMM comm, REQUEST_INOUT request) { int i, size, err; ompi_count_array_t recvcounts_desc; diff --git a/ompi/mpi/c/improbe.c.in b/ompi/mpi/c/improbe.c.in index a0f1c7c221f..4401cc2ce4b 100644 --- a/ompi/mpi/c/improbe.c.in +++ b/ompi/mpi/c/improbe.c.in @@ -7,7 +7,7 @@ * Copyright (c) 2020-2021 The University of Tennessee and The University * of Tennessee Research Foundation. All rights * reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -25,8 +25,12 @@ #include "ompi/request/request.h" #include "ompi/message/message.h" -PROTOTYPE ERROR_CLASS improbe(INT source, INT tag, COMM comm, INT_OUT flag, - MESSAGE_OUT message, STATUS_OUT status) +/* + * use STATUS_INOUT for the case where no message was found and the + * application expects the status to not be changed. + */ +PROTOTYPE ERROR_CLASS improbe(SOURCE source, TAG tag, COMM comm, INT_OUT flag, + MESSAGE_OUT message, STATUS_INOUT status) { int rc; diff --git a/ompi/mpi/c/imrecv.c.in b/ompi/mpi/c/imrecv.c.in index ea8823790c0..60cfce49cfe 100644 --- a/ompi/mpi/c/imrecv.c.in +++ b/ompi/mpi/c/imrecv.c.in @@ -4,7 +4,7 @@ * Copyright (c) 2012 Oak Ridge National Labs. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -23,7 +23,7 @@ #include "ompi/message/message.h" PROTOTYPE ERROR_CLASS imrecv(BUFFER_OUT buf, COUNT count, DATATYPE type, - MESSAGE_OUT message, REQUEST_INOUT request) + MESSAGE_INOUT message, REQUEST_INOUT request) { int rc = MPI_SUCCESS; ompi_communicator_t *comm; diff --git a/ompi/mpi/c/ineighbor_allgather.c.in b/ompi/mpi/c/ineighbor_allgather.c.in index b434176f31e..7ce4a92ea4d 100644 --- a/ompi/mpi/c/ineighbor_allgather.c.in +++ b/ompi/mpi/c/ineighbor_allgather.c.in @@ -17,7 +17,7 @@ * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -40,7 +40,7 @@ #include "ompi/mca/topo/base/base.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS ineighbor_allgather(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS ineighbor_allgather(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, COMM comm, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/ineighbor_allgatherv.c.in b/ompi/mpi/c/ineighbor_allgatherv.c.in index 5f1eb6086b9..a736ad8bdfd 100644 --- a/ompi/mpi/c/ineighbor_allgatherv.c.in +++ b/ompi/mpi/c/ineighbor_allgatherv.c.in @@ -17,7 +17,7 @@ * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -40,7 +40,7 @@ #include "ompi/mca/topo/base/base.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS ineighbor_allgatherv(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS ineighbor_allgatherv(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY displs, DATATYPE recvtype, COMM comm, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/ineighbor_alltoall.c.in b/ompi/mpi/c/ineighbor_alltoall.c.in index c93bb5a248e..7b5a28eef65 100644 --- a/ompi/mpi/c/ineighbor_alltoall.c.in +++ b/ompi/mpi/c/ineighbor_alltoall.c.in @@ -17,7 +17,7 @@ * Copyright (c) 2014-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -40,7 +40,7 @@ #include "ompi/mca/topo/base/base.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS ineighbor_alltoall(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS ineighbor_alltoall(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, COMM comm, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/ineighbor_alltoallv.c.in b/ompi/mpi/c/ineighbor_alltoallv.c.in index 38e7bf82abd..f97768340fa 100644 --- a/ompi/mpi/c/ineighbor_alltoallv.c.in +++ b/ompi/mpi/c/ineighbor_alltoallv.c.in @@ -16,7 +16,7 @@ * Copyright (c) 2014-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -39,7 +39,7 @@ #include "ompi/mca/topo/base/base.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS ineighbor_alltoallv(BUFFER sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, +PROTOTYPE ERROR_CLASS ineighbor_alltoallv(BUFFER_CONST sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY rdispls, DATATYPE recvtype, COMM comm, REQUEST_INOUT request) diff --git a/ompi/mpi/c/ineighbor_alltoallw.c.in b/ompi/mpi/c/ineighbor_alltoallw.c.in index 8f9d29591de..a6ecfd57e39 100644 --- a/ompi/mpi/c/ineighbor_alltoallw.c.in +++ b/ompi/mpi/c/ineighbor_alltoallw.c.in @@ -16,7 +16,7 @@ * Copyright (c) 2014-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -39,9 +39,9 @@ #include "ompi/mca/topo/base/base.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS ineighbor_alltoallw(BUFFER sendbuf, COUNT_ARRAY sendcounts, AINT_ARRAY sdispls, - DATATYPE_ARRAY sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, - AINT_ARRAY rdispls, DATATYPE_ARRAY recvtypes, COMM comm, +PROTOTYPE ERROR_CLASS ineighbor_alltoallw(BUFFER_CONST sendbuf, COUNT_ARRAY sendcounts, AINT_ARRAY sdispls, + NEIGHBOR_DATATYPE_ARRAY_ASYNC sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, + AINT_ARRAY rdispls, NEIGHBOR_DATATYPE_ARRAY_ASYNC recvtypes, COMM comm, REQUEST_INOUT request) { int i, err; diff --git a/ompi/mpi/c/info_delete.c.in b/ompi/mpi/c/info_delete.c.in index 1c0126803b6..85ee8860f9d 100644 --- a/ompi/mpi/c/info_delete.c.in +++ b/ompi/mpi/c/info_delete.c.in @@ -62,7 +62,7 @@ PROTOTYPE ERROR_CLASS info_delete(INFO info, STRING key) key_length = (key) ? (int)strlen (key) : 0; if ((NULL == key) || (0 == key_length) || - (MPI_MAX_INFO_KEY <= key_length)) { + (@MPI_MAX_INFO_KEY@ <= key_length)) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_INFO_KEY, FUNC_NAME); } diff --git a/ompi/mpi/c/info_free.c.in b/ompi/mpi/c/info_free.c.in index 96e45184187..9b01b49b53b 100644 --- a/ompi/mpi/c/info_free.c.in +++ b/ompi/mpi/c/info_free.c.in @@ -40,7 +40,7 @@ * * Upon successful completion, 'info' will be set to 'MPI_INFO_NULL'. */ -PROTOTYPE ERROR_CLASS info_free(INFO_OUT info) +PROTOTYPE ERROR_CLASS info_free(INFO_INOUT info) { int err; @@ -50,7 +50,8 @@ PROTOTYPE ERROR_CLASS info_free(INFO_OUT info) * fashion so that there are no dangling pointers. */ if (MPI_PARAM_CHECK) { - if (NULL == info || MPI_INFO_NULL == *info || + if (NULL == info || NULL == *info || + MPI_INFO_NULL == *info || MPI_INFO_ENV == *info || ompi_info_is_freed(*info)) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_INFO, FUNC_NAME); diff --git a/ompi/mpi/c/info_fromint_abi.c b/ompi/mpi/c/info_fromint_abi.c new file mode 100644 index 00000000000..2d3701e9c9d --- /dev/null +++ b/ompi/mpi/c/info_fromint_abi.c @@ -0,0 +1,56 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/info/info.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Info_fromint = PMPI_Info_fromint +#endif +#define MPI_Info_fromint PMPI_Info_fromint +#endif + +static const char __opal_attribute_unused__ FUNC_NAME[] = "MPI_Info_fromint"; + +MPI_Info_ABI_INTERNAL MPI_Info_fromint(int info) +{ + int o_index; + intptr_t info_tmp; + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)info) { + info_tmp = (intptr_t)info; + return (MPI_Info_ABI_INTERNAL)info_tmp; + } + + o_index = info - OMPI_ABI_HANDLE_BASE_OFFSET; + + return (MPI_Info_ABI_INTERNAL)opal_pointer_array_get_item(&ompi_info_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/info_fromint_ompi.c b/ompi/mpi/c/info_fromint_ompi.c new file mode 100644 index 00000000000..b32878f8da7 --- /dev/null +++ b/ompi/mpi/c/info_fromint_ompi.c @@ -0,0 +1,54 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/runtime/params.h" +#include "ompi/info/info.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Info_fromint = PMPI_Info_fromint +#endif +#define MPI_Info_fromint PMPI_Info_fromint +#endif + +static const char __opal_attribute_unused__ FUNC_NAME[] = "MPI_Info_fromint"; + +MPI_Info MPI_Info_fromint(int info) +{ + int o_index; + + if (info == 0) { + return MPI_INFO_NULL; + } + + if (info == 1) { + return MPI_INFO_ENV; + } + + o_index = info; + + return (MPI_Info)opal_pointer_array_get_item(&ompi_info_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/info_get.c.in b/ompi/mpi/c/info_get.c.in index 4784eafcf26..315673598e5 100644 --- a/ompi/mpi/c/info_get.c.in +++ b/ompi/mpi/c/info_get.c.in @@ -79,7 +79,7 @@ PROTOTYPE ERROR_CLASS info_get(INFO info, STRING key, INT valuelen, key_length = (key) ? (int)strlen (key) : 0; if ((NULL == key) || (0 == key_length) || - (MPI_MAX_INFO_KEY <= key_length)) { + (@MPI_MAX_INFO_KEY@ <= key_length)) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_INFO_KEY, FUNC_NAME); } diff --git a/ompi/mpi/c/info_get_nthkey.c.in b/ompi/mpi/c/info_get_nthkey.c.in index 1795a2ac905..2fd340bda6a 100644 --- a/ompi/mpi/c/info_get_nthkey.c.in +++ b/ompi/mpi/c/info_get_nthkey.c.in @@ -83,7 +83,7 @@ PROTOTYPE ERROR_CLASS info_get_nthkey(INFO info, INT n, STRING_OUT key) opal_cstring_t *key_str = NULL; err = ompi_info_get_nthkey (info, n, &key_str); if (NULL != key_str) { - opal_string_copy(key, key_str->string, MPI_MAX_INFO_KEY); + opal_string_copy(key, key_str->string, @MPI_MAX_INFO_KEY@); OBJ_RELEASE(key_str); } diff --git a/ompi/mpi/c/info_get_string.c.in b/ompi/mpi/c/info_get_string.c.in index a9b17c3f99c..589f1176af6 100644 --- a/ompi/mpi/c/info_get_string.c.in +++ b/ompi/mpi/c/info_get_string.c.in @@ -74,7 +74,7 @@ PROTOTYPE ERROR_CLASS Info_get_string(INFO info, STRING key, INT_OUT buflen, key_length = (key) ? (int)strlen (key) : 0; if ((NULL == key) || (0 == key_length) || - (MPI_MAX_INFO_KEY <= key_length)) { + (@MPI_MAX_INFO_KEY@ <= key_length)) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_INFO_KEY, FUNC_NAME); } diff --git a/ompi/mpi/c/info_get_valuelen.c.in b/ompi/mpi/c/info_get_valuelen.c.in index 0195d602e28..fb15b08d48e 100644 --- a/ompi/mpi/c/info_get_valuelen.c.in +++ b/ompi/mpi/c/info_get_valuelen.c.in @@ -69,7 +69,7 @@ PROTOTYPE ERROR_CLASS info_get_valuelen(INFO info, STRING key, INT_OUT valuelen, } key_length = (key) ? (int)strlen (key) : 0; if ((NULL == key) || (0 == key_length) || - (MPI_MAX_INFO_KEY <= key_length)) { + (@MPI_MAX_INFO_KEY@ <= key_length)) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_INFO_KEY, FUNC_NAME); } diff --git a/ompi/mpi/c/info_set.c.in b/ompi/mpi/c/info_set.c.in index c58121ab9c9..b0194d7ef25 100644 --- a/ompi/mpi/c/info_set.c.in +++ b/ompi/mpi/c/info_set.c.in @@ -78,14 +78,14 @@ PROTOTYPE ERROR_CLASS info_set(INFO info, STRING key, STRING value) key_length = (key) ? (int)strlen (key) : 0; if ((NULL == key) || (0 == key_length) || - (MPI_MAX_INFO_KEY <= key_length)) { + (@MPI_MAX_INFO_KEY@ <= key_length)) { return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD, MPI_ERR_INFO_KEY, FUNC_NAME); } value_length = (value) ? (int)strlen (value) : 0; if ((NULL == value) || (0 == value_length) || - (MPI_MAX_INFO_VAL <= value_length)) { + (@MPI_MAX_INFO_VAL@ <= value_length)) { return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD, MPI_ERR_INFO_VALUE, FUNC_NAME); } diff --git a/ompi/mpi/c/info_toint_abi.c b/ompi/mpi/c/info_toint_abi.c new file mode 100644 index 00000000000..898411b2eaf --- /dev/null +++ b/ompi/mpi/c/info_toint_abi.c @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/info/info.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Info_toint = PMPI_Info_toint +#endif +#define MPI_Info_toint PMPI_Info_toint +#endif + +static const char FUNC_NAME[] = "MPI_Info_toint"; + +int MPI_Info_toint(MPI_Info_ABI_INTERNAL info) +{ + int o_index; + ompi_info_t *info_ptr; + MPI_Info info_tmp; + + if ( MPI_PARAM_CHECK ) { + info_tmp = ompi_convert_abi_info_intern_info(info); + if ((NULL != info) && ompi_info_is_freed(info_tmp)) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_INFO, FUNC_NAME); + } + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)info) { + intptr_t info_int = (intptr_t)info; + return (int)info_int; + } + + info_ptr = (ompi_info_t *)info; + o_index = info_ptr->i_f_to_c_index; + o_index += OMPI_ABI_HANDLE_BASE_OFFSET; + + return o_index; +} diff --git a/ompi/mpi/c/info_toint_ompi.c b/ompi/mpi/c/info_toint_ompi.c new file mode 100644 index 00000000000..b532dfe028a --- /dev/null +++ b/ompi/mpi/c/info_toint_ompi.c @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/info/info.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Info_toint = PMPI_Info_toint +#endif +#define MPI_Info_toint PMPI_Info_toint +#endif + +static const char FUNC_NAME[] = "MPI_Info_toint"; + +int MPI_Info_toint(MPI_Info info) +{ + int o_index; + + if ( MPI_PARAM_CHECK ) { + if (NULL == info || ompi_info_is_freed(info)) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_INFO, FUNC_NAME); + } + } + + o_index = info->i_f_to_c_index; + + return o_index; + +} diff --git a/ompi/mpi/c/init_thread.c.in b/ompi/mpi/c/init_thread.c.in index 319448b82bc..9096ef3ec4a 100644 --- a/ompi/mpi/c/init_thread.c.in +++ b/ompi/mpi/c/init_thread.c.in @@ -37,8 +37,8 @@ #include "ompi/constants.h" #include "ompi/mca/hook/base/base.h" -PROTOTYPE ERROR_CLASS init_thread(INT_OUT argc, ARGV argv, INT required, - INT_OUT provided) +PROTOTYPE ERROR_CLASS init_thread(INT_OUT argc, ARGV argv, TS_LEVEL required, + TS_LEVEL_OUT provided) { int err, safe_required = MPI_THREAD_SERIALIZED; bool err_arg_required = false; diff --git a/ompi/mpi/c/iprobe.c.in b/ompi/mpi/c/iprobe.c.in index 751f41ec8c3..ecdbfc49acd 100644 --- a/ompi/mpi/c/iprobe.c.in +++ b/ompi/mpi/c/iprobe.c.in @@ -31,7 +31,11 @@ #include "ompi/request/request.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS iprobe(INT source, INT tag, COMM comm, INT_OUT flag, STATUS_OUT status) +/* + * use STATUS_INOUT for the case where no message was found and the + * application expects the status to not be changed. + */ +PROTOTYPE ERROR_CLASS iprobe(SOURCE source, TAG tag, COMM comm, INT_OUT flag, STATUS_INOUT status) { int rc; diff --git a/ompi/mpi/c/irecv.c.in b/ompi/mpi/c/irecv.c.in index b2344cb5982..78263551b9a 100644 --- a/ompi/mpi/c/irecv.c.in +++ b/ompi/mpi/c/irecv.c.in @@ -33,7 +33,7 @@ #include "ompi/runtime/ompi_spc.h" PROTOTYPE ERROR_CLASS irecv(BUFFER_OUT buf, COUNT count, DATATYPE type, - INT source, INT tag, COMM comm, REQUEST_INOUT request) + SOURCE source, TAG tag, COMM comm, REQUEST_INOUT request) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/ireduce.c.in b/ompi/mpi/c/ireduce.c.in index 5dbdf1b102b..604608bfbc8 100644 --- a/ompi/mpi/c/ireduce.c.in +++ b/ompi/mpi/c/ireduce.c.in @@ -16,7 +16,7 @@ * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2016 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,8 +37,8 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS ireduce(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT count, - DATATYPE datatype, OP op, INT root, COMM comm, REQUEST_INOUT request) +PROTOTYPE ERROR_CLASS ireduce(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT count, + DATATYPE datatype, OP op, ROOT root, COMM comm, REQUEST_INOUT request) { int err; diff --git a/ompi/mpi/c/ireduce_scatter.c.in b/ompi/mpi/c/ireduce_scatter.c.in index 7b47a7b7888..9b5ca687bed 100644 --- a/ompi/mpi/c/ireduce_scatter.c.in +++ b/ompi/mpi/c/ireduce_scatter.c.in @@ -16,7 +16,7 @@ * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2016 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,7 +37,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS ireduce_scatter(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, +PROTOTYPE ERROR_CLASS ireduce_scatter(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DATATYPE datatype, OP op, COMM comm, REQUEST_INOUT request) { int i, err, size, count; diff --git a/ompi/mpi/c/ireduce_scatter_block.c.in b/ompi/mpi/c/ireduce_scatter_block.c.in index d4d7e3e7361..0cf123e2f46 100644 --- a/ompi/mpi/c/ireduce_scatter_block.c.in +++ b/ompi/mpi/c/ireduce_scatter_block.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -38,7 +38,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS ireduce_scatter_block(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT recvcount, +PROTOTYPE ERROR_CLASS ireduce_scatter_block(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE datatype, OP op, COMM comm, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/irsend.c.in b/ompi/mpi/c/irsend.c.in index 777d8feec29..1b62efdc120 100644 --- a/ompi/mpi/c/irsend.c.in +++ b/ompi/mpi/c/irsend.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,8 +36,8 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS Irsend(BUFFER buf, COUNT count, DATATYPE type, INT dest, - INT tag, COMM comm, REQUEST_INOUT request) +PROTOTYPE ERROR_CLASS Irsend(BUFFER_CONST buf, COUNT count, DATATYPE type, SOURCE dest, + TAG tag, COMM comm, REQUEST_INOUT request) { int rc; diff --git a/ompi/mpi/c/iscan.c.in b/ompi/mpi/c/iscan.c.in index 6d2c1d950ec..d31393bd0b4 100644 --- a/ompi/mpi/c/iscan.c.in +++ b/ompi/mpi/c/iscan.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,7 +36,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS iscan(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT count, +PROTOTYPE ERROR_CLASS iscan(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT count, DATATYPE datatype, OP op, COMM comm, REQUEST_INOUT request) { int err; diff --git a/ompi/mpi/c/iscatter.c.in b/ompi/mpi/c/iscatter.c.in index b5450ba9f6f..1702ffe5d5d 100644 --- a/ompi/mpi/c/iscatter.c.in +++ b/ompi/mpi/c/iscatter.c.in @@ -17,7 +17,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,9 +37,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS iscatter(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS iscatter(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, - INT root, COMM comm, REQUEST_INOUT request) + ROOT root, COMM comm, REQUEST_INOUT request) { int err; diff --git a/ompi/mpi/c/iscatterv.c.in b/ompi/mpi/c/iscatterv.c.in index 0bd4bb96065..d35ee9f9f98 100644 --- a/ompi/mpi/c/iscatterv.c.in +++ b/ompi/mpi/c/iscatterv.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,9 +35,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS iscatterv(BUFFER sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY displs, +PROTOTYPE ERROR_CLASS iscatterv(BUFFER_CONST sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY displs, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, - DATATYPE recvtype, INT root, COMM comm, REQUEST_INOUT request) + DATATYPE recvtype, ROOT root, COMM comm, REQUEST_INOUT request) { int i, size, err; ompi_count_array_t sendcounts_desc; diff --git a/ompi/mpi/c/isend.c.in b/ompi/mpi/c/isend.c.in index 1be898b1b3d..0547463afd5 100644 --- a/ompi/mpi/c/isend.c.in +++ b/ompi/mpi/c/isend.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015-2017 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,7 +36,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS isend(BUFFER buf, COUNT count, DATATYPE type, INT dest, +PROTOTYPE ERROR_CLASS isend(BUFFER_CONST buf, COUNT count, DATATYPE type, SOURCE dest, INT tag, COMM comm, REQUEST_INOUT request) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/isendrecv.c.in b/ompi/mpi/c/isendrecv.c.in index 8bd8a75afa6..5ec09942613 100644 --- a/ompi/mpi/c/isendrecv.c.in +++ b/ompi/mpi/c/isendrecv.c.in @@ -16,7 +16,7 @@ * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2021 Nanook Consulting. All rights reserved. - * Copyright (c) 2021-2024 Triad National Security, LLC. All rights + * Copyright (c) 2021-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,9 +37,9 @@ #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS isendrecv(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, - INT dest, INT sendtag, BUFFER_OUT recvbuf, COUNT recvcount, - DATATYPE recvtype, INT source, INT recvtag, +PROTOTYPE ERROR_CLASS isendrecv(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, + SOURCE dest, TAG sendtag, BUFFER_OUT recvbuf, COUNT recvcount, + DATATYPE recvtype, SOURCE source, TAG recvtag, COMM comm, REQUEST_INOUT request) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/isendrecv_replace.c.in b/ompi/mpi/c/isendrecv_replace.c.in index 34077e25603..3ca0f73e87e 100644 --- a/ompi/mpi/c/isendrecv_replace.c.in +++ b/ompi/mpi/c/isendrecv_replace.c.in @@ -106,7 +106,7 @@ static int ompi_isendrecv_replace_complete_func (ompi_comm_request_t *request) } PROTOTYPE ERROR_CLASS isendrecv_replace(BUFFER_OUT buf, COUNT count, DATATYPE datatype, - INT dest, INT sendtag, INT source, INT recvtag, + SOURCE dest, TAG sendtag, SOURCE source, TAG recvtag, COMM comm, REQUEST_INOUT request) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/issend.c.in b/ompi/mpi/c/issend.c.in index 1a34c0a4c9c..3806c20f1f9 100644 --- a/ompi/mpi/c/issend.c.in +++ b/ompi/mpi/c/issend.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,8 +35,8 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS issend(BUFFER buf, COUNT count, DATATYPE type, INT dest, - INT tag, COMM comm, REQUEST_INOUT request) +PROTOTYPE ERROR_CLASS issend(BUFFER_CONST buf, COUNT count, DATATYPE type, SOURCE dest, + TAG tag, COMM comm, REQUEST_INOUT request) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/message_fromint_abi.c b/ompi/mpi/c/message_fromint_abi.c new file mode 100644 index 00000000000..654334dfafa --- /dev/null +++ b/ompi/mpi/c/message_fromint_abi.c @@ -0,0 +1,61 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/message/message.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Message_fromint = PMPI_Message_fromint +#endif +#define MPI_Message_fromint PMPI_Message_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Message_fromint"; + +MPI_Message_ABI_INTERNAL MPI_Message_fromint(int message) +{ + int o_index; + intptr_t message_tmp; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)message) { + message_tmp = (intptr_t)message; + return (MPI_Message_ABI_INTERNAL)message_tmp; + } + + o_index = message - OMPI_ABI_HANDLE_BASE_OFFSET; + assert(o_index >= 0); + + return (MPI_Message_ABI_INTERNAL)opal_pointer_array_get_item(&ompi_message_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/message_fromint_ompi.c b/ompi/mpi/c/message_fromint_ompi.c new file mode 100644 index 00000000000..a34b00f8da5 --- /dev/null +++ b/ompi/mpi/c/message_fromint_ompi.c @@ -0,0 +1,49 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/runtime/params.h" +#include "ompi/message/message.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Message_fromint = PMPI_Message_fromint +#endif +#define MPI_Message_fromint PMPI_Message_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Message_fromint"; + +MPI_Message MPI_Message_fromint(int message) +{ + int o_index; + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + o_index = message; + + return (MPI_Message)opal_pointer_array_get_item(&ompi_message_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/message_toint_abi.c b/ompi/mpi/c/message_toint_abi.c new file mode 100644 index 00000000000..190665fbe4d --- /dev/null +++ b/ompi/mpi/c/message_toint_abi.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/message/message.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Message_toint = PMPI_Message_toint +#endif +#define MPI_Message_toint PMPI_Message_toint +#endif + +static const char FUNC_NAME[] = "MPI_Message_toint"; + +int MPI_Message_toint(MPI_Message_ABI_INTERNAL message) +{ + int o_index; + ompi_message_t *message_ptr; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if (NULL == message) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_ARG, FUNC_NAME); + } + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)message) { + intptr_t message_int = (intptr_t)message; + return (int)message_int; + } + + message_ptr = (ompi_message_t *)message; + + if (MPI_UNDEFINED == message_ptr->m_f_to_c_index) { + message_ptr->m_f_to_c_index = + opal_pointer_array_add(&ompi_message_f_to_c_table, message); + } + + o_index = message_ptr->m_f_to_c_index; + o_index += OMPI_ABI_HANDLE_BASE_OFFSET; + + return o_index; +} diff --git a/ompi/mpi/c/message_toint_ompi.c b/ompi/mpi/c/message_toint_ompi.c new file mode 100644 index 00000000000..7fb1e056797 --- /dev/null +++ b/ompi/mpi/c/message_toint_ompi.c @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/message/message.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Message_toint = PMPI_Message_toint +#endif +#define MPI_Message_toint PMPI_Message_toint +#endif + +static const char FUNC_NAME[] = "MPI_Message_toint"; + +int MPI_Message_toint(MPI_Message message) +{ + int o_index; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if( (NULL == message) ) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_ARG, FUNC_NAME); + } + } + + if (MPI_UNDEFINED == message->m_f_to_c_index) { + message->m_f_to_c_index = + opal_pointer_array_add(&ompi_message_f_to_c_table, message); + } + + o_index = message->m_f_to_c_index; + + return o_index; + +} diff --git a/ompi/mpi/c/mprobe.c.in b/ompi/mpi/c/mprobe.c.in index 2f060e52b49..2fdc521eb0c 100644 --- a/ompi/mpi/c/mprobe.c.in +++ b/ompi/mpi/c/mprobe.c.in @@ -27,7 +27,7 @@ #include "ompi/request/request.h" #include "ompi/message/message.h" -PROTOTYPE ERROR_CLASS mprobe(INT source, INT tag, COMM comm, +PROTOTYPE ERROR_CLASS mprobe(SOURCE source, TAG tag, COMM comm, MESSAGE_OUT message, STATUS_OUT status) { int rc; diff --git a/ompi/mpi/c/mrecv.c.in b/ompi/mpi/c/mrecv.c.in index a23368eaf51..9001bc7fae5 100644 --- a/ompi/mpi/c/mrecv.c.in +++ b/ompi/mpi/c/mrecv.c.in @@ -27,7 +27,7 @@ #include "ompi/runtime/ompi_spc.h" PROTOTYPE ERROR_CLASS mrecv(BUFFER_OUT buf, COUNT count, DATATYPE type, - MESSAGE_OUT message, STATUS_OUT status) + MESSAGE_INOUT message, STATUS_OUT status) { int rc = MPI_SUCCESS; ompi_communicator_t *comm; diff --git a/ompi/mpi/c/neighbor_allgather.c.in b/ompi/mpi/c/neighbor_allgather.c.in index fbfbf8ef342..6028184470a 100644 --- a/ompi/mpi/c/neighbor_allgather.c.in +++ b/ompi/mpi/c/neighbor_allgather.c.in @@ -17,7 +17,7 @@ * Copyright (c) 2015-2017 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -39,7 +39,7 @@ #include "ompi/mca/topo/base/base.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS neighbor_allgather(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS neighbor_allgather(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, COMM comm) { diff --git a/ompi/mpi/c/neighbor_allgather_init.c.in b/ompi/mpi/c/neighbor_allgather_init.c.in index ed93cf30c69..5a6f050ee81 100644 --- a/ompi/mpi/c/neighbor_allgather_init.c.in +++ b/ompi/mpi/c/neighbor_allgather_init.c.in @@ -17,7 +17,7 @@ * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -40,7 +40,7 @@ #include "ompi/mca/topo/base/base.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS neighbor_allgather_init(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS neighbor_allgather_init(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, COMM comm, INFO info, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/neighbor_allgatherv.c.in b/ompi/mpi/c/neighbor_allgatherv.c.in index 508b8fdad7f..10f0808c83c 100644 --- a/ompi/mpi/c/neighbor_allgatherv.c.in +++ b/ompi/mpi/c/neighbor_allgatherv.c.in @@ -17,7 +17,7 @@ * Copyright (c) 2015-2017 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -40,7 +40,7 @@ #include "ompi/mca/topo/base/base.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS neighbor_allgatherv(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS neighbor_allgatherv(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY displs, DATATYPE recvtype, COMM comm) { diff --git a/ompi/mpi/c/neighbor_allgatherv_init.c.in b/ompi/mpi/c/neighbor_allgatherv_init.c.in index 24dc3c9a503..6981a370835 100644 --- a/ompi/mpi/c/neighbor_allgatherv_init.c.in +++ b/ompi/mpi/c/neighbor_allgatherv_init.c.in @@ -17,7 +17,7 @@ * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -40,7 +40,7 @@ #include "ompi/mca/topo/base/base.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS neighbor_allgatherv_init(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS neighbor_allgatherv_init(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY displs, DATATYPE recvtype, COMM comm, INFO info, REQUEST_INOUT request) diff --git a/ompi/mpi/c/neighbor_alltoall.c.in b/ompi/mpi/c/neighbor_alltoall.c.in index d015c2742ba..1ae729ef0a0 100644 --- a/ompi/mpi/c/neighbor_alltoall.c.in +++ b/ompi/mpi/c/neighbor_alltoall.c.in @@ -16,7 +16,7 @@ * Copyright (c) 2014-2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -38,7 +38,7 @@ #include "ompi/mca/topo/base/base.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS neighbor_alltoall(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS neighbor_alltoall(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, COMM comm) { diff --git a/ompi/mpi/c/neighbor_alltoall_init.c.in b/ompi/mpi/c/neighbor_alltoall_init.c.in index 7541a5d7824..b638ebfbe92 100644 --- a/ompi/mpi/c/neighbor_alltoall_init.c.in +++ b/ompi/mpi/c/neighbor_alltoall_init.c.in @@ -17,7 +17,7 @@ * Copyright (c) 2014-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -40,7 +40,7 @@ #include "ompi/mca/topo/base/base.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS neighbor_alltoall_init(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS neighbor_alltoall_init(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, COMM comm, INFO info, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/neighbor_alltoallv.c.in b/ompi/mpi/c/neighbor_alltoallv.c.in index 62a2051edbd..20c0f65e211 100644 --- a/ompi/mpi/c/neighbor_alltoallv.c.in +++ b/ompi/mpi/c/neighbor_alltoallv.c.in @@ -16,7 +16,7 @@ * Copyright (c) 2014-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -38,7 +38,7 @@ #include "ompi/mca/topo/base/base.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS neighbor_alltoallv(BUFFER sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, +PROTOTYPE ERROR_CLASS neighbor_alltoallv(BUFFER_CONST sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY rdispls, DATATYPE recvtype, COMM comm) diff --git a/ompi/mpi/c/neighbor_alltoallv_init.c.in b/ompi/mpi/c/neighbor_alltoallv_init.c.in index e5a7fcfb541..2b5448f9182 100644 --- a/ompi/mpi/c/neighbor_alltoallv_init.c.in +++ b/ompi/mpi/c/neighbor_alltoallv_init.c.in @@ -16,7 +16,7 @@ * Copyright (c) 2014-2023 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -39,7 +39,7 @@ #include "ompi/mca/topo/base/base.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS neighbor_alltoallv_init(BUFFER sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, +PROTOTYPE ERROR_CLASS neighbor_alltoallv_init(BUFFER_CONST sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DISP_ARRAY rdispls, DATATYPE recvtype, COMM comm, INFO info, REQUEST_INOUT request) diff --git a/ompi/mpi/c/neighbor_alltoallw.c.in b/ompi/mpi/c/neighbor_alltoallw.c.in index e44c1ed260a..18c7a25ef59 100644 --- a/ompi/mpi/c/neighbor_alltoallw.c.in +++ b/ompi/mpi/c/neighbor_alltoallw.c.in @@ -16,7 +16,7 @@ * Copyright (c) 2014-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -38,10 +38,10 @@ #include "ompi/mca/topo/base/base.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS neighbor_alltoallw(BUFFER sendbuf, COUNT_ARRAY sendcounts, AINT_ARRAY sdispls, - DATATYPE_ARRAY sendtypes, BUFFER_OUT recvbuf, +PROTOTYPE ERROR_CLASS neighbor_alltoallw(BUFFER_CONST sendbuf, COUNT_ARRAY sendcounts, AINT_ARRAY sdispls, + NEIGHBOR_DATATYPE_ARRAY sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, AINT_ARRAY rdispls, - DATATYPE_ARRAY recvtypes, COMM comm) + NEIGHBOR_DATATYPE_ARRAY recvtypes, COMM comm) { int i, err; int indegree, outdegree; diff --git a/ompi/mpi/c/neighbor_alltoallw_init.c.in b/ompi/mpi/c/neighbor_alltoallw_init.c.in index a51fb2f7e1c..6cea5ebd40f 100644 --- a/ompi/mpi/c/neighbor_alltoallw_init.c.in +++ b/ompi/mpi/c/neighbor_alltoallw_init.c.in @@ -16,7 +16,7 @@ * Copyright (c) 2014-2023 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -39,9 +39,9 @@ #include "ompi/mca/topo/base/base.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS neighbor_alltoallw_init(BUFFER sendbuf, COUNT_ARRAY sendcounts, AINT_ARRAY sdispls, - DATATYPE_ARRAY sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, - AINT_ARRAY rdispls, DATATYPE_ARRAY recvtypes, COMM comm, +PROTOTYPE ERROR_CLASS neighbor_alltoallw_init(BUFFER_CONST sendbuf, COUNT_ARRAY sendcounts, AINT_ARRAY sdispls, + NEIGHBOR_DATATYPE_ARRAY_ASYNC sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, + AINT_ARRAY rdispls, NEIGHBOR_DATATYPE_ARRAY_ASYNC recvtypes, COMM comm, INFO info, REQUEST_INOUT request) { int i, err; diff --git a/ompi/mpi/c/ompi_abi_fortran.c b/ompi/mpi/c/ompi_abi_fortran.c new file mode 100644 index 00000000000..da139e7af33 --- /dev/null +++ b/ompi/mpi/c/ompi_abi_fortran.c @@ -0,0 +1,481 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2021 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2010-2012 Oak Ridge National Labs. All rights reserved. + * Copyright (c) 2013 Los Alamos National Security, LLC. All rights + * reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2021 Nanook Consulting. All rights reserved. + * Copyright (c) 2023 Jeffrey M. Squyres. All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/info/info.h" +#include "ompi/instance/instance.h" +#include "ompi/mpi/c/bindings.h" +#include "opal/util/bit_ops.h" +#include "opal/include/opal_stdint.h" + +static ompi_info_t *abi_fortran_info_from_user = NULL; + +typedef struct { + int64_t true_value; + int64_t false_value; +#ifdef HAVE_INT128_T + int128_t true_value128; + int128_t false_value128; +#else + int64_t true_value128; + int64_t false_value128; +#endif + bool is_set; + bool using_int128; +} ompi_abi_fortran_user_bool_info_t; + +static ompi_abi_fortran_user_bool_info_t user_logicals[5]; + +static int countbits32(unsigned int n) { + int count = 0; + while (n) { + n &= (n - 1); // Clear the least significant bit set + count++; + } + return count; +} +static int ompi_abi_fortran_finalize(void) +{ + if (NULL != abi_fortran_info_from_user) { + ompi_info_free(&abi_fortran_info_from_user); + abi_fortran_info_from_user = NULL; + } + return OMPI_SUCCESS; +} + +int ompi_abi_get_fortran_info(ompi_info_t **info) +{ + ompi_info_t *newinfo = NULL; + int ret = MPI_SUCCESS; +#if OMPI_BUILD_FORTRAN_BINDINGS + char tmp[16]; + const char true_str[]="true"; + const char false_str[]="false"; + const char *cptr; + + newinfo = ompi_info_allocate (); + if (NULL == (*info)) { + return MPI_ERR_NO_MEM; + } + +#if OMPI_SIZEOF_FORTRAN_LOGICAL + snprintf(tmp, 16, "%d", OMPI_SIZEOF_FORTRAN_LOGICAL); + ret = opal_info_set(&newinfo->super, "mpi_logical_size", tmp); + if (OPAL_SUCCESS != ret) { + goto err_cleanup; + } +#endif + +#if OMPI_SIZEOF_FORTRAN_INTEGER + snprintf(tmp, 16, "%d", OMPI_SIZEOF_FORTRAN_INTEGER); + ret = opal_info_set(&newinfo->super, "mpi_integer_size", tmp); + if (OPAL_SUCCESS != ret) { + goto err_cleanup; + } +#endif + +#if OMPI_SIZEOF_FORTRAN_REAL + snprintf(tmp, 16, "%d", OMPI_SIZEOF_FORTRAN_REAL); + ret = opal_info_set(&newinfo->super, "mpi_real_size", tmp); + if (OPAL_SUCCESS != ret) { + goto err_cleanup; + } +#endif + +#if OMPI_SIZEOF_FORTRAN_DOUBLE_PRECISION + snprintf(tmp, 16, "%d", OMPI_SIZEOF_FORTRAN_DOUBLE_PRECISION); + ret = opal_info_set(&newinfo->super, "mpi_double_precision_size", tmp); + if (OPAL_SUCCESS != ret) { + goto err_cleanup; + } +#endif + +#define OMPI_DATATYPE_SET_SUPPORTED(type, TYPE) do { \ + cptr = (OMPI_DATATYPE_##TYPE != OMPI_DATATYPE_MPI_UNAVAILABLE) ? true_str : false_str; \ + ret = opal_info_set(&newinfo->super, #type "_supported", cptr); \ + if (OPAL_SUCCESS != ret) goto err_cleanup; } while (0) + + OMPI_DATATYPE_SET_SUPPORTED(mpi_logical1, MPI_LOGICAL1); + OMPI_DATATYPE_SET_SUPPORTED(mpi_logical2, MPI_LOGICAL2); + OMPI_DATATYPE_SET_SUPPORTED(mpi_logical4, MPI_LOGICAL4); + OMPI_DATATYPE_SET_SUPPORTED(mpi_logical8, MPI_LOGICAL8); + OMPI_DATATYPE_SET_SUPPORTED(mpi_logical16, MPI_LOGICAL16); + + OMPI_DATATYPE_SET_SUPPORTED(mpi_integer1, MPI_INTEGER1); + OMPI_DATATYPE_SET_SUPPORTED(mpi_integer2, MPI_INTEGER2); + OMPI_DATATYPE_SET_SUPPORTED(mpi_integer4, MPI_INTEGER4); + OMPI_DATATYPE_SET_SUPPORTED(mpi_integer8, MPI_INTEGER8); + OMPI_DATATYPE_SET_SUPPORTED(mpi_integer16, MPI_INTEGER16); + + OMPI_DATATYPE_SET_SUPPORTED(mpi_real2, MPI_REAL2); + OMPI_DATATYPE_SET_SUPPORTED(mpi_real4, MPI_REAL4); + OMPI_DATATYPE_SET_SUPPORTED(mpi_real8, MPI_REAL8); + OMPI_DATATYPE_SET_SUPPORTED(mpi_real16, MPI_REAL16); + + OMPI_DATATYPE_SET_SUPPORTED(mpi_complex4, MPI_COMPLEX4); + OMPI_DATATYPE_SET_SUPPORTED(mpi_complex8, MPI_COMPLEX8); + OMPI_DATATYPE_SET_SUPPORTED(mpi_complex16, MPI_COMPLEX16); + OMPI_DATATYPE_SET_SUPPORTED(mpi_complex32, MPI_COMPLEX32); + + OMPI_DATATYPE_SET_SUPPORTED(mpi_double_complex, MPI_DOUBLE_COMPLEX); + +#undef OMPI_DATATYPE_SET_SUPPORTED + + *info = newinfo; + +#else + + if(NULL != abi_fortran_info_from_user) { + ret = ompi_info_dup(abi_fortran_info_from_user, &newinfo); + if (OPAL_SUCCESS != ret) { + goto err_cleanup; + } + *info = newinfo; + } else { + *info = MPI_INFO_NULL; + } + +#endif /* OMPI_BUILD_FORTRAN_BINDINGS */ + + + return ret; + +err_cleanup: + if (NULL != newinfo) { + ompi_info_free(&newinfo); + } + + return ret; +} + +int ompi_abi_set_fortran_info(ompi_info_t *info) +{ + int ret = MPI_SUCCESS; + static bool already_called = false; + + /* + * according to MPI 5.0 standard this function can only be called once. + */ + if (true == already_called) { + return MPI_ERR_ABI; + } + + already_called = true; + + /* + * If OMPI was built with fortran enabled, just tell the app + * no to any of this setting fortran info stuff. + */ +#if OMPI_BUILD_FORTRAN_BINDINGS + ret = MPI_ERR_ABI; +#endif + + /* + * If no fortran bindings, dup user supplied fortran info. For now just to + * be able to return whatever the user provided to + * subsequent calls to MPI_Abi_get_fortran_info. + * Perhaps someday this info can be used to handle + * Fortran MPI datatypes even when OMPI is not configured + * with Fortran support,but that will be a heavily lift. + */ + if (MPI_SUCCESS == ret) { + ret = ompi_info_dup(info, &abi_fortran_info_from_user); + if (MPI_SUCCESS == ret) { + ompi_mpi_instance_append_finalize (ompi_abi_fortran_finalize); + } + } + + return ret; + +} + +int ompi_abi_get_fortran_booleans(int logical_size, void *logical_true, void *logical_false, int *is_set) +{ + int ret = MPI_SUCCESS; + +#if OMPI_HAVE_FORTRAN_LOGICAL + bool unavailable = false; + bool use_int8_t = false, use_int16_t = false, use_int32_t = false, use_int64_t = false; + switch (logical_size) { + case OMPI_SIZEOF_FORTRAN_LOGICAL1: + switch (OMPI_DATATYPE_MPI_LOGICAL1) { + case OMPI_DATATYPE_MPI_INT8_T: + use_int8_t = true; + break; + case OMPI_DATATYPE_MPI_INT16_T: + use_int16_t = true; + break; + case OMPI_DATATYPE_MPI_INT32_T: + use_int32_t = true; + break; + case OMPI_DATATYPE_MPI_INT64_T: + use_int64_t = true; + break; + default: + unavailable = true; + break; + } + case OMPI_SIZEOF_FORTRAN_LOGICAL2: + switch (OMPI_DATATYPE_MPI_LOGICAL2) { + case OMPI_DATATYPE_MPI_INT8_T: + use_int8_t = true; + break; + case OMPI_DATATYPE_MPI_INT16_T: + use_int16_t = true; + break; + case OMPI_DATATYPE_MPI_INT32_T: + use_int32_t = true; + break; + case OMPI_DATATYPE_MPI_INT64_T: + use_int64_t = true; + break; + default: + unavailable = true; + break; + } + case OMPI_SIZEOF_FORTRAN_LOGICAL4: + switch (OMPI_DATATYPE_MPI_LOGICAL4) { + case OMPI_DATATYPE_MPI_INT8_T: + use_int8_t = true; + break; + case OMPI_DATATYPE_MPI_INT16_T: + use_int16_t = true; + break; + case OMPI_DATATYPE_MPI_INT32_T: + use_int32_t = true; + break; + case OMPI_DATATYPE_MPI_INT64_T: + use_int64_t = true; + break; + default: + unavailable = true; + break; + } + case OMPI_SIZEOF_FORTRAN_LOGICAL8: + switch (OMPI_DATATYPE_MPI_LOGICAL8) { + case OMPI_DATATYPE_MPI_INT8_T: + use_int8_t = true; + break; + case OMPI_DATATYPE_MPI_INT16_T: + use_int16_t = true; + break; + case OMPI_DATATYPE_MPI_INT32_T: + use_int32_t = true; + break; + case OMPI_DATATYPE_MPI_INT64_T: + use_int64_t = true; + break; + default: + unavailable = true; + break; + } + case OMPI_SIZEOF_FORTRAN_LOGICAL16: + switch (OMPI_DATATYPE_MPI_LOGICAL16) { + case OMPI_DATATYPE_MPI_INT8_T: + use_int8_t = true; + break; + case OMPI_DATATYPE_MPI_INT16_T: + use_int16_t = true; + break; + case OMPI_DATATYPE_MPI_INT32_T: + use_int32_t = true; + break; + case OMPI_DATATYPE_MPI_INT64_T: + use_int64_t = true; + break; + default: + unavailable = true; + break; + } + default: + unavailable = true; + } + + if (true == unavailable) { + *is_set = 0; + } else { + *is_set = 1; + if (true == use_int8_t) { + *(int8_t *)logical_true = (int8_t)OMPI_FORTRAN_VALUE_TRUE; + *(int8_t *)logical_false = (int8_t)OMPI_FORTRAN_VALUE_FALSE; + } else if (true == use_int16_t) { + *(int16_t *)logical_true = (int16_t)OMPI_FORTRAN_VALUE_TRUE; + *(int16_t *)logical_false = (int16_t)OMPI_FORTRAN_VALUE_FALSE; + } else if (true == use_int32_t) { + *(int32_t *)logical_true = (int32_t)OMPI_FORTRAN_VALUE_TRUE; + *(int32_t *)logical_false = (int32_t)OMPI_FORTRAN_VALUE_FALSE; + } else if (true == use_int64_t) { + *(int64_t *)logical_true = (int64_t)OMPI_FORTRAN_VALUE_TRUE; + *(int64_t *)logical_false = (int64_t)OMPI_FORTRAN_VALUE_FALSE; + } + } + +#else + +/* + * OMPI wasn't built with fortran bindings support so + * see if the user set something with MPI_ABI_set_fortran_boleans + */ + int logical_size_pow2; + + /* check logical size to be pow2 */ + + if(countbits32((unsigned int)logical_size) > 1) { + return MPI_ERR_ARG; + } + + logical_size_pow2 = opal_hibit(logical_size, 0); + + if (4 > logical_size_pow2) { + return MPI_ERR_ARG; + } + + if (false == user_logicals[logical_size_pow2].is_set) { + *is_set = 0; + } else { + switch(logical_size_pow2) { + case 0: + *(int8_t *)logical_true = (int8_t)user_logicals[logical_size_pow2].true_value; + *(int8_t *)logical_false = (int8_t)user_logicals[logical_size_pow2].false_value; + *is_set = 1; + break; + case 1: + *(int16_t *)logical_true = (int16_t)user_logicals[logical_size_pow2].true_value; + *(int16_t *)logical_false = (int16_t)user_logicals[logical_size_pow2].false_value; + *is_set = 1; + break; + case 2: + *(int32_t *)logical_true = (int32_t)user_logicals[logical_size_pow2].true_value; + *(int32_t *)logical_false = (int32_t)user_logicals[logical_size_pow2].false_value; + *is_set = 1; + break; + case 3: + *(int64_t *)logical_true = (int64_t)user_logicals[logical_size_pow2].true_value; + *(int64_t *)logical_false = (int64_t)user_logicals[logical_size_pow2].false_value; + *is_set = 1; + break; +#ifdef HAVE_INT128_T + case 4: + *(int128_t *)logical_true = (int128_t)user_logicals[logical_size_pow2].true_value128; + *(int128_t *)logical_false = (int128_t)user_logicals[logical_size_pow2].false_value128; + *is_set = 1; + break; +#endif + default: + ret = MPI_ERR_ARG; + break; + } + } + +#endif /* OMPI_HAVE_FORTRAN_LOGICAL */ + return ret; +} + +int ompi_abi_set_fortran_booleans(int logical_size, void *logical_true, void *logical_false) +{ + int ret=MPI_SUCCESS; + static bool already_called = false; + + /* + * according to MPI 5.0 standard this function can only be called once. + */ + if (true == already_called) { + return MPI_ERR_ABI; + } + + already_called = true; + + int logical_size_pow2; + int64_t logical_true64 = 0; + int64_t logical_false64 = 0; +#ifdef HAVING_INT128_T + int128_t logical_true128 = 0; + int128_t logical_false128 = 0; +#else + int64_t logical_true128 = 0; + int64_t logical_false128 = 0; +#endif + bool using128 = false; + + /* check logical size to be pow2 */ + + if(countbits32((unsigned int)logical_size) > 1) { + return MPI_ERR_ARG; + } + + logical_size_pow2 = opal_hibit(logical_size, 0); + + switch(logical_size_pow2) { + case 0: + logical_true64 = (int64_t)*(int8_t *)logical_true; + logical_false64 = (int64_t)*(int8_t *)logical_false; + break; + case 1: + logical_true64 = (int64_t)*(int16_t *)logical_true; + logical_false64 = (int64_t)*(int16_t *)logical_false; + break; + case 2: + logical_true64 = (int64_t)*(int32_t *)logical_true; + logical_false64 = (int64_t)*(int32_t *)logical_false; + break; + case 3: + logical_true64 = (int64_t)*(int64_t *)logical_true; + logical_false64 = (int64_t)*(int64_t *)logical_false; + break; +#ifdef HAVE_INT128_T + case 4: + logical_true128 = (int128_t)*(int128_t *)logical_true; + logical_false128 = (int128_t)*(int128_t *)logical_false; + using128 = true; + break; +#endif + default: + ret = MPI_ERR_ARG; + break; + } + +#ifndef HAVE_INT128_T + assert(false == using128); +#endif + + if (true == using128) { + user_logicals[logical_size_pow2].true_value128 = logical_true128; + user_logicals[logical_size_pow2].false_value128 = logical_false128; + user_logicals[logical_size_pow2].is_set = true; + user_logicals[logical_size_pow2].using_int128 = true; + } else { + user_logicals[logical_size_pow2].true_value = logical_true64; + user_logicals[logical_size_pow2].false_value = logical_false64; + user_logicals[logical_size_pow2].is_set = true; + } + + return ret; +} + diff --git a/ompi/mpi/c/op_create.c.in b/ompi/mpi/c/op_create.c.in index b3a39473ce1..66593f35b10 100644 --- a/ompi/mpi/c/op_create.c.in +++ b/ompi/mpi/c/op_create.c.in @@ -59,5 +59,11 @@ PROTOTYPE ERROR_CLASS op_create(USER_FUNCTION function, INT commute, OP_OUT op) if (NULL == *op) { err = MPI_ERR_INTERN; } +#if OMPI_ABI_SRC + if (*op != NULL) { + (*op)->datatype_converter = (ompi_op_type_convert_to_abi_fn_t)ompi_convert_datatype_ompi_to_standard; + } +#endif + OMPI_ERRHANDLER_NOHANDLE_RETURN(err, MPI_ERR_INTERN, FUNC_NAME); } diff --git a/ompi/mpi/c/op_free.c.in b/ompi/mpi/c/op_free.c.in index 93668a28abc..2ec108971fc 100644 --- a/ompi/mpi/c/op_free.c.in +++ b/ompi/mpi/c/op_free.c.in @@ -28,13 +28,14 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/op/op.h" -PROTOTYPE ERROR_CLASS op_free(OP_OUT op) +PROTOTYPE ERROR_CLASS op_free(OP_INOUT op) { /* Error checking */ if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); - if (NULL == op || + if (NULL == op || NULL == *op || + MPI_OP_NULL == *op || ompi_op_is_intrinsic(*op)) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_OP, FUNC_NAME); diff --git a/ompi/mpi/c/op_fromint_abi.c b/ompi/mpi/c/op_fromint_abi.c new file mode 100644 index 00000000000..f15999fd77d --- /dev/null +++ b/ompi/mpi/c/op_fromint_abi.c @@ -0,0 +1,61 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/op/op.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Op_fromint = PMPI_Op_fromint +#endif +#define MPI_Op_fromint PMPI_Op_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Op_fromint"; + +MPI_Op_ABI_INTERNAL MPI_Op_fromint(int op) +{ + int o_index; + intptr_t op_tmp; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)op) { + op_tmp = (intptr_t)op; + return (MPI_Op_ABI_INTERNAL)op_tmp; + } + + o_index = op - OMPI_ABI_HANDLE_BASE_OFFSET; + assert(o_index >= 0); + + return (MPI_Op_ABI_INTERNAL)opal_pointer_array_get_item(ompi_op_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/op_fromint_ompi.c b/ompi/mpi/c/op_fromint_ompi.c new file mode 100644 index 00000000000..02238682fc3 --- /dev/null +++ b/ompi/mpi/c/op_fromint_ompi.c @@ -0,0 +1,49 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/runtime/params.h" +#include "ompi/op/op.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Op_fromint = PMPI_Op_fromint +#endif +#define MPI_Op_fromint PMPI_Op_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Op_fromint"; + +MPI_Op MPI_Op_fromint(int op) +{ + int o_index; + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + o_index = op; + + return (MPI_Op)opal_pointer_array_get_item(ompi_op_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/op_toint_abi.c b/ompi/mpi/c/op_toint_abi.c new file mode 100644 index 00000000000..12e44ab59a3 --- /dev/null +++ b/ompi/mpi/c/op_toint_abi.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/op/op.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Op_toint = PMPI_Op_toint +#endif +#define MPI_Op_toint PMPI_Op_toint +#endif + +static const char FUNC_NAME[] = "MPI_Op_toint"; + +int MPI_Op_toint(MPI_Op_ABI_INTERNAL op) +{ + int o_index; + ompi_op_t *op_ptr; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if (NULL == op) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_OP, FUNC_NAME); + } + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)op) { + intptr_t op_int = (intptr_t)op; + return (int)op_int; + } + + op_ptr = (ompi_op_t *)op; + o_index = op_ptr->o_f_to_c_index; + o_index += OMPI_ABI_HANDLE_BASE_OFFSET; + + return o_index; +} diff --git a/ompi/mpi/c/op_toint_ompi.c b/ompi/mpi/c/op_toint_ompi.c new file mode 100644 index 00000000000..afa83223234 --- /dev/null +++ b/ompi/mpi/c/op_toint_ompi.c @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/op/op.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Op_toint = PMPI_Op_toint +#endif +#define MPI_Op_toint PMPI_Op_toint +#endif + +static const char FUNC_NAME[] = "MPI_Op_toint"; + +int MPI_Op_toint(MPI_Op op) +{ + int o_index; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if (NULL == op) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_OP, FUNC_NAME); + } + } + + o_index = op->o_f_to_c_index; + + return o_index; + +} diff --git a/ompi/mpi/c/pack.c.in b/ompi/mpi/c/pack.c.in index 69a0bb358eb..50adc9dca6b 100644 --- a/ompi/mpi/c/pack.c.in +++ b/ompi/mpi/c/pack.c.in @@ -16,7 +16,7 @@ * Copyright (c) 2015-2018 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2021 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,7 +35,7 @@ #include "opal/datatype/opal_convertor.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS pack(BUFFER inbuf, COUNT incount, DATATYPE datatype, +PROTOTYPE ERROR_CLASS pack(BUFFER_CONST inbuf, COUNT incount, DATATYPE datatype, BUFFER_OUT outbuf, COUNT outsize, COUNT_OUT position, COMM comm) { int rc = MPI_SUCCESS, ret; diff --git a/ompi/mpi/c/pack_external.c.in b/ompi/mpi/c/pack_external.c.in index cc880e91ee7..5338491a5c8 100644 --- a/ompi/mpi/c/pack_external.c.in +++ b/ompi/mpi/c/pack_external.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015-2017 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -34,7 +34,7 @@ #include "opal/datatype/opal_convertor.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS pack_external(STRING datarep, BUFFER inbuf, COUNT incount, +PROTOTYPE ERROR_CLASS pack_external(STRING datarep, BUFFER_CONST inbuf, COUNT incount, DATATYPE datatype, BUFFER_OUT outbuf, AINT_COUNT outsize, AINT_COUNT_OUT position) { diff --git a/ompi/mpi/c/pcontrol.c b/ompi/mpi/c/pcontrol.c index 7aba846cce0..b5e877efbca 100644 --- a/ompi/mpi/c/pcontrol.c +++ b/ompi/mpi/c/pcontrol.c @@ -23,6 +23,12 @@ #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/errhandler/errhandler.h" +/* + * if compiling for ABI include abi.h to suppress compiler warning about no prototype + */ +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/c/precv_init.c.in b/ompi/mpi/c/precv_init.c.in index 31b1f3d97f8..e30a1210673 100644 --- a/ompi/mpi/c/precv_init.c.in +++ b/ompi/mpi/c/precv_init.c.in @@ -37,7 +37,7 @@ #include "ompi/runtime/ompi_spc.h" PROTOTYPE ERROR_CLASS precv_init(BUFFER_OUT buf, INT partitions, PARTITIONED_COUNT count, - DATATYPE datatype, INT source, INT tag, + DATATYPE datatype, SOURCE source, TAG tag, COMM comm, INFO info, REQUEST_INOUT request) { int rc; diff --git a/ompi/mpi/c/probe.c.in b/ompi/mpi/c/probe.c.in index 906b164633e..73899554e33 100644 --- a/ompi/mpi/c/probe.c.in +++ b/ompi/mpi/c/probe.c.in @@ -32,7 +32,7 @@ #include "ompi/request/request.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS probe(INT source, INT tag, COMM comm, STATUS_OUT status) +PROTOTYPE ERROR_CLASS probe(SOURCE source, TAG tag, COMM comm, STATUS_OUT status) { int rc; diff --git a/ompi/mpi/c/psend_init.c.in b/ompi/mpi/c/psend_init.c.in index 7ddf8335090..ac48afc8dc5 100644 --- a/ompi/mpi/c/psend_init.c.in +++ b/ompi/mpi/c/psend_init.c.in @@ -17,7 +17,7 @@ * and Technology (RIST). All rights reserved. * Copyright (c) 2020 Sandia National Laboratories. All rights reserved. * Copyright (c) 2021 Bull S.A.S. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,7 +36,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS psend_init(BUFFER buf, INT partitions, PARTITIONED_COUNT count, +PROTOTYPE ERROR_CLASS psend_init(BUFFER_CONST buf, INT partitions, PARTITIONED_COUNT count, DATATYPE datatype, INT dest, INT tag, COMM comm, INFO info, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/put.c.in b/ompi/mpi/c/put.c.in index c24cedd7e62..b58458b6fec 100644 --- a/ompi/mpi/c/put.c.in +++ b/ompi/mpi/c/put.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,8 +35,8 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS put(BUFFER origin_addr, COUNT origin_count, DATATYPE origin_datatype, - INT target_rank, AINT target_disp, COUNT target_count, +PROTOTYPE ERROR_CLASS put(BUFFER_CONST origin_addr, COUNT origin_count, DATATYPE origin_datatype, + SOURCE target_rank, AINT target_disp, COUNT target_count, DATATYPE target_datatype, WIN win) { int rc; diff --git a/ompi/mpi/c/query_thread.c.in b/ompi/mpi/c/query_thread.c.in index 493076c2ce9..1b8b83c82ed 100644 --- a/ompi/mpi/c/query_thread.c.in +++ b/ompi/mpi/c/query_thread.c.in @@ -27,7 +27,7 @@ #include "ompi/communicator/communicator.h" #include "ompi/errhandler/errhandler.h" -PROTOTYPE ERROR_CLASS query_thread(INT_OUT provided) +PROTOTYPE ERROR_CLASS query_thread(TS_LEVEL_OUT provided) { if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); diff --git a/ompi/mpi/c/raccumulate.c.in b/ompi/mpi/c/raccumulate.c.in index 8280c313295..73f30332580 100644 --- a/ompi/mpi/c/raccumulate.c.in +++ b/ompi/mpi/c/raccumulate.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,8 +37,8 @@ #include "ompi/datatype/ompi_datatype_internal.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS raccumulate(BUFFER origin_addr, COUNT origin_count, DATATYPE origin_datatype, - INT target_rank, AINT target_disp, COUNT target_count, +PROTOTYPE ERROR_CLASS raccumulate(BUFFER_CONST origin_addr, COUNT origin_count, DATATYPE origin_datatype, + SOURCE target_rank, AINT target_disp, COUNT target_count, DATATYPE target_datatype, OP op, WIN win, REQUEST_INOUT request) { int rc; diff --git a/ompi/mpi/c/recv.c.in b/ompi/mpi/c/recv.c.in index 6a022fc14a8..3663b177bf5 100644 --- a/ompi/mpi/c/recv.c.in +++ b/ompi/mpi/c/recv.c.in @@ -33,7 +33,7 @@ #include "ompi/runtime/ompi_spc.h" PROTOTYPE ERROR_CLASS recv(BUFFER_OUT buf, COUNT count, DATATYPE type, - INT source, INT tag, COMM comm, STATUS_OUT status) + SOURCE source, TAG tag, COMM comm, STATUS_OUT status) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/recv_init.c.in b/ompi/mpi/c/recv_init.c.in index 33386f94c25..4bba1e65de8 100644 --- a/ompi/mpi/c/recv_init.c.in +++ b/ompi/mpi/c/recv_init.c.in @@ -32,8 +32,8 @@ #include "ompi/request/request.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS recv_init(BUFFER_OUT buf, COUNT count, DATATYPE type, INT source, - INT tag, COMM comm, REQUEST_INOUT request) +PROTOTYPE ERROR_CLASS recv_init(BUFFER_OUT buf, COUNT count, DATATYPE type, SOURCE source, + TAG tag, COMM comm, REQUEST_INOUT request) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/reduce.c.in b/ompi/mpi/c/reduce.c.in index 04aecd91675..afdbc2a9a94 100644 --- a/ompi/mpi/c/reduce.c.in +++ b/ompi/mpi/c/reduce.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,8 +36,8 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS reduce(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT count, - DATATYPE datatype, OP op, INT root, COMM comm) +PROTOTYPE ERROR_CLASS reduce(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT count, + DATATYPE datatype, OP op, ROOT root, COMM comm) { int err; diff --git a/ompi/mpi/c/reduce_init.c.in b/ompi/mpi/c/reduce_init.c.in index 1912420e798..de7567ded1d 100644 --- a/ompi/mpi/c/reduce_init.c.in +++ b/ompi/mpi/c/reduce_init.c.in @@ -17,7 +17,7 @@ * and Technology (RIST). All rights reserved. * Copyright (c) 2016 IBM Corporation. All rights reserved. * Copyright (c) 2018 FUJITSU LIMITED. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -38,8 +38,8 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS reduce_init(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT count, - DATATYPE datatype, OP op, INT root, COMM comm, +PROTOTYPE ERROR_CLASS reduce_init(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT count, + DATATYPE datatype, OP op, ROOT root, COMM comm, INFO info, REQUEST_INOUT request) { int err; diff --git a/ompi/mpi/c/reduce_local.c.in b/ompi/mpi/c/reduce_local.c.in index 29bce96f91c..d9ff460c3bc 100644 --- a/ompi/mpi/c/reduce_local.c.in +++ b/ompi/mpi/c/reduce_local.c.in @@ -16,7 +16,7 @@ * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2016-2017 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,7 +35,7 @@ #include "ompi/op/op.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS reduce_local(BUFFER inbuf, BUFFER_OUT inoutbuf, COUNT count, +PROTOTYPE ERROR_CLASS reduce_local(BUFFER_CONST inbuf, BUFFER_OUT inoutbuf, COUNT count, DATATYPE datatype, OP op) { int err; diff --git a/ompi/mpi/c/reduce_scatter.c.in b/ompi/mpi/c/reduce_scatter.c.in index 4a83f57ea26..1a360617d94 100644 --- a/ompi/mpi/c/reduce_scatter.c.in +++ b/ompi/mpi/c/reduce_scatter.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015-2018 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,7 +36,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS reduce_scatter(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, +PROTOTYPE ERROR_CLASS reduce_scatter(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DATATYPE datatype, OP op, COMM comm) { int i, err, size, count; diff --git a/ompi/mpi/c/reduce_scatter_block.c.in b/ompi/mpi/c/reduce_scatter_block.c.in index 124a0e9ebf9..a9ac6b9c208 100644 --- a/ompi/mpi/c/reduce_scatter_block.c.in +++ b/ompi/mpi/c/reduce_scatter_block.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015-2018 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,7 +36,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS reduce_scatter_block(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT recvcount, +PROTOTYPE ERROR_CLASS reduce_scatter_block(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE datatype, OP op, COMM comm) { int err; diff --git a/ompi/mpi/c/reduce_scatter_block_init.c.in b/ompi/mpi/c/reduce_scatter_block_init.c.in index 46aec913ef1..a01b5413396 100644 --- a/ompi/mpi/c/reduce_scatter_block_init.c.in +++ b/ompi/mpi/c/reduce_scatter_block_init.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,7 +37,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS reduce_scatter_block_init(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT recvcount, +PROTOTYPE ERROR_CLASS reduce_scatter_block_init(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE datatype, OP op, COMM comm, INFO info, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/reduce_scatter_init.c.in b/ompi/mpi/c/reduce_scatter_init.c.in index 717093ca410..611d49701e5 100644 --- a/ompi/mpi/c/reduce_scatter_init.c.in +++ b/ompi/mpi/c/reduce_scatter_init.c.in @@ -17,7 +17,7 @@ * and Technology (RIST). All rights reserved. * Copyright (c) 2016 IBM Corporation. All rights reserved. * Copyright (c) 2018 FUJITSU LIMITED. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -38,7 +38,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS reduce_scatter_init(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, +PROTOTYPE ERROR_CLASS reduce_scatter_init(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts, DATATYPE datatype, OP op, COMM comm, INFO info, REQUEST_INOUT request) { int i, err, size, count; diff --git a/ompi/mpi/c/remove_error_class.c.in b/ompi/mpi/c/remove_error_class.c.in index ffd4b841df2..26fb41f5cff 100644 --- a/ompi/mpi/c/remove_error_class.c.in +++ b/ompi/mpi/c/remove_error_class.c.in @@ -32,7 +32,7 @@ #include "ompi/communicator/communicator.h" #include "ompi/attribute/attribute.h" -PROTOTYPE ERROR_CLASS remove_error_class(INT errorclass) +PROTOTYPE ERROR_CLASS remove_error_class(ERROR_CLASS errorclass) { int lastused; int rc; diff --git a/ompi/mpi/c/remove_error_code.c.in b/ompi/mpi/c/remove_error_code.c.in index 4bd908f1f5e..4c2873ebcc8 100644 --- a/ompi/mpi/c/remove_error_code.c.in +++ b/ompi/mpi/c/remove_error_code.c.in @@ -32,7 +32,7 @@ #include "ompi/errhandler/errcode.h" #include "ompi/attribute/attribute.h" -PROTOTYPE ERROR_CLASS remove_error_code(INT errorcode) +PROTOTYPE ERROR_CLASS remove_error_code(ERROR_CODE errorcode) { int lastused; int rc; diff --git a/ompi/mpi/c/remove_error_string.c.in b/ompi/mpi/c/remove_error_string.c.in index eec991fbbb6..c56af111798 100644 --- a/ompi/mpi/c/remove_error_string.c.in +++ b/ompi/mpi/c/remove_error_string.c.in @@ -31,7 +31,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/errhandler/errcode.h" -PROTOTYPE ERROR_CLASS remove_error_string(INT errorcode) +PROTOTYPE ERROR_CLASS remove_error_string(ERROR_CODE errorcode) { int rc; diff --git a/ompi/mpi/c/request_fromint_abi.c b/ompi/mpi/c/request_fromint_abi.c new file mode 100644 index 00000000000..ccb44dad3d6 --- /dev/null +++ b/ompi/mpi/c/request_fromint_abi.c @@ -0,0 +1,61 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/file/file.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Request_fromint = PMPI_Request_fromint +#endif +#define MPI_Request_fromint PMPI_Request_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Request_fromint"; + +MPI_Request_ABI_INTERNAL MPI_Request_fromint(int request) +{ + int o_index; + intptr_t request_tmp; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)request) { + request_tmp = (intptr_t)request; + return (MPI_Request_ABI_INTERNAL)request_tmp; + } + + o_index = request - OMPI_ABI_HANDLE_BASE_OFFSET; + assert(o_index >= 0); + + return (MPI_Request_ABI_INTERNAL)opal_pointer_array_get_item(&ompi_request_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/request_fromint_ompi.c b/ompi/mpi/c/request_fromint_ompi.c new file mode 100644 index 00000000000..ca88da21452 --- /dev/null +++ b/ompi/mpi/c/request_fromint_ompi.c @@ -0,0 +1,50 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/runtime/params.h" +#include "ompi/file/file.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/request/request.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Request_fromint = PMPI_Request_fromint +#endif +#define MPI_Request_fromint PMPI_Request_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Request_fromint"; + +MPI_Request MPI_Request_fromint(int request) +{ + int o_index; + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + o_index = request; + + return (MPI_Request)opal_pointer_array_get_item(&ompi_request_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/request_get_status_some.c.in b/ompi/mpi/c/request_get_status_some.c.in index df5b95b3370..4fdc30f2a29 100644 --- a/ompi/mpi/c/request_get_status_some.c.in +++ b/ompi/mpi/c/request_get_status_some.c.in @@ -37,8 +37,8 @@ * not be freed (unlike the test function). A subsequent call to test, wait * or free should be executed on the request(s). */ -PROTOTYPE ERROR_CLASS request_get_status_some(INT incount, REQUEST_CONST requests:count, INT_OUT outcount, - INT_OUT indices, STATUS_OUT statuses:count) +PROTOTYPE ERROR_CLASS request_get_status_some(INT incount, REQUEST_CONST requests:incount, INT_OUT outcount, + INT_OUT indices, STATUS_OUT statuses:incount) { MEMCHECKER( diff --git a/ompi/mpi/c/request_toint_abi.c b/ompi/mpi/c/request_toint_abi.c new file mode 100644 index 00000000000..69cd7604933 --- /dev/null +++ b/ompi/mpi/c/request_toint_abi.c @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/request/request.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Request_toint = PMPI_Request_toint +#endif +#define MPI_Request_toint PMPI_Request_toint +#endif + +static const char FUNC_NAME[] = "MPI_Request_toint"; + +int MPI_Request_toint(MPI_Request_ABI_INTERNAL request) +{ + int o_index; + ompi_request_t *request_ptr; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if (NULL == request) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_FILE, FUNC_NAME); + } + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)request) { + intptr_t request_int = (intptr_t)request; + return (int)request_int; + } + + request_ptr = (ompi_request_t *)request; + if (MPI_UNDEFINED == request_ptr->req_f_to_c_index) { + request_ptr->req_f_to_c_index = + opal_pointer_array_add(&ompi_request_f_to_c_table, request_ptr); + } + + o_index = request_ptr->req_f_to_c_index; + o_index += OMPI_ABI_HANDLE_BASE_OFFSET; + + return o_index; +} diff --git a/ompi/mpi/c/request_toint_ompi.c b/ompi/mpi/c/request_toint_ompi.c new file mode 100644 index 00000000000..defc6f67d6e --- /dev/null +++ b/ompi/mpi/c/request_toint_ompi.c @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/request/request.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Request_toint = PMPI_Request_toint +#endif +#define MPI_Request_toint PMPI_Request_toint +#endif + +static const char FUNC_NAME[] = "MPI_Request_toint"; + +int MPI_Request_toint(MPI_Request request) +{ + int o_index; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if (NULL == request) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_REQUEST, FUNC_NAME); + } + } + + if (MPI_UNDEFINED == request->req_f_to_c_index) { + request->req_f_to_c_index = + opal_pointer_array_add(&ompi_request_f_to_c_table, request); + } + + o_index = request->req_f_to_c_index; + + return o_index; + +} diff --git a/ompi/mpi/c/rget.c.in b/ompi/mpi/c/rget.c.in index a0c70e235e9..502f0e29957 100644 --- a/ompi/mpi/c/rget.c.in +++ b/ompi/mpi/c/rget.c.in @@ -35,7 +35,7 @@ #include "ompi/runtime/ompi_spc.h" PROTOTYPE ERROR_CLASS rget(BUFFER_OUT origin_addr, COUNT origin_count, - DATATYPE origin_datatype, INT target_rank, + DATATYPE origin_datatype, SOURCE target_rank, AINT target_disp, COUNT target_count, DATATYPE target_datatype, WIN win, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/rget_accumulate.c.in b/ompi/mpi/c/rget_accumulate.c.in index 146a9416dbb..6e4d5e201b8 100644 --- a/ompi/mpi/c/rget_accumulate.c.in +++ b/ompi/mpi/c/rget_accumulate.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -39,9 +39,9 @@ #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS Rget_accumulate(BUFFER origin_addr, COUNT origin_count, DATATYPE origin_datatype, +PROTOTYPE ERROR_CLASS Rget_accumulate(BUFFER_CONST origin_addr, COUNT origin_count, DATATYPE origin_datatype, BUFFER_OUT result_addr, COUNT result_count, DATATYPE result_datatype, - INT target_rank, AINT target_disp, COUNT target_count, + SOURCE target_rank, AINT target_disp, COUNT target_count, DATATYPE target_datatype, OP op, WIN win, REQUEST_INOUT request) { int rc; diff --git a/ompi/mpi/c/rput.c.in b/ompi/mpi/c/rput.c.in index 8ee8b5adabb..052b647fa29 100644 --- a/ompi/mpi/c/rput.c.in +++ b/ompi/mpi/c/rput.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,8 +35,8 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS rput(BUFFER origin_addr, COUNT origin_count, DATATYPE origin_datatype, - INT target_rank, AINT target_disp, COUNT target_count, +PROTOTYPE ERROR_CLASS rput(BUFFER_CONST origin_addr, COUNT origin_count, DATATYPE origin_datatype, + SOURCE target_rank, AINT target_disp, COUNT target_count, DATATYPE target_datatype, WIN win, REQUEST_INOUT request) { int rc; diff --git a/ompi/mpi/c/rsend.c.in b/ompi/mpi/c/rsend.c.in index 2364e8178b5..28eb2eb048b 100644 --- a/ompi/mpi/c/rsend.c.in +++ b/ompi/mpi/c/rsend.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,7 +35,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS rsend(BUFFER buf, COUNT count, DATATYPE type, INT dest, INT tag, COMM comm) +PROTOTYPE ERROR_CLASS rsend(BUFFER_CONST buf, COUNT count, DATATYPE type, SOURCE dest, TAG tag, COMM comm) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/rsend_init.c.in b/ompi/mpi/c/rsend_init.c.in index a6a90588c62..69cfbc99729 100644 --- a/ompi/mpi/c/rsend_init.c.in +++ b/ompi/mpi/c/rsend_init.c.in @@ -17,7 +17,7 @@ * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2018 FUJITSU LIMITED. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,8 +36,8 @@ #include "ompi/request/request.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS rsend_init(BUFFER buf, COUNT count, DATATYPE type, - INT dest, INT tag, COMM comm, +PROTOTYPE ERROR_CLASS rsend_init(BUFFER_CONST buf, COUNT count, DATATYPE type, + SOURCE dest, TAG tag, COMM comm, REQUEST_INOUT request) { int rc; diff --git a/ompi/mpi/c/scan.c.in b/ompi/mpi/c/scan.c.in index 4f028c7c709..d4c1b54eafc 100644 --- a/ompi/mpi/c/scan.c.in +++ b/ompi/mpi/c/scan.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,7 +36,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS scan(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT count, +PROTOTYPE ERROR_CLASS scan(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT count, DATATYPE datatype, OP op, COMM comm) { int err; diff --git a/ompi/mpi/c/scan_init.c.in b/ompi/mpi/c/scan_init.c.in index b1625f138a6..906800e4f2d 100644 --- a/ompi/mpi/c/scan_init.c.in +++ b/ompi/mpi/c/scan_init.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,7 +36,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS scan_init(BUFFER sendbuf, BUFFER_OUT recvbuf, COUNT count, +PROTOTYPE ERROR_CLASS scan_init(BUFFER_CONST sendbuf, BUFFER_OUT recvbuf, COUNT count, DATATYPE datatype, OP op, COMM comm, INFO info, REQUEST_INOUT request) { diff --git a/ompi/mpi/c/scatter.c.in b/ompi/mpi/c/scatter.c.in index e07ffde7d9f..8cadffe1059 100644 --- a/ompi/mpi/c/scatter.c.in +++ b/ompi/mpi/c/scatter.c.in @@ -18,7 +18,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,9 +37,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS scatter(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS scatter(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, - INT root, COMM comm) + ROOT root, COMM comm) { int err; diff --git a/ompi/mpi/c/scatter_init.c.in b/ompi/mpi/c/scatter_init.c.in index c17ef222d77..b8a04b8ab0f 100644 --- a/ompi/mpi/c/scatter_init.c.in +++ b/ompi/mpi/c/scatter_init.c.in @@ -17,7 +17,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -37,9 +37,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS scatter_init(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, +PROTOTYPE ERROR_CLASS scatter_init(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, DATATYPE recvtype, - INT root, COMM comm, INFO info, REQUEST_INOUT request) + ROOT root, COMM comm, INFO info, REQUEST_INOUT request) { int err; diff --git a/ompi/mpi/c/scatterv.c.in b/ompi/mpi/c/scatterv.c.in index 517f01bb503..efbe696bced 100644 --- a/ompi/mpi/c/scatterv.c.in +++ b/ompi/mpi/c/scatterv.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,9 +35,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS scatterv(BUFFER sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY displs, +PROTOTYPE ERROR_CLASS scatterv(BUFFER_CONST sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY displs, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, - DATATYPE recvtype, INT root, COMM comm) + DATATYPE recvtype, ROOT root, COMM comm) { int i, size, err; ompi_count_array_t sendcounts_desc; diff --git a/ompi/mpi/c/scatterv_init.c.in b/ompi/mpi/c/scatterv_init.c.in index 18558e2b994..727f0d0605a 100644 --- a/ompi/mpi/c/scatterv_init.c.in +++ b/ompi/mpi/c/scatterv_init.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015-2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,9 +35,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS scatterv_init(BUFFER sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY displs, +PROTOTYPE ERROR_CLASS scatterv_init(BUFFER_CONST sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY displs, DATATYPE sendtype, BUFFER_OUT recvbuf, COUNT recvcount, - DATATYPE recvtype, INT root, COMM comm, INFO info, REQUEST_INOUT request) + DATATYPE recvtype, ROOT root, COMM comm, INFO info, REQUEST_INOUT request) { int i, size, err; ompi_count_array_t sendcounts_desc; diff --git a/ompi/mpi/c/send.c.in b/ompi/mpi/c/send.c.in index 797bc7630ad..2125599f765 100644 --- a/ompi/mpi/c/send.c.in +++ b/ompi/mpi/c/send.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,7 +35,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS send(BUFFER buf, COUNT count, DATATYPE type, RANK dest, +PROTOTYPE ERROR_CLASS send(BUFFER_CONST buf, COUNT count, DATATYPE type, SOURCE dest, TAG tag, COMM comm) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/send_init.c.in b/ompi/mpi/c/send_init.c.in index de0dd93f777..46a285e8412 100644 --- a/ompi/mpi/c/send_init.c.in +++ b/ompi/mpi/c/send_init.c.in @@ -17,7 +17,7 @@ * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2018 FUJITSU LIMITED. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,8 +36,8 @@ #include "ompi/request/request.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS send_init(BUFFER buf, COUNT count, DATATYPE type, - INT dest, INT tag, COMM comm, +PROTOTYPE ERROR_CLASS send_init(BUFFER_CONST buf, COUNT count, DATATYPE type, + SOURCE dest, INT tag, COMM comm, REQUEST_INOUT request) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/sendrecv.c.in b/ompi/mpi/c/sendrecv.c.in index 25167d2d857..93da87108e4 100644 --- a/ompi/mpi/c/sendrecv.c.in +++ b/ompi/mpi/c/sendrecv.c.in @@ -17,7 +17,7 @@ * and Technology (RIST). All rights reserved. * Copyright (c) 2021 Nanook Consulting. All rights reserved. * Copyright (c) 2023 Jeffrey M. Squyres. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,9 +36,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS sendrecv(BUFFER sendbuf, COUNT sendcount, DATATYPE sendtype, - INT dest, INT sendtag, BUFFER_OUT recvbuf, COUNT recvcount, - DATATYPE recvtype, INT source, INT recvtag, +PROTOTYPE ERROR_CLASS sendrecv(BUFFER_CONST sendbuf, COUNT sendcount, DATATYPE sendtype, + SOURCE dest, INT sendtag, BUFFER_OUT recvbuf, COUNT recvcount, + DATATYPE recvtype, SOURCE source, TAG recvtag, COMM comm, STATUS_OUT status) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/sendrecv_replace.c.in b/ompi/mpi/c/sendrecv_replace.c.in index 7c8dba56a17..897431515c1 100644 --- a/ompi/mpi/c/sendrecv_replace.c.in +++ b/ompi/mpi/c/sendrecv_replace.c.in @@ -36,7 +36,7 @@ #include "ompi/runtime/ompi_spc.h" PROTOTYPE ERROR_CLASS sendrecv_replace(BUFFER_OUT buf, COUNT count, DATATYPE datatype, - INT dest, INT sendtag, INT source, INT recvtag, + SOURCE dest, INT sendtag, SOURCE source, TAG recvtag, COMM comm, STATUS_OUT status) { ompi_request_t* req; diff --git a/ompi/mpi/c/session_attach_buffer.c.in b/ompi/mpi/c/session_attach_buffer.c.in index c6d3d339c4c..1b3a596afe7 100644 --- a/ompi/mpi/c/session_attach_buffer.c.in +++ b/ompi/mpi/c/session_attach_buffer.c.in @@ -29,7 +29,7 @@ #include "ompi/mca/pml/pml.h" #include "ompi/mca/pml/base/pml_base_bsend.h" -PROTOTYPE ERROR_CLASS session_attach_buffer(SESSION session, BUFFER_OUT buffer, COUNT size) +PROTOTYPE ERROR_CLASS session_attach_buffer(SESSION session, BUFFER buffer, COUNT size) { int ret = OMPI_SUCCESS; diff --git a/ompi/mpi/c/session_call_errhandler.c.in b/ompi/mpi/c/session_call_errhandler.c.in index 2966e85298b..97fcf38347c 100644 --- a/ompi/mpi/c/session_call_errhandler.c.in +++ b/ompi/mpi/c/session_call_errhandler.c.in @@ -28,7 +28,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS session_call_errhandler(SESSION session, INT errorcode) +PROTOTYPE ERROR_CLASS session_call_errhandler(SESSION session, ERROR_CODE errorcode) { /* Error checking */ diff --git a/ompi/mpi/c/session_create_errhandler.c.in b/ompi/mpi/c/session_create_errhandler.c.in index 9a4a64435be..32aea2991db 100644 --- a/ompi/mpi/c/session_create_errhandler.c.in +++ b/ompi/mpi/c/session_create_errhandler.c.in @@ -1,6 +1,6 @@ /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ /* - * Copyright (c) 2018-2024 Triad National Security, LLC. All rights + * Copyright (c) 2018-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -21,6 +21,11 @@ PROTOTYPE ERROR_CLASS session_create_errhandler (SESSION_ERRHANDLER_FUNCTION session_errhandler_fn, ERRHANDLER_OUT errhandler) { int err = MPI_SUCCESS; +#if OMPI_ABI_SRC + ompi_errhandler_converter_fn_t *conv_fn = ompi_convert_errhandler_args_intern_to_abi; +#else + ompi_errhandler_converter_fn_t *conv_fn = NULL; +#endif if ( MPI_PARAM_CHECK ) { if (NULL == errhandler || NULL == session_errhandler_fn) { @@ -33,7 +38,8 @@ PROTOTYPE ERROR_CLASS session_create_errhandler (SESSION_ERRHANDLER_FUNCTION ses *errhandler = ompi_errhandler_create(OMPI_ERRHANDLER_TYPE_INSTANCE, (ompi_errhandler_generic_handler_fn_t *) session_errhandler_fn, - OMPI_ERRHANDLER_LANG_C); + OMPI_ERRHANDLER_LANG_C, + conv_fn); if (NULL == *errhandler) { err = MPI_ERR_INTERN; } diff --git a/ompi/mpi/c/session_detach_buffer.c.in b/ompi/mpi/c/session_detach_buffer.c.in index d9365439b2c..4030f1a559b 100644 --- a/ompi/mpi/c/session_detach_buffer.c.in +++ b/ompi/mpi/c/session_detach_buffer.c.in @@ -29,14 +29,14 @@ #include "ompi/mca/pml/pml.h" #include "ompi/mca/pml/base/pml_base_bsend.h" -PROTOTYPE ERROR_CLASS session_detach_buffer(SESSION session, BUFFER_OUT buffer, COUNT_OUT size) +PROTOTYPE ERROR_CLASS session_detach_buffer(SESSION session, BUFFER_ADDR_OUT buffer_addr, COUNT_OUT size) { size_t size_arg; int ret = OMPI_SUCCESS; if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); - if (NULL == buffer || NULL == size) { + if (NULL == buffer_addr || NULL == size) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_ARG, FUNC_NAME); } if (ompi_instance_invalid(session)) { @@ -48,7 +48,7 @@ PROTOTYPE ERROR_CLASS session_detach_buffer(SESSION session, BUFFER_OUT buffer, } } - ret = mca_pml_base_bsend_detach(SESSION_BSEND_BUF, session, buffer, &size_arg); + ret = mca_pml_base_bsend_detach(SESSION_BSEND_BUF, session, buffer_addr, &size_arg); if (MPI_SUCCESS == ret) { #if OMPI_BIGCOUNT_SRC *size = size_arg; diff --git a/ompi/mpi/c/session_fromint_abi.c b/ompi/mpi/c/session_fromint_abi.c new file mode 100644 index 00000000000..413171f0258 --- /dev/null +++ b/ompi/mpi/c/session_fromint_abi.c @@ -0,0 +1,61 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/instance/instance.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Session_fromint = PMPI_Session_fromint +#endif +#define MPI_Session_fromint PMPI_Session_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Session_fromint"; + +MPI_Session_ABI_INTERNAL MPI_Session_fromint(int session) +{ + int o_index; + intptr_t session_tmp; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)session) { + session_tmp = (intptr_t)session; + return (MPI_Session_ABI_INTERNAL)session_tmp; + } + + o_index = session - OMPI_ABI_HANDLE_BASE_OFFSET; + assert(o_index >= 0); + + return (MPI_Session_ABI_INTERNAL)opal_pointer_array_get_item(&ompi_instance_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/session_fromint_ompi.c b/ompi/mpi/c/session_fromint_ompi.c new file mode 100644 index 00000000000..966aec4a35e --- /dev/null +++ b/ompi/mpi/c/session_fromint_ompi.c @@ -0,0 +1,49 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/runtime/params.h" +#include "ompi/instance/instance.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Session_fromint = PMPI_Session_fromint +#endif +#define MPI_Session_fromint PMPI_Session_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Session_fromint"; + +MPI_Session MPI_Session_fromint(int session) +{ + int o_index; + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + o_index = session; + + return (MPI_Session)opal_pointer_array_get_item(&ompi_instance_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/session_toint_abi.c b/ompi/mpi/c/session_toint_abi.c new file mode 100644 index 00000000000..8b4ec3f8071 --- /dev/null +++ b/ompi/mpi/c/session_toint_abi.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/instance/instance.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Session_toint = PMPI_Session_toint +#endif +#define MPI_Session_toint PMPI_Session_toint +#endif + +static const char FUNC_NAME[] = "MPI_Session_toint"; + +int MPI_Session_toint(MPI_Session_ABI_INTERNAL session) +{ + int o_index; + ompi_instance_t *session_ptr; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if (NULL == session) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_SESSION, FUNC_NAME); + } + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)session) { + intptr_t session_int = (intptr_t)session; + return (int)session_int; + } + + session_ptr = (ompi_instance_t *)session; + o_index = session_ptr->i_f_to_c_index; + o_index += OMPI_ABI_HANDLE_BASE_OFFSET; + + return o_index; +} diff --git a/ompi/mpi/c/session_toint_ompi.c b/ompi/mpi/c/session_toint_ompi.c new file mode 100644 index 00000000000..5d2291d3fea --- /dev/null +++ b/ompi/mpi/c/session_toint_ompi.c @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/instance/instance.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Session_toint = PMPI_Session_toint +#endif +#define MPI_Session_toint PMPI_Session_toint +#endif + +static const char FUNC_NAME[] = "MPI_Session_toint"; + +int MPI_Session_toint(MPI_Session session) +{ + int o_index; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if (NULL == session) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_SESSION, FUNC_NAME); + } + } + + o_index = session->i_f_to_c_index; + + return o_index; + +} diff --git a/ompi/mpi/c/ssend.c.in b/ompi/mpi/c/ssend.c.in index a5bb55d0712..7e9c392903f 100644 --- a/ompi/mpi/c/ssend.c.in +++ b/ompi/mpi/c/ssend.c.in @@ -16,7 +16,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -35,7 +35,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS ssend(BUFFER buf, COUNT count, DATATYPE type, INT dest, INT tag, COMM comm) +PROTOTYPE ERROR_CLASS ssend(BUFFER_CONST buf, COUNT count, DATATYPE type, SOURCE dest, TAG tag, COMM comm) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/ssend_init.c.in b/ompi/mpi/c/ssend_init.c.in index 33bc8616a16..f9b224447a1 100644 --- a/ompi/mpi/c/ssend_init.c.in +++ b/ompi/mpi/c/ssend_init.c.in @@ -17,7 +17,7 @@ * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2018 FUJITSU LIMITED. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -36,8 +36,8 @@ #include "ompi/request/request.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS ssend_init(BUFFER buf, COUNT count, DATATYPE type, - INT dest, INT tag, COMM comm, +PROTOTYPE ERROR_CLASS ssend_init(BUFFER_CONST buf, COUNT count, DATATYPE type, + SOURCE dest, TAG tag, COMM comm, REQUEST_INOUT request) { int rc; diff --git a/ompi/mpi/c/startall.c.in b/ompi/mpi/c/startall.c.in index d75c02debfe..f9323554f65 100644 --- a/ompi/mpi/c/startall.c.in +++ b/ompi/mpi/c/startall.c.in @@ -36,7 +36,7 @@ #include "ompi/request/request.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS startall(INT count, REQUEST_INOUT requests) +PROTOTYPE ERROR_CLASS startall(INT count, REQUEST_INOUT requests:count) { int i, j; int ret = OMPI_SUCCESS; diff --git a/ompi/mpi/c/status_get_error.c.in b/ompi/mpi/c/status_get_error.c.in index 9f5e95e6c27..7b2f3f46411 100644 --- a/ompi/mpi/c/status_get_error.c.in +++ b/ompi/mpi/c/status_get_error.c.in @@ -18,7 +18,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS status_get_error(STATUS status, INT_OUT error) +PROTOTYPE ERROR_CLASS status_get_error(STATUS status, ERROR_CODE_OUT error) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/status_get_source.c.in b/ompi/mpi/c/status_get_source.c.in index a982b960cbc..be887eef8a1 100644 --- a/ompi/mpi/c/status_get_source.c.in +++ b/ompi/mpi/c/status_get_source.c.in @@ -18,7 +18,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS status_get_source(STATUS status, INT_OUT source) +PROTOTYPE ERROR_CLASS status_get_source(STATUS status, SOURCE_OUT source) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/status_get_tag.c.in b/ompi/mpi/c/status_get_tag.c.in index b953cee1878..f7919932d1f 100644 --- a/ompi/mpi/c/status_get_tag.c.in +++ b/ompi/mpi/c/status_get_tag.c.in @@ -20,7 +20,7 @@ #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS status_get_tag(STATUS status, INT_OUT tag) +PROTOTYPE ERROR_CLASS status_get_tag(STATUS status, TAG_OUT tag) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/c/status_set_error.c.in b/ompi/mpi/c/status_set_error.c.in index 31eccfee732..d88b0c5c339 100644 --- a/ompi/mpi/c/status_set_error.c.in +++ b/ompi/mpi/c/status_set_error.c.in @@ -17,7 +17,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS status_set_error(STATUS_INOUT status, INT error) +PROTOTYPE ERROR_CLASS status_set_error(STATUS_INOUT status, ERROR_CODE error) { MEMCHECKER( if(status != MPI_STATUSES_IGNORE) { diff --git a/ompi/mpi/c/status_set_source.c.in b/ompi/mpi/c/status_set_source.c.in index b723a6bb3e6..5c13a9c8ff3 100644 --- a/ompi/mpi/c/status_set_source.c.in +++ b/ompi/mpi/c/status_set_source.c.in @@ -17,7 +17,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS status_set_source(STATUS_INOUT status, INT source) +PROTOTYPE ERROR_CLASS status_set_source(STATUS_INOUT status, SOURCE source) { MEMCHECKER( if(status != MPI_STATUSES_IGNORE) { diff --git a/ompi/mpi/c/status_set_tag.c.in b/ompi/mpi/c/status_set_tag.c.in index beca885583b..1854c7a03b7 100644 --- a/ompi/mpi/c/status_set_tag.c.in +++ b/ompi/mpi/c/status_set_tag.c.in @@ -18,7 +18,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS status_set_tag(STATUS_INOUT status, INT tag) +PROTOTYPE ERROR_CLASS status_set_tag(STATUS_INOUT status, TAG tag) { MEMCHECKER( if(status != MPI_STATUSES_IGNORE) { diff --git a/ompi/mpi/c/testall.c.in b/ompi/mpi/c/testall.c.in index c1ba8e9e21e..f2f30eed209 100644 --- a/ompi/mpi/c/testall.c.in +++ b/ompi/mpi/c/testall.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2021-2024 Triad National Security, LLC. All rights + * Copyright (c) 2021-2025 Triad National Security, LLC. All rights * reserved. * Copyright (c) 2024 NVIDIA Corporation. All rights reserved. * $COPYRIGHT$ @@ -35,8 +35,8 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS testall(INT count, REQUEST_INOUT requests, INT_OUT flag, - STATUS_OUT statuses) +PROTOTYPE ERROR_CLASS testall(INT count, REQUEST_INOUT requests:count, INT_OUT flag, + STATUS_OUT statuses:count) { SPC_RECORD(OMPI_SPC_TESTALL, 1); diff --git a/ompi/mpi/c/testany.c.in b/ompi/mpi/c/testany.c.in index 50ed88b2fa5..c4a3d2e4c0f 100644 --- a/ompi/mpi/c/testany.c.in +++ b/ompi/mpi/c/testany.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2014-2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2021-2024 Triad National Security, LLC. All rights + * Copyright (c) 2021-2025 Triad National Security, LLC. All rights * reserved. * Copyright (c) 2024 NVIDIA Corporation. All rights reserved. * $COPYRIGHT$ @@ -35,7 +35,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS testany(INT count, REQUEST_INOUT requests, INT_OUT indx, INT_OUT completed, STATUS_OUT status) +PROTOTYPE ERROR_CLASS testany(INT count, REQUEST_INOUT requests:count, INT_OUT indx, INT_OUT completed, STATUS_OUT status) { SPC_RECORD(OMPI_SPC_TESTANY, 1); diff --git a/ompi/mpi/c/testsome.c.in b/ompi/mpi/c/testsome.c.in index e5bccca0a28..7c3594d2b52 100644 --- a/ompi/mpi/c/testsome.c.in +++ b/ompi/mpi/c/testsome.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2021-2024 Triad National Security, LLC. All rights + * Copyright (c) 2021-2025 Triad National Security, LLC. All rights * reserved. * Copyright (c) 2024 NVIDIA Corporation. All rights reserved. * $COPYRIGHT$ @@ -35,9 +35,9 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS testsome(INT incount, REQUEST_INOUT requests, +PROTOTYPE ERROR_CLASS testsome(INT incount, REQUEST_INOUT requests:incount, INT_OUT outcount, INT_OUT indices, - STATUS_OUT statuses) + STATUS_OUT statuses:incount) { SPC_RECORD(OMPI_SPC_TESTSOME, 1); diff --git a/ompi/mpi/c/topo_test.c.in b/ompi/mpi/c/topo_test.c.in index 33c1d9e1fda..efee6825d15 100644 --- a/ompi/mpi/c/topo_test.c.in +++ b/ompi/mpi/c/topo_test.c.in @@ -29,7 +29,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS topo_test(COMM comm, INT_OUT status) +PROTOTYPE ERROR_CLASS topo_test(COMM comm, TOPO_OUT status) { MEMCHECKER( memchecker_comm(comm); diff --git a/ompi/mpi/c/type_commit.c.in b/ompi/mpi/c/type_commit.c.in index cd67aa24501..fc468bc9543 100644 --- a/ompi/mpi/c/type_commit.c.in +++ b/ompi/mpi/c/type_commit.c.in @@ -30,7 +30,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS type_commit(DATATYPE_OUT type) +PROTOTYPE ERROR_CLASS type_commit(DATATYPE_INOUT type) { int rc; diff --git a/ompi/mpi/c/type_create_darray.c.in b/ompi/mpi/c/type_create_darray.c.in index fcf00c8fe14..02416762385 100644 --- a/ompi/mpi/c/type_create_darray.c.in +++ b/ompi/mpi/c/type_create_darray.c.in @@ -42,11 +42,11 @@ PROTOTYPE ERROR_CLASS type_create_darray(INT size, INT rank, INT ndims, - COUNT_ARRAY gsize_array, - INT_ARRAY distrib_array, - INT_ARRAY darg_array, - INT_ARRAY psize_array, - INT order, + COUNT_ARRAY gsize_array:ndims, + DISTRIB_ARRAY distrib_array:ndims, + DARGS_ARRAY darg_array:ndims, + INT_ARRAY psize_array:ndims, + SUBARRAY_ORDER order, DATATYPE oldtype, DATATYPE_OUT newtype) { diff --git a/ompi/mpi/c/type_create_keyval.c.in b/ompi/mpi/c/type_create_keyval.c.in index f1494559c82..3a2c59de15a 100644 --- a/ompi/mpi/c/type_create_keyval.c.in +++ b/ompi/mpi/c/type_create_keyval.c.in @@ -14,7 +14,7 @@ * and Technology (RIST). All rights reserved. * Copyright (c) 2022 Amazon.com, Inc. or its affiliates. * All Rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -33,7 +33,7 @@ PROTOTYPE ERROR_CLASS type_create_keyval(TYPE_COPY_ATTR_FUNCTION type_copy_attr_fn, TYPE_DELETE_ATTR_FUNCTION type_delete_attr_fn, - INT_OUT type_keyval, + ATTR_KEY_OUT type_keyval, BUFFER_OUT extra_state) { int ret, flags = 0; @@ -53,13 +53,15 @@ PROTOTYPE ERROR_CLASS type_create_keyval(TYPE_COPY_ATTR_FUNCTION type_copy_attr_ #if OMPI_ABI_SRC copy_fn.attr_datatype_copy_fn = ompi_abi_copy_attr_fn; del_fn.attr_datatype_delete_fn = ompi_abi_delete_attr_fn; + ret = ompi_attr_create_keyval(TYPE_ATTR, copy_fn, del_fn, + type_keyval, extra_state, flags, extra_state); #else copy_fn.attr_datatype_copy_fn = type_copy_attr_fn; del_fn.attr_datatype_delete_fn = type_delete_attr_fn; -#endif - ret = ompi_attr_create_keyval(TYPE_ATTR, copy_fn, del_fn, type_keyval, extra_state, flags, NULL); +#endif + OMPI_ERRHANDLER_NOHANDLE_RETURN(ret, ret, FUNC_NAME); } diff --git a/ompi/mpi/c/type_create_subarray.c.in b/ompi/mpi/c/type_create_subarray.c.in index d25cde247c4..32abaa925e7 100644 --- a/ompi/mpi/c/type_create_subarray.c.in +++ b/ompi/mpi/c/type_create_subarray.c.in @@ -42,7 +42,7 @@ PROTOTYPE ERROR_CLASS type_create_subarray(INT ndims, COUNT_ARRAY size_array, COUNT_ARRAY subsize_array, COUNT_ARRAY start_array, - INT order, + SUBARRAY_ORDER order, DATATYPE oldtype, DATATYPE_OUT newtype) { diff --git a/ompi/mpi/c/type_delete_attr.c.in b/ompi/mpi/c/type_delete_attr.c.in index 68de235978c..fc0d7104638 100644 --- a/ompi/mpi/c/type_delete_attr.c.in +++ b/ompi/mpi/c/type_delete_attr.c.in @@ -30,7 +30,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS type_delete_attr(DATATYPE type, INT type_keyval) +PROTOTYPE ERROR_CLASS type_delete_attr(DATATYPE type, ATTR_KEY type_keyval) { int ret; diff --git a/ompi/mpi/c/type_free.c.in b/ompi/mpi/c/type_free.c.in index fbdfb199434..9a4ecf9a570 100644 --- a/ompi/mpi/c/type_free.c.in +++ b/ompi/mpi/c/type_free.c.in @@ -30,7 +30,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS type_free(DATATYPE_OUT type) +PROTOTYPE ERROR_CLASS type_free(DATATYPE_INOUT type) { int rc; @@ -40,7 +40,8 @@ PROTOTYPE ERROR_CLASS type_free(DATATYPE_OUT type) if( MPI_PARAM_CHECK ) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); - if (NULL == type || NULL == *type || MPI_DATATYPE_NULL == *type || + if (NULL == type || NULL == *type || + MPI_DATATYPE_NULL == *type || ompi_datatype_is_predefined(*type)) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_TYPE, FUNC_NAME ); diff --git a/ompi/mpi/c/type_free_keyval.c.in b/ompi/mpi/c/type_free_keyval.c.in index 1c08edd3351..9e9d656c342 100644 --- a/ompi/mpi/c/type_free_keyval.c.in +++ b/ompi/mpi/c/type_free_keyval.c.in @@ -28,7 +28,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/attribute/attribute.h" -PROTOTYPE ERROR_CLASS type_free_keyval(INT_OUT type_keyval) +PROTOTYPE ERROR_CLASS type_free_keyval(ATTR_KEY_INOUT type_keyval) { int ret; diff --git a/ompi/mpi/c/type_fromint_abi.c b/ompi/mpi/c/type_fromint_abi.c new file mode 100644 index 00000000000..266819454ae --- /dev/null +++ b/ompi/mpi/c/type_fromint_abi.c @@ -0,0 +1,60 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/runtime/params.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/datatype/ompi_datatype.h" +#include "ompi/datatype/ompi_datatype_internal.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Type_fromint = PMPI_Type_fromint +#endif +#define MPI_Type_fromint PMPI_Type_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Type_fromint"; + +MPI_Datatype_ABI_INTERNAL MPI_Type_fromint(int type) +{ + int o_index; + intptr_t type_tmp; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)type) { + type_tmp = (intptr_t)type; + return (MPI_Datatype_ABI_INTERNAL)type_tmp; + } + + o_index = type - OMPI_ABI_HANDLE_BASE_OFFSET; + + return (MPI_Datatype_ABI_INTERNAL)opal_pointer_array_get_item(&ompi_datatype_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/type_fromint_ompi.c b/ompi/mpi/c/type_fromint_ompi.c new file mode 100644 index 00000000000..54cb3560f1d --- /dev/null +++ b/ompi/mpi/c/type_fromint_ompi.c @@ -0,0 +1,51 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/runtime/params.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/datatype/ompi_datatype.h" +#include "ompi/datatype/ompi_datatype_internal.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Type_fromint = PMPI_Type_fromint +#endif +#define MPI_Type_fromint PMPI_Type_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Type_fromint"; + +MPI_Datatype MPI_Type_fromint(int type) +{ + int o_index; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + o_index = type; + + return (MPI_Datatype)opal_pointer_array_get_item(&ompi_datatype_f_to_c_table, o_index); +} diff --git a/ompi/mpi/c/type_get_attr.c.in b/ompi/mpi/c/type_get_attr.c.in index 506adb9bf9d..d26f444105a 100644 --- a/ompi/mpi/c/type_get_attr.c.in +++ b/ompi/mpi/c/type_get_attr.c.in @@ -31,7 +31,7 @@ #include "ompi/memchecker.h" PROTOTYPE ERROR_CLASS type_get_attr (DATATYPE type, - INT type_keyval, + ATTR_KEY type_keyval, BUFFER_OUT attribute_val, INT_OUT flag) { diff --git a/ompi/mpi/c/type_get_contents.c.in_nbc b/ompi/mpi/c/type_get_contents.c.in_nbc new file mode 100644 index 00000000000..35fb10e61f1 --- /dev/null +++ b/ompi/mpi/c/type_get_contents.c.in_nbc @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2020 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/communicator/communicator.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/datatype/ompi_datatype.h" +#include "ompi/memchecker.h" + +PROTOTYPE ERROR_CLASS type_get_contents(DATATYPE mtype, + COUNT max_integers, + COUNT max_addresses, + COUNT max_datatypes, + INT_ARRAY_OUT array_of_integers, + AINT_ARRAY_OUT array_of_addresses, + DATATYPE_ARRAY_OUT array_of_datatypes:max_datatypes) +{ + int rc, i; + MPI_Datatype newtype; + + MEMCHECKER( + memchecker_datatype(mtype); + ); + + if( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if (NULL == mtype || MPI_DATATYPE_NULL == mtype) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_TYPE, + FUNC_NAME ); + } else if( ((NULL == array_of_integers) && (max_integers != 0)) || + ((NULL == array_of_addresses) && (max_addresses != 0)) || + ((NULL == array_of_datatypes) && (max_datatypes != 0)) ) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_ARG, + FUNC_NAME ); + } + } + +/* TODO:BIGCOUNT: Need to embiggen ompi_datatype_get_args */ + rc = ompi_datatype_get_args( mtype, 1, (int *)&max_integers, array_of_integers, + (int *)&max_addresses, array_of_addresses, + (int *)&max_datatypes, array_of_datatypes, NULL ); + if( rc != MPI_SUCCESS ) { + OMPI_ERRHANDLER_NOHANDLE_RETURN( MPI_ERR_INTERN, + MPI_ERR_INTERN, FUNC_NAME ); + } + + for( i = 0; i < max_datatypes; i++ ) { + /* if we have a predefined datatype then we return directly a pointer to + * the datatype, otherwise we should create a copy and give back the copy. + */ + if( !(ompi_datatype_is_predefined(array_of_datatypes[i])) ) { + if( (rc = ompi_datatype_duplicate( array_of_datatypes[i], &newtype )) != MPI_SUCCESS ) { + ompi_datatype_destroy( &newtype ); + OMPI_ERRHANDLER_NOHANDLE_RETURN( MPI_ERR_INTERN, + MPI_ERR_INTERN, FUNC_NAME ); + } + ompi_datatype_copy_args( array_of_datatypes[i], newtype ); + array_of_datatypes[i] = newtype; + } + } + + return MPI_SUCCESS; +} diff --git a/ompi/mpi/c/type_get_contents_c.c.in_obc b/ompi/mpi/c/type_get_contents_c.c.in_obc new file mode 100644 index 00000000000..fecbf4f4a2a --- /dev/null +++ b/ompi/mpi/c/type_get_contents_c.c.in_obc @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2020 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/communicator/communicator.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/datatype/ompi_datatype.h" +#include "ompi/memchecker.h" + +PROTOTYPE ERROR_CLASS type_get_contents_c(DATATYPE datatype, + COUNT max_integers, + COUNT max_addresses, + COUNT max_large_counts, + COUNT max_datatypes, + INT_ARRAY_OUT array_of_integers, + AINT_ARRAY_OUT array_of_addresses, + COUNT_ARRAY_OUT array_of_large_counts, + DATATYPE_ARRAY_OUT array_of_datatypes:max_datatypes) +{ + int rc, i; + MPI_Datatype newtype; + + MEMCHECKER( + memchecker_datatype(datatype); + ); + + if( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if (NULL == datatype || MPI_DATATYPE_NULL == datatype) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_TYPE, + FUNC_NAME ); + } else if( ((NULL == array_of_integers) && (max_integers != 0)) || + ((NULL == array_of_addresses) && (max_addresses != 0)) || + ((NULL == array_of_large_counts) && (max_large_counts != 0)) || + ((NULL == array_of_datatypes) && (max_datatypes != 0)) ) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_ARG, + FUNC_NAME ); + } + } + +/* TODO:BIGCOUNT: Need to embiggen ompi_datatype_get_args */ + rc = ompi_datatype_get_args( datatype, 1, (int *)&max_integers, array_of_integers, + (int *)&max_addresses, array_of_addresses, + (int *)&max_datatypes, array_of_datatypes, NULL ); + if( rc != MPI_SUCCESS ) { + OMPI_ERRHANDLER_NOHANDLE_RETURN( MPI_ERR_INTERN, + MPI_ERR_INTERN, FUNC_NAME ); + } + + for( i = 0; i < max_datatypes; i++ ) { + /* if we have a predefined datatype then we return directly a pointer to + * the datatype, otherwise we should create a copy and give back the copy. + */ + if( !(ompi_datatype_is_predefined(array_of_datatypes[i])) ) { + if( (rc = ompi_datatype_duplicate( array_of_datatypes[i], &newtype )) != MPI_SUCCESS ) { + ompi_datatype_destroy( &newtype ); + OMPI_ERRHANDLER_NOHANDLE_RETURN( MPI_ERR_INTERN, + MPI_ERR_INTERN, FUNC_NAME ); + } + ompi_datatype_copy_args( array_of_datatypes[i], newtype ); + array_of_datatypes[i] = newtype; + } + } + + return MPI_SUCCESS; +} diff --git a/ompi/mpi/c/type_get_envelope.c.in b/ompi/mpi/c/type_get_envelope.c.in_nbc similarity index 86% rename from ompi/mpi/c/type_get_envelope.c.in rename to ompi/mpi/c/type_get_envelope.c.in_nbc index e5395d796e4..9ac3fd99601 100644 --- a/ompi/mpi/c/type_get_envelope.c.in +++ b/ompi/mpi/c/type_get_envelope.c.in_nbc @@ -29,11 +29,11 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS Type_get_envelope(DATATYPE type, - INT_OUT num_integers, - INT_OUT num_addresses, - INT_OUT num_datatypes, - INT_OUT combiner) +PROTOTYPE ERROR_CLASS type_get_envelope(DATATYPE type, + INT_OUT num_integers, + INT_OUT num_addresses, + INT_OUT num_datatypes, + COMBINER_OUT combiner) { int rc; diff --git a/ompi/mpi/c/type_get_envelope_c.c b/ompi/mpi/c/type_get_envelope_c.c.in_obc similarity index 77% rename from ompi/mpi/c/type_get_envelope_c.c rename to ompi/mpi/c/type_get_envelope_c.c.in_obc index 24229e327cf..32f5e6e9b8c 100644 --- a/ompi/mpi/c/type_get_envelope_c.c +++ b/ompi/mpi/c/type_get_envelope_c.c.in_obc @@ -27,21 +27,12 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_Type_get_envelope_c = PMPI_Type_get_envelope_c -#endif -#define MPI_Type_get_envelope_c PMPI_Type_get_envelope_c -#endif - -static const char FUNC_NAME[] = "MPI_Type_get_envelope_c"; - -int MPI_Type_get_envelope_c(MPI_Datatype type, - MPI_Count *num_integers, - MPI_Count *num_addresses, - MPI_Count *num_large_counts, - MPI_Count *num_datatypes, - int *combiner) +PROTOTYPE ERROR_CLASS type_get_envelope_c(DATATYPE type, + COUNT_OUT num_integers, + COUNT_OUT num_addresses, + COUNT_OUT num_large_counts, + COUNT_OUT num_datatypes, + COMBINER_OUT combiner) { int rc; diff --git a/ompi/mpi/c/type_get_name.c.in b/ompi/mpi/c/type_get_name.c.in index 4a55b6439a1..38b47352a9a 100644 --- a/ompi/mpi/c/type_get_name.c.in +++ b/ompi/mpi/c/type_get_name.c.in @@ -63,6 +63,6 @@ PROTOTYPE ERROR_CLASS type_get_name(DATATYPE type, STRING_OUT type_name, INT_OUT able to completely fit into MPI_MAX_OBJECT_NAME bytes (i.e., name+\0). */ *resultlen = (int)strlen(type->name); - opal_string_copy(type_name, type->name, MPI_MAX_OBJECT_NAME); + opal_string_copy(type_name, type->name, @MPI_MAX_OBJECT_NAME@); return MPI_SUCCESS; } diff --git a/ompi/mpi/c/type_match_size.c.in b/ompi/mpi/c/type_match_size.c.in index cbb94a3305b..b20a0ae2e7e 100644 --- a/ompi/mpi/c/type_match_size.c.in +++ b/ompi/mpi/c/type_match_size.c.in @@ -12,7 +12,7 @@ * Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -30,7 +30,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/datatype/ompi_datatype_internal.h" -PROTOTYPE ERROR_CLASS type_match_size(INT typeclass, INT size, DATATYPE_OUT type) +PROTOTYPE ERROR_CLASS type_match_size(TYPECLASS typeclass, INT size, DATATYPE_OUT type) { if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); diff --git a/ompi/mpi/c/type_set_attr.c.in b/ompi/mpi/c/type_set_attr.c.in index 9c3c88ea20a..bb51165283c 100644 --- a/ompi/mpi/c/type_set_attr.c.in +++ b/ompi/mpi/c/type_set_attr.c.in @@ -30,7 +30,7 @@ #include "ompi/datatype/ompi_datatype.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS type_set_attr (DATATYPE type, INT type_keyval, +PROTOTYPE ERROR_CLASS type_set_attr (DATATYPE type, ATTR_KEY type_keyval, BUFFER_OUT attribute_val) { int ret; diff --git a/ompi/mpi/c/type_set_name.c.in b/ompi/mpi/c/type_set_name.c.in index 6414bb4bb46..8889f3ce08e 100644 --- a/ompi/mpi/c/type_set_name.c.in +++ b/ompi/mpi/c/type_set_name.c.in @@ -52,7 +52,7 @@ PROTOTYPE ERROR_CLASS type_set_name (DATATYPE type, STRING type_name) } } - memset(type->name, 0, MPI_MAX_OBJECT_NAME); - opal_string_copy( type->name, type_name, MPI_MAX_OBJECT_NAME); + memset(type->name, 0, @MPI_MAX_OBJECT_NAME@); + opal_string_copy( type->name, type_name, @MPI_MAX_OBJECT_NAME@); return MPI_SUCCESS; } diff --git a/ompi/mpi/c/type_toint_abi.c b/ompi/mpi/c/type_toint_abi.c new file mode 100644 index 00000000000..ec722927dbb --- /dev/null +++ b/ompi/mpi/c/type_toint_abi.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/datatype/ompi_datatype.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Type_toint = PMPI_Type_toint +#endif +#define MPI_Type_toint PMPI_Type_toint +#endif + +static const char FUNC_NAME[] = "MPI_Type_toint"; + +int MPI_Type_toint(MPI_Datatype_ABI_INTERNAL datatype) +{ + int o_index; + ompi_datatype_t *datatype_ptr; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if (NULL == datatype) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_TYPE, + FUNC_NAME ); + } + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)datatype) { + intptr_t datatype_int = (intptr_t)datatype; + return (int)datatype_int; + } + + datatype_ptr = (ompi_datatype_t *)datatype; + /* If necessary add the datatype to the f2c translation table */ + if( -1 == datatype_ptr->d_f_to_c_index ) { + datatype_ptr->d_f_to_c_index = opal_pointer_array_add(&ompi_datatype_f_to_c_table, datatype_ptr); + } + + o_index = datatype_ptr->d_f_to_c_index; + o_index += OMPI_ABI_HANDLE_BASE_OFFSET; + + return o_index; +} diff --git a/ompi/mpi/c/type_toint_ompi.c b/ompi/mpi/c/type_toint_ompi.c new file mode 100644 index 00000000000..3556fa95396 --- /dev/null +++ b/ompi/mpi/c/type_toint_ompi.c @@ -0,0 +1,61 @@ +/* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT BY HAND. */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/errhandler/errhandler.h" +#include "ompi/datatype/ompi_datatype.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Type_toint = PMPI_Type_toint +#endif +#define MPI_Type_toint PMPI_Type_toint +#endif + +static const char FUNC_NAME[] = "MPI_Type_toint"; + +int MPI_Type_toint(MPI_Datatype datatype) +{ + int o_index; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if (NULL == datatype) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_TYPE, + FUNC_NAME ); + } + } + + /* If necessary add the datatype to the f2c translation table */ + if( -1 == datatype->d_f_to_c_index ) { + datatype->d_f_to_c_index = opal_pointer_array_add(&ompi_datatype_f_to_c_table, datatype); + } + + o_index = datatype->d_f_to_c_index; + + return o_index; + +} diff --git a/ompi/mpi/c/unpack.c.in b/ompi/mpi/c/unpack.c.in index 94055ceef94..a5418ac322f 100644 --- a/ompi/mpi/c/unpack.c.in +++ b/ompi/mpi/c/unpack.c.in @@ -13,7 +13,7 @@ * Copyright (c) 2015-2018 Research Organization for Information Science * and Technology (RIST). All rights reserved. * Copyright (c) 2021 IBM Corporation. All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -32,7 +32,7 @@ #include "opal/datatype/opal_convertor.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS unpack(BUFFER inbuf, +PROTOTYPE ERROR_CLASS unpack(BUFFER_CONST inbuf, COUNT insize, COUNT_OUT position, BUFFER_OUT outbuf, diff --git a/ompi/mpi/c/unpack_external.c.in b/ompi/mpi/c/unpack_external.c.in index 645031cfd32..f06518a9930 100644 --- a/ompi/mpi/c/unpack_external.c.in +++ b/ompi/mpi/c/unpack_external.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2015-2017 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -33,7 +33,7 @@ #include "opal/datatype/opal_convertor.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS unpack_external (STRING datarep, BUFFER inbuf, AINT_COUNT insize, +PROTOTYPE ERROR_CLASS unpack_external (STRING datarep, BUFFER_CONST inbuf, AINT_COUNT insize, AINT_COUNT_OUT position, BUFFER_OUT outbuf, COUNT outcount, DATATYPE datatype) { diff --git a/ompi/mpi/c/waitany.c.in b/ompi/mpi/c/waitany.c.in index 5d2fb4424eb..951fdbdcbf5 100644 --- a/ompi/mpi/c/waitany.c.in +++ b/ompi/mpi/c/waitany.c.in @@ -15,7 +15,7 @@ * reserved. * Copyright (c) 2014-2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2021-2024 Triad National Security, LLC. All rights + * Copyright (c) 2021-2025 Triad National Security, LLC. All rights * reserved. * Copyright (c) 2024 NVIDIA Corporation. All rights reserved. * Copyright (c) 2024 Triad National Security, LLC. All rights @@ -37,7 +37,7 @@ #include "ompi/memchecker.h" #include "ompi/runtime/ompi_spc.h" -PROTOTYPE ERROR_CLASS waitany(INT count, REQUEST_INOUT requests, INT_OUT indx, STATUS_OUT status) +PROTOTYPE ERROR_CLASS waitany(INT count, REQUEST_INOUT requests:count, INT_OUT indx, STATUS_OUT status) { SPC_RECORD(OMPI_SPC_WAITANY, 1); diff --git a/ompi/mpi/c/waitsome.c.in b/ompi/mpi/c/waitsome.c.in index ce25d1f47e8..e6402065268 100644 --- a/ompi/mpi/c/waitsome.c.in +++ b/ompi/mpi/c/waitsome.c.in @@ -39,7 +39,7 @@ PROTOTYPE ERROR_CLASS waitsome(INT incount, REQUEST_INOUT requests:incount, INT_OUT outcount, INT_OUT indices:incount, - STATUS_OUT statuses:incount) + STATUS_OUT statuses:incount:*outcount) { SPC_RECORD(OMPI_SPC_WAITSOME, 1); diff --git a/ompi/mpi/c/win_call_errhandler.c.in b/ompi/mpi/c/win_call_errhandler.c.in index 644b0e5e93d..849c37ac823 100644 --- a/ompi/mpi/c/win_call_errhandler.c.in +++ b/ompi/mpi/c/win_call_errhandler.c.in @@ -28,7 +28,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/win/win.h" -PROTOTYPE ERROR_CLASS win_call_errhandler(WIN win, INT errorcode) +PROTOTYPE ERROR_CLASS win_call_errhandler(WIN win, ERROR_CODE errorcode) { if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); diff --git a/ompi/mpi/c/win_create_errhandler.c.in b/ompi/mpi/c/win_create_errhandler.c.in index 3391c643524..c1ed96a38fe 100644 --- a/ompi/mpi/c/win_create_errhandler.c.in +++ b/ompi/mpi/c/win_create_errhandler.c.in @@ -13,7 +13,7 @@ * Copyright (c) 2008-2009 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2018-2024 Triad National Security, LLC. All rights + * Copyright (c) 2018-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -34,6 +34,11 @@ PROTOTYPE ERROR_CLASS win_create_errhandler(WIN_ERRHANDLER_FUNCTION function, ERRHANDLER_OUT errhandler) { int err = MPI_SUCCESS; +#if OMPI_ABI_SRC + ompi_errhandler_converter_fn_t *conv_fn = ompi_convert_errhandler_args_intern_to_abi; +#else + ompi_errhandler_converter_fn_t *conv_fn = NULL; +#endif if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); @@ -48,7 +53,8 @@ PROTOTYPE ERROR_CLASS win_create_errhandler(WIN_ERRHANDLER_FUNCTION function, *errhandler = ompi_errhandler_create(OMPI_ERRHANDLER_TYPE_WIN, (ompi_errhandler_generic_handler_fn_t*) function, - OMPI_ERRHANDLER_LANG_C); + OMPI_ERRHANDLER_LANG_C, + conv_fn); if (NULL == *errhandler) { err = MPI_ERR_INTERN; } diff --git a/ompi/mpi/c/win_create_keyval.c.in b/ompi/mpi/c/win_create_keyval.c.in index f23b8c648d0..b59090a3aca 100644 --- a/ompi/mpi/c/win_create_keyval.c.in +++ b/ompi/mpi/c/win_create_keyval.c.in @@ -14,7 +14,7 @@ * and Technology (RIST). All rights reserved. * Copyright (c) 2022 Amazon.com, Inc. or its affiliates. * All Rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -33,7 +33,7 @@ PROTOTYPE ERROR_CLASS win_create_keyval(WIN_COPY_ATTR_FUNCTION win_copy_attr_fn, WIN_DELETE_ATTR_FUNCTION win_delete_attr_fn, - INT_OUT win_keyval, BUFFER_OUT extra_state) + ATTR_KEY_OUT win_keyval, BUFFER_OUT extra_state) { int ret, flags = 0; ompi_attribute_fn_ptr_union_t copy_fn; @@ -51,12 +51,14 @@ PROTOTYPE ERROR_CLASS win_create_keyval(WIN_COPY_ATTR_FUNCTION win_copy_attr_fn, #if OMPI_ABI_SRC copy_fn.attr_win_copy_fn = ompi_abi_copy_attr_fn; del_fn.attr_win_delete_fn = ompi_abi_delete_attr_fn; + ret = ompi_attr_create_keyval(WIN_ATTR, copy_fn, del_fn, + win_keyval, extra_state, flags, extra_state); #else copy_fn.attr_win_copy_fn = win_copy_attr_fn; del_fn.attr_win_delete_fn = win_delete_attr_fn; -#endif - ret = ompi_attr_create_keyval(WIN_ATTR, copy_fn, del_fn, win_keyval, extra_state, flags, NULL); +#endif + OMPI_ERRHANDLER_NOHANDLE_RETURN(ret, MPI_ERR_OTHER, FUNC_NAME); } diff --git a/ompi/mpi/c/win_delete_attr.c.in b/ompi/mpi/c/win_delete_attr.c.in index 0baa3cc01c3..91080d0d6f2 100644 --- a/ompi/mpi/c/win_delete_attr.c.in +++ b/ompi/mpi/c/win_delete_attr.c.in @@ -29,7 +29,7 @@ #include "ompi/attribute/attribute.h" #include "ompi/win/win.h" -PROTOTYPE ERROR_CLASS win_delete_attr(WIN win, INT win_keyval) +PROTOTYPE ERROR_CLASS win_delete_attr(WIN win, ATTR_KEY win_keyval) { int ret; diff --git a/ompi/mpi/c/win_detach.c.in b/ompi/mpi/c/win_detach.c.in index e6b6836adec..f6d642f99cb 100644 --- a/ompi/mpi/c/win_detach.c.in +++ b/ompi/mpi/c/win_detach.c.in @@ -12,7 +12,7 @@ * Copyright (c) 2006 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -32,7 +32,7 @@ #include "ompi/win/win.h" #include "ompi/memchecker.h" -PROTOTYPE ERROR_CLASS win_detach(WIN win, BUFFER base) +PROTOTYPE ERROR_CLASS win_detach(WIN win, BUFFER_CONST base) { int ret = MPI_SUCCESS; diff --git a/ompi/mpi/c/win_fence.c.in b/ompi/mpi/c/win_fence.c.in index e71ad6831b6..70fcba1cf5f 100644 --- a/ompi/mpi/c/win_fence.c.in +++ b/ompi/mpi/c/win_fence.c.in @@ -32,7 +32,7 @@ #include "ompi/win/win.h" #include "ompi/mca/osc/osc.h" -PROTOTYPE ERROR_CLASS win_fence(INT mpi_assert, WIN win) +PROTOTYPE ERROR_CLASS win_fence(RMA_MODE_BITS mpi_assert, WIN win) { int rc; diff --git a/ompi/mpi/c/win_free.c.in b/ompi/mpi/c/win_free.c.in index fb8604f6688..bfb537a3330 100644 --- a/ompi/mpi/c/win_free.c.in +++ b/ompi/mpi/c/win_free.c.in @@ -28,14 +28,15 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/win/win.h" -PROTOTYPE ERROR_CLASS win_free(WIN_OUT win) +PROTOTYPE ERROR_CLASS win_free(WIN_INOUT win) { int ret; if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); - if (ompi_win_invalid(*win)) { + if (NULL == win || + ompi_win_invalid(*win)) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_WIN, FUNC_NAME); } } diff --git a/ompi/mpi/c/win_free_keyval.c.in b/ompi/mpi/c/win_free_keyval.c.in index 8b7b5448cac..bf188b1f1ba 100644 --- a/ompi/mpi/c/win_free_keyval.c.in +++ b/ompi/mpi/c/win_free_keyval.c.in @@ -28,7 +28,7 @@ #include "ompi/errhandler/errhandler.h" #include "ompi/attribute/attribute.h" -PROTOTYPE ERROR_CLASS win_free_keyval(INT_OUT win_keyval) +PROTOTYPE ERROR_CLASS win_free_keyval(ATTR_KEY_INOUT win_keyval) { int ret; diff --git a/ompi/mpi/c/win_fromint_abi.c b/ompi/mpi/c/win_fromint_abi.c new file mode 100644 index 00000000000..c6678b64034 --- /dev/null +++ b/ompi/mpi/c/win_fromint_abi.c @@ -0,0 +1,61 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/win/win.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Win_fromint = PMPI_Win_fromint +#endif +#define MPI_Win_fromint PMPI_Win_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Win_fromint"; + +MPI_Win_ABI_INTERNAL MPI_Win_fromint(int win) +{ + int o_index; + intptr_t win_tmp; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)win) { + win_tmp = (intptr_t)win; + return (MPI_Win_ABI_INTERNAL)win_tmp; + } + + o_index = win - OMPI_ABI_HANDLE_BASE_OFFSET; + assert(o_index >= 0); + + return (MPI_Win_ABI_INTERNAL)opal_pointer_array_get_item(&ompi_mpi_windows, o_index); +} diff --git a/ompi/mpi/c/win_fromint_ompi.c b/ompi/mpi/c/win_fromint_ompi.c new file mode 100644 index 00000000000..5f2d2d0379b --- /dev/null +++ b/ompi/mpi/c/win_fromint_ompi.c @@ -0,0 +1,50 @@ +/* -*- Mode: C; c-basic-offset:4 ; -*- */ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2007 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/runtime/params.h" +#include "ompi/win/win.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Win_fromint = PMPI_Win_fromint +#endif +#define MPI_Win_fromint PMPI_Win_fromint +#endif + +static const char FUNC_NAME[] = "MPI_Win_fromint"; + +MPI_Win MPI_Win_fromint(int win) +{ + int o_index; + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + } + + o_index = win; + + return (MPI_Win)opal_pointer_array_get_item(&ompi_mpi_windows, o_index); +} + diff --git a/ompi/mpi/c/win_get_attr.c.in b/ompi/mpi/c/win_get_attr.c.in index bcca259625c..fc3a0f63a78 100644 --- a/ompi/mpi/c/win_get_attr.c.in +++ b/ompi/mpi/c/win_get_attr.c.in @@ -32,7 +32,7 @@ #include "ompi/attribute/attribute.h" #include "ompi/win/win.h" -PROTOTYPE ERROR_CLASS win_get_attr(WIN win, INT win_keyval, +PROTOTYPE ERROR_CLASS win_get_attr(WIN win, ATTR_KEY win_keyval, BUFFER_OUT attribute_val, INT_OUT flag) { int ret; @@ -55,6 +55,46 @@ PROTOTYPE ERROR_CLASS win_get_attr(WIN win, INT win_keyval, ret = ompi_attr_get_c(win->w_keyhash, win_keyval, (void**)attribute_val, flag); +#if OMPI_ABI_SRC + /* + * cases for attributes attached to window that + * need to get special treatment + */ + + if (MPI_WIN_CREATE_FLAVOR == win_keyval) { + int *win_flavor = *(int **)attribute_val; + switch(*win_flavor) { + case MPI_WIN_FLAVOR_CREATE: + *(int **)attribute_val = &ompi_abi_mpi_win_flavor_create; + break; + case MPI_WIN_FLAVOR_ALLOCATE: + *(int **)attribute_val = &ompi_abi_mpi_win_flavor_allocate; + break; + case MPI_WIN_FLAVOR_SHARED: + *(int **)attribute_val = &ompi_abi_mpi_win_flavor_shared; + break; + case MPI_WIN_FLAVOR_DYNAMIC: + *(int **)attribute_val = &ompi_abi_mpi_win_flavor_dynamic; + break; + default: + /* just leave it be */ + break; + } + } else if (MPI_WIN_MODEL == win_keyval) { + int *win_model = *(int **)attribute_val; + switch(*win_model) { + case MPI_WIN_UNIFIED: + *(int **)attribute_val = &ompi_abi_mpi_win_model_unified; + break; + case MPI_WIN_SEPARATE: + *(int **)attribute_val = &ompi_abi_mpi_win_model_separate; + break; + default: + /* just leave it be */ + break; + } + } +#endif OMPI_ERRHANDLER_RETURN(ret, win, MPI_ERR_OTHER, FUNC_NAME); } diff --git a/ompi/mpi/c/win_lock.c.in b/ompi/mpi/c/win_lock.c.in index 34aa454026b..a2c2dd04e35 100644 --- a/ompi/mpi/c/win_lock.c.in +++ b/ompi/mpi/c/win_lock.c.in @@ -14,7 +14,7 @@ * reserved. * Copyright (c) 2015-2017 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -32,7 +32,7 @@ #include "ompi/win/win.h" #include "ompi/mca/osc/osc.h" -PROTOTYPE ERROR_CLASS win_lock(INT lock_type, INT rank, INT mpi_assert, WIN win) +PROTOTYPE ERROR_CLASS win_lock(WIN_LOCK lock_type, INT rank, RMA_MODE_BITS mpi_assert, WIN win) { int rc; diff --git a/ompi/mpi/c/win_lock_all.c.in b/ompi/mpi/c/win_lock_all.c.in index 3dde356ec4d..455bb51c42c 100644 --- a/ompi/mpi/c/win_lock_all.c.in +++ b/ompi/mpi/c/win_lock_all.c.in @@ -11,7 +11,7 @@ * All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -29,7 +29,7 @@ #include "ompi/win/win.h" #include "ompi/mca/osc/osc.h" -PROTOTYPE ERROR_CLASS win_lock_all(INT mpi_assert, WIN win) +PROTOTYPE ERROR_CLASS win_lock_all(RMA_MODE_BITS mpi_assert, WIN win) { int rc; diff --git a/ompi/mpi/c/win_post.c.in b/ompi/mpi/c/win_post.c.in index be0587aacd5..164435d1d1a 100644 --- a/ompi/mpi/c/win_post.c.in +++ b/ompi/mpi/c/win_post.c.in @@ -11,7 +11,7 @@ * All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -29,7 +29,7 @@ #include "ompi/win/win.h" #include "ompi/mca/osc/osc.h" -PROTOTYPE ERROR_CLASS win_post(GROUP group, INT mpi_assert, WIN win) +PROTOTYPE ERROR_CLASS win_post(GROUP group, RMA_MODE_BITS mpi_assert, WIN win) { int rc; diff --git a/ompi/mpi/c/win_set_attr.c.in b/ompi/mpi/c/win_set_attr.c.in index 0776b8b1966..e1c39279805 100644 --- a/ompi/mpi/c/win_set_attr.c.in +++ b/ompi/mpi/c/win_set_attr.c.in @@ -29,7 +29,7 @@ #include "ompi/attribute/attribute.h" #include "ompi/win/win.h" -PROTOTYPE ERROR_CLASS win_set_attr(WIN win, INT win_keyval, BUFFER_OUT attribute_val) +PROTOTYPE ERROR_CLASS win_set_attr(WIN win, ATTR_KEY win_keyval, BUFFER_OUT attribute_val) { int ret; diff --git a/ompi/mpi/c/win_shared_query.c.in b/ompi/mpi/c/win_shared_query.c.in index 21e7d9f7354..afb567b5572 100644 --- a/ompi/mpi/c/win_shared_query.c.in +++ b/ompi/mpi/c/win_shared_query.c.in @@ -25,7 +25,7 @@ #include "ompi/win/win.h" #include "ompi/mca/osc/osc.h" -PROTOTYPE ERROR_CLASS win_shared_query(WIN win, INT rank, AINT_OUT size, INT_AINT_OUT disp_unit, BUFFER_OUT baseptr) +PROTOTYPE ERROR_CLASS win_shared_query(WIN win, SOURCE rank, AINT_OUT size, INT_AINT_OUT disp_unit, BUFFER_OUT baseptr) { size_t tsize; ptrdiff_t du; diff --git a/ompi/mpi/c/win_start.c.in b/ompi/mpi/c/win_start.c.in index ae7254c8f10..24b58bd2745 100644 --- a/ompi/mpi/c/win_start.c.in +++ b/ompi/mpi/c/win_start.c.in @@ -11,7 +11,7 @@ * All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2024 Triad National Security, LLC. All rights + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights * reserved. * $COPYRIGHT$ * @@ -29,7 +29,7 @@ #include "ompi/win/win.h" #include "ompi/mca/osc/osc.h" -PROTOTYPE ERROR_CLASS win_start(GROUP group, INT mpi_assert, WIN win) +PROTOTYPE ERROR_CLASS win_start(GROUP group, RMA_MODE_BITS mpi_assert, WIN win) { int rc; diff --git a/ompi/mpi/c/win_toint_abi.c b/ompi/mpi/c/win_toint_abi.c new file mode 100644 index 00000000000..bc43f6f50df --- /dev/null +++ b/ompi/mpi/c/win_toint_abi.c @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/win/win.h" +#include "ompi/errhandler/errhandler.h" + +#include "ompi/mpi/c/abi.h" +#include "ompi/mpi/c/abi_converters.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Win_toint = PMPI_Win_toint +#endif +#define MPI_Win_toint PMPI_Win_toint +#endif + +static const char FUNC_NAME[] = "MPI_Win_toint"; + +int MPI_Win_toint(MPI_Win_ABI_INTERNAL win) +{ + int o_index; + ompi_win_t *win_ptr; + MPI_Win win_tmp; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + win_tmp = ompi_convert_abi_win_intern_win(win); + if ((win_tmp != MPI_WIN_NULL) && ompi_win_invalid(win_tmp)) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_WIN, FUNC_NAME); + } + } + + if (OMPI_ABI_HANDLE_BASE_OFFSET > (intptr_t)win) { + intptr_t win_int = (intptr_t)win; + return (int)win_int; + } + + win_ptr = (ompi_win_t *)win; + o_index = win_ptr->w_f_to_c_index; + o_index += OMPI_ABI_HANDLE_BASE_OFFSET; + + return o_index; +} diff --git a/ompi/mpi/c/win_toint_ompi.c b/ompi/mpi/c/win_toint_ompi.c new file mode 100644 index 00000000000..d579e32f8fb --- /dev/null +++ b/ompi/mpi/c/win_toint_ompi.c @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2024-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +#include "ompi_config.h" + +#include "ompi/mpi/c/bindings.h" +#include "ompi/runtime/params.h" +#include "ompi/win/win.h" +#include "ompi/errhandler/errhandler.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_Win_toint = PMPI_Win_toint +#endif +#define MPI_Win_toint PMPI_Win_toint +#endif + +static const char FUNC_NAME[] = "MPI_Win_toint"; + +int MPI_Win_toint(MPI_Win win) +{ + int o_index; + + if ( MPI_PARAM_CHECK ) { + OMPI_ERR_INIT_FINALIZE(FUNC_NAME); + if ((MPI_WIN_NULL != win) && ompi_win_invalid(win)) { + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_WIN, FUNC_NAME); + } + } + + o_index = win->w_f_to_c_index; + + return o_index; + +} diff --git a/ompi/mpi/c/wtick.c b/ompi/mpi/c/wtick.c.in similarity index 91% rename from ompi/mpi/c/wtick.c rename to ompi/mpi/c/wtick.c.in index 3136a7e1b08..a5401faf7b9 100644 --- a/ompi/mpi/c/wtick.c +++ b/ompi/mpi/c/wtick.c.in @@ -15,6 +15,8 @@ * Copyright (c) 2017 IBM Corporation. All rights reserved. * Copyright (c) 2017 Los Alamos National Security, LLC. All rights * reserved. + * Copyright (c) 2025 Triad National Security, LLC. All rights + * reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -36,14 +38,7 @@ #include "opal/util/clock_gettime.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_Wtick = PMPI_Wtick -#endif -#define MPI_Wtick PMPI_Wtick -#endif - -double MPI_Wtick(void) +PROTOTYPE DOUBLE Wtick() { // We intentionally don't use the OPAL timer framework here. See // https://github.com/open-mpi/ompi/issues/3003 for more details. diff --git a/ompi/mpi/fortran/mpif-h/Makefile.am b/ompi/mpi/fortran/mpif-h/Makefile.am index 6280e37cb8a..76d527ec9db 100644 --- a/ompi/mpi/fortran/mpif-h/Makefile.am +++ b/ompi/mpi/fortran/mpif-h/Makefile.am @@ -133,6 +133,12 @@ sizeof_f.f90: if BUILD_MPI_FORTRAN_MPIFH_BINDINGS_LAYER lib@OMPI_LIBMPI_NAME@_mpifh_la_SOURCES += \ + abi_get_fortran_booleans_f.c \ + abi_get_fortran_info_f.c \ + abi_get_info_f.c \ + abi_get_version_f.c \ + abi_set_fortran_booleans_f.c \ + abi_set_fortran_info_f.c \ abort_f.c \ add_error_class_f.c \ add_error_code_f.c \ diff --git a/ompi/mpi/fortran/mpif-h/abi_get_fortran_booleans_f.c b/ompi/mpi/fortran/mpif-h/abi_get_fortran_booleans_f.c new file mode 100644 index 00000000000..9e44124044f --- /dev/null +++ b/ompi/mpi/fortran/mpif-h/abi_get_fortran_booleans_f.c @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015-2017 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/fortran/mpif-h/bindings.h" +#include "ompi/attribute/attribute.h" +#include "ompi/communicator/communicator.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak PMPI_ABI_GET_FOTRAN_BOOLEANS = ompi_abi_get_fortran_booleans_f +#pragma weak pmpi_abi_get_fortran_booleans = ompi_abi_get_fortran_booleans_f +#pragma weak pmpi_abi_get_fortran_booleans_ = ompi_abi_get_fortran_booleans_f +#pragma weak pmpi_abi_get_fortran_booleans__ = ompi_abi_get_fortran_booleans_f + +#pragma weak PMPI_Abi_get_fortran_booleans_f = ompi_abi_get_fortran_booleans_f +#pragma weak PMPI_Abi_get_fortran_booleans_f08 = ompi_abi_get_fortran_booleans_f +#else +OMPI_GENERATE_F77_BINDINGS (PMPI_ABI_GET_FOTRAN_BOOLEANS, + pmpi_abi_get_fortran_booleans, + pmpi_abi_get_fortran_booleans_, + pmpi_abi_get_fortran_booleans__, + pompi_abi_get_fortran_booleans_f, + (MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val, ompi_fortran_logical_t *flag, MPI_Fint *ierr), + (comm, keyval, attribute_val, flag, ierr) ) +#endif +#endif + +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_ABI_GET_FOTRAN_BOOLEANS = ompi_abi_get_fortran_booleans_f +#pragma weak mpi_abi_get_fortran_booleans = ompi_abi_get_fortran_booleans_f +#pragma weak mpi_abi_get_fortran_booleans_ = ompi_abi_get_fortran_booleans_f +#pragma weak mpi_abi_get_fortran_booleans__ = ompi_abi_get_fortran_booleans_f + +#pragma weak MPI_Abi_get_fortran_booleans_f = ompi_abi_get_fortran_booleans_f +#pragma weak MPI_Abi_get_fortran_booleans_f08 = ompi_abi_get_fortran_booleans_f +#else +#if ! OMPI_BUILD_MPI_PROFILING +OMPI_GENERATE_F77_BINDINGS (MPI_ABI_GET_FOTRAN_BOOLEANS, + mpi_abi_get_fortran_booleans, + mpi_abi_get_fortran_booleans_, + mpi_abi_get_fortran_booleans__, + ompi_abi_get_fortran_booleans_f, + (MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val, ompi_fortran_logical_t *flag, MPI_Fint *ierr), + (comm, keyval, attribute_val, flag, ierr) ) +#else +#define ompi_abi_get_fortran_booleans_f pompi_abi_get_fortran_booleans_f +#endif +#endif + +void ompi_abi_get_fortran_booleans_f(MPI_Fint *logical_size, + ompi_fortran_logical_t *logical_true, + ompi_fortran_logical_t *logical_false, + ompi_fortran_logical_t *is_set, + MPI_Fint *ierr) +{ + int c_ierr; + OMPI_LOGICAL_NAME_DECL(logical_true); + OMPI_LOGICAL_NAME_DECL(logical_false); + OMPI_LOGICAL_NAME_DECL(is_set); + + c_ierr = PMPI_Abi_get_fortran_booleans(OMPI_FINT_2_INT(*logical_size), + OMPI_LOGICAL_SINGLE_NAME_CONVERT(logical_true), + OMPI_LOGICAL_SINGLE_NAME_CONVERT(logical_false), + OMPI_LOGICAL_SINGLE_NAME_CONVERT(is_set)); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); + + OMPI_SINGLE_INT_2_LOGICAL(logical_true); + OMPI_SINGLE_INT_2_LOGICAL(logical_false); + OMPI_SINGLE_INT_2_LOGICAL(is_set); +} diff --git a/ompi/mpi/fortran/mpif-h/abi_get_fortran_info_f.c b/ompi/mpi/fortran/mpif-h/abi_get_fortran_info_f.c new file mode 100644 index 00000000000..8b41898da80 --- /dev/null +++ b/ompi/mpi/fortran/mpif-h/abi_get_fortran_info_f.c @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2011-2014 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/fortran/mpif-h/bindings.h" +#include "ompi/attribute/attribute.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak PMPI_ABI_GET_FORTRAN_INFO = ompi_abi_get_fortran_info_f +#pragma weak pmpi_abi_get_fortran_info = ompi_abi_get_fortran_info_f +#pragma weak pmpi_abi_get_fortran_info_ = ompi_abi_get_fortran_info_f +#pragma weak pmpi_abi_get_fortran_info__ = ompi_abi_get_fortran_info_f + +#pragma weak PMPI_Abi_get_fortran_info_f = ompi_abi_get_fortran_info_f +#pragma weak PMPI_Abi_get_fortran_info_f08 = ompi_abi_get_fortran_info_f +#else +OMPI_GENERATE_F77_BINDINGS (PMPI_ABI_GET_FORTRAN_INFO, + pmpi_abi_get_fortran_info, + pmpi_abi_get_fortran_info_, + pmpi_abi_get_fortran_info__, + pompi_abi_get_fortran_info_f, + (MPI_Fint *info, MPI_Fint *ierr), + (info, ierr) ) +#endif +#endif + +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_ABI_GET_FORTRAN_INFO = ompi_abi_get_fortran_info_f +#pragma weak mpi_abi_get_fortran_info = ompi_abi_get_fortran_info_f +#pragma weak mpi_abi_get_fortran_info_ = ompi_abi_get_fortran_info_f +#pragma weak mpi_abi_get_fortran_info__ = ompi_abi_get_fortran_info_f + +#pragma weak MPI_Abi_get_fortran_info_f = ompi_abi_get_fortran_info_f +#pragma weak MPI_Abi_get_fortran_info_f08 = ompi_abi_get_fortran_info_f +#else +#if ! OMPI_BUILD_MPI_PROFILING +OMPI_GENERATE_F77_BINDINGS (MPI_ABI_GET_FORTRAN_INFO, + mpi_abi_get_fortran_info, + mpi_abi_get_fortran_info_, + mpi_abi_get_fortran_info__, + ompi_abi_get_fortran_info_f, + (MPI_Fint *info, MPI_Fint *ierr), + (info, ierr) ) +#else +#define ompi_abi_get_fortran_info_f pompi_abi_get_fortran_info_f +#endif +#endif + + +void ompi_abi_get_fortran_info_f(MPI_Fint *info, MPI_Fint *ierr) +{ + int c_ierr; + MPI_Info c_info; + + c_ierr = PMPI_Abi_get_fortran_info(&c_info); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); + + if (MPI_SUCCESS == c_ierr) { + *info = PMPI_Info_c2f(c_info); + } +} diff --git a/ompi/mpi/fortran/mpif-h/abi_get_info_f.c b/ompi/mpi/fortran/mpif-h/abi_get_info_f.c new file mode 100644 index 00000000000..23a449f7d86 --- /dev/null +++ b/ompi/mpi/fortran/mpif-h/abi_get_info_f.c @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2011-2014 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/fortran/mpif-h/bindings.h" +#include "ompi/attribute/attribute.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak PMPI_ABI_GET_INFO = ompi_abi_get_info_f +#pragma weak pmpi_abi_get_info = ompi_abi_get_info_f +#pragma weak pmpi_abi_get_info_ = ompi_abi_get_info_f +#pragma weak pmpi_abi_get_info__ = ompi_abi_get_info_f + +#pragma weak PMPI_Abi_get_info_f = ompi_abi_get_info_f +#pragma weak PMPI_Abi_get_info_f08 = ompi_abi_get_info_f +#else +OMPI_GENERATE_F77_BINDINGS (PMPI_ABI_GET_INFO, + pmpi_abi_get_info, + pmpi_abi_get_info_, + pmpi_abi_get_info__, + pompi_abi_get_info_f, + (MPI_Fint *info, MPI_Fint *ierr), + (info, ierr) ) +#endif +#endif + +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_ABI_GET_INFO = ompi_abi_get_info_f +#pragma weak mpi_abi_get_info = ompi_abi_get_info_f +#pragma weak mpi_abi_get_info_ = ompi_abi_get_info_f +#pragma weak mpi_abi_get_info__ = ompi_abi_get_info_f + +#pragma weak MPI_Abi_get_info_f = ompi_abi_get_info_f +#pragma weak MPI_Abi_get_info_f08 = ompi_abi_get_info_f +#else +#if ! OMPI_BUILD_MPI_PROFILING +OMPI_GENERATE_F77_BINDINGS (MPI_ABI_GET_INFO, + mpi_abi_get_info, + mpi_abi_get_info_, + mpi_abi_get_info__, + ompi_abi_get_info_f, + (MPI_Fint *info, MPI_Fint *ierr), + (info, ierr) ) +#else +#define ompi_abi_get_info_f pompi_abi_get_info_f +#endif +#endif + + +void ompi_abi_get_info_f(MPI_Fint *info, MPI_Fint *ierr) +{ + int c_ierr; + MPI_Info c_info; + + c_ierr = PMPI_Abi_get_info(&c_info); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); + + if (MPI_SUCCESS == c_ierr) { + *info = PMPI_Info_c2f(c_info); + } +} diff --git a/ompi/mpi/fortran/mpif-h/abi_get_version_f.c b/ompi/mpi/fortran/mpif-h/abi_get_version_f.c new file mode 100644 index 00000000000..cc8f0f84368 --- /dev/null +++ b/ompi/mpi/fortran/mpif-h/abi_get_version_f.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/fortran/mpif-h/bindings.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak PMPI_ABI_GET_VERSION = ompi_abi_get_version_f +#pragma weak pmpi_abi_get_version = ompi_abi_get_version_f +#pragma weak pmpi_abi_get_version_ = ompi_abi_get_version_f +#pragma weak pmpi_abi_get_version__ = ompi_abi_get_version_f + +#pragma weak PMPI_Abi_get_version_f = ompi_abi_get_version_f +#pragma weak PMPI_Abi_get_version_f08 = ompi_abi_get_version_f +#else +OMPI_GENERATE_F77_BINDINGS (PMPI_ABI_GET_VERSION, + pmpi_abi_get_version, + pmpi_abi_get_version_, + pmpi_abi_get_version__, + pompi_abi_get_version_f, + (MPI_Fint *abi_major, MPI_Fint *abi_minor, MPI_Fint *ierr), + (abi_major, abi_minor, ierr) ) +#endif +#endif + +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_ABI_GET_VERSION = ompi_abi_get_version_f +#pragma weak mpi_abi_get_version = ompi_abi_get_version_f +#pragma weak mpi_abi_get_version_ = ompi_abi_get_version_f +#pragma weak mpi_abi_get_version__ = ompi_abi_get_version_f + +#pragma weak MPI_Abi_get_version_f = ompi_abi_get_version_f +#pragma weak MPI_Abi_get_version_f08 = ompi_abi_get_version_f +#else +#if ! OMPI_BUILD_MPI_PROFILING +OMPI_GENERATE_F77_BINDINGS (MPI_ABI_GET_VERSION, + mpi_abi_get_version, + mpi_abi_get_version_, + mpi_abi_get_version__, + ompi_abi_get_version_f, + (MPI_Fint *abi_major, MPI_Fint *abi_minor, MPI_Fint *ierr), + (abi_major, abi_minor, ierr) ) +#else +#define ompi_abi_get_version_f pompi_abi_get_version_f +#endif +#endif + + +void ompi_abi_get_version_f(MPI_Fint *abi_major, MPI_Fint *abi_minor, MPI_Fint *ierr) +{ + int c_ierr; + OMPI_SINGLE_NAME_DECL(abi_major); + OMPI_SINGLE_NAME_DECL(abi_minor); + + c_ierr = PMPI_Abi_get_version(OMPI_SINGLE_NAME_CONVERT(abi_major), + OMPI_SINGLE_NAME_CONVERT(abi_minor)); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); + + if (MPI_SUCCESS == c_ierr) { + OMPI_SINGLE_INT_2_FINT(abi_major); + OMPI_SINGLE_INT_2_FINT(abi_minor); + } +} diff --git a/ompi/mpi/fortran/mpif-h/abi_set_fortran_booleans_f.c b/ompi/mpi/fortran/mpif-h/abi_set_fortran_booleans_f.c new file mode 100644 index 00000000000..bb1d0baf5f0 --- /dev/null +++ b/ompi/mpi/fortran/mpif-h/abi_set_fortran_booleans_f.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015-2017 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/fortran/mpif-h/bindings.h" +#include "ompi/attribute/attribute.h" +#include "ompi/communicator/communicator.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak PMPI_ABI_SET_FOTRAN_BOOLEANS = ompi_abi_set_fortran_booleans_f +#pragma weak pmpi_abi_set_fortran_booleans = ompi_abi_set_fortran_booleans_f +#pragma weak pmpi_abi_set_fortran_booleans_ = ompi_abi_set_fortran_booleans_f +#pragma weak pmpi_abi_set_fortran_booleans__ = ompi_abi_set_fortran_booleans_f + +#pragma weak PMPI_Abi_set_fortran_booleans_f = ompi_abi_set_fortran_booleans_f +#pragma weak PMPI_Abi_set_fortran_booleans_f08 = ompi_abi_set_fortran_booleans_f +#else +OMPI_GENERATE_F77_BINDINGS (PMPI_ABI_SET_FOTRAN_BOOLEANS, + pmpi_abi_set_fortran_booleans, + pmpi_abi_set_fortran_booleans_, + pmpi_abi_set_fortran_booleans__, + pompi_abi_set_fortran_booleans_f, + (MPI_Fint *logical_size, ompi_fortran_logical_t *logical_true, ompi_fortran_logical_t *logical_false, MPI_Fint *ierr), + (logical_size, logical_true, logical_false, ierr) ) +#endif +#endif + +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_ABI_SET_FOTRAN_BOOLEANS = ompi_abi_set_fortran_booleans_f +#pragma weak mpi_abi_set_fortran_booleans = ompi_abi_set_fortran_booleans_f +#pragma weak mpi_abi_set_fortran_booleans_ = ompi_abi_set_fortran_booleans_f +#pragma weak mpi_abi_set_fortran_booleans__ = ompi_abi_set_fortran_booleans_f + +#pragma weak MPI_Abi_set_fortran_booleans_f = ompi_abi_set_fortran_booleans_f +#pragma weak MPI_Abi_set_fortran_booleans_f08 = ompi_abi_set_fortran_booleans_f +#else +#if ! OMPI_BUILD_MPI_PROFILING +OMPI_GENERATE_F77_BINDINGS (MPI_ABI_SET_FOTRAN_BOOLEANS, + mpi_abi_set_fortran_booleans, + mpi_abi_set_fortran_booleans_, + mpi_abi_set_fortran_booleans__, + ompi_abi_set_fortran_booleans_f, + (MPI_Fint *logical_size, ompi_fortran_logical_t *logical_true, ompi_fortran_logical_t *logical_false, MPI_Fint *ierr), + (logical_size, logical_true, logical_false, ierr) ) +#else +#define ompi_abi_set_fortran_booleans_f pompi_abi_set_fortran_booleans_f +#endif +#endif + +void ompi_abi_set_fortran_booleans_f(MPI_Fint *logical_size, + ompi_fortran_logical_t *logical_true, + ompi_fortran_logical_t *logical_false, + MPI_Fint *ierr) +{ + int c_ierr, c_logical_true, c_logical_false; + + c_logical_true = OMPI_LOGICAL_2_INT(*logical_true); + c_logical_false = OMPI_LOGICAL_2_INT(*logical_false); + c_ierr = PMPI_Abi_set_fortran_booleans(OMPI_FINT_2_INT(*logical_size), + (void *)&c_logical_true, + (void *)&c_logical_false); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); +} diff --git a/ompi/mpi/fortran/mpif-h/abi_set_fortran_info_f.c b/ompi/mpi/fortran/mpif-h/abi_set_fortran_info_f.c new file mode 100644 index 00000000000..307e80efbc6 --- /dev/null +++ b/ompi/mpi/fortran/mpif-h/abi_set_fortran_info_f.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2011-2014 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/fortran/mpif-h/bindings.h" +#include "ompi/attribute/attribute.h" + +#if OMPI_BUILD_MPI_PROFILING +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak PMPI_ABI_SET_FOTRAN_INFO = ompi_abi_set_fortran_info_f +#pragma weak pmpi_abi_set_fortran_info = ompi_abi_set_fortran_info_f +#pragma weak pmpi_abi_set_fortran_info_ = ompi_abi_set_fortran_info_f +#pragma weak pmpi_abi_set_fortran_info__ = ompi_abi_set_fortran_info_f + +#pragma weak PMPI_Abi_set_fortran_info_f = ompi_abi_set_fortran_info_f +#pragma weak PMPI_Abi_set_fortran_info_f08 = ompi_abi_set_fortran_info_f +#else +OMPI_GENERATE_F77_BINDINGS (PMPI_ABI_SET_FOTRAN_INFO, + pmpi_abi_set_fortran_info, + pmpi_abi_set_fortran_info_, + pmpi_abi_set_fortran_info__, + pompi_abi_set_fortran_info_f, + (MPI_Fint *info, MPI_Fint *ierr), + (info, ierr) ) +#endif +#endif + +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_ABI_SET_FOTRAN_INFO = ompi_abi_set_fortran_info_f +#pragma weak mpi_abi_set_fortran_info = ompi_abi_set_fortran_info_f +#pragma weak mpi_abi_set_fortran_info_ = ompi_abi_set_fortran_info_f +#pragma weak mpi_abi_set_fortran_info__ = ompi_abi_set_fortran_info_f + +#pragma weak MPI_Abi_set_fortran_info_f = ompi_abi_set_fortran_info_f +#pragma weak MPI_Abi_set_fortran_info_f08 = ompi_abi_set_fortran_info_f +#else +#if ! OMPI_BUILD_MPI_PROFILING +OMPI_GENERATE_F77_BINDINGS (MPI_ABI_SET_FOTRAN_INFO, + mpi_abi_set_fortran_info, + mpi_abi_set_fortran_info_, + mpi_abi_set_fortran_info__, + ompi_abi_set_fortran_info_f, + (MPI_Fint *info, MPI_Fint *ierr), + (info, ierr) ) +#else +#define ompi_abi_set_fortran_info_f pompi_abi_set_fortran_info_f +#endif +#endif + + +void ompi_abi_set_fortran_info_f(MPI_Fint *info, MPI_Fint *ierr) +{ + int c_ierr; + MPI_Info c_info = PMPI_Info_f2c(*info); + + c_ierr = PMPI_Abi_set_fortran_info(c_info); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); +} diff --git a/ompi/mpi/fortran/mpif-h/comm_create_errhandler_f.c b/ompi/mpi/fortran/mpif-h/comm_create_errhandler_f.c index 9881590dd11..f9b00317f2e 100644 --- a/ompi/mpi/fortran/mpif-h/comm_create_errhandler_f.c +++ b/ompi/mpi/fortran/mpif-h/comm_create_errhandler_f.c @@ -78,7 +78,7 @@ void ompi_comm_create_errhandler_f(ompi_errhandler_fortran_handler_fn_t *functio c_errhandler = ompi_errhandler_create(OMPI_ERRHANDLER_TYPE_COMM, (ompi_errhandler_generic_handler_fn_t*) function, - OMPI_ERRHANDLER_LANG_FORTRAN); + OMPI_ERRHANDLER_LANG_FORTRAN, NULL); if (MPI_ERRHANDLER_NULL != c_errhandler) { *errhandler = PMPI_Errhandler_c2f(c_errhandler); c_ierr = MPI_SUCCESS; diff --git a/ompi/mpi/fortran/mpif-h/file_create_errhandler_f.c b/ompi/mpi/fortran/mpif-h/file_create_errhandler_f.c index a20af467621..212916adfae 100644 --- a/ompi/mpi/fortran/mpif-h/file_create_errhandler_f.c +++ b/ompi/mpi/fortran/mpif-h/file_create_errhandler_f.c @@ -77,7 +77,7 @@ void ompi_file_create_errhandler_f(ompi_errhandler_fortran_handler_fn_t* functio MPI_Errhandler c_errhandler; c_errhandler = ompi_errhandler_create(OMPI_ERRHANDLER_TYPE_FILE, (ompi_errhandler_generic_handler_fn_t*) function, - OMPI_ERRHANDLER_LANG_FORTRAN); + OMPI_ERRHANDLER_LANG_FORTRAN, NULL); if (MPI_ERRHANDLER_NULL != c_errhandler) { *errhandler = PMPI_Errhandler_c2f(c_errhandler); c_ierr = MPI_SUCCESS; diff --git a/ompi/mpi/fortran/mpif-h/profile/Makefile.am b/ompi/mpi/fortran/mpif-h/profile/Makefile.am index 88e495b56db..d913a968ccd 100644 --- a/ompi/mpi/fortran/mpif-h/profile/Makefile.am +++ b/ompi/mpi/fortran/mpif-h/profile/Makefile.am @@ -45,6 +45,12 @@ noinst_LTLIBRARIES += libmpi_mpifh_pmpi.la endif linked_files = \ + pabi_get_fortran_booleans_f.c \ + pabi_get_fortran_info_f.c \ + pabi_get_info_f.c \ + pabi_get_version_f.c \ + pabi_set_fortran_booleans_f.c \ + pabi_set_fortran_info_f.c \ pabort_f.c \ padd_error_class_f.c \ padd_error_code_f.c \ diff --git a/ompi/mpi/fortran/mpif-h/prototypes_mpi.h b/ompi/mpi/fortran/mpif-h/prototypes_mpi.h index 931d019dce7..e3e9586a097 100644 --- a/ompi/mpi/fortran/mpif-h/prototypes_mpi.h +++ b/ompi/mpi/fortran/mpif-h/prototypes_mpi.h @@ -85,6 +85,13 @@ BEGIN_C_DECLS OMPI_DECLSPEC ret P##mixed_name##_f08 args; \ OMPI_DECLSPEC ret P##mixed_name##_f args +PN2(void, MPI_Abi_get_fortran_booleans, mpi_abi_get_fortran_booleans, MPI_ABI_GET_FORTRAN_BOOLEANS , (MPI_Fint *logical_size, ompi_fortran_logical_t *logical_true, ompi_fortran_logical_t *logical_false, ompi_fortran_logical_t *is_set, MPI_Fint *ierr)); +PN2(void, MPI_Abi_get_fortran_info, mpi_abi_get_fortran_info, MPI_ABI_GET_FORTRAN_INFO , (MPI_Fint *info, MPI_Fint *ierr)); +PN2(void, MPI_Abi_get_info, mpi_abi_get_info, MPI_ABI_GET_INFO , (MPI_Fint *info, MPI_Fint *ierr)); +PN2(void, MPI_Abi_get_version, mpi_abi_get_version, MPI_ABI_GET_VERSION , (MPI_Fint *abi_major, MPI_Fint *abi_minor, MPI_Fint *ierr)); +PN2(void, MPI_Abi_set_fortran_booleans, mpi_abi_set_fortran_booleans, MPI_ABI_SET_FORTRAN_BOOLEANS , (MPI_Fint *logical_size, ompi_fortran_logical_t *logical_true, ompi_fortran_logical_t *logical_false, MPI_Fint *ierr)); +PN2(void, MPI_Abi_set_fortran_info, mpi_abi_set_fortran_info, MPI_ABI_SET_FORTRAN_INFO , (MPI_Fint *info, MPI_Fint *ierr)); +PN2(void, MPI_Abi_get_info, mpi_abi_get_info, MPI_ABI_GET_INFO , (MPI_Fint *info, MPI_Fint *ierr)); PN2(void, MPI_Abort, mpi_abort, MPI_ABORT, (MPI_Fint *comm, MPI_Fint *errorcode, MPI_Fint *ierr)); PN2(void, MPI_Accumulate, mpi_accumulate, MPI_ACCUMULATE, (char *origin_addr, MPI_Fint *origin_count, MPI_Fint *origin_datatype, MPI_Fint *target_rank, MPI_Aint *target_disp, MPI_Fint *target_count, MPI_Fint *target_datatype, MPI_Fint *op, MPI_Fint *win, MPI_Fint *ierr)); PN2(void, MPI_Add_error_class, mpi_add_error_class, MPI_ADD_ERROR_CLASS, (MPI_Fint *errorclass, MPI_Fint *ierr)); diff --git a/ompi/mpi/fortran/mpif-h/session_create_errhandler_f.c b/ompi/mpi/fortran/mpif-h/session_create_errhandler_f.c index bf97f332570..64b67fbaa36 100644 --- a/ompi/mpi/fortran/mpif-h/session_create_errhandler_f.c +++ b/ompi/mpi/fortran/mpif-h/session_create_errhandler_f.c @@ -78,7 +78,7 @@ void ompi_session_create_errhandler_f(ompi_errhandler_fortran_handler_fn_t *func c_errhandler = ompi_errhandler_create(OMPI_ERRHANDLER_TYPE_INSTANCE, (ompi_errhandler_generic_handler_fn_t*) function, - OMPI_ERRHANDLER_LANG_FORTRAN); + OMPI_ERRHANDLER_LANG_FORTRAN, NULL); if (MPI_ERRHANDLER_NULL != c_errhandler) { *errhandler = PMPI_Errhandler_c2f(c_errhandler); c_ierr = MPI_SUCCESS; diff --git a/ompi/mpi/fortran/mpif-h/win_create_errhandler_f.c b/ompi/mpi/fortran/mpif-h/win_create_errhandler_f.c index c46bdcb9bc3..ad8e28537a8 100644 --- a/ompi/mpi/fortran/mpif-h/win_create_errhandler_f.c +++ b/ompi/mpi/fortran/mpif-h/win_create_errhandler_f.c @@ -77,7 +77,7 @@ void ompi_win_create_errhandler_f(ompi_errhandler_fortran_handler_fn_t* function c_errhandler = ompi_errhandler_create(OMPI_ERRHANDLER_TYPE_WIN, (ompi_errhandler_generic_handler_fn_t*) function, - OMPI_ERRHANDLER_LANG_FORTRAN); + OMPI_ERRHANDLER_LANG_FORTRAN, NULL); if (MPI_ERRHANDLER_NULL != c_errhandler) { *errhandler = PMPI_Errhandler_c2f(c_errhandler); if (NULL != ierr) *ierr = OMPI_INT_2_FINT(MPI_SUCCESS); diff --git a/ompi/mpi/fortran/use-mpi-f08/Makefile.prototype_files b/ompi/mpi/fortran/use-mpi-f08/Makefile.prototype_files index 1bcd67acbbc..64bc93af18a 100644 --- a/ompi/mpi/fortran/use-mpi-f08/Makefile.prototype_files +++ b/ompi/mpi/fortran/use-mpi-f08/Makefile.prototype_files @@ -3,6 +3,12 @@ # prototype_files = \ + abi_get_version.c.in \ + abi_get_fortran_booleans.c.in \ + abi_get_fortran_info.c.in \ + abi_get_info.c.in \ + abi_set_fortran_booleans.c.in \ + abi_set_fortran_info.c.in \ accumulate_ts.c.in \ allgather_init_ts.c.in \ allgather_ts.c.in \ diff --git a/ompi/mpi/fortran/use-mpi-f08/abi_get_fortran_booleans.c.in b/ompi/mpi/fortran/use-mpi-f08/abi_get_fortran_booleans.c.in new file mode 100644 index 00000000000..4d5d94e0ef0 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/abi_get_fortran_booleans.c.in @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +PROTOTYPE VOID abi_get_fortran_booleans(INT logical_size, LOGICAL_OUT logical_true, + LOGICAL_OUT logical_false, + LOGICAL_OUT is_set) +{ + int c_ierr, c_logical_true, c_logical_false, c_is_set; + + c_ierr = @INNER_CALL@(OMPI_FINT_2_INT(*logical_size), + &c_logical_true, + &c_logical_false, + &c_is_set); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); + + if (MPI_SUCCESS == c_ierr) { + *logical_true = OMPI_INT_2_FINT(c_logical_true); + *logical_false = OMPI_INT_2_FINT(c_logical_false); + *is_set = OMPI_INT_2_FINT(c_is_set); + } +} + + diff --git a/ompi/mpi/fortran/use-mpi-f08/abi_get_fortran_info.c.in b/ompi/mpi/fortran/use-mpi-f08/abi_get_fortran_info.c.in new file mode 100644 index 00000000000..fdb0ae8aff2 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/abi_get_fortran_info.c.in @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2011-2014 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +PROTOTYPE VOID abi_get_fortran_info(INFO_OUT info) +{ + int c_ierr; + MPI_Info c_info; + + c_ierr = @INNER_CALL@(&c_info); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); + + if (MPI_SUCCESS == c_ierr) { + *info = PMPI_Info_c2f(c_info); + } +} + diff --git a/ompi/mpi/fortran/use-mpi-f08/abi_get_info.c.in b/ompi/mpi/fortran/use-mpi-f08/abi_get_info.c.in new file mode 100644 index 00000000000..1c320c6051e --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/abi_get_info.c.in @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2011-2014 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +PROTOTYPE VOID abi_get_info(INFO_OUT info) +{ + int c_ierr; + MPI_Info c_info; + + c_ierr = @INNER_CALL@(&c_info); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); + + if (MPI_SUCCESS == c_ierr) { + *info = PMPI_Info_c2f(c_info); + } +} + diff --git a/ompi/mpi/fortran/use-mpi-f08/abi_get_version.c.in b/ompi/mpi/fortran/use-mpi-f08/abi_get_version.c.in new file mode 100644 index 00000000000..49ee4019b62 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/abi_get_version.c.in @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +PROTOTYPE VOID abi_get_version(INT_OUT abi_major, INT_OUT abi_minor) +{ + int c_ierr; + int c_abi_major, c_abi_minor; + + c_ierr = @INNER_CALL@(&c_abi_major, + &c_abi_minor); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); + + if (MPI_SUCCESS == c_ierr) { + *abi_major = OMPI_INT_2_FINT(c_abi_major); + *abi_minor = OMPI_INT_2_FINT(c_abi_minor); + } +} + diff --git a/ompi/mpi/fortran/use-mpi-f08/abi_set_fortran_booleans.c.in b/ompi/mpi/fortran/use-mpi-f08/abi_set_fortran_booleans.c.in new file mode 100644 index 00000000000..4b8301c8374 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/abi_set_fortran_booleans.c.in @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +PROTOTYPE VOID abi_set_fortran_booleans(INT logical_size, LOGICAL logical_true, + LOGICAL logical_false) +{ + int c_ierr, c_logical_true, c_logical_false; + + c_logical_true = OMPI_FINT_2_INT(*logical_true); + c_logical_false = OMPI_FINT_2_INT(*logical_false); + c_ierr = @INNER_CALL@(OMPI_FINT_2_INT(*logical_size), + (void *)&c_logical_true, + (void *)&c_logical_false); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); +} + + diff --git a/ompi/mpi/fortran/use-mpi-f08/abi_set_fortran_info.c.in b/ompi/mpi/fortran/use-mpi-f08/abi_set_fortran_info.c.in new file mode 100644 index 00000000000..4b87ee832a2 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/abi_set_fortran_info.c.in @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2011-2014 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * Copyright (c) 2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +PROTOTYPE VOID abi_set_fortran_info(INFO info) +{ + int c_ierr; + MPI_Info c_info = PMPI_Info_f2c(*info); + + c_ierr = @INNER_CALL@(c_info); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); +} diff --git a/ompi/mpi/fortran/use-mpi-ignore-tkr/Makefile.prototype_files b/ompi/mpi/fortran/use-mpi-ignore-tkr/Makefile.prototype_files index 03f7fe313c9..02ad1cae26a 100644 --- a/ompi/mpi/fortran/use-mpi-ignore-tkr/Makefile.prototype_files +++ b/ompi/mpi/fortran/use-mpi-ignore-tkr/Makefile.prototype_files @@ -3,6 +3,12 @@ # prototype_files = \ + abi_get_version.c.in \ + abi_get_fortran_booleans.c.in \ + abi_get_fortran_info.c.in \ + abi_get_info.c.in \ + abi_set_fortran_booleans.c.in \ + abi_set_fortran_info.c.in \ buffer_flush.c.in \ buffer_iflush.c.in \ comm_attach_buffer_ts.c.in \ diff --git a/ompi/mpi/tool/Makefile.am b/ompi/mpi/tool/Makefile.am index 72cb71b9b60..fcace923eb8 100644 --- a/ompi/mpi/tool/Makefile.am +++ b/ompi/mpi/tool/Makefile.am @@ -25,6 +25,8 @@ # layer, if weak symbols can't be used to alias the MPI_ namespace # into the PMPI_ namespace. +include $(top_srcdir)/Makefile.ompi-rules + noinst_LTLIBRARIES = libmpi_mpit.la libmpi_mpit_profile.la if BUILD_MPI_BINDINGS_LAYER noinst_LTLIBRARIES += libmpi_mpit_noprofile.la @@ -50,7 +52,51 @@ endif # # List of all C files that have profile versions # -interface_profile_sources = \ + +# +# the following must be processed by binding framework +# to generated both ompi and standard abi variants +# +prototype_sources = \ + cvar_get_info.c.in \ + cvar_handle_alloc.c.in \ + cvar_handle_free.c.in \ + cvar_read.c.in \ + cvar_write.c.in \ + enum_get_info.c.in \ + enum_get_item.c.in \ + event_callback_get_info.c.in \ + event_callback_set_info.c.in \ + event_copy.c.in \ + event_handle_get_info.c.in \ + event_handle_set_info.c.in \ + event_get_info.c.in \ + event_get_source.c.in \ + event_get_timestamp.c.in \ + event_handle_alloc.c.in \ + event_handle_free.c.in \ + event_read.c.in \ + event_register_callback.c.in \ + event_set_dropped_handler.c.in \ + pvar_get_info.c.in \ + pvar_handle_alloc.c.in \ + pvar_handle_free.c.in \ + pvar_read.c.in \ + pvar_readreset.c.in \ + pvar_reset.c.in \ + pvar_session_create.c.in \ + pvar_session_free.c.in \ + pvar_start.c.in \ + pvar_stop.c.in \ + pvar_write.c.in \ + source_get_info.c.in + +# +# the following have function prototypes that work both for +# ompi and standard abi so do not requiring generating by the binding +# framework +# +interface_profile_sources_np = \ category_changed.c \ category_get_categories.c \ category_get_cvars.c \ @@ -60,51 +106,55 @@ interface_profile_sources = \ category_get_num.c \ category_get_num_events.c \ category_get_pvars.c \ - cvar_get_info.c \ cvar_get_index.c \ cvar_get_num.c \ - cvar_handle_alloc.c \ - cvar_handle_free.c \ - cvar_read.c \ - cvar_write.c \ - enum_get_info.c \ - enum_get_item.c \ event_get_index.c \ - event_copy.c \ - event_callback_get_info.c \ - event_callback_set_info.c \ - event_handle_get_info.c \ - event_handle_set_info.c \ - event_get_info.c \ event_get_num.c \ - event_get_source.c \ - event_get_timestamp.c \ - event_handle_alloc.c \ - event_handle_free.c \ - event_read.c \ - event_register_callback.c \ - event_set_dropped_handler.c \ finalize.c \ init_thread.c \ - pvar_get_info.c \ pvar_get_index.c \ pvar_get_num.c \ - pvar_handle_alloc.c \ - pvar_handle_free.c \ - pvar_read.c \ - pvar_readreset.c \ - pvar_reset.c \ - pvar_session_create.c \ - pvar_session_free.c \ - pvar_start.c \ - pvar_stop.c \ - pvar_write.c \ source_get_num.c \ - source_get_info.c \ source_get_timestamp.c +interface_profile_sources = $(prototype_sources:.c.in=_ompi_generated.c) \ + $(interface_profile_sources_np) + +if OMPI_GENERATE_BINDINGS +%_ompi_generated.c: %.c.in + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ + --builddir $(abs_top_builddir) \ + --srcdir $(abs_top_srcdir) \ + --output $@ \ + c \ + source \ + ompi \ + --mpit \ + $< + +%_abi_generated.c: %.c.in + $(OMPI_V_GEN) $(PYTHON) $(top_srcdir)/ompi/mpi/bindings/bindings.py \ + --builddir $(abs_top_builddir) \ + --srcdir $(abs_top_srcdir) \ + --output $@ \ + c \ + source \ + standard \ + --mpit \ + $< +endif + libmpi_mpit_profile_la_SOURCES = $(interface_profile_sources) libmpi_mpit_profile_la_CPPFLAGS = -DOMPI_BUILD_MPI_PROFILING=1 libmpi_mpit_noprofile_la_SOURCES = $(interface_profile_sources) libmpi_mpit_noprofile_la_CPPFLAGS = -DOMPI_BUILD_MPI_PROFILING=0 + +EXTRA_DIST = $(prototype_sources) + +MAINTAINERCLEANFILES = *_generated.c + +if OMPI_STANDARD_ABI +include Makefile_abi.include +endif + diff --git a/ompi/mpi/tool/Makefile_abi.include b/ompi/mpi/tool/Makefile_abi.include new file mode 100644 index 00000000000..601b12ca91d --- /dev/null +++ b/ompi/mpi/tool/Makefile_abi.include @@ -0,0 +1,56 @@ +# +# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2013 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2009-2021 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2011 Sandia National Laboratories. All rights reserved. +# Copyright (c) 2012 Oak Rigde National Laboratory. All rights reserved. +# Copyright (c) 2012-2013 Inria. All rights reserved. +# Copyright (c) 2013-2018 Los Alamos National Security, LLC. All rights +# reserved. +# Copyright (c) 2015-2020 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# Copyright (c) 2021 Amazon.com, Inc. or its affiliates. All Rights +# reserved. +# Copyright (c) 2025 Advanced Micro Devices, Inc. All Rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# ABI specific make components + +if OMPI_STANDARD_ABI + +noinst_LTLIBRARIES += libmpi_mpit_abi.la libmpi_mpit_abi_profile.la +if BUILD_MPI_BINDINGS_LAYER +noinst_LTLIBRARIES += libmpi_mpit_abi_noprofile.la +endif + +libmpi_mpit_abi_la_SOURCES = \ + mpit_common.c + +libmpi_mpit_abi_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES -DOMPI_BUILD_MPI_PROFILING=0 -DOMPI_BUILD_STANDARD_ABI +libmpi_mpit_abi_la_LIBADD = libmpi_mpit_abi_profile.la +if BUILD_MPI_BINDINGS_LAYER +libmpi_mpit_abi_la_LIBADD += libmpi_mpit_abi_noprofile.la +endif + +abi_interface_profile_sources = $(prototype_sources:.c.in=_abi_generated.c) + +libmpi_mpit_abi_profile_la_SOURCES = $(abi_interface_profile_sources) $(interface_profile_sources_np) +libmpi_mpit_abi_profile_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES -DOMPI_BUILD_MPI_PROFILING=1 + +libmpi_mpit_abi_noprofile_la_SOURCES = $(abi_interface_profile_sources) $(interface_profile_sources_np) +libmpi_mpit_abi_noprofile_la_CPPFLAGS = -DOMPI_NO_MPI_PROTOTYPES -DOMPI_BUILD_MPI_PROFILING=0 + +endif diff --git a/ompi/mpi/tool/category_changed.c b/ompi/mpi/tool/category_changed.c index 3b3dce70036..157b5728044 100644 --- a/ompi/mpi/tool/category_changed.c +++ b/ompi/mpi/tool/category_changed.c @@ -16,6 +16,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/category_get_categories.c b/ompi/mpi/tool/category_get_categories.c index 813dcc34be1..87b609a3c54 100644 --- a/ompi/mpi/tool/category_get_categories.c +++ b/ompi/mpi/tool/category_get_categories.c @@ -19,6 +19,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/category_get_cvars.c b/ompi/mpi/tool/category_get_cvars.c index bc361f6ba9b..ee35e8848e3 100644 --- a/ompi/mpi/tool/category_get_cvars.c +++ b/ompi/mpi/tool/category_get_cvars.c @@ -19,6 +19,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/category_get_events.c b/ompi/mpi/tool/category_get_events.c index 3c6576b79f8..1c113057951 100644 --- a/ompi/mpi/tool/category_get_events.c +++ b/ompi/mpi/tool/category_get_events.c @@ -21,6 +21,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/category_get_index.c b/ompi/mpi/tool/category_get_index.c index 996c5538f35..54b08bfb3f7 100644 --- a/ompi/mpi/tool/category_get_index.c +++ b/ompi/mpi/tool/category_get_index.c @@ -19,6 +19,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/category_get_info.c b/ompi/mpi/tool/category_get_info.c index 4906c796125..d7b1fcb9edf 100644 --- a/ompi/mpi/tool/category_get_info.c +++ b/ompi/mpi/tool/category_get_info.c @@ -19,6 +19,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/category_get_num.c b/ompi/mpi/tool/category_get_num.c index 4da64da8156..4a437d965cc 100644 --- a/ompi/mpi/tool/category_get_num.c +++ b/ompi/mpi/tool/category_get_num.c @@ -19,6 +19,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/category_get_num_events.c b/ompi/mpi/tool/category_get_num_events.c index b7e49070323..1950431d55d 100644 --- a/ompi/mpi/tool/category_get_num_events.c +++ b/ompi/mpi/tool/category_get_num_events.c @@ -21,6 +21,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/category_get_pvars.c b/ompi/mpi/tool/category_get_pvars.c index c4371762fb5..20cb83445b0 100644 --- a/ompi/mpi/tool/category_get_pvars.c +++ b/ompi/mpi/tool/category_get_pvars.c @@ -19,6 +19,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/cvar_get_index.c b/ompi/mpi/tool/cvar_get_index.c index ee0672f0c9b..483509db702 100644 --- a/ompi/mpi/tool/cvar_get_index.c +++ b/ompi/mpi/tool/cvar_get_index.c @@ -19,6 +19,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/cvar_get_info.c b/ompi/mpi/tool/cvar_get_info.c.in similarity index 85% rename from ompi/mpi/tool/cvar_get_info.c rename to ompi/mpi/tool/cvar_get_info.c.in index c3f94787587..0744ea66bb5 100644 --- a/ompi/mpi/tool/cvar_get_info.c +++ b/ompi/mpi/tool/cvar_get_info.c.in @@ -20,16 +20,9 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_cvar_get_info = PMPI_T_cvar_get_info -#endif -#define MPI_T_cvar_get_info PMPI_T_cvar_get_info -#endif - -int MPI_T_cvar_get_info(int cvar_index, char *name, int *name_len, int *verbosity, - MPI_Datatype *datatype, MPI_T_enum *enumtype, char *desc, - int *desc_len, int *bind, int *scope) +PROTOTYPE ERROR_CLASS cvar_get_info(INT cvar_index, STRING_OUT name, INT_OUT name_len, INT_OUT verbosity, + DATATYPE_OUT datatype, T_ENUM_OUT enumtype, STRING_OUT desc, + INT_OUT desc_len, BIND_OUT bind, INT_OUT scope) { const mca_base_var_t *var; int rc = MPI_SUCCESS; diff --git a/ompi/mpi/tool/cvar_get_num.c b/ompi/mpi/tool/cvar_get_num.c index 32ba1201cdc..e91ddcbf0b9 100644 --- a/ompi/mpi/tool/cvar_get_num.c +++ b/ompi/mpi/tool/cvar_get_num.c @@ -19,6 +19,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/cvar_handle_alloc.c b/ompi/mpi/tool/cvar_handle_alloc.c.in similarity index 87% rename from ompi/mpi/tool/cvar_handle_alloc.c rename to ompi/mpi/tool/cvar_handle_alloc.c.in index 82ebe890032..5ac845166b2 100644 --- a/ompi/mpi/tool/cvar_handle_alloc.c +++ b/ompi/mpi/tool/cvar_handle_alloc.c.in @@ -22,15 +22,8 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_cvar_handle_alloc = PMPI_T_cvar_handle_alloc -#endif -#define MPI_T_cvar_handle_alloc PMPI_T_cvar_handle_alloc -#endif - -int MPI_T_cvar_handle_alloc (int cvar_index, void *obj_handle, - MPI_T_cvar_handle *handle, int *count) +PROTOTYPE ERROR_CLASS cvar_handle_alloc (INT cvar_index, VOID obj_handle, + CVAR_HANDLE_OUT handle, INT_OUT count) { ompi_mpit_cvar_handle_t *new_handle; int rc = MPI_SUCCESS;; diff --git a/ompi/mpi/tool/cvar_handle_free.c b/ompi/mpi/tool/cvar_handle_free.c.in similarity index 72% rename from ompi/mpi/tool/cvar_handle_free.c rename to ompi/mpi/tool/cvar_handle_free.c.in index 7ffa6c4c30a..68080dc000f 100644 --- a/ompi/mpi/tool/cvar_handle_free.c +++ b/ompi/mpi/tool/cvar_handle_free.c.in @@ -16,14 +16,7 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_cvar_handle_free = PMPI_T_cvar_handle_free -#endif -#define MPI_T_cvar_handle_free PMPI_T_cvar_handle_free -#endif - -int MPI_T_cvar_handle_free (MPI_T_cvar_handle *handle) +PROTOTYPE ERROR_CLASS cvar_handle_free (CVAR_HANDLE_INOUT handle) { if (!mpit_is_initialized ()) { return MPI_T_ERR_NOT_INITIALIZED; diff --git a/ompi/mpi/tool/cvar_read.c b/ompi/mpi/tool/cvar_read.c.in similarity index 92% rename from ompi/mpi/tool/cvar_read.c rename to ompi/mpi/tool/cvar_read.c.in index 90b39d47a22..af3eba9e07e 100644 --- a/ompi/mpi/tool/cvar_read.c +++ b/ompi/mpi/tool/cvar_read.c.in @@ -21,14 +21,7 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_cvar_read = PMPI_T_cvar_read -#endif -#define MPI_T_cvar_read PMPI_T_cvar_read -#endif - -int MPI_T_cvar_read (MPI_T_cvar_handle handle, void *buf) +PROTOTYPE ERROR_CLASS cvar_read (CVAR_HANDLE handle, VOID buf) { const mca_base_var_storage_t *value = NULL; int rc = MPI_SUCCESS; diff --git a/ompi/mpi/tool/cvar_write.c b/ompi/mpi/tool/cvar_write.c.in similarity index 87% rename from ompi/mpi/tool/cvar_write.c rename to ompi/mpi/tool/cvar_write.c.in index 5dadb1e48e5..956c6916579 100644 --- a/ompi/mpi/tool/cvar_write.c +++ b/ompi/mpi/tool/cvar_write.c.in @@ -20,14 +20,7 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_cvar_write = PMPI_T_cvar_write -#endif -#define MPI_T_cvar_write PMPI_T_cvar_write -#endif - -int MPI_T_cvar_write (MPI_T_cvar_handle handle, const void *buf) +PROTOTYPE ERROR_CLASS cvar_write (CVAR_HANDLE handle, VOID_CONST buf) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/tool/enum_get_info.c b/ompi/mpi/tool/enum_get_info.c.in similarity index 82% rename from ompi/mpi/tool/enum_get_info.c rename to ompi/mpi/tool/enum_get_info.c.in index 59de6eebe80..d16d470ac7e 100644 --- a/ompi/mpi/tool/enum_get_info.c +++ b/ompi/mpi/tool/enum_get_info.c.in @@ -20,14 +20,7 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_enum_get_info = PMPI_T_enum_get_info -#endif -#define MPI_T_enum_get_info PMPI_T_enum_get_info -#endif - -int MPI_T_enum_get_info(MPI_T_enum enumtype, int *num, char *name, int *name_len) +PROTOTYPE ERROR_CLASS enum_get_info(T_ENUM enumtype, INT_OUT num, STRING_OUT name, INT_OUT name_len) { int rc = MPI_SUCCESS; diff --git a/ompi/mpi/tool/enum_get_item.c b/ompi/mpi/tool/enum_get_item.c.in similarity index 82% rename from ompi/mpi/tool/enum_get_item.c rename to ompi/mpi/tool/enum_get_item.c.in index 0a6e23c806e..8c9e120a63c 100644 --- a/ompi/mpi/tool/enum_get_item.c +++ b/ompi/mpi/tool/enum_get_item.c.in @@ -20,15 +20,8 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_enum_get_item = PMPI_T_enum_get_item -#endif -#define MPI_T_enum_get_item PMPI_T_enum_get_item -#endif - -int MPI_T_enum_get_item(MPI_T_enum enumtype, int index, int *value, char *name, - int *name_len) +PROTOTYPE ERROR_CLASS enum_get_item(T_ENUM enumtype, INT index, INT_OUT value, STRING_OUT name, + INT_OUT name_len) { const char *tmp; int rc, count; diff --git a/ompi/mpi/tool/event_callback_get_info.c b/ompi/mpi/tool/event_callback_get_info.c deleted file mode 100644 index 92519a13aac..00000000000 --- a/ompi/mpi/tool/event_callback_get_info.c +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ -/* - * Copyright (c) 2012-2018 Los Alamos National Security, LLC. All rights - * reserved. - * Copyright (c) 2014 Cisco Systems, Inc. All rights reserved. - * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2019 Google, LLC. All rights reserved. - * Copyright (c) 2019-2025 Triad National Security, LLC. All rights - * reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - - -#include "ompi_config.h" -#include "ompi/mpi/tool/mpit-internal.h" - -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_event_callback_get_info = PMPI_T_event_callback_get_info -#endif -#define MPI_T_event_callback_get_info PMPI_T_event_callback_get_info -#endif - - -int MPI_T_event_callback_get_info (MPI_T_event_registration event_registration, - MPI_T_cb_safety cb_safety, MPI_Info *info_used) -{ - if (!mpit_is_initialized ()) { - return MPI_T_ERR_NOT_INITIALIZED; - } - - return MPI_T_ERR_INVALID_HANDLE; -} - diff --git a/ompi/mpi/tool/event_handle_set_info.c b/ompi/mpi/tool/event_callback_get_info.c.in similarity index 69% rename from ompi/mpi/tool/event_handle_set_info.c rename to ompi/mpi/tool/event_callback_get_info.c.in index 0c35e27d2a1..83bb3a4aa0f 100644 --- a/ompi/mpi/tool/event_handle_set_info.c +++ b/ompi/mpi/tool/event_callback_get_info.c.in @@ -14,19 +14,13 @@ * $HEADER$ */ -#include "ompi_config.h" +#include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_event_handle_set_info = PMPI_T_event_handle_set_info -#endif -#define MPI_T_event_handle_set_info PMPI_T_event_handle_set_info -#endif -int MPI_T_event_handle_set_info (MPI_T_event_registration event_registration, - MPI_Info info) +PROTOTYPE ERROR_CLASS event_callback_get_info (EVENT_REGISTRATION event_registration, + CB_SAFETY cb_safety, INFO_OUT info_used) { if (!mpit_is_initialized ()) { return MPI_T_ERR_NOT_INITIALIZED; @@ -34,3 +28,4 @@ int MPI_T_event_handle_set_info (MPI_T_event_registration event_registration, return MPI_T_ERR_INVALID_HANDLE; } + diff --git a/ompi/mpi/tool/event_handle_get_info.c b/ompi/mpi/tool/event_callback_set_info.c.in similarity index 68% rename from ompi/mpi/tool/event_handle_get_info.c rename to ompi/mpi/tool/event_callback_set_info.c.in index 2009d67b1ef..e69bd1f8430 100644 --- a/ompi/mpi/tool/event_handle_get_info.c +++ b/ompi/mpi/tool/event_callback_set_info.c.in @@ -18,15 +18,8 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_event_handle_get_info = PMPI_T_event_handle_get_info -#endif -#define MPI_T_event_handle_get_info PMPI_T_event_handle_get_info -#endif - -int MPI_T_event_handle_get_info (MPI_T_event_registration event_registration, - MPI_Info *info_used) +PROTOTYPE ERROR_CLASS event_callback_set_info (EVENT_REGISTRATION event_registration, + CB_SAFETY cb_safety, INFO info) { if (!mpit_is_initialized ()) { return MPI_T_ERR_NOT_INITIALIZED; diff --git a/ompi/mpi/tool/event_read.c b/ompi/mpi/tool/event_copy.c.in similarity index 73% rename from ompi/mpi/tool/event_read.c rename to ompi/mpi/tool/event_copy.c.in index e16d3e33f50..e8af406ba64 100644 --- a/ompi/mpi/tool/event_read.c +++ b/ompi/mpi/tool/event_copy.c.in @@ -17,14 +17,7 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_event_read = PMPI_T_event_read -#endif -#define MPI_T_event_read PMPI_T_event_read -#endif - -int MPI_T_event_read (MPI_T_event_instance event, int element_index, void *buffer) +PROTOTYPE ERROR_CLASS event_copy (EVENT_INSTANCE event, VOID buffer) { if (!mpit_is_initialized ()) { return MPI_T_ERR_NOT_INITIALIZED; diff --git a/ompi/mpi/tool/event_get_index.c b/ompi/mpi/tool/event_get_index.c index 0c0ec50cf39..1ff9c6800b1 100644 --- a/ompi/mpi/tool/event_get_index.c +++ b/ompi/mpi/tool/event_get_index.c @@ -15,6 +15,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/event_get_info.c b/ompi/mpi/tool/event_get_info.c deleted file mode 100644 index f7fd9134379..00000000000 --- a/ompi/mpi/tool/event_get_info.c +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ -/* - * Copyright (c) 2012-2018 Los Alamos National Security, LLC. All rights - * reserved. - * Copyright (c) 2014 Cisco Systems, Inc. All rights reserved. - * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2018-2025 Triad National Security, LLC. All rights - * reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" - -#include "ompi/mpi/tool/mpit-internal.h" - -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_event_get_info = PMPI_T_event_get_info -#endif -#define MPI_T_event_get_info PMPI_T_event_get_info -#endif - -int MPI_T_event_get_info (int event_index, char *name, int *name_len, - int *verbosity, MPI_Datatype *array_of_datatypes, - MPI_Aint *array_of_displacements, int *num_elements, - MPI_T_enum *enumtype, MPI_Info *info, - char *desc, int *desc_len, int *bind) -{ - if (!mpit_is_initialized ()) { - return MPI_T_ERR_NOT_INITIALIZED; - } - - return MPI_T_ERR_INVALID_INDEX; -} diff --git a/ompi/mpi/tool/event_handle_free.c b/ompi/mpi/tool/event_get_info.c.in similarity index 57% rename from ompi/mpi/tool/event_handle_free.c rename to ompi/mpi/tool/event_get_info.c.in index 7fb756b3938..8d57556d453 100644 --- a/ompi/mpi/tool/event_handle_free.c +++ b/ompi/mpi/tool/event_get_info.c.in @@ -17,20 +17,15 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_event_handle_free = PMPI_T_event_handle_free -#endif -#define MPI_T_event_handle_free PMPI_T_event_handle_free -#endif - -int MPI_T_event_handle_free (MPI_T_event_registration event_registration, - void *user_data, - MPI_T_event_free_cb_function free_cb_function) +PROTOTYPE ERROR_CLASS event_get_info (INT event_index, STRING_OUT name, INT_OUT name_len, + INT_OUT verbosity, DATATYPE_OUT array_of_datatypes, + AINT_OUT array_of_displacements, INT_OUT num_elements, + T_ENUM_OUT enumtype, INFO_OUT info, + STRING_OUT desc, INT_OUT desc_len, BIND_OUT bind) { if (!mpit_is_initialized ()) { return MPI_T_ERR_NOT_INITIALIZED; } - return MPI_T_ERR_INVALID_HANDLE; + return MPI_T_ERR_INVALID_INDEX; } diff --git a/ompi/mpi/tool/event_get_num.c b/ompi/mpi/tool/event_get_num.c index 0b27caa60fc..b91912d2dcd 100644 --- a/ompi/mpi/tool/event_get_num.c +++ b/ompi/mpi/tool/event_get_num.c @@ -15,6 +15,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/event_get_source.c b/ompi/mpi/tool/event_get_source.c.in similarity index 71% rename from ompi/mpi/tool/event_get_source.c rename to ompi/mpi/tool/event_get_source.c.in index 7ec12af587e..f7e2d41fb04 100644 --- a/ompi/mpi/tool/event_get_source.c +++ b/ompi/mpi/tool/event_get_source.c.in @@ -14,17 +14,9 @@ */ #include "ompi_config.h" - #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_event_get_source = PMPI_T_event_get_source -#endif -#define MPI_T_event_get_source PMPI_T_event_get_source -#endif - -int MPI_T_event_get_source (MPI_T_event_instance event, int *source_index) +PROTOTYPE ERROR_CLASS event_get_source (EVENT_INSTANCE event, INT_OUT source_index) { if (!mpit_is_initialized ()) { return MPI_T_ERR_NOT_INITIALIZED; diff --git a/ompi/mpi/tool/event_get_timestamp.c b/ompi/mpi/tool/event_get_timestamp.c.in similarity index 70% rename from ompi/mpi/tool/event_get_timestamp.c rename to ompi/mpi/tool/event_get_timestamp.c.in index 34fd49d5075..03238b7eace 100644 --- a/ompi/mpi/tool/event_get_timestamp.c +++ b/ompi/mpi/tool/event_get_timestamp.c.in @@ -14,17 +14,9 @@ */ #include "ompi_config.h" - #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_event_get_timestamp = PMPI_T_event_get_timestamp -#endif -#define MPI_T_event_get_timestamp PMPI_T_event_get_timestamp -#endif - -int MPI_T_event_get_timestamp (MPI_T_event_instance event, MPI_Count *event_time) +PROTOTYPE ERROR_CLASS event_get_timestamp (EVENT_INSTANCE event,ELEMENT_COUNT event_time) { if (!mpit_is_initialized ()) { return MPI_T_ERR_NOT_INITIALIZED; diff --git a/ompi/mpi/tool/event_handle_alloc.c b/ompi/mpi/tool/event_handle_alloc.c.in similarity index 65% rename from ompi/mpi/tool/event_handle_alloc.c rename to ompi/mpi/tool/event_handle_alloc.c.in index 0768cf2f879..ac742b59789 100644 --- a/ompi/mpi/tool/event_handle_alloc.c +++ b/ompi/mpi/tool/event_handle_alloc.c.in @@ -17,15 +17,8 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_event_handle_alloc = PMPI_T_event_handle_alloc -#endif -#define MPI_T_event_handle_alloc PMPI_T_event_handle_alloc -#endif - -int MPI_T_event_handle_alloc (int event_index, void *obj_handle, MPI_Info info, - MPI_T_event_registration *event_registration) +PROTOTYPE ERROR_CLASS event_handle_alloc (INT event_index, VOID obj_handle, INFO info, + EVENT_REGISTRATION_OUT event_registration) { if (!mpit_is_initialized ()) { return MPI_T_ERR_NOT_INITIALIZED; diff --git a/ompi/mpi/tool/event_handle_free.c.in b/ompi/mpi/tool/event_handle_free.c.in new file mode 100644 index 00000000000..0e9b4382de2 --- /dev/null +++ b/ompi/mpi/tool/event_handle_free.c.in @@ -0,0 +1,29 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ +/* + * Copyright (c) 2012-2018 Los Alamos National Security, LLC. All rights + * reserved. + * Copyright (c) 2014 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2017 IBM Corporation. All rights reserved. + * Copyright (c) 2018-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/tool/mpit-internal.h" + +PROTOTYPE ERROR_CLASS event_handle_free (EVENT_REGISTRATION event_registration, + VOID user_data, + EVENT_FREE_CB_FUNCTION free_cb_function) +{ + if (!mpit_is_initialized ()) { + return MPI_T_ERR_NOT_INITIALIZED; + } + + return MPI_T_ERR_INVALID_HANDLE; +} diff --git a/ompi/mpi/tool/event_callback_set_info.c b/ompi/mpi/tool/event_handle_get_info.c.in similarity index 66% rename from ompi/mpi/tool/event_callback_set_info.c rename to ompi/mpi/tool/event_handle_get_info.c.in index 5f78d2c92de..f6ca3db23f0 100644 --- a/ompi/mpi/tool/event_callback_set_info.c +++ b/ompi/mpi/tool/event_handle_get_info.c.in @@ -18,15 +18,8 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_event_callback_set_info = PMPI_T_event_callback_set_info -#endif -#define MPI_T_event_callback_set_info PMPI_T_event_callback_set_info -#endif - -int MPI_T_event_callback_set_info (MPI_T_event_registration event_registration, - MPI_T_cb_safety cb_safety, MPI_Info info) +PROTOTYPE ERROR_CLASS event_handle_get_info(EVENT_REGISTRATION event_registration, + INFO_OUT info_used) { if (!mpit_is_initialized ()) { return MPI_T_ERR_NOT_INITIALIZED; diff --git a/ompi/mpi/tool/event_handle_set_info.c.in b/ompi/mpi/tool/event_handle_set_info.c.in new file mode 100644 index 00000000000..1556e9be8e8 --- /dev/null +++ b/ompi/mpi/tool/event_handle_set_info.c.in @@ -0,0 +1,29 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ +/* + * Copyright (c) 2012-2018 Los Alamos National Security, LLC. All rights + * reserved. + * Copyright (c) 2014 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2017 IBM Corporation. All rights reserved. + * Copyright (c) 2019 Google, LLC. All rights reserved. + * Copyright (c) 2019-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/tool/mpit-internal.h" + +PROTOTYPE ERROR_CLASS event_handle_set_info(EVENT_REGISTRATION event_registration, + INFO info) +{ + if (!mpit_is_initialized ()) { + return MPI_T_ERR_NOT_INITIALIZED; + } + + return MPI_T_ERR_INVALID_HANDLE; +} diff --git a/ompi/mpi/tool/event_read.c.in b/ompi/mpi/tool/event_read.c.in new file mode 100644 index 00000000000..306b2eb8f4a --- /dev/null +++ b/ompi/mpi/tool/event_read.c.in @@ -0,0 +1,26 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ +/* + * Copyright (c) 2012-2018 Los Alamos National Security, LLC. All rights + * reserved. + * Copyright (c) 2014 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2017 IBM Corporation. All rights reserved. + * Copyright (c) 2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" +#include "ompi/mpi/tool/mpit-internal.h" + +PROTOTYPE ERROR_CLASS event_read (EVENT_INSTANCE event, INT element_index, BUFFER_OUT buffer) +{ + if (!mpit_is_initialized ()) { + return MPI_T_ERR_NOT_INITIALIZED; + } + + return MPI_T_ERR_INVALID_HANDLE; +} diff --git a/ompi/mpi/tool/event_register_callback.c b/ompi/mpi/tool/event_register_callback.c deleted file mode 100644 index 4550fabe520..00000000000 --- a/ompi/mpi/tool/event_register_callback.c +++ /dev/null @@ -1,36 +0,0 @@ -/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ -/* - * Copyright (c) 2012-2018 Los Alamos National Security, LLC. All rights - * reserved. - * Copyright (c) 2014 Cisco Systems, Inc. All rights reserved. - * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2018-2025 Triad National Security, LLC. All rights - * reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" - -#include "ompi/mpi/tool/mpit-internal.h" - -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_event_register_callback = PMPI_T_event_register_callback -#endif -#define MPI_T_event_register_callback PMPI_T_event_register_callback -#endif - -int MPI_T_event_register_callback (MPI_T_event_registration event_registration, - MPI_T_cb_safety cb_safety, MPI_Info info, void *user_data, - MPI_T_event_cb_function event_cb_function) -{ - if (!mpit_is_initialized ()) { - return MPI_T_ERR_NOT_INITIALIZED; - } - - return MPI_T_ERR_INVALID_HANDLE; -} diff --git a/ompi/mpi/tool/event_register_callback.c.in b/ompi/mpi/tool/event_register_callback.c.in new file mode 100644 index 00000000000..1e44dc6bdee --- /dev/null +++ b/ompi/mpi/tool/event_register_callback.c.in @@ -0,0 +1,29 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ +/* + * Copyright (c) 2012-2018 Los Alamos National Security, LLC. All rights + * reserved. + * Copyright (c) 2014 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2017 IBM Corporation. All rights reserved. + * Copyright (c) 2018-2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/tool/mpit-internal.h" + +PROTOTYPE ERROR_CLASS event_register_callback (EVENT_REGISTRATION event_registration, + CB_SAFETY cb_safety, INFO info, VOID user_data, + EVENT_CB_FUNCTION event_cb_function) +{ + if (!mpit_is_initialized ()) { + return MPI_T_ERR_NOT_INITIALIZED; + } + + return MPI_T_ERR_INVALID_HANDLE; +} diff --git a/ompi/mpi/tool/event_set_dropped_handler.c b/ompi/mpi/tool/event_set_dropped_handler.c deleted file mode 100644 index fe15695abb8..00000000000 --- a/ompi/mpi/tool/event_set_dropped_handler.c +++ /dev/null @@ -1,35 +0,0 @@ -/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ -/* - * Copyright (c) 2012-2018 Los Alamos National Security, LLC. All rights - * reserved. - * Copyright (c) 2014 Cisco Systems, Inc. All rights reserved. - * Copyright (c) 2017 IBM Corporation. All rights reserved. - * Copyright (c) 2025 Triad National Security, LLC. All rights - * reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" - -#include "ompi/mpi/tool/mpit-internal.h" - -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_event_set_dropped_handler = PMPI_T_event_set_dropped_handler -#endif -#define MPI_T_event_set_dropped_handler PMPI_T_event_set_dropped_handler -#endif - -int MPI_T_event_set_dropped_handler (MPI_T_event_registration handle, MPI_T_event_dropped_cb_function dropped_cb_function) - -{ - if (!mpit_is_initialized ()) { - return MPI_T_ERR_NOT_INITIALIZED; - } - - return MPI_T_ERR_INVALID_HANDLE; -} diff --git a/ompi/mpi/tool/event_copy.c b/ompi/mpi/tool/event_set_dropped_handler.c.in similarity index 74% rename from ompi/mpi/tool/event_copy.c rename to ompi/mpi/tool/event_set_dropped_handler.c.in index f0c64bad822..f9cbe23330d 100644 --- a/ompi/mpi/tool/event_copy.c +++ b/ompi/mpi/tool/event_set_dropped_handler.c.in @@ -17,15 +17,8 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_event_copy = PMPI_T_event_copy -#endif -#define MPI_T_event_copy PMPI_T_event_copy -#endif +PROTOTYPE ERROR_CLASS event_set_dropped_handler(EVENT_REGISTRATION handle, EVENT_DROPPED_CB_FUNCTION dropped_cb_function) - -int MPI_T_event_copy (MPI_T_event_instance event, void *buffer) { if (!mpit_is_initialized ()) { return MPI_T_ERR_NOT_INITIALIZED; diff --git a/ompi/mpi/tool/finalize.c b/ompi/mpi/tool/finalize.c index 359468b494d..652c2c9f2f0 100644 --- a/ompi/mpi/tool/finalize.c +++ b/ompi/mpi/tool/finalize.c @@ -16,6 +16,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #include "ompi/runtime/ompi_info_support.h" #include "opal/include/opal/sys/atomic.h" diff --git a/ompi/mpi/tool/init_thread.c b/ompi/mpi/tool/init_thread.c index 9ef39846f38..d50dcde4e84 100644 --- a/ompi/mpi/tool/init_thread.c +++ b/ompi/mpi/tool/init_thread.c @@ -19,6 +19,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #include "ompi/runtime/ompi_info_support.h" #include "opal/include/opal/sys/atomic.h" diff --git a/ompi/mpi/tool/pvar_get_index.c b/ompi/mpi/tool/pvar_get_index.c index 4f7832c4b7c..048c7ee2a5f 100644 --- a/ompi/mpi/tool/pvar_get_index.c +++ b/ompi/mpi/tool/pvar_get_index.c @@ -19,6 +19,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/pvar_get_info.c b/ompi/mpi/tool/pvar_get_info.c.in similarity index 85% rename from ompi/mpi/tool/pvar_get_info.c rename to ompi/mpi/tool/pvar_get_info.c.in index 01ad175e2d6..5c6683bba53 100644 --- a/ompi/mpi/tool/pvar_get_info.c +++ b/ompi/mpi/tool/pvar_get_info.c.in @@ -20,17 +20,10 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_pvar_get_info = PMPI_T_pvar_get_info -#endif -#define MPI_T_pvar_get_info PMPI_T_pvar_get_info -#endif - -int MPI_T_pvar_get_info(int pvar_index, char *name, int *name_len, - int *verbosity, int *var_class, MPI_Datatype *datatype, - MPI_T_enum *enumtype, char *desc, int *desc_len, int *bind, - int *readonly, int *continuous, int *atomic) +PROTOTYPE ERROR_CLASS pvar_get_info(INT pvar_index, STRING_OUT name, INT_OUT name_len, + T_VERBOSITY_OUT verbosity, PVAR_CLASS_OUT var_class, DATATYPE_OUT datatype, + T_ENUM_OUT enumtype, STRING_OUT desc, INT_OUT desc_len, BIND_OUT bind, + INT_OUT readonly, INT_OUT continuous, INT_OUT atomic) { const mca_base_pvar_t *pvar; int ret; diff --git a/ompi/mpi/tool/pvar_get_num.c b/ompi/mpi/tool/pvar_get_num.c index 1e3fa0b1fb3..ee0294a3e2c 100644 --- a/ompi/mpi/tool/pvar_get_num.c +++ b/ompi/mpi/tool/pvar_get_num.c @@ -18,6 +18,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/pvar_handle_alloc.c b/ompi/mpi/tool/pvar_handle_alloc.c.in similarity index 85% rename from ompi/mpi/tool/pvar_handle_alloc.c rename to ompi/mpi/tool/pvar_handle_alloc.c.in index b37e05a57e2..2f8f8abd88b 100644 --- a/ompi/mpi/tool/pvar_handle_alloc.c +++ b/ompi/mpi/tool/pvar_handle_alloc.c.in @@ -22,15 +22,8 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_pvar_handle_alloc = PMPI_T_pvar_handle_alloc -#endif -#define MPI_T_pvar_handle_alloc PMPI_T_pvar_handle_alloc -#endif - -int MPI_T_pvar_handle_alloc(MPI_T_pvar_session session, int pvar_index, - void *obj_handle, MPI_T_pvar_handle *handle, int *count) +PROTOTYPE ERROR_CLASS pvar_handle_alloc(PVAR_SESSION session, INT pvar_index, + VOID obj_handle, PVAR_HANDLE_OUT handle, INT_OUT count) { const mca_base_pvar_t *pvar; int ret; diff --git a/ompi/mpi/tool/pvar_handle_free.c b/ompi/mpi/tool/pvar_handle_free.c.in similarity index 84% rename from ompi/mpi/tool/pvar_handle_free.c rename to ompi/mpi/tool/pvar_handle_free.c.in index 81ffa0707a9..377eb1ebb6a 100644 --- a/ompi/mpi/tool/pvar_handle_free.c +++ b/ompi/mpi/tool/pvar_handle_free.c.in @@ -20,14 +20,7 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_pvar_handle_free = PMPI_T_pvar_handle_free -#endif -#define MPI_T_pvar_handle_free PMPI_T_pvar_handle_free -#endif - -int MPI_T_pvar_handle_free(MPI_T_pvar_session session, MPI_T_pvar_handle *handle) +PROTOTYPE ERROR_CLASS pvar_handle_free(PVAR_SESSION session, PVAR_HANDLE_INOUT handle) { int ret = MPI_SUCCESS; diff --git a/ompi/mpi/tool/pvar_read.c b/ompi/mpi/tool/pvar_read.c.in similarity index 77% rename from ompi/mpi/tool/pvar_read.c rename to ompi/mpi/tool/pvar_read.c.in index 0c4e53653e0..cc9279800f8 100644 --- a/ompi/mpi/tool/pvar_read.c +++ b/ompi/mpi/tool/pvar_read.c.in @@ -17,15 +17,8 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_pvar_read = PMPI_T_pvar_read -#endif -#define MPI_T_pvar_read PMPI_T_pvar_read -#endif - -int MPI_T_pvar_read(MPI_T_pvar_session session, MPI_T_pvar_handle handle, - void* buf) +PROTOTYPE ERROR_CLASS pvar_read(PVAR_SESSION session, PVAR_HANDLE handle, + VOID buf) { int ret; diff --git a/ompi/mpi/tool/pvar_readreset.c b/ompi/mpi/tool/pvar_readreset.c.in similarity index 69% rename from ompi/mpi/tool/pvar_readreset.c rename to ompi/mpi/tool/pvar_readreset.c.in index 1567c4b1aef..996902ed99a 100644 --- a/ompi/mpi/tool/pvar_readreset.c +++ b/ompi/mpi/tool/pvar_readreset.c.in @@ -16,15 +16,8 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_pvar_readreset = PMPI_T_pvar_readreset -#endif -#define MPI_T_pvar_readreset PMPI_T_pvar_readreset -#endif - -int MPI_T_pvar_readreset(MPI_T_pvar_session session, MPI_T_pvar_handle handle, - void *buf) +PROTOTYPE ERROR_CLASS pvar_readreset(PVAR_SESSION session, PVAR_HANDLE handle, + VOID buf) { if (!mpit_is_initialized ()) { return MPI_T_ERR_NOT_INITIALIZED; diff --git a/ompi/mpi/tool/pvar_reset.c b/ompi/mpi/tool/pvar_reset.c.in similarity index 84% rename from ompi/mpi/tool/pvar_reset.c rename to ompi/mpi/tool/pvar_reset.c.in index a6f59d5405d..e145f77c847 100644 --- a/ompi/mpi/tool/pvar_reset.c +++ b/ompi/mpi/tool/pvar_reset.c.in @@ -17,14 +17,7 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_pvar_reset = PMPI_T_pvar_reset -#endif -#define MPI_T_pvar_reset PMPI_T_pvar_reset -#endif - -int MPI_T_pvar_reset(MPI_T_pvar_session session, MPI_T_pvar_handle handle) +PROTOTYPE ERROR_CLASS pvar_reset(PVAR_SESSION session, PVAR_HANDLE handle) { int ret = MPI_SUCCESS; diff --git a/ompi/mpi/tool/pvar_session_create.c b/ompi/mpi/tool/pvar_session_create.c.in similarity index 80% rename from ompi/mpi/tool/pvar_session_create.c rename to ompi/mpi/tool/pvar_session_create.c.in index 6c153bebb8f..763837db8e9 100644 --- a/ompi/mpi/tool/pvar_session_create.c +++ b/ompi/mpi/tool/pvar_session_create.c.in @@ -20,14 +20,7 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_pvar_session_create = PMPI_T_pvar_session_create -#endif -#define MPI_T_pvar_session_create PMPI_T_pvar_session_create -#endif - -int MPI_T_pvar_session_create(MPI_T_pvar_session *session) +PROTOTYPE ERROR_CLASS pvar_session_create(PVAR_SESSION_OUT session) { int ret = MPI_SUCCESS; diff --git a/ompi/mpi/tool/pvar_session_free.c b/ompi/mpi/tool/pvar_session_free.c.in similarity index 77% rename from ompi/mpi/tool/pvar_session_free.c rename to ompi/mpi/tool/pvar_session_free.c.in index 459489d6a8b..8042bd8cf34 100644 --- a/ompi/mpi/tool/pvar_session_free.c +++ b/ompi/mpi/tool/pvar_session_free.c.in @@ -16,14 +16,7 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_pvar_session_free = PMPI_T_pvar_session_free -#endif -#define MPI_T_pvar_session_free PMPI_T_pvar_session_free -#endif - -int MPI_T_pvar_session_free(MPI_T_pvar_session *session) +PROTOTYPE ERROR_CLASS pvar_session_free(PVAR_SESSION_INOUT session) { int ret = MPI_SUCCESS; diff --git a/ompi/mpi/tool/pvar_start.c b/ompi/mpi/tool/pvar_start.c.in similarity index 86% rename from ompi/mpi/tool/pvar_start.c rename to ompi/mpi/tool/pvar_start.c.in index ecf99372c08..52801a657bf 100644 --- a/ompi/mpi/tool/pvar_start.c +++ b/ompi/mpi/tool/pvar_start.c.in @@ -17,13 +17,6 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_pvar_start = PMPI_T_pvar_start -#endif -#define MPI_T_pvar_start PMPI_T_pvar_start -#endif - static int pvar_handle_start (mca_base_pvar_handle_t *handle) { if (OPAL_SUCCESS != mca_base_pvar_handle_start (handle)) { @@ -33,7 +26,7 @@ static int pvar_handle_start (mca_base_pvar_handle_t *handle) return MPI_SUCCESS; } -int MPI_T_pvar_start(MPI_T_pvar_session session, MPI_T_pvar_handle handle) +PROTOTYPE ERROR_CLASS pvar_start(PVAR_SESSION session, PVAR_HANDLE handle) { int ret = MPI_SUCCESS; diff --git a/ompi/mpi/tool/pvar_stop.c b/ompi/mpi/tool/pvar_stop.c.in similarity index 87% rename from ompi/mpi/tool/pvar_stop.c rename to ompi/mpi/tool/pvar_stop.c.in index 349e6f2d0ec..935f795fba2 100644 --- a/ompi/mpi/tool/pvar_stop.c +++ b/ompi/mpi/tool/pvar_stop.c.in @@ -17,13 +17,6 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_pvar_stop = PMPI_T_pvar_stop -#endif -#define MPI_T_pvar_stop PMPI_T_pvar_stop -#endif - static int pvar_handle_stop (mca_base_pvar_handle_t *handle) { if (OPAL_SUCCESS != mca_base_pvar_handle_stop (handle)) { @@ -33,7 +26,7 @@ static int pvar_handle_stop (mca_base_pvar_handle_t *handle) return MPI_SUCCESS; } -int MPI_T_pvar_stop(MPI_T_pvar_session session, MPI_T_pvar_handle handle) +PROTOTYPE ERROR_CLASS pvar_stop(PVAR_SESSION session, PVAR_HANDLE handle) { int ret = MPI_SUCCESS; diff --git a/ompi/mpi/tool/pvar_write.c b/ompi/mpi/tool/pvar_write.c.in similarity index 77% rename from ompi/mpi/tool/pvar_write.c rename to ompi/mpi/tool/pvar_write.c.in index 4bd3f8d75e1..9d6132d6d84 100644 --- a/ompi/mpi/tool/pvar_write.c +++ b/ompi/mpi/tool/pvar_write.c.in @@ -17,15 +17,8 @@ #include "ompi/mpi/tool/mpit-internal.h" -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_pvar_write = PMPI_T_pvar_write -#endif -#define MPI_T_pvar_write PMPI_T_pvar_write -#endif - -int MPI_T_pvar_write(MPI_T_pvar_session session, MPI_T_pvar_handle handle, - const void* buf) +PROTOTYPE ERROR_CLASS pvar_write(PVAR_SESSION session, PVAR_HANDLE handle, + VOID_CONST buf) { int ret; diff --git a/ompi/mpi/tool/source_get_info.c b/ompi/mpi/tool/source_get_info.c deleted file mode 100644 index 94017246fa2..00000000000 --- a/ompi/mpi/tool/source_get_info.c +++ /dev/null @@ -1,34 +0,0 @@ -/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ -/* - * Copyright (c) 2012-2018 Los Alamos National Security, LLC. All rights - * reserved. - * Copyright (c) 2014 Cisco Systems, Inc. All rights reserved. - * Copyright (c) 2025 Triad National Security, LLC. All rights - * reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" - -#include "ompi/mpi/tool/mpit-internal.h" - -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_T_source_get_info = PMPI_T_source_get_info -#endif -#define MPI_T_source_get_info PMPI_T_source_get_info -#endif - -int MPI_T_source_get_info (int source_index, char *name, int *name_len, char *desc, int *desc_len, MPI_T_source_order *ordering, - MPI_Count *ticks_per_second, MPI_Count *max_timestamp, MPI_Info *info) -{ - if (!mpit_is_initialized ()) { - return MPI_T_ERR_NOT_INITIALIZED; - } - - return MPI_T_ERR_INVALID_INDEX; -} diff --git a/ompi/mpi/tool/source_get_info.c.in b/ompi/mpi/tool/source_get_info.c.in new file mode 100644 index 00000000000..d929e826374 --- /dev/null +++ b/ompi/mpi/tool/source_get_info.c.in @@ -0,0 +1,28 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ +/* + * Copyright (c) 2012-2018 Los Alamos National Security, LLC. All rights + * reserved. + * Copyright (c) 2014 Cisco Systems, Inc. All rights reserved. + * Copyright (c) 2025 Triad National Security, LLC. All rights + * reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/tool/mpit-internal.h" + +PROTOTYPE ERROR_CLASS source_get_info (INT source_index, STRING_OUT name, INT_OUT name_len, STRING_OUT desc, INT_OUT desc_len, + SOURCE_ORDER_OUT ordering, ELEMENT_COUNT ticks_per_second, ELEMENT_COUNT max_ticks, + INFO_OUT info) +{ + if (!mpit_is_initialized ()) { + return MPI_T_ERR_NOT_INITIALIZED; + } + + return MPI_T_ERR_INVALID_INDEX; +} diff --git a/ompi/mpi/tool/source_get_num.c b/ompi/mpi/tool/source_get_num.c index 6b31862ff27..2ae41ee67a1 100644 --- a/ompi/mpi/tool/source_get_num.c +++ b/ompi/mpi/tool/source_get_num.c @@ -15,6 +15,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/mpi/tool/source_get_timestamp.c b/ompi/mpi/tool/source_get_timestamp.c index 02a4303d286..9d94a6b4cd7 100644 --- a/ompi/mpi/tool/source_get_timestamp.c +++ b/ompi/mpi/tool/source_get_timestamp.c @@ -15,6 +15,9 @@ #include "ompi_config.h" #include "ompi/mpi/tool/mpit-internal.h" +#ifdef OMPI_NO_MPI_PROTOTYPES +#include "ompi/mpi/c/abi.h" +#endif #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS diff --git a/ompi/op/op.c b/ompi/op/op.c index 11064ec6f59..88ec32fff51 100644 --- a/ompi/op/op.c +++ b/ompi/op/op.c @@ -461,6 +461,7 @@ static void ompi_op_construct(ompi_op_t *new_op) new_op->op_type = OMPI_OP_NUM_OF_TYPES; new_op->o_flags = 0; new_op->o_name[0] = '\0'; + new_op->datatype_converter = NULL; /* assign entry in fortran <-> c translation array */ diff --git a/ompi/op/op.h b/ompi/op/op.h index bf895d7c6f3..a7e15b2c69e 100644 --- a/ompi/op/op.h +++ b/ompi/op/op.h @@ -81,6 +81,14 @@ typedef void (ompi_op_java_handler_fn_t)(const void *, void *, int *, int baseType, void *jnienv, void *object); +/* + * MPI-5 ABI: Typedef for MPI-5 ABI datatype converter function to use + * to convert from the OMPI internal datatype to the MPI-5 + * variant when invoking a user defined op. + */ + +typedef ompi_datatype_t * (*ompi_op_type_convert_to_abi_fn_t)(ompi_datatype_t *); + /* * Flags for MPI_Op */ @@ -175,6 +183,7 @@ struct ompi_op_t { /** 3-buffer functions, which is only for intrinsic ops. No need for the C/C++/Fortran user-defined functions. */ ompi_op_base_op_3buff_fns_t o_3buff_intrinsic; + ompi_op_type_convert_to_abi_fn_t datatype_converter; }; /** @@ -601,6 +610,12 @@ static inline void ompi_op_reduce(ompi_op_t * op, const void *source, op->o_func.java_data.object); return; } + /* + * MPI-5 ABI: see if we need to translate the datatype + */ + if(NULL != op->datatype_converter){ + dtype = op->datatype_converter(dtype); + } if (0 == (op->o_flags & OMPI_OP_FLAGS_BIGCOUNT)) { op->o_func.c_fn(source, target, &count, &dtype); } else { From f859c6083aef3bb562e5aac146104e9f31c84ebf Mon Sep 17 00:00:00 2001 From: Howard Pritchard Date: Fri, 7 Nov 2025 09:36:44 -0700 Subject: [PATCH 5/5] REMOVE ME: patch the coll libnbc to free data arrays irrespective of types of datatyps feed into non-blocking/persistent alltoallw. We'll replace this with something better in a separate PR. Signed-off-by: Howard Pritchard --- ompi/mca/coll/libnbc/coll_libnbc.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/ompi/mca/coll/libnbc/coll_libnbc.h b/ompi/mca/coll/libnbc/coll_libnbc.h index b68688002ef..a2f950ed34a 100644 --- a/ompi/mca/coll/libnbc/coll_libnbc.h +++ b/ompi/mca/coll/libnbc/coll_libnbc.h @@ -139,6 +139,9 @@ OBJ_CLASS_DECLARATION(ompi_coll_libnbc_request_t); typedef ompi_coll_libnbc_request_t NBC_Handle; +/* + * TODO: want to do something better about release arrays at some point + */ #define OMPI_COLL_LIBNBC_REQUEST_ALLOC(comm, persistent, req) \ do { \ opal_free_list_item_t *item; \ @@ -146,11 +149,27 @@ typedef ompi_coll_libnbc_request_t NBC_Handle; req = (ompi_coll_libnbc_request_t*) item; \ OMPI_REQUEST_INIT(&req->super.super, persistent); \ req->super.super.req_mpi_object.comm = comm; \ + ompi_coll_base_nbc_request_t *nbc_req = \ + (ompi_coll_base_nbc_request_t *)req; \ + for(int i = 0; i < OMPI_REQ_NB_RELEASE_ARRAYS; i++ ) { \ + nbc_req->data.release_arrays[i] = NULL; \ + } \ } while (0) +/* + * TODO: want to do something better about release arrays at some point + */ #define OMPI_COLL_LIBNBC_REQUEST_RETURN(req) \ do { \ OMPI_REQUEST_FINI(&(req)->super.super); \ + ompi_coll_base_nbc_request_t *nbc_req = \ + (ompi_coll_base_nbc_request_t *)(req); \ + for(int i = 0; i < OMPI_REQ_NB_RELEASE_ARRAYS; i++ ) { \ + if (NULL != nbc_req->data.release_arrays[i]) { \ + free(nbc_req->data.release_arrays[i]); \ + nbc_req->data.release_arrays[i] = NULL; \ + } \ + } \ opal_free_list_return (&mca_coll_libnbc_component.requests, \ (opal_free_list_item_t*) (req)); \ } while (0)