def test_overlapping_freq_doms(self): """Can't build an EM with energy nodes overlapping freq domains""" # To make this easy we'll just use a single active state everywhere, and # no idle states active_states = {10000: ActiveState(capacity=1024, power=100)} def cpu_node(cpu): return EnergyModelNode(cpu=cpu, active_states=active_states, idle_states=[]) root_node = EnergyModelRoot(children=[ EnergyModelNode(name='cluster1', active_states=active_states, idle_states=[], children=[cpu_node(0), cpu_node(1)]) ]) def cpu_pd(cpu): return PowerDomain(idle_states=[], cpu=cpu) with self.assertRaises(ValueError): EnergyModel(root_node=root_node, root_power_domain=PowerDomain( idle_states=[], children=[cpu_pd(0), cpu_pd(1)]), freq_domains=[[0], [1]]),
from energy_model import (EnergyModel, ActiveState, EnergyModelCapacityError, EnergyModelNode, EnergyModelRoot, PowerDomain) # Import these just to test that they can be constructed from libs.utils.platforms.juno_energy import juno_energy from libs.utils.platforms.pixel_energy import pixel_energy from libs.utils.platforms.hikey_energy import hikey_energy """ A very basic test suite for the EnergyModel class.""" # WARNING! # Note that the tests below have hard-coded expectations about the result. If # you change the numbers in this EM, you'll need to recalculate those hard-coded # values (or just refactor these tests) little_cluster_active_states = OrderedDict([ (1000, ActiveState(power=10)), (2000, ActiveState(power=20)), ]) little_cluster_idle_states = OrderedDict([ ('WFI', 5), ('cpu-sleep-0', 5), ('cluster-sleep-0', 1), ]) little_cpu_active_states = OrderedDict([ (1000, ActiveState(capacity=100, power=100)), (1500, ActiveState(capacity=150, power=150)), (2000, ActiveState(capacity=200, power=200)), ])
# # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # from energy_model import (ActiveState, EnergyModelNode, EnergyModelRoot, PowerDomain, EnergyModel) from collections import OrderedDict silver_cpu_active_states = OrderedDict([ ( 307200, ActiveState(capacity=149, power=90)), ( 422400, ActiveState(capacity=205, power=121)), ( 480000, ActiveState(capacity=229, power=142)), ( 556800, ActiveState(capacity=253, power=164)), ( 652800, ActiveState(capacity=296, power=198)), ( 729600, ActiveState(capacity=350, power=239)), ( 844800, ActiveState(capacity=406, power=306)), ( 960000, ActiveState(capacity=460, power=371)), (1036800, ActiveState(capacity=491, power=430)), (1113600, ActiveState(capacity=527, power=486)), (1190400, ActiveState(capacity=572, power=541)), (1228800, ActiveState(capacity=584, power=586)), (1324800, ActiveState(capacity=630, power=651)), (1401600, ActiveState(capacity=666, power=732)), (1478400, ActiveState(capacity=711, power=827)), (1593600, ActiveState(capacity=763, power=925)),
# # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # from collections import OrderedDict from energy_model import (ActiveState, EnergyModelNode, EnergyModelRoot, PowerDomain, EnergyModel) a53_cluster_active_states = OrderedDict([ (450000, ActiveState(power=26)), (575000, ActiveState(power=30)), (700000, ActiveState(power=39)), (775000, ActiveState(power=47)), (850000, ActiveState(power=57)), ]) # TODO warn if any of the idle states aren't represented by power domains a53_cluster_idle_states = OrderedDict([ ("WFI", 56), ("cpu-sleep-0", 56), ("cluster-sleep-0", 17), ]) a53_cpu_active_states = OrderedDict([ (450000, ActiveState(capacity=235, power=33)),
# # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # from energy_model import (ActiveState, EnergyModelNode, EnergyModelRoot, PowerDomain, EnergyModel) from collections import OrderedDict cluster_active_states = OrderedDict([ (208000, ActiveState(capacity=178, power=16)), (432000, ActiveState(capacity=369, power=29)), (729000, ActiveState(capacity=622, power=47)), (960000, ActiveState(capacity=819, power=75)), (1200000, ActiveState(capacity=1024, power=112)) ]) cluster_idle_states = OrderedDict([('WFI', 47), ('cpu-sleep', 47), ('cluster-sleep', 0)]) cpu_active_states = OrderedDict([(208000, ActiveState(capacity=178, power=69)), (432000, ActiveState(capacity=369, power=124)), (729000, ActiveState(capacity=622, power=224)), (960000, ActiveState(capacity=819,
# # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # from energy_model import (ActiveState, EnergyModelNode, EnergyModelRoot, PowerDomain, EnergyModel) from collections import OrderedDict silver_cpu_active_states = OrderedDict([ (307200, ActiveState(capacity=149, power=90)), (384000, ActiveState(capacity=188, power=111)), (460800, ActiveState(capacity=225, power=133)), (537600, ActiveState(capacity=257, power=160)), (614400, ActiveState(capacity=281, power=182)), (691200, ActiveState(capacity=315, power=210)), (768000, ActiveState(capacity=368, power=251)), (844800, ActiveState(capacity=406, power=306)), (902400, ActiveState(capacity=428, power=332)), (979200, ActiveState(capacity=469, power=379)), (1056000, ActiveState(capacity=502, power=438)), (1132800, ActiveState(capacity=538, power=494)), (1209600, ActiveState(capacity=581, power=550)), (1286400, ActiveState(capacity=611, power=613)), (1363200, ActiveState(capacity=648, power=670)), (1440000, ActiveState(capacity=684, power=752)),