All Classes Namespaces Files Functions Variables Typedefs Enumerator Macros Groups Pages
Classes | Macros
Measurement controller

Classes

struct  MeterPU::Measurement_Controller
 Measurement Controller Interface. More...
 
struct  MeterPU::CPU_Time_Measurement_Controller
 CPU Time Measurement Controller. More...
 
struct  MeterPU::CUDA_Time_Measurement_Controller
 CUDA-enabled GPU Time Measurement Controller. More...
 
struct  MeterPU::PCM_Energy_Measurement_Controller
 CPU and DRAME Energy Measurement Controller. More...
 
struct  MeterPU::NVML_Energy_Measurement_Controller< device_id >
 CUDA-enabled GPU Energy Measurement Controller. More...
 
struct  MeterPU::System_Energy_Measurement_Controller< gpu_device_ids >
 System Energy Measurement Controller. More...
 

Macros

#define POINTER   ((Meter<NVML_Energy<first_device_id> >*)x[array_index])
 A macro for downcast a void pointer to a NVML Energy Meter. More...
 
#define NOTHING
 
#define LOOPER(name, return_type, base_code, general_code)
 A macro to build variadic template to recursively apply code snippets. More...
 

Detailed Description

Encapsulate logic that use native measurement libraries to start, stop and calculate measurement samples.

Macro Definition Documentation

#define LOOPER (   name,
  return_type,
  base_code,
  general_code 
)
Value:
template <GPU_Device_Id_Type ...default_case> \
struct name { static return_type apply(void *x[]) { base_code } }; \
template <GPU_Device_Id_Type array_index, \
GPU_Device_Id_Type first_device_id, \
struct name <array_index,first_device_id, rest...> \
{ \
static return_type apply(void *x[]) \
{ \
general_code \
name <array_index+1,rest...>::apply(x); \
} \
};
unsigned int GPU_Device_Id_Type
Definition: MeterPU.h:175

A macro to build variadic template to recursively apply code snippets.

#define NOTHING
#define POINTER   ((Meter<NVML_Energy<first_device_id> >*)x[array_index])

A macro for downcast a void pointer to a NVML Energy Meter.