Skip to content

ABI Change Wishlist

Ken Raffenetti edited this page May 2, 2023 · 16 revisions

Aggregation of changes to make if/when MPICH breaks ABI compatibility with previous versions

  • Update MPI_Status struct
    • Simplify count hi/lo and canceled
  • Increase MPI_MAX_INFO_VAL
    • Allow for more information in a single info hint, e.g. for RMA optimization
  • Remove (or do not provide by default) functions removed from the MPI Standard
    • e.g. MPI_ERRHANDLER_CREATE
  • Increase value of MPI_MAX_PORT_NAME (and other string max values)
  • Change values of MPI_STATUS_IGNORE and MPI_STATUSES_IGNORE
    • These constants are defined as (MPI_Status *)1, which causes recent compilers to generate a warning:

      /home/glci/petsc/src/sys/utils/mpits.c:125:14: warning: ‘MPI_Testall’ accessing 20 bytes in a region of size 0 [-Wstringop-overflow=] 125 | ierr = MPI_Testall(nsends,sendreqs,&sent,MPI_STATUSES_IGNORE);CHKERRMPI(ierr);

    • Today, if a user supplies NULL in the status argument, MPICH (correctly) considers it an error.
    • Option 1: Define to (MPI_Status *)0 or NULL. MPICH no longer throws an error on NULL.
    • Option 2: Use address of dummy struct. NULL is still considered an error by MPICH.
  • Remove MPIR_Topo_type name from enum containing MPI_GRAPH, MPI_CART, and MPI_DIST_GRAPH
    • The named enum in not defined by MPI and is not used in any API signature, internal or external. It is probably OK to remove it now, but we can be conservative and wait.
    • Other named enums that can be unnamed: MPIR_Win_flavor, MPIR_Win_model, MPIR_Combiner_enum, MPIR_T_verbosity_t, MPIR_T_bind_t, MPIR_T_scope_t, MPIR_T_pvar_class_t
  • Remove (or standardize) MPI_AINT_FMT_DEC_SPEC and MPI_AINT_FMT_HEX_SPEC. These are not defined by MPI and should not use MPI_ namespace. That or we can just standardize them in the forum 😄.