geopm  3.1.1.dev296+g5916b956
GEOPM - Global Extensible Open Power Manager
Classes | Typedefs | Enumerations | Functions
geopm Namespace Reference

Classes

class  SumAccumulator
 Class to track the total increase of a signal while a condition is true. More...
 
class  AvgAccumulator
 Class to track the average value of a signal while a condition is true. More...
 
class  SumAccumulatorImp
 
class  AvgAccumulatorImp
 
class  Admin
 
class  All2allModelRegion
 
class  ApplicationIO
 
class  ApplicationIOImp
 
class  ApplicationRecordLog
 Provides an abstraction for a shared memory buffer that can be used to pass entry, exit, epoch and short region events from Profile to ApplicationSampler. More...
 
class  ApplicationRecordLogImp
 
class  ApplicationSampler
 
class  ApplicationSamplerImp
 
class  ApplicationStatus
 Object that encapsulates application process information such as the process ID, region hash, or region hint. There will be one ApplicationStatus for the node (board domain) on each side of the shared memory. More...
 
class  ApplicationStatusImp
 
class  BarrierModelRegion
 
class  Comm
 Abstract base class for interprocess communication in geopm. More...
 
class  CommFactory
 
class  NullComm
 
class  Controller
 
class  CPUActivityAgent
 Agent. More...
 
class  CSV
 CSV class provides the GEOPM interface for creation of character separated value tabular data files. These CSV formatted files are created with a header containing some meta-data prefixed by the '#' character and then one line that defines the field name for the column. The separation character is a '|' not a comma. More...
 
class  CSVImp
 
class  DaemonImp
 
class  DebugIOGroup
 IOGroup that Agents can use to expose internal values. More...
 
class  DefaultProfile
 
class  DenseLayer
 Class to store dense layers and perform operations on the layers' 1D and 2D Tensors, aka vectors and matrices, suitable for use in feed-forward neural networks. More...
 
class  DenseLayerImp
 
class  DGEMMModelRegion
 
class  DomainNetMap
 Class to load neural net from file, sample signals specified in that file, feed those signals into the neural net and manage the output from the neural nets. More...
 
class  DomainNetMapImp
 
class  EditDistEpochRecordFilter
 
class  EditDistPeriodicityDetector
 
class  ELF
 Class encapsulating interactions with ELF files. More...
 
class  ELFImp
 
struct  geopm_endpoint_policy_shmem_header
 
struct  geopm_endpoint_sample_shmem_header
 
struct  geopm_endpoint_policy_shmem_s
 
struct  geopm_endpoint_sample_shmem_s
 
class  EndpointImp
 
class  EndpointPolicyTracer
 
class  EndpointPolicyTracerImp
 
class  EndpointUser
 
class  EndpointUserImp
 
class  EpochIOGroup
 
class  FFNetAgent
 Feed Forward Net Agent. More...
 
class  FilePolicy
 
class  FrequencyGovernorImp
 
class  FrequencyLimitDetector
 Detect maximum achievable frequency limits of CPU cores. More...
 
class  FrequencyMapAgent
 
class  FrequencyTimeBalancerImp
 
class  FrequencyTimeBalancer
 
class  GEOPMBenchConfig
 
class  GEOPMBenchConfigImp
 
class  GPUActivityAgent
 Agent. More...
 
class  IgnoreModelRegion
 
class  InitControl
 
class  InitControlImp
 
class  LocalNeuralNet
 Class to manage data and operations of feed forward neural nets required for neural net inference. More...
 
class  LocalNeuralNetImp
 
class  ModelApplication
 
class  MonitorAgent
 Agent used to do sampling only; no policy will be enforced. More...
 
class  CommWindow
 
class  MPIComm
 Implementation of the Comm interface using MPI as the underlying communication mechanism. More...
 
class  NNFactory
 Class to generate objects related to feed-forward neural nets, i.e. TensorOneD, TensorTwoD, DenseLayer, and LocalNeuralNet objects. More...
 
class  NNFactoryImp
 
class  OMPTImp
 
class  OMPT
 
class  OptionParser
 
class  PolicyStore
 
class  PolicyStoreImp
 
class  PowerBalancerAgent
 
class  CircularBuffer
 
class  PowerBalancerImp
 
class  PowerGovernorAgent
 
class  PowerGovernorImp
 
class  ProcessRegionAggregator
 Class responsible for reading records from the ApplicationSampler and calculating the per-process runtimes within each region. More...
 
class  ProcessRegionAggregatorImp
 
class  ProfileIOGroup
 IOGroup that provides signals from the application. More...
 
class  ProfileTracer
 
class  ProfileTracerImp
 
class  ProxyEpochRecordFilter
 Filter that can be used to synthesize epoch events from a sequence of region entry events. The filter suppresses received epoch events and passes through all other events. More...
 
struct  record_s
 Record of an application event. More...
 
struct  short_region_s
 
class  RecordFilter
 Base class for filters that can be applied to ApplicationSampler record streams produced by a single process. More...
 
class  ReduceModelRegion
 
class  RegionHintRecommender
 Class ingesting the output from a DomainNetMap and a frequency map json file and determining a recommended frequency decision. More...
 
class  RegionHintRecommenderImp
 Class ingesting region classification logits and a frequency map json file and determining a recommended frequency decision. More...
 
class  Reporter
 A class used by the Controller to format the report at the end of a run. Most of the information for the report is passed into the generate() method at the end of a run, however the Reporter is also responsible for pushing some per-region signals to indicate that they should be tracked by the PlatformIO. More...
 
class  ReporterImp
 
class  SampleAggregatorImp
 
class  ScalingModelRegion
 
class  Scheduler
 
class  SchedulerImp
 
class  SleepModelRegion
 
class  SpinModelRegion
 
class  SSTClosGovernor
 Govern class of service (CLOS) controls. More...
 
class  SSTClosGovernorImp
 
class  SSTFrequencyLimitDetector
 
class  StreamModelRegion
 
class  TensorMath
 Class to perform operations on 1D and 2D Tensors, aka vectors and matrices, suitable for use in feed-forward neural networks. More...
 
class  TensorMathImp
 
class  TensorOneD
 Class to store and perform operations on 1D Tensors, aka vectors, suitable for use in feed-forward neural networks. More...
 
class  TensorTwoD
 Class to manage data and operations related to 2D Tensors required for neural net inference. More...
 
class  TimedScalingModelRegion
 
class  Tracer
 Abstract base class for the Tracer object defines the interface. More...
 
class  TracerImp
 Class used to write a trace of the telemetry and policy. More...
 
class  TreeComm
 
class  TreeCommImp
 
class  TreeCommLevel
 
class  TreeCommLevelImp
 
class  TRLFrequencyLimitDetector
 
class  ValidateRecord
 Checks validity and self consistency of a record stream from a single process. This check is applied by the ApplicationSampler when updates are provided and after the filter is applied. More...
 
class  Agent
 
class  AgentFactory
 
class  Daemon
 
class  Endpoint
 
class  Environment
 Environment class encapsulates all functionality related to dealing with runtime environment variables. More...
 
class  EnvironmentImp
 
class  FrequencyGovernor
 
class  ModelRegion
 
class  PlatformIOProf
 
class  PowerBalancer
 Stay within a power cap but redistribute power to optimize performance. An average per compute node power maximum is maintained, but individual nodes will be allowed above or below this average. More...
 
class  PowerGovernor
 
class  Profile
 Enables application profiling and application feedback to the control algorithm. More...
 
class  ProfileImp
 
class  SampleAggregator
 
class  Waiter
 Class to support a periodic wait loop. More...
 
class  SleepWaiter
 Class to support a periodic wait loop based on clock_nanosleep() using CLOCK_REALTIME. More...
 

Typedefs

typedef std::unique_ptr< sqlite3_stmt, std::function< void(sqlite3_stmt *)> > UniqueStatement
 

Enumerations

enum  event_e {
  EVENT_REGION_ENTRY = 0 , EVENT_REGION_EXIT = 1 , EVENT_EPOCH_COUNT = 2 , EVENT_SHORT_REGION = 3 ,
  EVENT_AFFINITY = 9 , EVENT_START_PROFILE = 10 , EVENT_STOP_PROFILE = 11 , EVENT_OVERHEAD = 12
}
 Enumeration of event types that can be stored in a record. More...
 
enum  Priorities_e { HIGH_PRIORITY = 0 , MEDIUM_HIGH_PRIORITY = 1 , MEDIUM_LOW_PRIORITY = 2 , LOW_PRIORITY = 3 }
 

Functions

AgentFactoryagent_factory (void)
 
CommFactorycomm_factory (void)
 
std::shared_ptr< ELFelf (const std::string &file_path)
 Factory method to construct an ELF pointer from a path to an ELF encoded file. More...
 
std::map< size_t, std::string > elf_symbol_map (const std::string &file_path)
 Get a map from symbol location to symbol name for all symbols in an ELF file. More...
 
std::pair< size_t, std::string > symbol_lookup (const void *instruction_ptr)
 Look up the nearest symbol lower than an instruction address. More...
 
const Environmentenvironment (void)
 
std::vector< std::pair< std::string, int > > environment_signal_parser (const std::set< std::string > &valid_signals, const std::string &environment_variable_contents)
 EnvironmentParser class parses signal lists from the GEOPM_REPORT_SIGNALS and GEOPM_TRACE_SIGNALS environment variables. More...
 
const GEOPMBenchConfiggeopmbench_config (void)
 
void model_parse_config (const std::string config_path, uint64_t &loop_count, std::vector< std::string > &region_name, std::vector< double > &big_o)
 
void check_mpi (int err)
 
template<typename T >
void bind_value_to_statement (sqlite3_stmt *, int, T)=delete
 
std::string event_name (int event_type)
 Format an event_e type as a string. More...
 
int event_type (const std::string &event_name)
 Convert a human-readable event type string to an event_e. More...
 
std::string hint_name (uint64_t hint)
 Format a string to represent a hint enum from the geopm_region_hint_e. More...
 
uint64_t hint_type (const std::string &hint_name)
 Parse a string representing the hint name. More...
 
template<typename type >
std::map< uint64_t, std::shared_ptr< type > >::iterator sample_aggregator_emplace_hash (std::map< uint64_t, std::shared_ptr< type > > &hash_accum_map, uint64_t hash)
 
template<typename type >
void sample_aggregator_update_epoch (type &signal, int epoch_count)
 
template<typename type >
void sample_aggregator_update_hash_exit (type &signal, uint64_t hash)
 
template<typename type >
void sample_aggregator_update_hash_enter (type &signal, uint64_t hash)
 
template<typename type >
void sample_aggregator_update_period (type &signal, int period)
 

Typedef Documentation

◆ UniqueStatement

typedef std::unique_ptr<sqlite3_stmt, std::function<void(sqlite3_stmt *)> > geopm::UniqueStatement

Enumeration Type Documentation

◆ event_e

Enumeration of event types that can be stored in a record.

This enum is stored in the "event" field of an m_record_s. For each event type the "signal" field of a record will represent different data. The description of the "signal" field in the m_record_s is given for each enum value.

Enumerator
EVENT_REGION_ENTRY 
EVENT_REGION_EXIT 

EVENT: The application has entered a region. SIGNAL: The hash of the entered region.

EVENT_EPOCH_COUNT 

EVENT: The application has exited a region. SIGNAL: The hash of the exited region.

EVENT_SHORT_REGION 

EVENT: An epoch call was made by the application. SIGNAL: The number of epochs signaled by process.

EVENT_AFFINITY 

EVENT: The application entered and exited a region at least once since last update. SIGNAL: Handle to pass to AppliationSampler::get_short_region()

EVENT_START_PROFILE 

EVENT: The application process affinity has changed SIGNAL: PID or TID of thread with the modified cpuset

EVENT_STOP_PROFILE 

EVENT: An application PID requested profiling SIGNAL: Hash of the profile name

EVENT_OVERHEAD 

EVENT: An application PID requested profiling SIGNAL: Hash of the profile name

◆ Priorities_e

Enumerator
HIGH_PRIORITY 
MEDIUM_HIGH_PRIORITY 
MEDIUM_LOW_PRIORITY 
LOW_PRIORITY 

Function Documentation

◆ agent_factory()

AgentFactory GEOPM_PUBLIC & geopm::agent_factory ( void  )

◆ bind_value_to_statement()

template<typename T >
void geopm::bind_value_to_statement ( sqlite3_stmt *  ,
int  ,
 
)
delete

◆ check_mpi()

void geopm::check_mpi ( int  err)

◆ comm_factory()

CommFactory & geopm::comm_factory ( void  )

◆ elf()

std::shared_ptr< ELF > geopm::elf ( const std::string &  file_path)

Factory method to construct an ELF pointer from a path to an ELF encoded file.

◆ elf_symbol_map()

std::map< size_t, std::string > geopm::elf_symbol_map ( const std::string &  file_path)

Get a map from symbol location to symbol name for all symbols in an ELF file.

Parameters
[in]file_pathPath to ELF encoded binary file.
Returns
Map from symbol location to symbol name.

◆ environment()

const Environment GEOPM_PUBLIC & geopm::environment ( void  )

◆ environment_signal_parser()

std::vector< std::pair< std::string, int > > geopm::environment_signal_parser ( const std::set< std::string > &  valid_signals,
const std::string &  environment_variable_contents 
)

EnvironmentParser class parses signal lists from the GEOPM_REPORT_SIGNALS and GEOPM_TRACE_SIGNALS environment variables.

◆ event_name()

std::string geopm::event_name ( int  event_type)

Format an event_e type as a string.

◆ event_type()

int geopm::event_type ( const std::string &  event_name)

Convert a human-readable event type string to an event_e.

◆ geopmbench_config()

const GEOPMBenchConfig & geopm::geopmbench_config ( void  )

◆ hint_name()

std::string geopm::hint_name ( uint64_t  hint)

Format a string to represent a hint enum from the geopm_region_hint_e.

Parameters
[in]hintOne of the hint enum values.
Returns
A shortened string representation of the hint enum: e.g. GEOPM_REGION_HINT_MEMORY => "MEMORY".

◆ hint_type()

uint64_t geopm::hint_type ( const std::string &  hint_name)

Parse a string representing the hint name.

Parameters
[in]hint_nameA string representing the hint as would be returned by hint_type_to_name().
Returns
One of the geopm_region_hint_e enum values.

◆ model_parse_config()

void GEOPM_PUBLIC geopm::model_parse_config ( const std::string  config_path,
uint64_t &  loop_count,
std::vector< std::string > &  region_name,
std::vector< double > &  big_o 
)

◆ sample_aggregator_emplace_hash()

template<typename type >
std::map<uint64_t, std::shared_ptr<type> >::iterator geopm::sample_aggregator_emplace_hash ( std::map< uint64_t, std::shared_ptr< type > > &  hash_accum_map,
uint64_t  hash 
)

◆ sample_aggregator_update_epoch()

template<typename type >
void geopm::sample_aggregator_update_epoch ( type &  signal,
int  epoch_count 
)

◆ sample_aggregator_update_hash_enter()

template<typename type >
void geopm::sample_aggregator_update_hash_enter ( type &  signal,
uint64_t  hash 
)

◆ sample_aggregator_update_hash_exit()

template<typename type >
void geopm::sample_aggregator_update_hash_exit ( type &  signal,
uint64_t  hash 
)

◆ sample_aggregator_update_period()

template<typename type >
void geopm::sample_aggregator_update_period ( type &  signal,
int  period 
)

◆ symbol_lookup()

std::pair< size_t, std::string > geopm::symbol_lookup ( const void *  instruction_ptr)

Look up the nearest symbol lower than an instruction address.

Parameters
[in]instruction_ptrAddress of an instruction or function.
Returns
Pair of symbol location and symbol name. If symbol couldn't be found, location is zero and symbol name is empty.