NewMadeleine

Documentation

MadMPI Private Interface

This is the MadMPI private interface. More...

Files

file  nm_mpi_private.h
 Internal data structures for MPI.
 
file  nm_mpi_private_syms.h
 internal symbols for MPI functions
 

Macros

#define NM_MPI_PMPI(SYM_MPI)   __typeof__(SYM_MPI) P ## SYM_MPI /* trailing semicolon is supposed to be added by caller */
 macro to create PMPI_* symbol from a MPI_* symbol More...
 
#define nm_mpi_spinlock_t   nm_spinlock_t
 
#define nm_mpi_spin_init(LOCK)   nm_spin_init(LOCK)
 
#define nm_mpi_spin_destroy(LOCK)   nm_spin_destroy(LOCK)
 
#define nm_mpi_spin_lock(LOCK)   nm_spin_lock(LOCK)
 
#define nm_mpi_spin_unlock(LOCK)   nm_spin_unlock(LOCK)
 
#define nm_mpi_errhandler_exec(P_ERRHANDLER, KIND, HANDLE, ERR)
 
#define NM_MPI_ERROR_INTERNAL(ERRORCODE)   (ERRORCODE)
 marks an error as internal, not needing to call the handler More...
 
#define NM_MPI_ERROR_COMM(P_COMM, ERRORCODE)
 
#define NM_MPI_ERROR_SESSION(P_SESSION, ERRORCODE)
 raise an error on the given session More...
 
#define NM_MPI_ERROR_WIN(P_WIN, ERRORCODE)
 raise an error on the given window More...
 
#define NM_MPI_ERROR_FILE(P_FILE, ERRORCODE)
 raise an error on the given file More...
 
#define NM_MPI_ERROR_FILE_DEFAULT(ERRORCODE)
 raise an error on the default errhandler for file (attached to MPI_FILE_NULL) More...
 
#define NM_MPI_ERROR_WORLD(ERRORCODE)
 
#define NM_MPI_COMMUNICATOR_CHECK(P_COMM)
 check that the given communicator is valid More...
 
#define NM_MPI_GROUP_CHECK(P_GROUP)
 check that the given group is valid More...
 
#define NM_MPI_SESSION_CHECK(P_SESSION)
 check that the given session is valid More...
 
#define NM_MPI_DATATYPE_CHECK(P_DATATYPE)
 check that the given datatype is valid More...
 
#define NM_MPI_TAG_CHECK_RECV(TAG)    do { if(((TAG) != MPI_ANY_TAG) && ((TAG) < 0 || (TAG) > NM_MPI_TAG_MAX)) return NM_MPI_ERROR_COMM(p_comm, MPI_ERR_TAG); } while(0)
 check that tag is a valid tag for a recv operation More...
 
#define NM_MPI_TAG_CHECK_SEND(TAG)    do { if( ((TAG) < 0) || ((TAG) > NM_MPI_TAG_MAX) || ((TAG) == MPI_ANY_TAG)) return NM_MPI_ERROR_COMM(p_comm, MPI_ERR_TAG); } while(0)
 check that tag is a valid tag for a send operation More...
 
#define NM_MPI_WARNING(...)   NM_WARN(__VA_ARGS__)
 
#define NM_MPI_FATAL_ERROR(...)   NM_FATAL(__VA_ARGS__)
 
#define NM_MPI_TRACE(str, ...)   NM_TRACEF(str, ## __VA_ARGS__)
 
#define FREE_AND_SET_NULL(p)   do { padico_free(p); p = NULL; } while (0/*CONSTCOND*/)
 
#define NM_MPI_REFCOUNT_INVALID   { .refcount = -1 }
 
#define nm_mpi_refcount_inc(REFCOUNT, HOLDER)    nm_mpi_refcount_inc_internal(REFCOUNT, HOLDER, __FUNCTION__, __FILE__, __LINE__)
 
#define NM_MPI_TAG_MAX   ((nm_tag_t)(0x7FFFFFFF))
 Maximum value of the tag specified by the end-user. More...
 
#define NM_MPI_TAG_PRIVATE_MASK   ((nm_tag_t)(0x80000000))
 Mask for private tags. More...
 
#define NM_MPI_TAG_PRIVATE_BASE   ((nm_tag_t)(0xF0000000))
 Base value for private tags. More...
 
#define NM_MPI_TAG_PRIVATE_BARRIER   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x11))
 
#define NM_MPI_TAG_PRIVATE_BCAST   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x12))
 
#define NM_MPI_TAG_PRIVATE_GATHER   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x13))
 
#define NM_MPI_TAG_PRIVATE_GATHERV   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x14))
 
#define NM_MPI_TAG_PRIVATE_SCATTER   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x15))
 
#define NM_MPI_TAG_PRIVATE_SCATTERV   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x16))
 
#define NM_MPI_TAG_PRIVATE_ALLTOALL   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x17))
 
#define NM_MPI_TAG_PRIVATE_ALLTOALLV   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x18))
 
#define NM_MPI_TAG_PRIVATE_REDUCE   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x19))
 
#define NM_MPI_TAG_PRIVATE_ALLREDUCE   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x1A))
 
#define NM_MPI_TAG_PRIVATE_SCAN   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x1B))
 
#define NM_MPI_TAG_PRIVATE_REDUCESCATTER   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x1C))
 
#define NM_MPI_TAG_PRIVATE_ALLGATHER   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x1D))
 
#define NM_MPI_TAG_PRIVATE_TYPE_ADD   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x21))
 add a datatype; tag is 0xF0XXXX21 where XXXX is seq number (16 bits) More...
 
#define NM_MPI_TAG_PRIVATE_TYPE_ADD_ACK   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x22))
 answer to add request More...
 
#define NM_MPI_TAG_PRIVATE_WIN_INIT   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x23))
 
#define NM_MPI_TAG_PRIVATE_WIN_FENCE   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x24))
 
#define NM_MPI_TAG_PRIVATE_WIN_BARRIER   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x25))
 
#define NM_MPI_TAG_PRIVATE_COMM_SPLIT   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0xF1))
 
#define NM_MPI_TAG_PRIVATE_COMM_CREATE   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0xF2))
 
#define NM_MPI_TAG_PRIVATE_COMM_INFO   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0xF3))
 
#define NM_MPI_TAG_PRIVATE_FILE_OPEN   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0xF4))
 
#define NM_MPI_TAG_PRIVATE_RMA_BASE   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x08000000))
 Masks for RMA-communication tags. More...
 
#define NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x04000000))
 
#define NM_MPI_TAG_PRIVATE_RMA_MASK_OP   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0x0F))
 rma operation mask More...
 
#define NM_MPI_TAG_PRIVATE_RMA_MASK_AOP   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0xF0))
 acc operation mask More...
 
#define NM_MPI_TAG_PRIVATE_RMA_MASK_FOP
 full operation mask More...
 
#define NM_MPI_TAG_PRIVATE_RMA_MASK_SEQ   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0xFFFF00))
 
#define NM_MPI_TAG_PRIVATE_RMA_MASK_WIN   ((nm_tag_t)(0xFFFFFFFF00000000 | NM_MPI_TAG_PRIVATE_RMA_BASE))
 
#define NM_MPI_TAG_PRIVATE_RMA_MASK_USER
 
#define NM_MPI_TAG_PRIVATE_RMA_MASK
 
#define NM_MPI_TAG_PRIVATE_RMA_MASK_SYNC   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0xFFFFFFFF000000FF))
 
#define NM_MPI_TAG_PRIVATE_RMA_START   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0x01))
 
#define NM_MPI_TAG_PRIVATE_RMA_END   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0x02))
 
#define NM_MPI_TAG_PRIVATE_RMA_LOCK   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0x13))
 lock request More...
 
#define NM_MPI_TAG_PRIVATE_RMA_LOCK_R   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0x04))
 lock ACK More...
 
#define NM_MPI_TAG_PRIVATE_RMA_UNLOCK   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0x05))
 unlock request More...
 
#define NM_MPI_TAG_PRIVATE_RMA_UNLOCK_R   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0x06))
 unlock ACK More...
 
#define NM_MPI_TAG_PRIVATE_RMA_OP_CHECK   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0x0F))
 If dynamic window, tells if target address is valid. More...
 
#define NM_MPI_TAG_PRIVATE_RMA_PUT   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0x1))
 
#define NM_MPI_TAG_PRIVATE_RMA_GET_REQ   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0x2))
 
#define NM_MPI_TAG_PRIVATE_RMA_ACC   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0x3))
 accumulate More...
 
#define NM_MPI_TAG_PRIVATE_RMA_GACC_REQ   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0x4))
 get_accumulate More...
 
#define NM_MPI_TAG_PRIVATE_RMA_FAO_REQ   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0x5))
 fetch and op More...
 
#define NM_MPI_TAG_PRIVATE_RMA_CAS_REQ   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0x6))
 compare and swap More...
 
#define NM_MPI_TAG_PRIVATE_RMA_REQ_RESP   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0xF))
 
typedef struct nm_mpi_errhandler_s nm_mpi_errhandler_t
 error handler More...
 
struct nm_mpi_errhandler_snm_mpi_file_errhandler
 default errhandler for files, attached to MPI_FILE_NULL
More...
 
 PUK_LIST_TYPE (nm_mpi_refcount_holder, const void *p_holder;const char *func;const char *file;int line;)
 elements for nm_mpi_refcount_s More...
 
static void nm_mpi_refcount_init (struct nm_mpi_refcount_s *p_refcount, const char *type __attribute__((unused)), int id)
 initialize a new refcount object; get the type of object and its ID to make debugging easier More...
 
static void nm_mpi_refcount_dump (struct nm_mpi_refcount_s *p_refcount __attribute__((unused)))
 
static void nm_mpi_refcount_destroy (struct nm_mpi_refcount_s *p_refcount __attribute__((unused)))
 
static void nm_mpi_refcount_inc_internal (struct nm_mpi_refcount_s *p_refcount, const void *p_holder __attribute__((unused)), const char *func __attribute__((unused)), const char *file __attribute__((unused)), const int line __attribute__((unused)))
 
static int nm_mpi_refcount_dec (struct nm_mpi_refcount_s *p_refcount, const void *p_holder __attribute__((unused)))
 decrement refcount for holder; returns refcount (if 0, caller may free ref-counted resource) More...
 
void nm_mpi_info_destructor (char *p_key, char *p_data)
 
 PUK_HASHTABLE_TYPE (nm_mpi_info, char *, char *, &puk_hash_string_default_hash, &puk_hash_string_default_eq, &nm_mpi_info_destructor)
 hashtable type for info entries More...
 

Detailed Description

This is the MadMPI private interface.

Macro Definition Documentation

◆ FREE_AND_SET_NULL

#define FREE_AND_SET_NULL (   p)    do { padico_free(p); p = NULL; } while (0/*CONSTCOND*/)

Definition at line 183 of file nm_mpi_private.h.

◆ NM_MPI_COMMUNICATOR_CHECK

#define NM_MPI_COMMUNICATOR_CHECK (   P_COMM)
Value:
PUK_CHECK_TYPE(struct nm_mpi_communicator_s*, P_COMM); \
do { if((P_COMM) == NULL) return NM_MPI_ERROR_WORLD(MPI_ERR_COMM); } while(0)
#define NM_MPI_ERROR_WORLD(ERRORCODE)
#define MPI_ERR_COMM
Definition: nm_mpi_types.h:65
Internal communicator.

check that the given communicator is valid

Definition at line 150 of file nm_mpi_private.h.

◆ NM_MPI_DATATYPE_CHECK

#define NM_MPI_DATATYPE_CHECK (   P_DATATYPE)
Value:
PUK_CHECK_TYPE(struct nm_mpi_datatype_s*, P_DATATYPE); \
do { if((P_DATATYPE) == NULL) return NM_MPI_ERROR_COMM(p_comm, MPI_ERR_TYPE); } while(0)
#define NM_MPI_ERROR_COMM(P_COMM, ERRORCODE)
nm_mpi_communicator_t * p_comm
communicator used for communication
#define MPI_ERR_TYPE
Definition: nm_mpi_types.h:63
Internal datatype.

check that the given datatype is valid

Definition at line 165 of file nm_mpi_private.h.

◆ nm_mpi_errhandler_exec

#define nm_mpi_errhandler_exec (   P_ERRHANDLER,
  KIND,
  HANDLE,
  ERR 
)
Value:
nm_mpi_errhandler_exec_internal(P_ERRHANDLER, KIND, HANDLE, ERR, \
__FUNCTION__, __FILE__, __LINE__)
void nm_mpi_errhandler_exec_internal(struct nm_mpi_errhandler_s *p_errhandler, enum nm_mpi_errhandler_kind_e kind, int handle, int err, const char *func, const char *file, const int line)

Definition at line 108 of file nm_mpi_private.h.

◆ NM_MPI_ERROR_COMM

#define NM_MPI_ERROR_COMM (   P_COMM,
  ERRORCODE 
)
Value:
( ( ((ERRORCODE) == MPI_SUCCESS) ? MPI_SUCCESS : \
nm_mpi_errhandler_exec((P_COMM)->p_errhandler, NM_MPI_ERRHANDLER_COMM, (P_COMM)->id, (ERRORCODE)) ) \
, ERRORCODE )
#define MPI_SUCCESS
Successful return code.
Definition: nm_mpi_types.h:59

Definition at line 115 of file nm_mpi_private.h.

◆ NM_MPI_ERROR_FILE

#define NM_MPI_ERROR_FILE (   P_FILE,
  ERRORCODE 
)
Value:
( ( ((ERRORCODE) == MPI_SUCCESS) ? MPI_SUCCESS : \
nm_mpi_errhandler_exec((P_FILE)->p_errhandler, NM_MPI_ERRHANDLER_FILE, (P_FILE)->id, (ERRORCODE)) ) \
, ERRORCODE )

raise an error on the given file

Definition at line 133 of file nm_mpi_private.h.

◆ NM_MPI_ERROR_FILE_DEFAULT

#define NM_MPI_ERROR_FILE_DEFAULT (   ERRORCODE)
Value:
( ( ((ERRORCODE) == MPI_SUCCESS) ? MPI_SUCCESS : \
nm_mpi_errhandler_exec(nm_mpi_file_errhandler, NM_MPI_ERRHANDLER_FILE, MPI_FILE_NULL, (ERRORCODE)) ) \
, ERRORCODE )
struct nm_mpi_errhandler_s * nm_mpi_file_errhandler
default errhandler for files, attached to MPI_FILE_NULL
#define MPI_FILE_NULL
Definition: nm_mpi_io.h:32

raise an error on the default errhandler for file (attached to MPI_FILE_NULL)

Definition at line 139 of file nm_mpi_private.h.

◆ NM_MPI_ERROR_INTERNAL

#define NM_MPI_ERROR_INTERNAL (   ERRORCODE)    (ERRORCODE)

marks an error as internal, not needing to call the handler

Definition at line 113 of file nm_mpi_private.h.

◆ NM_MPI_ERROR_SESSION

#define NM_MPI_ERROR_SESSION (   P_SESSION,
  ERRORCODE 
)
Value:
( ( ((ERRORCODE) == MPI_SUCCESS) ? MPI_SUCCESS : \
nm_mpi_errhandler_exec((P_SESSION)->p_errhandler, NM_MPI_ERRHANDLER_SESSION, (P_SESSION)->id, (ERRORCODE)) ) \
, ERRORCODE )

raise an error on the given session

Definition at line 121 of file nm_mpi_private.h.

◆ NM_MPI_ERROR_WIN

#define NM_MPI_ERROR_WIN (   P_WIN,
  ERRORCODE 
)
Value:
( ( ((ERRORCODE) == MPI_SUCCESS) ? MPI_SUCCESS : \
nm_mpi_errhandler_exec((P_WIN)->p_errhandler, NM_MPI_ERRHANDLER_WIN, (P_WIN)->id, (ERRORCODE)) ) \
, ERRORCODE )

raise an error on the given window

Definition at line 127 of file nm_mpi_private.h.

◆ NM_MPI_ERROR_WORLD

#define NM_MPI_ERROR_WORLD (   ERRORCODE)
Value:
( ( ((ERRORCODE) == MPI_SUCCESS) ? MPI_SUCCESS : \
nm_mpi_errhandler_exec(nm_mpi_communicator_get(MPI_COMM_WORLD)->p_errhandler, NM_MPI_ERRHANDLER_COMM, MPI_COMM_WORLD, (ERRORCODE)) ) \
, ERRORCODE )
nm_mpi_communicator_t * nm_mpi_communicator_get(MPI_Comm comm)
Gets the internal representation of the given communicator.
#define MPI_COMM_WORLD
Default communicator that includes all processes.
Definition: nm_mpi_types.h:272

Definition at line 144 of file nm_mpi_private.h.

◆ NM_MPI_FATAL_ERROR

#define NM_MPI_FATAL_ERROR (   ...)    NM_FATAL(__VA_ARGS__)

Definition at line 179 of file nm_mpi_private.h.

◆ NM_MPI_GROUP_CHECK

#define NM_MPI_GROUP_CHECK (   P_GROUP)
Value:
PUK_CHECK_TYPE(struct nm_mpi_group_s*, P_GROUP); \
do { if((P_GROUP) == NULL) return NM_MPI_ERROR_WORLD(MPI_ERR_GROUP); } while(0)
#define MPI_ERR_GROUP
Definition: nm_mpi_types.h:68
Internal group.

check that the given group is valid

Definition at line 155 of file nm_mpi_private.h.

◆ NM_MPI_PMPI

#define NM_MPI_PMPI (   SYM_MPI)    __typeof__(SYM_MPI) P ## SYM_MPI /* trailing semicolon is supposed to be added by caller */

macro to create PMPI_* symbol from a MPI_* symbol

Definition at line 52 of file nm_mpi.h.

◆ nm_mpi_refcount_inc

#define nm_mpi_refcount_inc (   REFCOUNT,
  HOLDER 
)     nm_mpi_refcount_inc_internal(REFCOUNT, HOLDER, __FUNCTION__, __FILE__, __LINE__)

Definition at line 241 of file nm_mpi_private.h.

◆ NM_MPI_REFCOUNT_INVALID

#define NM_MPI_REFCOUNT_INVALID   { .refcount = -1 }

Definition at line 206 of file nm_mpi_private.h.

◆ NM_MPI_SESSION_CHECK

#define NM_MPI_SESSION_CHECK (   P_SESSION)
Value:
PUK_CHECK_TYPE(struct nm_mpi_session_s*, P_SESSION); \
do { if((P_SESSION) == NULL) return NM_MPI_ERROR_WORLD(MPI_ERR_SESSION); } while(0)
#define MPI_ERR_SESSION
Definition: nm_mpi_types.h:124

check that the given session is valid

Definition at line 160 of file nm_mpi_private.h.

◆ nm_mpi_spin_destroy

#define nm_mpi_spin_destroy (   LOCK)    nm_spin_destroy(LOCK)

Definition at line 62 of file nm_mpi_private.h.

◆ nm_mpi_spin_init

#define nm_mpi_spin_init (   LOCK)    nm_spin_init(LOCK)

Definition at line 61 of file nm_mpi_private.h.

◆ nm_mpi_spin_lock

#define nm_mpi_spin_lock (   LOCK)    nm_spin_lock(LOCK)

Definition at line 63 of file nm_mpi_private.h.

◆ nm_mpi_spin_unlock

#define nm_mpi_spin_unlock (   LOCK)    nm_spin_unlock(LOCK)

Definition at line 64 of file nm_mpi_private.h.

◆ nm_mpi_spinlock_t

#define nm_mpi_spinlock_t   nm_spinlock_t

Definition at line 60 of file nm_mpi_private.h.

◆ NM_MPI_TAG_CHECK_RECV

#define NM_MPI_TAG_CHECK_RECV (   TAG)     do { if(((TAG) != MPI_ANY_TAG) && ((TAG) < 0 || (TAG) > NM_MPI_TAG_MAX)) return NM_MPI_ERROR_COMM(p_comm, MPI_ERR_TAG); } while(0)

check that tag is a valid tag for a recv operation

Definition at line 170 of file nm_mpi_private.h.

◆ NM_MPI_TAG_CHECK_SEND

#define NM_MPI_TAG_CHECK_SEND (   TAG)     do { if( ((TAG) < 0) || ((TAG) > NM_MPI_TAG_MAX) || ((TAG) == MPI_ANY_TAG)) return NM_MPI_ERROR_COMM(p_comm, MPI_ERR_TAG); } while(0)

check that tag is a valid tag for a send operation

Definition at line 174 of file nm_mpi_private.h.

◆ NM_MPI_TAG_MAX

#define NM_MPI_TAG_MAX   ((nm_tag_t)(0x7FFFFFFF))

Maximum value of the tag specified by the end-user.

Definition at line 306 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_ALLGATHER

#define NM_MPI_TAG_PRIVATE_ALLGATHER   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x1D))

Definition at line 323 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_ALLREDUCE

#define NM_MPI_TAG_PRIVATE_ALLREDUCE   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x1A))

Definition at line 320 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_ALLTOALL

#define NM_MPI_TAG_PRIVATE_ALLTOALL   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x17))

Definition at line 317 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_ALLTOALLV

#define NM_MPI_TAG_PRIVATE_ALLTOALLV   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x18))

Definition at line 318 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_BARRIER

#define NM_MPI_TAG_PRIVATE_BARRIER   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x11))

Definition at line 311 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_BASE

#define NM_MPI_TAG_PRIVATE_BASE   ((nm_tag_t)(0xF0000000))

Base value for private tags.

Definition at line 310 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_BCAST

#define NM_MPI_TAG_PRIVATE_BCAST   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x12))

Definition at line 312 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_COMM_CREATE

#define NM_MPI_TAG_PRIVATE_COMM_CREATE   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0xF2))

Definition at line 330 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_COMM_INFO

#define NM_MPI_TAG_PRIVATE_COMM_INFO   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0xF3))

Definition at line 331 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_COMM_SPLIT

#define NM_MPI_TAG_PRIVATE_COMM_SPLIT   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0xF1))

Definition at line 329 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_FILE_OPEN

#define NM_MPI_TAG_PRIVATE_FILE_OPEN   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0xF4))

Definition at line 332 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_GATHER

#define NM_MPI_TAG_PRIVATE_GATHER   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x13))

Definition at line 313 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_GATHERV

#define NM_MPI_TAG_PRIVATE_GATHERV   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x14))

Definition at line 314 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_MASK

#define NM_MPI_TAG_PRIVATE_MASK   ((nm_tag_t)(0x80000000))

Mask for private tags.

Definition at line 308 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_REDUCE

#define NM_MPI_TAG_PRIVATE_REDUCE   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x19))

Definition at line 319 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_REDUCESCATTER

#define NM_MPI_TAG_PRIVATE_REDUCESCATTER   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x1C))

Definition at line 322 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_ACC

#define NM_MPI_TAG_PRIVATE_RMA_ACC   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0x3))

accumulate

Definition at line 357 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_BASE

#define NM_MPI_TAG_PRIVATE_RMA_BASE   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x08000000))

Masks for RMA-communication tags.

Definition at line 334 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC

#define NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x04000000))

Definition at line 335 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_CAS_REQ

#define NM_MPI_TAG_PRIVATE_RMA_CAS_REQ   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0x6))

compare and swap

Definition at line 360 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_END

#define NM_MPI_TAG_PRIVATE_RMA_END   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0x02))

Definition at line 348 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_FAO_REQ

#define NM_MPI_TAG_PRIVATE_RMA_FAO_REQ   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0x5))

fetch and op

Definition at line 359 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_GACC_REQ

#define NM_MPI_TAG_PRIVATE_RMA_GACC_REQ   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0x4))

get_accumulate

Definition at line 358 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_GET_REQ

#define NM_MPI_TAG_PRIVATE_RMA_GET_REQ   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0x2))

Definition at line 356 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_LOCK

#define NM_MPI_TAG_PRIVATE_RMA_LOCK   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0x13))

lock request

Definition at line 349 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_LOCK_R

#define NM_MPI_TAG_PRIVATE_RMA_LOCK_R   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0x04))

lock ACK

Definition at line 350 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_MASK

#define NM_MPI_TAG_PRIVATE_RMA_MASK
Value:
#define NM_MPI_TAG_PRIVATE_RMA_MASK_WIN
#define NM_MPI_TAG_PRIVATE_RMA_MASK_USER
uint64_t nm_tag_t
user tags, 64 bits, contained in indirect hashtable
Definition: nm_types.h:58

Definition at line 344 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_MASK_AOP

#define NM_MPI_TAG_PRIVATE_RMA_MASK_AOP   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0xF0))

acc operation mask

Definition at line 337 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_MASK_FOP

#define NM_MPI_TAG_PRIVATE_RMA_MASK_FOP
Value:
#define NM_MPI_TAG_PRIVATE_RMA_MASK_AOP
acc operation mask
#define NM_MPI_TAG_PRIVATE_RMA_MASK_OP
rma operation mask

full operation mask

Definition at line 339 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_MASK_OP

#define NM_MPI_TAG_PRIVATE_RMA_MASK_OP   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0x0F))

rma operation mask

Definition at line 336 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_MASK_SEQ

#define NM_MPI_TAG_PRIVATE_RMA_MASK_SEQ   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0xFFFF00))

Definition at line 340 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_MASK_SYNC

#define NM_MPI_TAG_PRIVATE_RMA_MASK_SYNC   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0xFFFFFFFF000000FF))

Definition at line 346 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_MASK_USER

#define NM_MPI_TAG_PRIVATE_RMA_MASK_USER
Value:
#define NM_MPI_TAG_PRIVATE_RMA_MASK_SEQ
#define NM_MPI_TAG_PRIVATE_RMA_MASK_FOP
full operation mask

Definition at line 342 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_MASK_WIN

#define NM_MPI_TAG_PRIVATE_RMA_MASK_WIN   ((nm_tag_t)(0xFFFFFFFF00000000 | NM_MPI_TAG_PRIVATE_RMA_BASE))

Definition at line 341 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_OP_CHECK

#define NM_MPI_TAG_PRIVATE_RMA_OP_CHECK   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0x0F))

If dynamic window, tells if target address is valid.

Definition at line 354 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_PUT

#define NM_MPI_TAG_PRIVATE_RMA_PUT   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0x1))

Definition at line 355 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_REQ_RESP

#define NM_MPI_TAG_PRIVATE_RMA_REQ_RESP   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE | 0xF))

Definition at line 361 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_START

#define NM_MPI_TAG_PRIVATE_RMA_START   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0x01))

Definition at line 347 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_UNLOCK

#define NM_MPI_TAG_PRIVATE_RMA_UNLOCK   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0x05))

unlock request

Definition at line 351 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_RMA_UNLOCK_R

#define NM_MPI_TAG_PRIVATE_RMA_UNLOCK_R   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_RMA_BASE_SYNC | 0x06))

unlock ACK

Definition at line 352 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_SCAN

#define NM_MPI_TAG_PRIVATE_SCAN   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x1B))

Definition at line 321 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_SCATTER

#define NM_MPI_TAG_PRIVATE_SCATTER   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x15))

Definition at line 315 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_SCATTERV

#define NM_MPI_TAG_PRIVATE_SCATTERV   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x16))

Definition at line 316 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_TYPE_ADD

#define NM_MPI_TAG_PRIVATE_TYPE_ADD   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x21))

add a datatype; tag is 0xF0XXXX21 where XXXX is seq number (16 bits)

Definition at line 324 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_TYPE_ADD_ACK

#define NM_MPI_TAG_PRIVATE_TYPE_ADD_ACK   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x22))

answer to add request

Definition at line 325 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_WIN_BARRIER

#define NM_MPI_TAG_PRIVATE_WIN_BARRIER   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x25))

Definition at line 328 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_WIN_FENCE

#define NM_MPI_TAG_PRIVATE_WIN_FENCE   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x24))

Definition at line 327 of file nm_mpi_private.h.

◆ NM_MPI_TAG_PRIVATE_WIN_INIT

#define NM_MPI_TAG_PRIVATE_WIN_INIT   ((nm_tag_t)(NM_MPI_TAG_PRIVATE_BASE | 0x23))

Definition at line 326 of file nm_mpi_private.h.

◆ NM_MPI_TRACE

#define NM_MPI_TRACE (   str,
  ... 
)    NM_TRACEF(str, ## __VA_ARGS__)

Definition at line 181 of file nm_mpi_private.h.

◆ NM_MPI_WARNING

#define NM_MPI_WARNING (   ...)    NM_WARN(__VA_ARGS__)

Definition at line 177 of file nm_mpi_private.h.

Typedef Documentation

◆ nm_mpi_errhandler_t

error handler

Function Documentation

◆ nm_mpi_info_destructor()

void nm_mpi_info_destructor ( char *  p_key,
char *  p_data 
)

◆ nm_mpi_refcount_dec()

static int nm_mpi_refcount_dec ( struct nm_mpi_refcount_s p_refcount,
const void *p_holder   __attribute__(unused) 
)
inlinestatic

decrement refcount for holder; returns refcount (if 0, caller may free ref-counted resource)

Definition at line 279 of file nm_mpi_private.h.

References NM_MPI_FATAL_ERROR, nm_mpi_spin_lock, nm_mpi_spin_unlock, and nm_mpi_refcount_s::refcount.

◆ nm_mpi_refcount_destroy()

static void nm_mpi_refcount_destroy ( struct nm_mpi_refcount_s *p_refcount   __attribute__(unused))
inlinestatic

Definition at line 232 of file nm_mpi_private.h.

References nm_mpi_refcount_dump(), and nm_mpi_spin_destroy.

Here is the call graph for this function:

◆ nm_mpi_refcount_dump()

static void nm_mpi_refcount_dump ( struct nm_mpi_refcount_s *p_refcount   __attribute__(unused))
inlinestatic

Definition at line 220 of file nm_mpi_private.h.

References NM_MPI_WARNING.

Referenced by nm_mpi_refcount_destroy().

Here is the caller graph for this function:

◆ nm_mpi_refcount_inc_internal()

static void nm_mpi_refcount_inc_internal ( struct nm_mpi_refcount_s p_refcount,
const void *p_holder   __attribute__(unused),
const char *func   __attribute__(unused),
const char *file   __attribute__(unused),
const int line   __attribute__(unused) 
)
inlinestatic

◆ nm_mpi_refcount_init()

static void nm_mpi_refcount_init ( struct nm_mpi_refcount_s p_refcount,
const char *type   __attribute__(unused),
int  id 
)
inlinestatic

initialize a new refcount object; get the type of object and its ID to make debugging easier

Definition at line 209 of file nm_mpi_private.h.

References id, nm_mpi_spin_init, and nm_mpi_refcount_s::refcount.

◆ PUK_HASHTABLE_TYPE()

PUK_HASHTABLE_TYPE ( nm_mpi_info  ,
char *  ,
char *  ,
puk_hash_string_default_hash,
puk_hash_string_default_eq,
nm_mpi_info_destructor 
)

hashtable type for info entries

◆ PUK_LIST_TYPE()

PUK_LIST_TYPE ( nm_mpi_refcount_holder  ,
const void *p_holder;const char *func;const char *file;int line;   
)

elements for nm_mpi_refcount_s

Variable Documentation

◆ nm_mpi_file_errhandler

struct nm_mpi_errhandler_s* nm_mpi_file_errhandler
extern

default errhandler for files, attached to MPI_FILE_NULL