I think I found a solution to this problem. It required changing something
in the src file gem5/src/sim/power/mathexpr_powermodel.cc.

In the startup function the stats are being recorded from the statsList to
the stats_map which will be used by the power model to find the
corresponding value to each element in the power expressions.
The problem with the current implementation that it was taking a substring
from the name removing the basename which is the name of the object. So
when I try to access it from outside all objects it gives me an error.

 for (auto & i: Stats::statsList()) {
       if (i->name.find(basename) == 0) {
             // Add stats for this sim object and its child objects
                stats_map[i->name.substr(basename.size())] = i;
       } else if (i->name.find(".") == std::string::npos) {
            // Add global stats (sim_seconds, for example)
                stats_map[i->name] = i;
What I did and was compatible with what I need to achieve was replacing the
whole part with simply this
for (auto & i: Stats::statsList()) {

        stats_map[i->name] = i;


On 23 May 2018 at 17:47, Yara Gowayed <yara.gowa...@gmail.com> wrote:

> Hi all
> I am currently working on power modeling using gem5 for arm bigLITTLE
> architecture. I am using the fs_power.py script already found in the gem5
> repo but I wanted to change the dummy equations for static and dynamic
> power to more meaningful equations.
> The stats I need to do so are all found in stats.txt but when I try to
> formulate the equations it gives me "failed to find stat" error.
> I already can use some stats like dcache.overall_misses ,
> dcache.overall_accesses,
> numCycles,voltage, dtb_walker_cache.overall_misses, icache.overall_misses
> , icache.overall_accesses.
>  But when it comes to :
> system.clk_domain.clock,system.bigCluster.cpus0.iew.iewExecu
> tedInsts,system.bigCluster.cpus2.iq.FU_type_0::IntAlu or any other
> instructions(MULT,DIV) it fails.
> I kind of have an intuition where the problem is, I went through the
> documentation of doxygen and all the stats that failed needs to be accessed
> from a certain object that I dont know.
> For example the stats::overall_misses should be accessed from BaseCache
> class and I did so in dcache.overall_misses but for the others I tried to
> do the same and it failed.
> Any clue how to be able to access the given stats? It doesn't have to be
> per core a sum of them will do the same job.
> Also I tried to do the calculations after the simulation ends using
> scripts that process data from the stats.txt and that worked, I just want
> it now to be online during the simulation.
> Thanks alot!
> Yara
gem5-users mailing list

Reply via email to