geopm  3.1.1.dev296+g5916b956
GEOPM - Global Extensible Open Power Manager
Public Member Functions | Static Public Member Functions | List of all members
geopm::FrequencyTimeBalancer Class Referenceabstract

#include <FrequencyTimeBalancer.hpp>

Inheritance diagram for geopm::FrequencyTimeBalancer:
Inheritance graph
[legend]

Public Member Functions

 FrequencyTimeBalancer ()=default
 
virtual ~FrequencyTimeBalancer ()=default
 
virtual std::vector< double > balance_frequencies_by_time (const std::vector< double > &previous_times, const std::vector< double > &previous_control_frequencies, const std::vector< double > &previous_achieved_frequencies, const std::vector< std::pair< unsigned int, double > > &frequency_limits_by_high_priority_count, double low_priority_frequency)=0
 Return the recommended frequency controls given observed times while operating under a given set of previous frequency controls. The returned vector is the same size as the input vectors. More...
 
virtual double get_target_time () const =0
 return the target time last used to balance the frequencies. More...
 

Static Public Member Functions

static std::unique_ptr< FrequencyTimeBalancermake_unique (double minimum_frequency, double maximum_frequency)
 Allocate a FrequencyTimeBalancer instance. More...
 
static std::shared_ptr< FrequencyTimeBalancermake_shared (double minimum_frequency, double maximum_frequency)
 Allocate a FrequencyTimeBalancer instance. More...
 

Detailed Description

Select frequency control settings that are expected to balance measured execution times. Assumes time impact of up to (frequency_old/frequency_new) percent. Workloads less frequency-sensitive than that should be able to go lower than the recommended frequencies. This is expected to converge toward those lower frequencies if it is repeatedly re-evaluated some time after applying the recommended frequency controls.

Constructor & Destructor Documentation

◆ FrequencyTimeBalancer()

geopm::FrequencyTimeBalancer::FrequencyTimeBalancer ( )
default

◆ ~FrequencyTimeBalancer()

virtual geopm::FrequencyTimeBalancer::~FrequencyTimeBalancer ( )
virtualdefault

Member Function Documentation

◆ balance_frequencies_by_time()

virtual std::vector<double> geopm::FrequencyTimeBalancer::balance_frequencies_by_time ( const std::vector< double > &  previous_times,
const std::vector< double > &  previous_control_frequencies,
const std::vector< double > &  previous_achieved_frequencies,
const std::vector< std::pair< unsigned int, double > > &  frequency_limits_by_high_priority_count,
double  low_priority_frequency 
)
pure virtual

Return the recommended frequency controls given observed times while operating under a given set of previous frequency controls. The returned vector is the same size as the input vectors.

Parameters
previous_timesTime spent in the region to be balanced, measured by any domain.
previous_control_frequenciesFrequency control last applied over the region to be balanced, measured by the same domain as previous_times.
previous_achieved_frequenciesAverage observed frequencies over the region to be balanced, measured by the same domain as previous_times.

Implemented in geopm::FrequencyTimeBalancerImp.

◆ get_target_time()

virtual double geopm::FrequencyTimeBalancer::get_target_time ( ) const
pure virtual

return the target time last used to balance the frequencies.

Implemented in geopm::FrequencyTimeBalancerImp.

◆ make_shared()

std::shared_ptr< FrequencyTimeBalancer > geopm::FrequencyTimeBalancer::make_shared ( double  minimum_frequency,
double  maximum_frequency 
)
static

Allocate a FrequencyTimeBalancer instance.

Parameters
minimum_frequencyThe lowest frequency control to allow in rebalancing frequency control decisions.
maximum_frequencyThe highest frequency control to allow in rebalancing frequency control decisions.

◆ make_unique()

std::unique_ptr< FrequencyTimeBalancer > geopm::FrequencyTimeBalancer::make_unique ( double  minimum_frequency,
double  maximum_frequency 
)
static

Allocate a FrequencyTimeBalancer instance.

Parameters
minimum_frequencyThe lowest frequency control to allow in rebalancing frequency control decisions.
maximum_frequencyThe highest frequency control to allow in rebalancing frequency control decisions.

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