Hi Yara,

I'm not very familiar with the power modeling in gem5, but this seems like
you found and then fixed a bug! We would really appreciate it if you
contributed this change to the mainline. You can find a description of how
to do this in the CONTRIBUTING document (

If you have any questions, don't hesitate to ask!


On Fri, Jun 1, 2018 at 4:42 AM Yara Gowayed <yara.gowa...@gmail.com> wrote:

> 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.iewExecutedInsts,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
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
gem5-users mailing list

Reply via email to