-
Ondrej Vysocky authoredOndrej Vysocky authored
instrument.h 29.66 KiB
/**
* Shared interface for several libraries with manual instrumentation
- MERIC, compile with -DUSE_MERIC
- TIMEPROF, compile with -DUSE_TIMEPROF
- Score-P, compile with -DUSE_SCOREP_MANUAL or -DUSE_SCOREP (phase region inserted only)
- TAU, compile with -DUSE_TAU
- GEOPM, compile with -DUSE_GEOPM
- SCALASCA, compile with -DUSE_SCOREP_MANUAL
- mpiP, compile with -DUSE_MPIP
- Extrae, compile with -DUSE_EXTRAE
- LIKWID, compile with -DUSE_LIKWID, in case of OpenMP applications, include the header after omp.h
+ time measurement, compile with -DUSE_TIME_MEASUREMENT, for C applications compile with -DINSTRUMENT_STACK_SIZE=<int value> to specify nesting region level (default 20)
+ no instrumentation when none of the modes selected
* Only one of the supported libraries can be selected, if none of them is
* selected, then no instrumentation is inserted to the application's code.
*
* version 4.1
* 06.12.2022
* Ondrej Vysocky, ondrej.vysocky [at] vsb.cz
* IT4Innovations national supercomputing center, Czech Republic
**/
/******************************************************************************
* List of the functions:
* void INSTRUMENT_INIT(nodeId)
library initialization
- nodeId
* void INSTRUMENT_CLOSE()
end of use of the library
* void INSTRUMENT_REGION_DEFINE( handle, name, TAUtype_GEOPMhint )
region definition before it can start
- handle
- name
- TAUtype_GEOPMhint
* void INSTRUMENT_PHASE_REGION_DEFINE( handle, name, TAUtype_GEOPMhint )
definition of a region inside a loop
- handle
- name
- TAUtype_GEOPMhint
* void INSTRUMENT_REGION_START(handle, name, SCOREPtype)
region measurement start
- handle
- name
- SCOREPtype
* double INSTRUMENT_REGION_STOP(handle, name)
region measurement stop
- handle
- name
* double INSTRUMENT_REGION_STOP_START(stop_handle, stop_name, start_handle, start_name, SCOREPtype)
region measurement stop and at the same time start of another region
- stop_handle
- stop_name
- start_handle
- start_name
- SCOREPrype
* void INSTRUMENT_PHASE_START(handle, name, SCOREPtype)
start of a region inside a loop
- handle
- name
- SCOREPtype
* double INSTRUMENT_PHASE_STOP(handle, name)
end of a region inside a loop
- handle
- name
* void INSTRUMENT_IGNORE_START()
turn off the measurement
* void INSTRUMENT_IGNORE_STOP()
turn the measurement on after it was stopped
******************************************************************************/
#ifndef INSTRUMENT_H_
#define INSTRUMENT_H_
#ifdef USE_SCOREP_MANUAL
#define USE_SCOREP
#endif
#ifdef USE_SCOREP
#include <scorep/SCOREP_User.h>
#include <scorep/SCOREP_User_Types.h>
#ifdef __cplusplus
#include <cstddef>
#endif
#elif defined USE_MERIC
#include <meric.h>
#elif defined USE_TIMEPROF
#include <timeprof.h>
#elif defined USE_TAU
#include <TAU.h>
#elif defined USE_GEOPM
#include <geopm.h>
#elif defined USE_MPIP
#include <mpiP-API.h>
#elif defined USE_EXTRAE
#include <extrae.h>
#elif defined USE_LIKWID
#include <likwid.h>
inline static void INSTRUMENT_LIKWID_THREAD_INIT_WRAPPER()
{
#ifdef _OMP_H
#pragma omp parallel
likwid_markerThreadInit();
#endif
return;
};
#elif defined USE_TIME_MEASUREMENT
#include <time.h>
static double instrumentAPI_get_time()
{
struct timespec time;
clock_gettime(CLOCK_REALTIME, &time);
return time.tv_sec + time.tv_nsec / 1e9;
};
#ifdef __cplusplus
static vector <double> instrumentAPItimeStack;
static void instrumentAPI_time_start()
{
instrumentAPItimeStack.push_back(instrumentAPI_get_time());
};
static double instrumentAPI_time_stop()
{
double time = 0.0;
if (instrumentAPItimeStack.size() != 0)
{
time = instrumentAPI_get_time() - instrumentAPItimeStack.back();
instrumentAPItimeStack.pop_back();
}
return time;
};
#else
#ifndef INSTRUMENT_STACK_SIZE
#define INSTRUMENT_STACK_SIZE 20
#endif
static double[INSTRUMENT_STACK_SIZE] instrumentAPItimeStack;
static int instrumentAPItimeStackSize = 0;
static void instrumentAPI_time_start()
{
if (instrumentAPItimeStackSize < INSTRUMENT_STACK_SIZE)
{
instrumentAPItimeStack[instrumentAPItimeStackSize] = instrumentAPI_get_time();
}
else
{
fprintf(stderr,"InstrumentAPI WARNING - regions nesting level exceed, define INSTRUMENT_STACK_SIZE higher than %d!\n", INSTRUMENT_STACK_SIZE);
}
instrumentAPItimeStackSize++;
};
static double instrumentAPI_time_stop()
{
double time = 0.0;
if (instrumentAPItimeStackSize != 0)
{
instrumentAPItimeStackSize--;
if (instrumentAPItimeStackSize < INSTRUMENT_STACK_SIZE)
{
time = instrumentAPI_get_time() - instrumentAPItimeStack[instrumentAPItimeStackSize];
}
}
return time;
};
#endif
#endif
inline static double INSTRUMENT_RETURN_ZERO()
{
return 0.0;
}
//INSTRUMENT_INIT(nodeId = 0)
//INSTRUMENT_CLOSE()
#ifdef USE_MERIC
#define INSTRUMENT_INIT( nodeId ) \
MERIC_Init();
#define INSTRUMENT_CLOSE() \
MERIC_Close();
#elif defined USE_TIMEPROF
#define INSTRUMENT_INIT( nodeId )
#define INSTRUMENT_CLOSE() \
TIMEPROF_evaluate();
#elif defined USE_TAU
/* #define INSTRUMENT_INIT() \
TAU_INIT( &argc, &argv ); \
TAU_PROFILE_SET_NODE(0); */
#define INSTRUMENT_INIT( nodeId ) \
TAU_INIT( &argc, &argv ); \
TAU_PROFILE_SET_NODE( nodeId );
#define INSTRUMENT_CLOSE() \
TAU_PROFILE_EXIT("");
#elif defined USE_GEOPM
#define INSTRUMENT_INIT( nodeId )\
geopm_prof_init();
#define INSTRUMENT_CLOSE() \
geopm_prof_shutdown();
#elif defined USE_MPIP
#define INSTRUMENT_INIT( nodeId ) \
mpiP_init_api();
#define INSTRUMENT_CLOSE()
#elif defined USE_EXTRAE
#define INSTRUMENT_INIT( nodeId ) \
Extrae_init();
#define INSTRUMENT_CLOSE() \
Extrae_fini();
#elif defined USE_LIKWID
#define INSTRUMENT_INIT( nodeId ) \
likwid_markerInit(); \
INSTRUMENT_LIKWID_THREAD_INIT_WRAPPER();
#define INSTRUMENT_CLOSE() \
likwid_markerClose();
#else
#define INSTRUMENT_INIT( nodeId )
#define INSTRUMENT_CLOSE()
#endif
//INSTRUMENT_IGNORE_START()
//INSTRUMENT_IGNORE_STOP()
#ifdef USE_MERIC
#define INSTRUMENT_IGNORE_START() \
MERIC_IgnoreStart();
#define INSTRUMENT_IGNORE_STOP() \
MERIC_IgnoreStop();
#elif defined USE_SCOREP
#define INSTRUMENT_IGNORE_START() \
SCOREP_RECORDING_OFF();
#define INSTRUMENT_IGNORE_STOP() \
SCOREP_RECORDING_ON();
#elif defined USE_TAU
#define INSTRUMENT_IGNORE_START() \
TAU_DISABLE_ALL_GROUPS();
#define INSTRUMENT_IGNORE_STOP() \
TAU_ENABLE_ALL_GROUPS();
#elif defined USE_MPIP
#define INSTRUMENT_IGNORE_START() \
MPI_Pcontrol(0);
#define INSTRUMENT_IGNORE_STOP() \
MPI_Pcontrol(1);
#elif defined USE_EXTRAE
#define INSTRUMENT_IGNORE_START() \
Extrae_shutdown();
#define INSTRUMENT_IGNORE_STOP() \
Extrae_restart();
#else
#define INSTRUMENT_IGNORE_START()
#define INSTRUMENT_IGNORE_STOP()
#endif
//INSTRUMENT_PHASE_REGION_DEFINE( handle, name, TAUtype_GEOPMhint ) - should be used for PHASE only
//INSTRUMENT_REGION_DEFINE( handle, name, TAUtype_GEOPMhint, param=NULL) - cannot be used for PHASE region
#ifdef USE_SCOREP_MANUAL
//Score-P 3.0
//SCOREP_USER_REGION_DEFINE(handle)
#define INSTRUMENT_PHASE_REGION_DEFINE( handle, name, TAUtype_GEOPMhint ) \
static SCOREP_User_RegionHandle handle = SCOREP_USER_INVALID_REGION;
#define INSTRUMENT_REGION_DEFINE( handle, name, TAUtype_GEOPMhint ) \
static SCOREP_User_RegionHandle handle = SCOREP_USER_INVALID_REGION;
/* #define INSTRUMENT_REGION_DEFINE( handle, name, TAUtype_GEOPMhint, param ) \
static SCOREP_User_RegionHandle handle = SCOREP_USER_INVALID_REGION; */
#elif defined USE_SCOREP
//Score-P 3.0
#define INSTRUMENT_PHASE_REGION_DEFINE( handle, name, TAUtype_GEOPMhint ) \
static SCOREP_User_RegionHandle handle = SCOREP_USER_INVALID_REGION;
#define INSTRUMENT_REGION_DEFINE( handle, name, TAUtype_GEOPMhint )
// #define INSTRUMENT_REGION_DEFINE( handle, name, TAUtype_GEOPMhint, param )
#elif defined USE_TAU
#define INSTRUMENT_PHASE_REGION_DEFINE( handle, name, TAUtype_GEOPMhint ) \
TAU_DYNAMIC_PHASE( handle, name, "", TAUtype_GEOPMhint );
#define INSTRUMENT_REGION_DEFINE( handle, name, TAUtype_GEOPMhint ) \
TAU_PROFILE_TIMER( handle, name, "", TAUtype_GEOPMhint );
/* #define INSTRUMENT_REGION_DEFINE( handle, name, TAUtype_GEOPMhint, param ) \
TAU_PROFILE_TIMER( handle, name, param, TAUtype_GEOPMhint ); */
#elif defined USE_GEOPM
#define INSTRUMENT_PHASE_REGION_DEFINE( handle, name, TAUtype_GEOPMhint )
#define INSTRUMENT_REGION_DEFINE( handle, name, TAUtype_GEOPMhint ) \
uint64_t handle; \
geopm_prof_region( name, geopm_hint, & handle );
/* #define INSTRUMENT_REGION_DEFINE( handle, name, TAUtype_GEOPMhint, param ) \
uint64_t handle; \
geopm_prof_region( name, geopm_hint, & handle ); */
#elif defined USE_EXTRAE
#define INSTRUMENT_PHASE_REGION_DEFINE( handle, name, TAUtype_GEOPMhint ) \
unsigned int handle = 0;
#define INSTRUMENT_REGION_DEFINE( handle, name, TAUtype_GEOPMhint ) \
{ \
unsigned INSTRUMENT_EXTRAE_type = 0; \
int INSTRUMENT_EXTRAE_iter = 0; \
if (name != NULL) \
while(name[INSTRUMENT_EXTRAE_iter] != '\0') \
INSTRUMENT_EXTRAE_type += (unsigned)name[INSTRUMENT_EXTRAE_iter++];\
int INSTRUMENT_EXTRAE_nvalues = 2; \
extrae_value_t INSTRUMENT_EXTRAE_values[2] = {0, 1}; \
char * INSTRUMENT_EXTRAE_description_values[2] = {"End", "Begin" };\
Extrae_define_event_type (&INSTRUMENT_EXTRAE_type, name, &INSTRUMENT_EXTRAE_nvalues, INSTRUMENT_EXTRAE_values, INSTRUMENT_EXTRAE_description_values); \
}
#elif defined USE_LIKWID
#define INSTRUMENT_PHASE_REGION_DEFINE( handle, name, TAUtype_GEOPMhint ) \
likwid_markerRegisterRegion( name );
#define INSTRUMENT_REGION_DEFINE( handle, name, TAUtype_GEOPMhint ) \
likwid_markerRegisterRegion( name );
#else
#define INSTRUMENT_PHASE_REGION_DEFINE( handle, name, TAUtype_GEOPMhint )
#define INSTRUMENT_REGION_DEFINE( handle, name, TAUtype_GEOPMhint )
// #define INSTRUMENT_REGION_DEFINE( handle, name, TAUtype_GEOPMhint, param )
#endif
//INSTRUMENT_REGION_START(handle, name, SCOREPtype)
#ifdef USE_SCOREP_MANUAL
#define INSTRUMENT_REGION_START( handle, name, SCOREPtype ) \
SCOREP_USER_REGION_BEGIN( handle, name, SCOREPtype );
#elif defined USE_MERIC
#define INSTRUMENT_REGION_START( handle, name, SCOREPtype ) \
MERIC_MeasureStart( name );
#elif defined USE_TIMEPROF
#define INSTRUMENT_REGION_START( handle, name, SCOREPtype ) \
TIMEPROF_regionStart ( name );
#elif defined USE_TAU
#define INSTRUMENT_REGION_START( handle, name, SCOREPtype ) \
TAU_PROFILE_START( handle );
#elif defined USE_GEOPM
#define INSTRUMENT_REGION_START( handle, name, SCOREPtype ) \
geopm_prof_enter( handle );
#elif defined USE_EXTRAE
#define INSTRUMENT_REGION_START( handle, name, SCOREPtype ) \
{ \
unsigned INSTRUMENT_EXTRAE_type = 0; \
int INSTRUMENT_EXTRAE_iter = 0; \
if (name != NULL) \
while(name[INSTRUMENT_EXTRAE_iter] != '\0') \
INSTRUMENT_EXTRAE_type += (unsigned)name[INSTRUMENT_EXTRAE_iter++];\
Extrae_event( INSTRUMENT_EXTRAE_type, 1 ); \
}
#elif defined USE_LIKWID
#define INSTRUMENT_REGION_START( handle, name, SCOREPtype ) \
likwid_markerStartRegion( name );
#elif defined USE_TIME_MEASUREMENT
#define INSTRUMENT_REGION_START( handle, name, SCOREPtype ) \
instrumentAPI_time_start();
#else
#define INSTRUMENT_REGION_START( handle, name, SCOREPtype )
#endif
//INSTRUMENT_REGION_STOP(handle, name)
#ifdef USE_SCOREP_MANUAL
#define INSTRUMENT_REGION_STOP( handle, name ) \
INSTRUMENT_RETURN_ZERO(); \
SCOREP_USER_REGION_END( handle );
#elif defined USE_MERIC
#define INSTRUMENT_REGION_STOP( handle, name ) \
MERIC_MeasureStop( name );
#elif defined USE_TIMEPROF
#define INSTRUMENT_REGION_STOP( handle, name ) \
TIMEPROF_regionStop ( name );
#elif defined USE_TAU
#define INSTRUMENT_REGION_STOP( handle, name ) \
INSTRUMENT_RETURN_ZERO(); \
TAU_PROFILE_STOP( handle );
#elif defined USE_GEOPM
#define INSTRUMENT_REGION_STOP( handle, name ) \
INSTRUMENT_RETURN_ZERO(); \
geopm_prof_exit( handle );
#elif defined USE_EXTRAE
#define INSTRUMENT_REGION_STOP( handle, name ) \
{ \
unsigned INSTRUMENT_EXTRAE_type = 0; \
int INSTRUMENT_EXTRAE_iter = 0; \
if (name != NULL) \
while(name[INSTRUMENT_EXTRAE_iter] != '\0') \
INSTRUMENT_EXTRAE_type += (unsigned)name[INSTRUMENT_EXTRAE_iter++];\
Extrae_event( INSTRUMENT_EXTRAE_type, 0 ); \
}
#elif defined USE_LIKWID
#define INSTRUMENT_REGION_STOP( handle, name ) \
INSTRUMENT_RETURN_ZERO(); \
likwid_markerStopRegion( name );
#elif defined USE_TIME_MEASUREMENT
#define INSTRUMENT_REGION_STOP( handle, name ) \
instrumentAPI_time_stop();
#else
#define INSTRUMENT_REGION_STOP( handle, name ) \
INSTRUMENT_RETURN_ZERO();
#endif
//INSTRUMENT_REGION_STOP_START(stop_handle, stop_name, start_handle, start_name, SCOREPtype)
#ifdef USE_SCOREP_MANUAL
#define INSTRUMENT_REGION_STOP_START( stop_handle, stop_name, start_handle, start_name, SCOREPtype ) \
INSTRUMENT_RETURN_ZERO(); \
SCOREP_USER_REGION_END( stop_handle ); \
SCOREP_USER_REGION_BEGIN( start_handle, start_name, SCOREPtype );
#elif defined USE_MERIC
#define INSTRUMENT_REGION_STOP_START( stop_handle, stop_name, start_handle, start_name, SCOREPtype ) \
MERIC_MeasureStopStart( stop_name, start_name );
#elif defined USE_TIMEPROF
#define INSTRUMENT_REGION_STOP_START( stop_handle, stop_name, start_handle, start_name, SCOREPtype ) \
TIMEPROF_regionStop ( stop_name ); \
TIMEPROF_regionStart ( start_name );
#elif defined USE_TAU
#define INSTRUMENT_REGION_STOP_START( stop_handle, stop_name, start_handle, start_name, SCOREPtype ) \
INSTRUMENT_RETURN_ZERO(); \
TAU_PROFILE_STOP( stop_handler ); \
TAU_PROFILE_START( start_handler );
#elif defined USE_GEOPM
#define INSTRUMENT_REGION_STOP_START( stop_handle, stop_name, start_handle, start_name, SCOREPtype ) \
INSTRUMENT_RETURN_ZERO(); \
geopm_prof_exit( stop_handle ); \
geopm_prof_enter( start_handle );
#elif defined USE_EXTRAE
#define INSTRUMENT_REGION_STOP_START( stop_handle, stop_name, start_handle, start_name, SCOREPtype ) \
{ \
unsigned INSTRUMENT_EXTRAE_type = 0 \
int INSTRUMENT_EXTRAE_iter = 0; \
if (stop_name != NULL) \
while(stop_name[INSTRUMENT_EXTRAE_iter] != '\0') \
INSTRUMENT_EXTRAE_type += (unsigned)stop_name[INSTRUMENT_EXTRAE_iter++];\
Extrae_event( INSTRUMENT_EXTRAE_type, 0 ); \
} \
{ \
unsigned INSTRUMENT_EXTRAE_type = 0 \
int INSTRUMENT_EXTRAE_iter = 0; \
if (start_name != NULL) \
while(start_name[INSTRUMENT_EXTRAE_iter] != '\0') \
INSTRUMENT_EXTRAE_type += (unsigned)start_name[INSTRUMENT_EXTRAE_iter++];\
Extrae_event( INSTRUMENT_EXTRAE_type, 1 ); \
}
#elif defined USE_LIKWID
#define INSTRUMENT_REGION_STOP_START( stop_handle, stop_name, start_handle, start_name, SCOREPtype ) \
INSTRUMENT_RETURN_ZERO(); \
likwid_markerStopRegion( stop_name ); \
likwid_markerStartRegion( start_name );
#elif defined USE_TIME_MEASUREMENT
#define INSTRUMENT_REGION_STOP_START( stop_handle, stop_name, start_handle, start_name, SCOREPtype ) \
instrumentAPI_time_stop(); \
instrumentAPI_time_start();
#else
#define INSTRUMENT_REGION_STOP_START( stop_handle, stop_name, start_handle, start_name, SCOREPtype ) \
INSTRUMENT_RETURN_ZERO()
#endif
//INSTRUMENT_PHASE_START(handle, name, SCOREPtype)
#ifdef USE_SCOREP
#define INSTRUMENT_PHASE_START( handle, name, SCOREPtype ) \
SCOREP_USER_OA_PHASE_BEGIN( handle, name, SCOREPtype );
#elif defined USE_MERIC
#define INSTRUMENT_PHASE_START( handle, name, SCOREPtype ) \
MERIC_MeasureStart( name );
#elif defined USE_TAU
#define INSTRUMENT_PHASE_START( handle, name, SCOREPtype ) \
TAU_PHASE_START( handle );
#elif defined USE_GEOPM
#define INSTRUMENT_PHASE_START( handle, name, SCOREPtype ) \
geopm_prof_epoch();
#elif defined USE_EXTRAE
#define INSTRUMENT_PHASE_START( handle, name, SCOREPtype ) \
handle++; \
{ \
unsigned INSTRUMENT_EXTRAE_type = 0 \
int INSTRUMENT_EXTRAE_iter = 0; \
if (name != NULL) \
while(name[INSTRUMENT_EXTRAE_iter] != '\0') \
INSTRUMENT_EXTRAE_type += (unsigned)name[INSTRUMENT_EXTRAE_iter++];\
Extrae_event( INSTRUMENT_EXTRAE_type, handle ); \
}
#elif defined USE_LIKWID
#define INSTRUMENT_PHASE_START( handle, name, SCOREPtype ) \
likwid_markerStartRegion( name );
#elif defined USE_TIME_MEASUREMENT
#define INSTRUMENT_PHASE_START( handle, name, SCOREPtype ) \
instrumentAPI_time_start();
#else
#define INSTRUMENT_PHASE_START( handle, name, SCOREPtype )
#endif
//INSTRUMENT_PHASE_STOP(handle, name)
#ifdef USE_SCOREP
#define INSTRUMENT_PHASE_STOP( handle, name ) \
INSTRUMENT_RETURN_ZERO(); \
SCOREP_USER_OA_PHASE_END( handle );
#elif defined USE_MERIC
#define INSTRUMENT_PHASE_STOP( handle, name ) \
MERIC_MeasureStop( name );
#elif defined USE_TAU
#define INSTRUMENT_PHASE_STOP( handle, name ) \
INSTRUMENT_RETURN_ZERO(); \
TAU_PHASE_STOP( handle );
#elif defined USE_EXTRAE
#define INSTRUMENT_PHASE_STOP( handle, name ) \
INSTRUMENT_RETURN_ZERO(); \
{ \
unsigned INSTRUMENT_EXTRAE_type = 0 \
int INSTRUMENT_EXTRAE_iter = 0; \
if (name != NULL) \
while(name[INSTRUMENT_EXTRAE_iter] != '\0') \
INSTRUMENT_EXTRAE_type += (unsigned)name[INSTRUMENT_EXTRAE_iter++];\
Extrae_event( INSTRUMENT_EXTRAE_type, 0 ); \
}
#elif defined USE_LIKWID
#define INSTRUMENT_PHASE_STOP( handle, name ) \
INSTRUMENT_RETURN_ZERO(); \
likwid_markerStopRegion( name );
#elif defined USE_TIME_MEASUREMENT
#define INSTRUMENT_PHASE_STOP( handle, name ) \
instrumentAPI_time_stop();
#else
#define INSTRUMENT_PHASE_STOP( handle, name ) \
INSTRUMENT_RETURN_ZERO();
#endif
// Next section defines default functions that must be used because the shared
// interface does not provide alternative function.
// Following functions will be ignored if the application is not compiled
// with the appropriet library.
//Score-P API (SCOREP_User.h)
#ifndef USE_SCOREP
#define SCOREP_USER_REGION( name, type )
//#define SCOREP_USER_REGION_DEFINE( handle )
#define SCOREP_USER_REWIND_DEFINE( handle )
//#define SCOREP_USER_OA_PHASE_BEGIN( handle, name, type )
//#define SCOREP_USER_OA_PHASE_END( handle )
#define SCOREP_USER_REWIND_POINT( handle, name )
//#define SCOREP_USER_REGION_BEGIN( handle, name, type )
#define SCOREP_USER_REGION_BY_NAME_BEGIN( name, type )
#define SCOREP_USER_REGION_INIT( handle, name, type )
//#define SCOREP_USER_REGION_END( handle )
#define SCOREP_USER_REGION_BY_NAME_END( name )
#define SCOREP_USER_REWIND_CHECK( handle, value )
#define SCOREP_USER_REGION_ENTER( handle )
#define SCOREP_USER_FUNC_BEGIN()
#define SCOREP_USER_FUNC_END()
#define SCOREP_USER_GLOBAL_REGION_DEFINE( handle )
#define SCOREP_USER_GLOBAL_REGION_EXTERNAL( handle )
#define SCOREP_USER_PARAMETER_INT64( name, value )
#define SCOREP_USER_PARAMETER_UINT64( name, value )
#define SCOREP_USER_PARAMETER_STRING( name, value )
#define SCOREP_USER_METRIC_GLOBAL( metricHandle )
#define SCOREP_USER_METRIC_EXTERNAL( metricHandle )
#define SCOREP_USER_METRIC_LOCAL( metricHandle )
#define SCOREP_USER_METRIC_INIT( metricHandle, name, unit, type, context )
#define SCOREP_USER_METRIC_INT64( metricHandle, value )
#define SCOREP_USER_METRIC_UINT64( metricHandle, value )
#define SCOREP_USER_METRIC_DOUBLE( metricHandle, value )
//#define SCOREP_RECORDING_ON()
//#define SCOREP_RECORDING_OFF()
#define SCOREP_RECORDING_IS_ON() 0
#endif
//TAU-2.28 API (TAU.h.default)
#ifndef USE_TAU
#define TYPE_STRING(profileString, str)
#define PROFILED_BLOCK(name, type)
#define TAU_TYPE_STRING(profileString, str)
#define TAU_PROFILE(name, type, group)
#define TAU_PROFILE_TIMER(var, name, type, group)
//#define TAU_PROFILE_START(var)
//#define TAU_PROFILE_STOP(var)
#define TAU_PROFILE_STMT(stmt)
//#define TAU_PROFILE_EXIT(msg)
//#define TAU_PROFILE_INIT(argc, argv)
//#define TAU_PROFILE_SET_NODE(node)
#define TAU_PROFILE_SET_CONTEXT(context)
#define TAU_PROFILE_SET_THREAD(thread)
#define TAU_PROFILE_GET_NODE() -1
#define TAU_PROFILE_GET_THREAD() -1
#define TAU_PROFILE_GET_CONTEXT() -1
#define TAU_PROFILE_SET_GROUP_NAME(newname)
#define TAU_PROFILE_TIMER_SET_GROUP_NAME(t, newname)
#define TAU_PROFILE_CALLSTACK()
#define TAU_DB_DUMP()
#define TAU_DB_PURGE()
#define TAU_DB_DUMP_PREFIX(prefix)
#define TAU_DB_DUMP_INCR()
#define TAU_GET_FUNC_NAMES(functionList, num)
#define TAU_DUMP_FUNC_NAMES()
#define TAU_GET_PROFILE_GROUP(group)
//#define TAU_INIT(argc, argv)
#define TAU_REGISTER_CONTEXT_EVENT(event, name)
#define TAU_CONTEXT_EVENT(event, data)
#define TAU_DISABLE_CONTEXT_EVENT(event)
#define TAU_ENABLE_CONTEXT_EVENT(event)
#define TAU_REGISTER_EVENT(event, name)
#define TAU_EVENT(event, data)
#define TAU_EVENT_DISABLE_MIN(event)
#define TAU_EVENT_DISABLE_MAX(event)
#define TAU_EVENT_DISABLE_MEAN(event)
#define TAU_EVENT_DISABLE_STDDEV(event)
#define TAU_REPORT_STATISTICS()
#define TAU_REPORT_THREAD_STATISTICS()
#define TAU_REGISTER_THREAD()
#define TAU_REGISTER_FORK(id, op)
#define TAU_ENABLE_INSTRUMENTATION()
#define TAU_DISABLE_INSTRUMENTATION()
#define TAU_ENABLE_GROUP(group)
#define TAU_DISABLE_GROUP(group)
#define TAU_ENABLE_GROUP_NAME(group)
#define TAU_DISABLE_GROUP_NAME(group)
//#define TAU_ENABLE_ALL_GROUPS()
//#define TAU_DISABLE_ALL_GROUPS()
#define TAU_TRACK_MEMORY()
#define TAU_TRACK_MEMORY_HERE()
#define TAU_ENABLE_TRACKING_MEMORY()
#define TAU_DISABLE_TRACKING_MEMORY()
#define TAU_TRACK_MEMORY()
#define TAU_TRACK_MEMORY_HERE()
#define TAU_TRACK_POWER()
#define TAU_TRACK_POWER_HERE()
#define TAU_ENABLE_TRACKING_POWER()
#define TAU_DISABLE_TRACKING_POWER()
#define TAU_SET_INTERRUPT_INTERVAL(value)
#define CT(obj)
#define TAU_TRACE_SENDMSG(type, destination, length)
#define TAU_TRACE_RECVMSG(type, source, length)
#define TAU_TRACE_RECVMSG_REMOTE(type, source, length, remoteid)
#define TAU_TRACE_SENDMSG_REMOTE(type, destination, length, remoteid)
#define TAU_MAPPING(stmt, group) stmt
#define TAU_MAPPING_OBJECT(FuncInfoVar)
#define TAU_MAPPING_LINK(FuncInfoVar, Group)
#define TAU_MAPPING_PROFILE(FuncInfoVar)
#define TAU_MAPPING_CREATE(name, type, key, groupname, tid)
#define TAU_MAPPING_PROFILE_TIMER(Timer, FuncInfoVar, tid)
#define TAU_MAPPING_TIMER_CREATE(t, name, type, gr, group_name)
#define TAU_MAPPING_PROFILE_START(Timer, tid)
#define TAU_MAPPING_PROFILE_STOP(tid)
#define TAU_MAPPING_PROFILE_EXIT(msg, tid)
#define TAU_MAPPING_DB_DUMP(tid)
#define TAU_MAPPING_DB_PURGE(tid)
#define TAU_MAPPING_PROFILE_SET_NODE(node, tid)
#define TAU_MAPPING_PROFILE_SET_GROUP_NAME(timer, name)
#define TAU_PROFILE_TIMER_SET_NAME(t, newname)
#define TAU_PROFILE_TIMER_SET_TYPE(t, newname)
#define TAU_PROFILE_TIMER_SET_GROUP(t, id)
#define TAU_MAPPING_PROFILE_SET_NAME(timer, name)
#define TAU_MAPPING_PROFILE_SET_TYPE(timer, name)
#define TAU_MAPPING_PROFILE_SET_GROUP(timer, id)
#define TAU_MAPPING_PROFILE_GET_GROUP_NAME(timer)
#define TAU_MAPPING_PROFILE_GET_GROUP(timer)
#define TAU_MAPPING_PROFILE_GET_NAME(timer)
#define TAU_MAPPING_PROFILE_GET_TYPE(timer)
#define TAU_PHASE(name, type, group)
#define TAU_PHASE_CREATE_STATIC(var, name, type, group)
#define TAU_PHASE_CREATE_DYNAMIC(var, name, type, group)
//#define TAU_PHASE_START(var)
//#define TAU_PHASE_STOP(var)
#define TAU_GLOBAL_PHASE(timer, name, type, group)
#define TAU_GLOBAL_PHASE_START(timer)
#define TAU_GLOBAL_PHASE_STOP(timer)
#define TAU_GLOBAL_PHASE_EXTERNAL(timer)
#define TAU_GLOBAL_TIMER(timer, name, type, group)
#define TAU_GLOBAL_TIMER_EXTERNAL(timer)
#define TAU_GLOBAL_TIMER_START(timer)
#define TAU_GLOBAL_TIMER_STOP()
#define TAU_PROFILE_PARAM1L(a,b)
#define TAU_NEW(expr, size) expr
#define TAU_DELETE(expr, variable) expr
#define TAU_PROFILE_SNAPSHOT(name)
#define TAU_PROFILE_SNAPSHOT_1L(name, expr)
#define TAU_METADATA(name, value)
#define TAU_METADATA_ITERATION(name, iteration, value)
#define TAU_PHASE_METADATA(name, value)
#define TAU_CONTEXT_METADATA(name, value)
/* extensions to the PHASE/TIMER API */
//#define TAU_DYNAMIC_PHASE(name, type, group)
#define TAU_DYNAMIC_PROFILE(name, type, group)
#define TAU_STATIC_PHASE_START(name)
#define TAU_STATIC_PHASE_STOP(name)
#define TAU_DYNAMIC_PHASE_START(name)
#define TAU_DYNAMIC_PHASE_STOP(name)
#define TAU_DYNAMIC_TIMER_START(name)
#define TAU_DYNAMIC_TIMER_STOP(name)
#define TAU_PROFILE_CREATE_DYNAMIC_AUTO(var, name, type, group)
#define TAU_PHASE_CREATE_DYNAMIC_AUTO(var, name, type, group)
#define TAU_PROFILER_CREATE(handle, name, type, group)
#define TAU_PROFILER_START(handle)
#define TAU_PROFILER_STOP(handle)
#define TAU_PROFILER_GET_INCLUSIVE_VALUES(handle, data)
#define TAU_PROFILER_GET_EXCLUSIVE_VALUES(handle, data)
#define TAU_PROFILER_GET_CALLS(handle, number)
#define TAU_PROFILER_GET_CHILD_CALLS(handle, number)
#define TAU_PROFILER_GET_COUNTER_INFO(counters, numcounters)
//#define TAU_PROFILE_TIMER_DYNAMIC(var,name, type, group)
#define TAU_GET_FUNC_NAMES(functionList, num)
#define TAU_GET_COUNTER_NAMES(counterList, num)
#define TAU_GET_FUNC_VALS(v1,v2,v3,v4,v5,v6,v7,v8)
#define TAU_DUMP_FUNC_VALS(functionList, num)
#define TAU_DUMP_FUNC_VALS_INCR(functionList, num)
#define TAU_GET_EVENT_NAMES(eventList, num)
#define TAU_GET_EVENT_VALS(v1,v2,v3,v4,v5,v6,v7)
#define TAU_EVENT_SET_NAME(event, name)
#define TAU_ENABLE_TRACKING_MEMORY()
#define TAU_DISABLE_TRACKING_MEMORY()
#define TAU_TRACK_MEMORY()
#define TAU_TRACK_MEMORY_HERE()
#define TAU_TRACK_MEMORY_HEADROOM()
#define TAU_TRACK_MEMORY_HEADROOM_HERE()
#define TAU_ENABLE_TRACKING_MEMORY_HEADROOM()
#define TAU_DISABLE_TRACKING_MEMORY_HEADROOM()
#define TAU_QUERY_DECLARE_EVENT(event)
#define TAU_QUERY_GET_CURRENT_EVENT(event)
#define TAU_QUERY_GET_EVENT_NAME(event, str)
#define TAU_QUERY_GET_PARENT_EVENT(event)
#define TAU_SET_USER_CLOCK(value)
/* Old/Dead API calls */
#define TAU_ENABLE_TRACKING_MUSE_EVENTS()
#define TAU_DISABLE_TRACKING_MUSE_EVENTS()
#define TAU_TRACK_MUSE_EVENTS()
#endif
// GEOPM API
#ifndef USE_GEOPM
//#define geopm_prof_init()
//#define geopm_prof_shutdown()
//#define geopm_prof_epoch()
//#define geopm_prof_region( name, hint, handle )
//#define geopm_prof_enter( handle )
//#define geopm_prof_exit( handle )
#define geopm_prof_progress( region_id, fraction )
#define geopm_tprof_init( num_work_unit )
#define geopm_tprof_init_loop( num_thread, thread_idx, num_iter, chunk_size )
#define geopm_tprof_post()
#endif
#ifndef USE_MPIP
//#define mpiP_init_api()
#define mpiP_record_traceback( pc_array, max_stack ) -1
#define mpiP_open_executable( filename ) -1
#define mpiP_close_executable()
#define mpiP_TIMER mpiP_gettime () 0.0
#define mpiP_get_executable_name() NULL
#define mpiP_find_src_loc( i_addr_hex, o_file_str, o_lineno, o_funct_str ) -1
#define mpiP_format_address ( pval, addr_buf ) NULL
#endif
#ifndef USE_EXTRAE
enum INSTRUMENT_EXTRAE_OPTIONS
{
EXTRAE_CALLER_OPTION = 0,
EXTRAE_HWC_OPTION = 2,
EXTRAE_MPI_OPTION = 8,
EXTRAE_MPI_HWC_OPTION = 4,
EXTRAE_OMP_OPTION = 16,
EXTRAE_OMP_HWC_OPTION = 32,
EXTRAE_UF_HWC_OPTION = 64,
EXTRAE_SAMPLING_OPTION=128,
EXTRAE_ENABLE_ALL_OPTIONS=255
};
#define Extrae_get_version( major, minor, revision )
//#define Extrae_init()
//#define Extrae_fini()
//#define Extrae_event( type, value )
//#define Extrae_define_event_type( type, description, nvalues, values, description_values )
//#define Extrae_shutdown()
//#define Extrae_restart()
#define Extrae_previous_hwc_set()
#define Extrae_next_hwc_set()
#define Extrae_set_tracing_tasks( from, to )
//uses INSTRUMENT_EXTRAE_OPTIONS
#define Extrae_set_options( options )
#define Extrae_nevent( count, types, values )
#define Extrae_counters()
#define Extrae_eventandcounters( event, value )
#define Extrae_neventandcounters( count, types, values )
#define Extrae_network_counters()
#define Extrae_network_routes( task )
#define Extrae_user_function( enter ) 0
#define Extrae_flush()
//EXTRAE_NOT_INITIALIZED = 0
#define Extrae_is_initialized() 0
#endif
#ifndef USE_LIKWID
//#define LIKWID_MARKER_INIT
//#define likwid_markerInit()
//#define LIKWID_MARKER_THREADINIT
//#define likwid_markerThreadInit()
//#define LIKWID_MARKER_CLOSE
//#define likwid_markerClose()
//#define LIKWID_MARKER_REGISTER( regionTag )
//#define likwid_markerRegisterRegion( regionTag )
//#define LIKWID_MARKER_START( regionTag )
//#define likwid_markerStartRegion( regionTag )
//#define LIKWID_MARKER_STOP( regionTag )
//#define likwid_markerStopRegion( regionTag )
#define LIKWID_MARKER_SWITCH
#define likwid_markerNextGroup()
#define LIKWID_MARKER_RESET( regionTag ) 0
#define likwid_markerResetRegion( regionTag ) 0
#define LIKWID_MARKER_GET( regionTag, nevents, events, time, count )
#define likwid_markerGetRegion( regionTag, nevents, events, time, count )
#define likwid_getProcessorId() 0
#define likwid_pinProcess( processorId ) 0
#define likwid_pinThread( processorId ) 0
#endif
#ifndef USE_MERIC
#define MERIC_captureScope( region )
#endif
#ifndef USE_TIMEPROF
#define TIMEPROF_captureScope( regionName )
#define TIMEPROF_getLastRegionDuration() 0.0
#endif
#endif /* INSTRUMENT_H_ */