Skip to content

Ensure all symbols have a corresponding \*main macro #825

@devreal

Description

@devreal

Problem

When working on https://github.com/mpi-forum/mpi-standard/pull/954 I noticed that not all symbols used in \mpi*{} macros (e.g., \mpidtype, \error, etc) have a corresponding main definition (e.g., \mpidtypemain, \errormain, etc). Some usages of \mpifunc appear to include argument lists (boo!) and there is at least one typo (MPI_FNIALIZE) somewhere in the text. Some of the symbols are no longer part of the standard (C++ types) or are a combination of several symbols (MPI_(I)RSEND), so they should probably be set using the corresponding skip macros. That way they do not end up in the index.

This cleanup is needed to ensure proper use of hyperref as otherwise some links will point to the first page of the document.

Here is the list of symbols reported by hyperref to be without a corresponding *main macro:

  • MPI::F_COMPLEX32
  • MPI::F_COMPLEX16
  • MPI::F_COMPLEX8
  • MPI::F_COMPLEX4
  • MPI::REAL16
  • MPI::INTEGER16
  • MPI::LONG_LONG
  • MPI::_LONG_LONG
  • MPI::LONG_DOUBLE_COMPLEX
  • MPI::DOUBLE_COMPLEX
  • MPI::COMPLEX
  • MPI::BOOL
  • MPI_(I)RSEND
  • MPI_T_cb_safety
  • MPI_T_source_order
  • MPI_F08_status*
  • MPI_Fint*
  • TYPE(MPI_Status), DIMENSION(*)
  • MPI_Status*
  • TYPE(MPI_Win)
  • MPI_Win
  • TYPE(MPI_Session)
  • MPI_Session
  • TYPE(MPI_File)
  • MPI_File
  • TYPE(MPI_Request)
  • TYPE(MPI_Group)
  • TYPE(MPI_Op)
  • MPI_Op
  • TYPE(MPI_Info)
  • TYPE(MPI_Datatype)
  • TYPE(MPI_Errhandler)
  • MPI_Errhandler
  • MPI_INTEGER_KIND
  • MPI_COUNT_KIND
  • TYPE(MPI_Message)
  • MPI_Message
  • MPI_WIN_GET_ATTR(win, MPI_WIN_BASE, val,
  • MPI_COMM_GET_ATTR(MPI_COMM_WORLD, MPI_TAG_UB,0
  • MPI_F08_STATUSES_IGNORE
  • MPI_F08_STATUS_IGNORE
  • MPI_F_STATUSES_IGNORE
  • MPI_F_STATUS_IGNORE
  • MPI_F_SYNC_REG(buff)
  • MPI_F_SYNC_REG(bbbb)
  • MPI_F_SYNC_REG(buf)
  • MPI_Datatype
  • TYPE(MPI_Comm)
  • PMPI_ISEND
  • PMPI_WTIME
  • PMPI_WTICK
  • MPI_T_ENUM_NULL
  • PMPI_
  • MPI_OFFSET_KIND
  • MPI_FILE_NULL
  • MPI_TEST(request, flag, status)
  • MPI_WAIT(request, status)
  • MPI_CANCEL(request)
  • MPI_GREQUEST_COMPLETE(request)
  • MPI_REQUEST_FREE(request)
  • MPI_MODE_NOSUCCEED
  • MPI_MODE_NOPUT
  • MPI_MODE_NOSTORE
  • MPI_MODE_NOCHECK
  • MPI_WIN_START($outgroup_i$, 04
  • MPI_WIN_POST($ingroup_i$,
  • MPI_MODE_NOPRECEDE
  • MPI_REPLACE
  • MPI_Aint *
  • MPI_WIN_SHARED_QUERY_CPTR
  • MPI_WIN_ALLOCATE_SHARED_CPTR
  • MPI_WIN_ALLOCATE_CPTR
  • MPI_NO_OP
  • MPI_UNIVERSE_SIZE
  • MPI_ERRHANDLER_C2F
  • MPI_ERRHANDLER_F2C
  • MPI_INFO_C2F
  • MPI_INFO_F2C
  • MPI_Comm
  • MPI_Group
  • MPI_INIT_THREAD()
  • MPI_THREAD_MULTIPLE
  • MPI_THREAD_SERIALIZED
  • MPI_THREAD_FUNNELED
  • MPI_THREAD_SINGLE
  • mpiexec
  • MPI_Info
  • MPI_LASTUSEDCODE
  • MPI_ERR_WIN
  • MPI_ERR_UNSUPPORTED_OPERATION
  • MPI_ERR_UNSUPPORTED_DATAREP
  • MPI_ERR_TRUNCATE
  • MPI_ERR_TOPOLOGY
  • MPI_ERR_TAG
  • MPI_ERR_SIZE
  • MPI_ERR_SESSION
  • MPI_ERR_ROOT
  • MPI_ERR_RMA_SYNC
  • MPI_ERR_RMA_SHARED
  • MPI_ERR_RMA_RANGE
  • MPI_ERR_RMA_FLAVOR
  • MPI_ERR_RMA_CONFLICT
  • MPI_ERR_RMA_ATTACH
  • MPI_ERR_REQUEST
  • MPI_ERR_READ_ONLY
  • MPI_ERR_RANK
  • MPI_ERR_QUOTA
  • MPI_ERR_OP
  • MPI_ERR_NOT_SAME
  • MPI_ERR_NO_SPACE
  • MPI_ERR_LOCKTYPE
  • MPI_ERR_IO
  • MPI_ERR_INFO
  • MPI_ERR_GROUP
  • MPI_ERR_FILE_EXISTS
  • MPI_ERR_FILE
  • MPI_ERR_ERRHANDLER
  • MPI_ERR_DISP
  • MPI_ERR_DIMS
  • MPI_ERR_COUNT
  • MPI_ERR_COMM
  • MPI_ERR_BUFFER
  • MPI_ERR_BAD_FILE
  • MPI_ERR_ASSERT
  • MPI_ERR_ARG
  • MPI_ERR_OTHER
  • MPI_ERR_UNKNOWN
  • MPI_ERR_INTERN
  • MPI_ALLOC_MEM_CPTR
  • MPI_COMM_SPLIT(comm, color, key, comm_gra
  • MPI_GRAPH_MAP(comm, nnodes, index, edges,
  • MPI_GRAPH_CREATE(comm, nnodes, index, edg
  • MPI_COMM_SPLIT(comm, color, key, comm_new
  • MPI_CART_SUB(comm, remain_dims, comm_new)
  • MPI_COMM_SPLIT(comm, color, key, comm_car
  • MPI_CART_MAP(comm, ndims, dims, periods,
  • MPI_CART_CREATE(comm, ndims, dims, period
  • MPI_DIMS_CREATE(7, 3, dims)
  • MPI_DIMS_CREATE(6, 3, dims)
  • MPI_DIMS_CREATE(7, 2, dims)
  • MPI_DIMS_CREATE(6, 2, dims)
  • MPI_MAX_OBJECT_NAME
  • MPI_ADDRESS_KIND
  • MPI_INFO_NULL
  • MPI_COMM_SPLIT(comm, color, key, newcomm
  • MPI_COMM_CREATE(comm, group, newcomm)
  • MPI_OP_NULL
  • MPI_INTEGER16
  • MPI_ALLGATHER(...)
  • MPI_RECV(recvbuf, recvcount$cdot $n, re
  • MPI_PACK(inbuf, incount, datatype, outbuf
  • MPI_PACK_SIZE(incount, datatype, comm, si
  • MPI_RECV(buf, count, datatype, dest, t
  • MPI_RECV(buf, count, datatype, source,04
  • MPI_SEND(buf, count, datatype, dest, t
  • MPI_SEND(buf, count, datatype, ...)
  • MPI_TYPE_CONTIGUOUS(2, type1, type2)
  • MPI_TYPE_CREATE_RESIZED(MPI_INT, -3, 9, t
  • MPI_TYPE_CREATE_STRUCT(count, B, D, T,04
  • MPI_TYPE_CREATE_HINDEXED(count, B, D, old
  • MPI_TYPE_INDEXED(count, B, D, oldtype,04
  • MPI_TYPE_VECTOR(count, blocklength, stride,
  • MPI_TYPE_INDEXED(2, B, D, oldtype, new
  • MPI_TYPE_VECTOR(1, count, n, oldtype,
  • MPI_TYPE_VECTOR(count, 1, 1, oldtype,
  • MPI_TYPE_CONTIGUOUS(count, oldtype, newtype
  • MPI_TYPE_VECTOR(3, 1, -2, oldtype, new
  • MPI_TYPE_VECTOR(2, 3, 4, oldtype, newt
  • MPI_RECV(buf, 1, datatype,$ .k
  • MPI_SEND(buf, 1, datatype,$ .k
  • MPI_FNIALIZE
  • MPI_Request
  • MPI_PACK_SIZE(count, datatype, comm, size
  • MPI_Status
  • TYPE(MPI_Status)
  • PMPI_AINT_DIFF
  • PMPI_AINT_ADD
  • MPI_Status_set_elements_c
  • MPI_Get_elements_c
  • MPI_Type_get_true_extent_c
  • MPI_Type_get_extent_c
  • MPI_Type_size_c
  • MPI_T_ERR_INVALID_ITEM
  • COMM_DELETE_ATTR_FUNCTION
  • DELETE_FUNCTION
  • COPY_FUNCTION
  • MPI_SUCCESS
  • COMM_COPY_ATTR_FUNCTION
  • MPI_ARGVS_NULL
  • MPI_ARGV_NULL
  • MPI_ERRCODES_IGNORE
  • MPI_COMM_WORLD
  • MPI_BOTTOM
  • MPI_UNDEFINED

Proposal

Chapter committees should check their chapter for missing *main macros for the symbols above and either define them or replace the used macros with the corresponding skip macros.

Changes to the Text

No changes to the semantics.

Impact on Implementations

None.

Impact on Users

Cleaner index, happier users.

References and Pull Requests

An attempt to extend the relevant macros to include hyperrefs: https://github.com/mpi-forum/mpi-standard/pull/954

Metadata

Metadata

Assignees

No one assigned

    Labels

    mpi-6For inclusion in the MPI 5.1 or 6.0 standard

    Type

    No type

    Projects

    Status

    To Do

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions