EPIK  Scalable runtime performance measurement system
Data Structures | Functions | Variables
epk_mpireg.c File Reference

Registration of MPI regions. More...

Data Structures

struct  EpkMPItype
 MPI operation event type. More...

Functions

static int epk_mycmp (const void *v1, const void *v2)
 Compare function for binary search.
void epk_mpi_enable_init ()
 Enable measurement for specific subgroups of MPI functions.
void epk_mpi_register ()
 Register MPI functions and initialize data structures.
elg_ui1 epk_is_mpi_collective (const char *str)
 Check if region is flagged collective.
elg_ui1 epk_is_mpi_point2point (const char *str)
 Check if region is flagged point-to-point.
elg_ui1 epk_mpi_eventtype (const char *str)
 Check if region is flagged either point-to-point or collective.

Variables

static const EpkMPItype epk_mpi_pt2pt []
 MPI point-to-point function types.
static const EpkMPItype epk_mpi_colls []
 MPI collective function types.
int epk_mpi_regid [EPK__MPI_NUMFUNCS+1]
 Region IDs of MPI functions.
static const EpkMPItype epk_mpi_enable_groups []
 Mapping of string keys to enabling group IDs.
elg_ui4 epk_mpi_enabled = 0
 Bit vector for runtime measurement wrapper enabling/disabling.

Detailed Description

Request handling for MPI adapter.


Function Documentation

elg_ui1 epk_is_mpi_collective ( const char *  str)
Parameters:
strRegion name
Returns:
type of function if collective, 0 otherwise.
elg_ui1 epk_is_mpi_point2point ( const char *  str)
Parameters:
strRegion name
Returns:
type of function if point-to-point, 0 otherwise.
elg_ui1 epk_mpi_eventtype ( const char *  str)
Parameters:
strRegion name
Returns:
type of function, if point-to-point or collective. 0, otherwise.
void epk_mpi_register ( )

Artificial root for MPI-only experiments when no user-code instrumenation is available

static int epk_mycmp ( const void *  v1,
const void *  v2 
) [static]
Parameters:
v1string to checked
v2pointer to EpkMPItype structure
Returns:
result is equivalent to strcasecmp result of two strings

Variable Documentation

const EpkMPItype epk_mpi_colls[] [static]
Note:
contents must be alphabetically sorted
Initial value:
 {
  { "ALL",       EPK_MPI_ENABLED_ALL                     },
  { "CG",        EPK_MPI_ENABLED_CG                      },
  { "COLL",      EPK_MPI_ENABLED_COLL                    },
  { "DEFAULT",   EPK_MPI_ENABLED_DEFAULT                 },
  { "ENV",       EPK_MPI_ENABLED_ENV                     },
  { "ERR",       EPK_MPI_ENABLED_ERR                     },
  { "EXT",       EPK_MPI_ENABLED_EXT                     },
  { "IO",        EPK_MPI_ENABLED_IO                      },
  { "MISC",      EPK_MPI_ENABLED_MISC                    },
  { "P2P",       EPK_MPI_ENABLED_P2P                     },
  { "PERF",      EPK_MPI_ENABLED_PERF                    },
  { "RMA",       EPK_MPI_ENABLED_RMA                     },
  { "SPAWN",     EPK_MPI_ENABLED_SPAWN                   },
  { "TOPO",      EPK_MPI_ENABLED_TOPO                    },
  { "TYPE",      EPK_MPI_ENABLED_TYPE                    },
  { "XNONBLOCK", EPK_MPI_ENABLED_XNONBLOCK               },
  { "XREQTEST",  EPK_MPI_ENABLED_XREQTEST                }
}
Note:
The keys need to be alphabetically sorted, to enable binary search on the data structure.
const EpkMPItype epk_mpi_pt2pt[] [static]
Initial value:
 {
  { "MPI_Bsend",            EPK_MPI_TYPE__SEND                                              },
  { "MPI_Ibsend",           EPK_MPI_TYPE__SEND                                              },
  { "MPI_Irsend",           EPK_MPI_TYPE__SEND                                              },
  { "MPI_Isend",            EPK_MPI_TYPE__SEND                                              },
  { "MPI_Issend",           EPK_MPI_TYPE__SEND                                              },
  { "MPI_Recv",             EPK_MPI_TYPE__RECV                                              },
  { "MPI_Rsend",            EPK_MPI_TYPE__SEND                                              },
  { "MPI_Send",             EPK_MPI_TYPE__SEND                                              },
  { "MPI_Sendrecv",         EPK_MPI_TYPE__SEND + EPK_MPI_TYPE__RECV                         },
  { "MPI_Sendrecv_replace", EPK_MPI_TYPE__SEND + EPK_MPI_TYPE__RECV                         },
  { "MPI_Ssend",            EPK_MPI_TYPE__SEND                                              },
  { "MPI_Start",            EPK_MPI_TYPE__SEND                                              },
  { "MPI_Startall",         EPK_MPI_TYPE__SEND                                              },
  { "MPI_Test",             EPK_MPI_TYPE__RECV                                              },
  { "MPI_Testall",          EPK_MPI_TYPE__RECV                                              },
  { "MPI_Testany",          EPK_MPI_TYPE__RECV                                              },
  { "MPI_Testsome",         EPK_MPI_TYPE__RECV                                              },
  { "MPI_Wait",             EPK_MPI_TYPE__RECV                                              },
  { "MPI_Waitall",          EPK_MPI_TYPE__RECV                                              },
  { "MPI_Waitany",          EPK_MPI_TYPE__RECV                                              },
  { "MPI_Waitsome",         EPK_MPI_TYPE__RECV                                              },
}
Note:
contents must be alphabetically sorted
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines

SCALASCA    Copyright © 1998–2012 Forschungszentrum Jülich GmbH, Jülich Supercomputing Centre