geopm
Classes | Public Member Functions | Static Public Member Functions | List of all members
geopm::ProfileIOGroup Class Reference

IOGroup that provides signals from the application. More...

#include <ProfileIOGroup.hpp>

Inheritance diagram for geopm::ProfileIOGroup:
Inheritance graph
[legend]
Collaboration diagram for geopm::ProfileIOGroup:
Collaboration graph
[legend]

Public Member Functions

 ProfileIOGroup ()
 
 ProfileIOGroup (const PlatformTopo &topo, ApplicationSampler &application_sampler)
 
virtual ~ProfileIOGroup ()
 
std::set< std::string > signal_names (void) const override
 Returns the names of all signals provided by the IOGroup. More...
 
std::set< std::string > control_names (void) const override
 Returns the names of all controls provided by the IOGroup. More...
 
bool is_valid_signal (const std::string &signal_name) const override
 Test if signal_name refers to a signal supported by the group. More...
 
bool is_valid_control (const std::string &control_name) const override
 Test if control_name refers to a control supported by the group. More...
 
int signal_domain_type (const std::string &signal_name) const override
 Query the domain for a named signal. More...
 
int control_domain_type (const std::string &control_name) const override
 Query the domain for a named control. More...
 
int push_signal (const std::string &signal_name, int domain_type, int domain_idx) override
 Add a signal to the list of signals that is read by read_batch() and sampled by sample(). More...
 
int push_control (const std::string &control_name, int domain_type, int domain_idx) override
 Add a control to the list of controls that is written by write_batch() and configured with adjust(). More...
 
void read_batch (void) override
 Read all pushed signals from the platform so that the next call to sample() will reflect the updated data. More...
 
void write_batch (void) override
 Write all of the pushed controls so that values previously given to adjust() are written to the platform. More...
 
double sample (int signal_idx) override
 Retrieve signal value from data read by last call to read_batch() for a particular signal previously pushed with push_signal(). More...
 
void adjust (int control_idx, double setting) override
 Adjust a setting for a particular control that was previously pushed with push_control(). This adjustment will be written to the platform on the next call to write_batch(). More...
 
double read_signal (const std::string &signal_name, int domain_type, int domain_idx) override
 Read from platform and interpret into SI units a signal given its name and domain. Does not modify the values stored by calling read_batch(). More...
 
void write_control (const std::string &control_name, int domain_type, int domain_idx, double setting) override
 Interpret the setting and write setting to the platform. Does not modify the values stored by calling adjust(). More...
 
void save_control (void) override
 Save the state of all controls so that any subsequent changes made through the IOGroup can be undone with a call to the restore() method. More...
 
void restore_control (void) override
 Restore all controls to values recorded in previous call to the save() method. More...
 
std::function< double(const std::vector< double > &)> agg_function (const std::string &signal_name) const override
 Return a function that should be used when aggregating the given signal. More...
 
std::function< std::string(double)> format_function (const std::string &signal_name) const override
 Returns a function that can be used to convert a signal of the given name into a printable string. May be one of the IOGroup::format_*() static methods, or another function. More...
 
std::string signal_description (const std::string &signal_name) const override
 Returns a description of the signal. This string can be used by tools to generate help text for users of the IOGroup. More...
 
std::string control_description (const std::string &control_name) const override
 Returns a description of the control. This string can be used by tools to generate help text for users of the IOGroup. More...
 
int signal_behavior (const std::string &signal_name) const override
 Returns a hint about how a signal will change as a function of time. More...
 
void connect (void)
 
- Public Member Functions inherited from geopm::IOGroup
 IOGroup ()=default
 
virtual ~IOGroup ()=default
 

Static Public Member Functions

static std::string plugin_name (void)
 
static std::unique_ptr< IOGroupmake_plugin (void)
 
- Static Public Member Functions inherited from geopm::IOGroup
static std::vector< std::string > iogroup_names (void)
 
static std::unique_ptr< IOGroupmake_unique (const std::string &iogroup_name)
 
static m_units_e string_to_units (const std::string &str)
 Convert a string to the corresponding m_units_e value. More...
 
static std::string units_to_string (int)
 Convert the m_units_e value to the corresponding string. More...
 
static m_signal_behavior_e string_to_behavior (const std::string &str)
 Convert a string to the corresponding m_signal_behavior_e value. More...
 

Additional Inherited Members

- Public Types inherited from geopm::IOGroup
enum  m_units_e {
  M_UNITS_NONE, M_UNITS_SECONDS, M_UNITS_HERTZ, M_UNITS_WATTS,
  M_UNITS_JOULES, M_UNITS_CELSIUS, M_NUM_UNITS
}
 
enum  m_signal_behavior_e {
  M_SIGNAL_BEHAVIOR_CONSTANT, M_SIGNAL_BEHAVIOR_MONOTONE, M_SIGNAL_BEHAVIOR_VARIABLE, M_SIGNAL_BEHAVIOR_LABEL,
  M_NUM_SIGNAL_BEHAVIOR
}
 Description of the runtime behavior of a signal. More...
 
- Static Public Attributes inherited from geopm::IOGroup
static const std::string M_PLUGIN_PREFIX = "libgeopmiogroup_"
 

Detailed Description

IOGroup that provides signals from the application.

Constructor & Destructor Documentation

◆ ProfileIOGroup() [1/2]

geopm::ProfileIOGroup::ProfileIOGroup ( )

◆ ProfileIOGroup() [2/2]

geopm::ProfileIOGroup::ProfileIOGroup ( const PlatformTopo topo,
ApplicationSampler application_sampler 
)

◆ ~ProfileIOGroup()

geopm::ProfileIOGroup::~ProfileIOGroup ( )
virtual

Member Function Documentation

◆ adjust()

void geopm::ProfileIOGroup::adjust ( int  control_idx,
double  setting 
)
overridevirtual

Adjust a setting for a particular control that was previously pushed with push_control(). This adjustment will be written to the platform on the next call to write_batch().

Parameters
[in]control_idxThe index returned by previous call to push_control().
[in]settingValue of the control in SI units.

Implements geopm::IOGroup.

◆ agg_function()

std::function< double(const std::vector< double > &)> geopm::ProfileIOGroup::agg_function ( const std::string &  signal_name) const
overridevirtual

Return a function that should be used when aggregating the given signal.

Parameters
[in]signal_nameName of the signal.

Implements geopm::IOGroup.

◆ connect()

void geopm::ProfileIOGroup::connect ( void  )

◆ control_description()

std::string geopm::ProfileIOGroup::control_description ( const std::string &  control_name) const
overridevirtual

Returns a description of the control. This string can be used by tools to generate help text for users of the IOGroup.

Implements geopm::IOGroup.

◆ control_domain_type()

int geopm::ProfileIOGroup::control_domain_type ( const std::string &  control_name) const
overridevirtual

Query the domain for a named control.

Parameters
[in]control_nameName of the control to query.
Returns
One of the PlatformTopo::m_domain_e enum values.

Implements geopm::IOGroup.

◆ control_names()

std::set< std::string > geopm::ProfileIOGroup::control_names ( void  ) const
overridevirtual

Returns the names of all controls provided by the IOGroup.

Implements geopm::IOGroup.

◆ format_function()

std::function< std::string(double)> geopm::ProfileIOGroup::format_function ( const std::string &  signal_name) const
overridevirtual

Returns a function that can be used to convert a signal of the given name into a printable string. May be one of the IOGroup::format_*() static methods, or another function.

Reimplemented from geopm::IOGroup.

◆ is_valid_control()

bool geopm::ProfileIOGroup::is_valid_control ( const std::string &  control_name) const
overridevirtual

Test if control_name refers to a control supported by the group.

Parameters
[in]control_nameName of control to test.
Returns
True if control is supported, false otherwise.

Implements geopm::IOGroup.

◆ is_valid_signal()

bool geopm::ProfileIOGroup::is_valid_signal ( const std::string &  signal_name) const
overridevirtual

Test if signal_name refers to a signal supported by the group.

Parameters
[in]signal_nameName of signal to test.
Returns
True if signal is supported, false otherwise.

Implements geopm::IOGroup.

◆ make_plugin()

std::unique_ptr< IOGroup > geopm::ProfileIOGroup::make_plugin ( void  )
static

◆ plugin_name()

std::string geopm::ProfileIOGroup::plugin_name ( void  )
static

◆ push_control()

int geopm::ProfileIOGroup::push_control ( const std::string &  control_name,
int  domain_type,
int  domain_idx 
)
overridevirtual

Add a control to the list of controls that is written by write_batch() and configured with adjust().

Parameters
[in]control_nameName of the control requested.
[in]domain_typeOne of the values from the PlatformTopo::m_domain_e enum described in PlatformTopo.hpp.
[in]domain_idxThe index of the domain within the set of domains of the same type on the platform.
Returns
Index of control when adjust() method is called.

Implements geopm::IOGroup.

◆ push_signal()

int geopm::ProfileIOGroup::push_signal ( const std::string &  signal_name,
int  domain_type,
int  domain_idx 
)
overridevirtual

Add a signal to the list of signals that is read by read_batch() and sampled by sample().

Parameters
[in]signal_nameName of the signal requested.
[in]domain_typeOne of the values from the PlatformTopo::m_domain_e enum described in PlatformTopo.hpp.
[in]domain_idxThe index of the domain within the set of domains of the same type on the platform.
Returns
Index of signal when sample() method is called.

Implements geopm::IOGroup.

◆ read_batch()

void geopm::ProfileIOGroup::read_batch ( void  )
overridevirtual

Read all pushed signals from the platform so that the next call to sample() will reflect the updated data.

Implements geopm::IOGroup.

◆ read_signal()

double geopm::ProfileIOGroup::read_signal ( const std::string &  signal_name,
int  domain_type,
int  domain_idx 
)
overridevirtual

Read from platform and interpret into SI units a signal given its name and domain. Does not modify the values stored by calling read_batch().

Parameters
[in]signal_nameName of the signal requested.
[in]domain_typeOne of the values from the PlatformTopo::m_domain_e enum described in PlatformTopo.hpp.
[in]domain_idxThe index of the domain within the set of domains of the same type on the platform.
Returns
The value in SI units of the signal.

Implements geopm::IOGroup.

◆ restore_control()

void geopm::ProfileIOGroup::restore_control ( void  )
overridevirtual

Restore all controls to values recorded in previous call to the save() method.

Implements geopm::IOGroup.

◆ sample()

double geopm::ProfileIOGroup::sample ( int  sample_idx)
overridevirtual

Retrieve signal value from data read by last call to read_batch() for a particular signal previously pushed with push_signal().

Parameters
[in]sample_idxThe index returned by previous call to push_signal().
Returns
Value of signal in SI units.

Implements geopm::IOGroup.

◆ save_control()

void geopm::ProfileIOGroup::save_control ( void  )
overridevirtual

Save the state of all controls so that any subsequent changes made through the IOGroup can be undone with a call to the restore() method.

Implements geopm::IOGroup.

◆ signal_behavior()

int geopm::ProfileIOGroup::signal_behavior ( const std::string &  signal_name) const
overridevirtual

Returns a hint about how a signal will change as a function of time.

This can be used when generating reports to decide how to summarize a signal's value for the entire application run.

Parameters
[in]signal_nameName of the signal.

Implements geopm::IOGroup.

◆ signal_description()

std::string geopm::ProfileIOGroup::signal_description ( const std::string &  signal_name) const
overridevirtual

Returns a description of the signal. This string can be used by tools to generate help text for users of the IOGroup.

Implements geopm::IOGroup.

◆ signal_domain_type()

int geopm::ProfileIOGroup::signal_domain_type ( const std::string &  signal_name) const
overridevirtual

Query the domain for a named signal.

Parameters
[in]signal_nameName of the signal to query.
Returns
One of the PlatformTopo::m_domain_e enum values.

Implements geopm::IOGroup.

◆ signal_names()

std::set< std::string > geopm::ProfileIOGroup::signal_names ( void  ) const
overridevirtual

Returns the names of all signals provided by the IOGroup.

Implements geopm::IOGroup.

◆ write_batch()

void geopm::ProfileIOGroup::write_batch ( void  )
overridevirtual

Write all of the pushed controls so that values previously given to adjust() are written to the platform.

Implements geopm::IOGroup.

◆ write_control()

void geopm::ProfileIOGroup::write_control ( const std::string &  control_name,
int  domain_type,
int  domain_idx,
double  setting 
)
overridevirtual

Interpret the setting and write setting to the platform. Does not modify the values stored by calling adjust().

Parameters
[in]control_nameName of the control requested.
[in]domain_typeOne of the values from the PlatformTopo::m_domain_e enum described in PlatformTopo.hpp.
[in]domain_idxThe index of the domain within the set of domains of the same type on the platform.
[in]settingValue in SI units of the setting for the control.

Implements geopm::IOGroup.


The documentation for this class was generated from the following files: