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:
str Region name
Returns:
type of function if collective, 0 otherwise.

elg_ui1 epk_is_mpi_point2point ( const char *  str  ) 

Parameters:
str Region name
Returns:
type of function if point-to-point, 0 otherwise.

elg_ui1 epk_mpi_eventtype ( const char *  str  ) 

Parameters:
str Region 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:
v1 string to checked
v2 pointer 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              }
}
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


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