-
Notifications
You must be signed in to change notification settings - Fork 280
ABI Change Wishlist
Rob Latham edited this page Oct 18, 2024
·
16 revisions
- 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
- e.g.
- Increase value of
MPI_MAX_PORT_NAME
(and other string max values) - Change values of
MPI_STATUS_IGNORE
andMPI_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
orNULL
. MPICH no longer throws an error onNULL
. - Option 2: Use address of dummy struct.
NULL
is still considered an error by MPICH.
- These constants are defined as
- Remove
MPIR_Topo_type
name from enum containingMPI_GRAPH
,MPI_CART
, andMPI_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
andMPI_AINT_FMT_HEX_SPEC
. These are not defined by MPI and should not useMPI_
namespace. That or we can just standardize them in the forum 😄. - Remove
MPIIMPL_HAVE_*
feature advertisements. These can go inmpir_ext.h
instead. - We need a larger limit on the number of requests. Currently it limited by handle bits allocation, we use 2 bits for KIND, 4 bits for TYPE, 6 bits for VCI, 8 bits for BLOCK, 12 bits for INDEX... That limits 2^20 requests per vci. A 64 bit handle gives us much more room but would break ABI