Skip to content

ABI Change Wishlist

Ken Raffenetti edited this page Nov 22, 2021 · 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 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.