Hi Andreas,

I want the values for every specific distance. Can you tell me which files
do I need to change to do so? I require the values in that format to input
it in a scheduling simulator named SimSo in the form of the SDP file of a
task. The simulator takes the values for ever particular distance rather
than in a generalized form. So it will be better if I could get the values
in this format using gem5.


0 .3946537296
1 .1320268926
2 .0680432691
3 .0526663317
4 .0700712422
5 .0308234477
6 .0356989232
7 .0200548268
8 .0118467264
9 .0195609635
10 .0122696827
11 .0052761524
12 .0032688299
13 .0091512174
14 .0038000460
15 .0030201249
16 .0012057944
17 .0034824725
18 .0047665379

In earlier work I have read that this type of SDP was obtained by using
gem5. So if you could tell me where I can make the changes ????

Thanks,
Bhaskar

On Sat, Dec 19, 2015 at 3:49 PM, Andreas Hansson <[email protected]>
wrote:

> Hi Bhaskar,
>
> The values refer to stack distances, measures in accesses. Thus, you have
> 6 requests/packets where the stack distance is between 0 and 127.
>
> I don’t understand why you want them in a separate file. gem5 relies on a
> centralised stats.txt, you can change the name, but all the stats will end
> up in the same file.
>
> If you want the stack distance for a specific address you will have to
> change the source. The probe is intended to scale to large datasets and
> long simulation runs, so it needs to handle hundreds of millions of
> accesses. I honestly do not understand why you want it per line…but if you
> do you will have to hack away.
>
> Andreas
>
> From: gem5-users <[email protected]> on behalf of Bhaskar
> Kalita <[email protected]>
> Reply-To: gem5 users mailing list <[email protected]>
> Date: Friday, 18 December 2015 at 17:07
>
> To: gem5 users mailing list <[email protected]>
> Subject: Re: [gem5-users] How to use stack distance calculator in gem5.
>
> Hi Andreas,
>
> Thanks for your help. I am able to obtain the sdp by adding the following
> lines in CacheConfig.py:
>
>         system.monitor = CommMonitor()
> system.monitor.trace = MemTraceProbe(trace_file = "monitor.ptrc.gz")
> system.monitor.stackdist = StackDistProbe( disable_log_hists = True )
> system.l2.cpu_side = system.monitor.master
> system.monitor.slave = system.tol2bus.master
>       #system.l2.cpu_side = system.tol2bus.master
>         system.l2.mem_side = system.membus.slave
>
> The sdp is obtained in the stats,txt file. And the values are generalized
> in a range like:
>
> system.monitor.stack_dist_calc.readLinearHist::0-127            6
> 12.24%     12.24% # Reads linear distribution
> system.monitor.stack_dist_calc.readLinearHist::128-255            8
> 16.33%     28.57% # Reads linear distribution
> system.monitor.stack_dist_calc.readLinearHist::256-383            4
>  8.16%     36.73% # Reads linear distribution
> system.monitor.stack_dist_calc.readLinearHist::384-511            0
>  0.00%     36.73% # Reads linear distribution
>
> Do the numbers 0-127 refer to the cache lines???
> Is their a way to print this value in a separate file???
> How can I find the values for every distinct lines???
>
>
>
> On Fri, Nov 13, 2015 at 3:46 AM, Andreas Hansson <[email protected]>
> wrote:
>
>> Hi Bhaskar,
>>
>> Have you sorted out your issues? I just tried adding these lines to the
>> gem5 trunk (not the gem5-stable repo) and it does the job for the
>> regression scripts. The se.py and fs.py scripts don’t call this function in
>> BaseCPU (unfortunately we do things differently in different scripts), so
>> for these you have to do the corresponding changes in
>> configs/common/CacheConfig where the l2 is added.
>>
>> Also, be mindful of the indentation in Python files.
>>
>> Andreas
>>
>> From: gem5-users <[email protected]> on behalf of Bhaskar
>> Kalita <[email protected]>
>> Reply-To: gem5 users mailing list <[email protected]>
>> Date: Wednesday, 11 November 2015 at 10:36
>>
>> To: gem5 users mailing list <[email protected]>
>> Subject: Re: [gem5-users] How to use stack distance calculator in gem5.
>>
>> Hi Andreas;
>>
>> I installed pydot. Now am more clear with the topology. I want to put the
>> monitor "before L2". So, tried changing BaseCPU.py as:
>>
>>        #self.toL2Bus.master = self.l2cache.cpu_side
>> self.monitor = CommMonitor()
>> self.monitor.StackDist = StackDistProbe(verify = True)
>>         self.toL2Bus.master = self.monitor.slave
>> self.monitor.master = self.l2cache.cpu_side
>>         self._cached_ports = ['l2cache.mem_side']
>>
>> I recompiled and and trier to run an example and received error as:
>>
>> fatal: system.monitor.stackdist without default or user set value
>>
>> And I also cannot see the CommMonitor anywhere in the in the dot files.
>>
>> Do I also need to make change in se.py and CommMonitor.py??? I have
>> attached the three files for reference.
>>
>> Thanks,
>>
>> Bhaskar
>>
>>
>>
>>
>>
>>
>>
>> On Sun, Nov 8, 2015 at 10:34 PM, Andreas Hansson <[email protected]
>> > wrote:
>>
>>> Hi Bhaskar,
>>>
>>> Something is not quite right in the topology you are expressing in these
>>> lines. Have you looked at the graphical output (make sure you have py-dot
>>> installed)?
>>>
>>> You want to trace _after_ the l2? If so, I would suggest to connect the
>>> L2 cache as usual. Then instantiate and connect the monitor:
>>>
>>> self.monitor = CommMonitor()
>>> self.monitor.slave = self.l2cache.mem_side
>>> self._cached_ports = [‘monitor.master’]
>>>
>>> This will leave the CommMonitor as the “exposed” port being connected
>>> downwards.
>>>
>>> Make sure this is all working before you start fiddling with the probes.
>>> The graphical output is your friend…
>>>
>>> Once the above is working, it should just be a matter of adding a line:
>>>
>>> self.monitor.sdprobe = StackDistProbe()
>>>
>>> Andreas
>>>
>>> From: gem5-users <[email protected]> on behalf of Bhaskar
>>> Kalita <[email protected]>
>>> Reply-To: gem5 users mailing list <[email protected]>
>>> Date: Sunday, 8 November 2015 at 12:16
>>>
>>> To: gem5 users mailing list <[email protected]>
>>> Subject: Re: [gem5-users] How to use stack distance calculator in gem5.
>>>
>>> Hi Andreas,
>>>
>>> You did not respond to my previous mail, hope you reply to this. I went
>>> through the mail archive regarding CommMonitor. I tried again changing
>>> BaseCPU.py as:
>>>
>>> self.toL2Bus.master = self.l2cache.cpu_side
>>>         self._cached_ports = ['l2cache.mem_side']
>>> self.monitor = CommMonitor()
>>> self.monitor.stackdist = StackDistProbe(verify = True)
>>>         self.l2cache.cpu_side = self.monitor.master
>>> self.monitor.slave = self.l2cache.mem_side
>>>
>>> I re-compiled and tried to run an example but received the following
>>> error:
>>>
>>> fatal: system.monitor.stackdist without default or user set value
>>>
>>> For reference my command line was:
>>>
>>> build/X86/gem5.debug --debug-flag=StackDist --stats-file=hello.txt
>>> --dump-config=hello.ini --json-config=hello.json configs/example/se.py
>>> --num-cpus=1 --cpu-type=DerivO3CPU --caches --l1i_size=32kB --l1d_size=32kB
>>> --l2cache --num-l2caches=1 --l2_size=256kB --l2_assoc=4 -c
>>> 'tests/test-progs/hello/bin/x86/linux/hello;'
>>>
>>> Can you help me out where am making the mistake.
>>>
>>> Thanks,
>>> Bhaskar
>>>
>>>
>>>
>>>
>>>
>>> On Fri, Nov 6, 2015 at 5:03 AM, Bhaskar Kalita <[email protected]>
>>> wrote:
>>>
>>>> Hi Andreas
>>>>
>>>> I want to measure the stack distance for l2 cache. So, tried to place
>>>> the CommMonitor between toL2Bus.master and l2cache.cpu_side in BaseCPU.py
>>>> as:
>>>>
>>>>        #self.toL2Bus.master = self.l2cache.cpu_side
>>>>        #self._cached_ports = ['l2cache.mem_side']
>>>>         self.l2MONITOR = CommMonitor()
>>>> self.l2MONITOR.stackdist = StackDistProbe(verify = True)
>>>> self.toL2Bus.master = self.l2MONITOR.slave
>>>>         self.l2MONITOR.master = self.l2cache.cpu_side
>>>>         self._cached_ports = ['l2cache.mem_side']
>>>>
>>>> I tried assigning a StackDistProbe to the comm monitor as:
>>>>
>>>>      stackdist = Param.StackDistProbe(NULL)
>>>>
>>>> I re-compiled as scons build/X86/gem5.debug. It worked fine. The error
>>>> I got while trying to run an example was
>>>>
>>>>        Traceback (most recent call last):
>>>>   File "<string>", line 1, in <module>
>>>>   File
>>>> "/home/bhaskar/Downloads/gem5-stable-a48faafdb3bf/src/python/m5/main.py",
>>>> line 389, in main
>>>>     exec filecode in scope
>>>>   File "configs/example/se.py", line 286, in <module>
>>>>     Simulation.run(options, root, system, FutureClass)
>>>>   File
>>>> "/home/bhaskar/Downloads/gem5-stable-a48faafdb3bf/configs/common/Simulation.py",
>>>> line 583, in run
>>>>     m5.instantiate(checkpoint_dir)
>>>>   File
>>>> "/home/bhaskar/Downloads/gem5-stable-a48faafdb3bf/src/python/m5/simulate.py",
>>>> line 114, in instantiate
>>>>     for obj in root.descendants(): obj.createCCObject()
>>>>   File
>>>> "/home/bhaskar/Downloads/gem5-stable-a48faafdb3bf/src/python/m5/SimObject.py",
>>>> line 1453, in createCCObject
>>>>     self.getCCParams()
>>>>   File
>>>> "/home/bhaskar/Downloads/gem5-stable-a48faafdb3bf/src/python/m5/SimObject.py",
>>>> line 1400, in getCCParams
>>>>     value = value.getValue()
>>>>   File
>>>> "/home/bhaskar/Downloads/gem5-stable-a48faafdb3bf/src/python/m5/SimObject.py",
>>>> line 1457, in getValue
>>>>     return self.getCCObject()
>>>>   File
>>>> "/home/bhaskar/Downloads/gem5-stable-a48faafdb3bf/src/python/m5/SimObject.py",
>>>> line 1435, in getCCObject
>>>>     params = self.getCCParams()
>>>>   File
>>>> "/home/bhaskar/Downloads/gem5-stable-a48faafdb3bf/src/python/m5/SimObject.py",
>>>> line 1400, in getCCParams
>>>>     value = value.getValue()
>>>>   File
>>>> "/home/bhaskar/Downloads/gem5-stable-a48faafdb3bf/src/python/m5/params.py",
>>>> line 248, in getValue
>>>>     return [ v.getValue() for v in self ]
>>>>   File
>>>> "/home/bhaskar/Downloads/gem5-stable-a48faafdb3bf/src/python/m5/SimObject.py",
>>>> line 1457, in getValue
>>>>     return self.getCCObject()
>>>>   File
>>>> "/home/bhaskar/Downloads/gem5-stable-a48faafdb3bf/src/python/m5/SimObject.py",
>>>> line 1435, in getCCObject
>>>>     params = self.getCCParams()
>>>>   File
>>>> "/home/bhaskar/Downloads/gem5-stable-a48faafdb3bf/src/python/m5/SimObject.py",
>>>> line 1400, in getCCParams
>>>>     value = value.getValue()
>>>>   File
>>>> "/home/bhaskar/Downloads/gem5-stable-a48faafdb3bf/src/python/m5/SimObject.py",
>>>> line 1457, in getValue
>>>>     return self.getCCObject()
>>>>   File
>>>> "/home/bhaskar/Downloads/gem5-stable-a48faafdb3bf/src/python/m5/SimObject.py",
>>>> line 1439, in getCCObject
>>>>     % self.path()
>>>> RuntimeError: system.monitor.stackdist: Cycle found in configuration
>>>> hierarchy.
>>>>
>>>>
>>>> Can you please explain if I need to modify se.py for my purpose? Please
>>>> help me out through this as I am very new to gem5.
>>>>
>>>>
>>>> Thanks
>>>>
>>>> Bhaskar
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Thu, Nov 5, 2015 at 1:50 PM, Andreas Hansson <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Bhaskar,
>>>>>
>>>>> Have a look at tests/config/tgen-simple-mem.py.
>>>>>
>>>>> The comm monitor has a master and a slave port, and you need to
>>>>> connect it “between” two other modules. There are plenty examples on the
>>>>> mailing list for adding it between the L1 and L2, for example by changing
>>>>> BaseCpu.py (if you do, remember to recompile). Once you have instantiated
>>>>> the comm monitor, and connected it, run an experiment and make sure you 
>>>>> get
>>>>> the stats in the stats.txt output. Also, if you install pydot, you can see
>>>>> the system topology in m5out/config.dot.pdf or config.dot.svg (the latter
>>>>> even has mouseover tooltips etc).
>>>>>
>>>>> When the things above are working, just assign a StackDistProbe to the
>>>>> comm monitor, as done in tests/config/tgen-simple-mem.py.
>>>>>
>>>>> Good luck.
>>>>>
>>>>> Andreas
>>>>>
>>>>> From: gem5-users <[email protected]> on behalf of Bhaskar
>>>>> Kalita <[email protected]>
>>>>> Reply-To: gem5 users mailing list <[email protected]>
>>>>> Date: Wednesday, 4 November 2015 at 20:23
>>>>> To: gem5 users mailing list <[email protected]>
>>>>> Subject: Re: [gem5-users] How to use stack distance calculator in
>>>>> gem5.
>>>>>
>>>>> Hi Andreas,
>>>>>
>>>>> Thanks for your response. Can you please tell me how to instantiate
>>>>> the probe. I tried modifying the se.py file as:
>>>>>
>>>>> # Create a separate clock domain for the CPUs
>>>>> system.cpu_clk_domain = SrcClockDomain(clock = options.cpu_clock,
>>>>>                                        voltage_domain =
>>>>>                                        system.cpu_voltage_domain)
>>>>>
>>>>> # to calculate stack distance
>>>>> system.monitor = CommMonitor()
>>>>> system.monitor.stackdist = StackDistProbe(verify = True)
>>>>>
>>>>>
>>>>> And also changed BaseCPU.py as:
>>>>>
>>>>> def addTwoLevelCacheHierarchy(self, ic, dc, l2c, iwc = None, dwc =
>>>>> None):
>>>>>         self.addPrivateSplitL1Caches(ic, dc, iwc, dwc)
>>>>>         self.toL2Bus = L2XBar()
>>>>>         self.connectCachedPorts(self.toL2Bus)
>>>>>         self.l2cache = l2c
>>>>>         self.toL2Bus.master = self.l2cache.cpu_side
>>>>>         self._cached_ports = ['l2cache.mem_side']
>>>>>
>>>>>         # to calculate stack distance
>>>>>         self.l2MONITOR = StackDistProbe(verify = True)
>>>>>         self._cached_ports = self.l2MONITOR.slave
>>>>>         self.l2MONITOR.master = l2cache.mem_side
>>>>>
>>>>> When I tried to run my program I got an error as "fatal: Communication
>>>>> monitor is not connected on both sides."
>>>>> Can you please tell me if I am approaching in the right direction and
>>>>> what are the other things to be done.
>>>>>
>>>>> Thanks
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Nov 2, 2015 at 2:10 PM, Andreas Hansson <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Bhaskar,
>>>>>>
>>>>>> There are a few steps you need to take, and it involves a few
>>>>>> widely-adopted gem5 concepts:
>>>>>>
>>>>>> - First, the stack distance calculator is a probe, and the output is
>>>>>> in the shape of gem5 stats. Thus, you need to instantiate the probe, and
>>>>>> attach it to a probe point.
>>>>>>
>>>>>> - Second, to be able to attach the probe in various locations in the
>>>>>> memory system (core to L1, before the L2, in front of the system memory),
>>>>>> we use a module called a  CommMonitor, which has a bunch of generic 
>>>>>> stats,
>>>>>> but also suitable packet probe points.
>>>>>>
>>>>>> Consequently, you need to modify your script that assembles and
>>>>>> configures the system, in your case se.py, and instantiate a CommMonitor,
>>>>>> connect it where you want to monitor the communication, then instantiate 
>>>>>> a
>>>>>> StackDistProbe and attach it to the monitor you just instantiated. The 
>>>>>> bad
>>>>>> news is that it involves quite a few steps. The good news is that these 
>>>>>> are
>>>>>> all things you will need to do as a gem5 user in any case, so better get
>>>>>> used to it :-).
>>>>>>
>>>>>> For an example, have a look at one of the regression scripts,
>>>>>> tests/config/tgen-simple-mem.py. This script includes both trace
>>>>>> generation, and calculation of stack distance. Note that you don’t need 
>>>>>> to
>>>>>> set "verify = True" on the StackDistProbe. If you do you will calculate 
>>>>>> the
>>>>>> stack distance both using a clever algorithm, and a “naïve” stack which 
>>>>>> is
>>>>>> a lot slower.
>>>>>>
>>>>>> Andreas
>>>>>>
>>>>>>
>>>>>> From: gem5-users <[email protected]> on behalf of Bhaskar
>>>>>> Kalita <[email protected]>
>>>>>> Reply-To: gem5 users mailing list <[email protected]>
>>>>>> Date: Sunday, 1 November 2015 at 22:08
>>>>>> To: "[email protected]" <[email protected]>
>>>>>> Subject: [gem5-users] How to use stack distance calculator in gem5.
>>>>>>
>>>>>> Hi
>>>>>> I am Bhaskar. I am a final year B.E student. For my final year
>>>>>> project I am using the gem5 simulator. I need to collect the stack 
>>>>>> distance
>>>>>> of programs using gem5. I used the --debug-flag="StackDist", but it did 
>>>>>> not
>>>>>> print anything. I also tried setting the verifyStack flag in
>>>>>> mem/stack_dist_calc.hh to true as:
>>>>>> // Flag to enable verification of stack. (Slows down the simulation)
>>>>>>     const bool verifyStack=true;
>>>>>> but it did not work too. For reference this is the command line am
>>>>>> usuing:
>>>>>> build/X86/gem5.debug --debug-flag='StackDist'
>>>>>> --debug-file='sdp.trc.gz' --stats-file=forij.txt --dump-config=for.ini
>>>>>> --json-config=for.json configs/example/se.py --num-cpus=1
>>>>>> --cpu-type=DerivO3CPU --caches --l1i_size=32kB --l1d_size=32kB --l2cache
>>>>>> --num-l2caches=1 --l2_size=256kB --l2_assoc=4 -c "bench/x86/forij;"
>>>>>>
>>>>>> Can you please guide me through my problem and tell me to do the
>>>>>> necessary steps.
>>>>>>
>>>>>> Thanks for your support
>>>>>>
>>>>>> -Bhaskar
>>>>>>
>>>>>>
>>>>>>
>>>>>> ------------------------------
>>>>>>
>>>>>> -- IMPORTANT NOTICE: The contents of this email and any attachments
>>>>>> are confidential and may also be privileged. If you are not the intended
>>>>>> recipient, please notify the sender immediately and do not disclose the
>>>>>> contents to any other person, use it for any purpose, or store or copy 
>>>>>> the
>>>>>> information in any medium. Thank you.
>>>>>>
>>>>>> _______________________________________________
>>>>>> gem5-users mailing list
>>>>>> [email protected]
>>>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>>>>
>>>>>
>>>>>
>>>>> ------------------------------
>>>>>
>>>>> -- IMPORTANT NOTICE: The contents of this email and any attachments
>>>>> are confidential and may also be privileged. If you are not the intended
>>>>> recipient, please notify the sender immediately and do not disclose the
>>>>> contents to any other person, use it for any purpose, or store or copy the
>>>>> information in any medium. Thank you.
>>>>>
>>>>> _______________________________________________
>>>>> gem5-users mailing list
>>>>> [email protected]
>>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>>>
>>>>
>>>>
>>>
>>> ------------------------------
>>>
>>> -- IMPORTANT NOTICE: The contents of this email and any attachments are
>>> confidential and may also be privileged. If you are not the intended
>>> recipient, please notify the sender immediately and do not disclose the
>>> contents to any other person, use it for any purpose, or store or copy the
>>> information in any medium. Thank you.
>>>
>>> _______________________________________________
>>> gem5-users mailing list
>>> [email protected]
>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>
>>
>>
>> ------------------------------
>>
>> -- IMPORTANT NOTICE: The contents of this email and any attachments are
>> confidential and may also be privileged. If you are not the intended
>> recipient, please notify the sender immediately and do not disclose the
>> contents to any other person, use it for any purpose, or store or copy the
>> information in any medium. Thank you.
>>
>> _______________________________________________
>> gem5-users mailing list
>> [email protected]
>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>
>
> IMPORTANT NOTICE: The contents of this email and any attachments are
> confidential and may also be privileged. If you are not the intended
> recipient, please notify the sender immediately and do not disclose the
> contents to any other person, use it for any purpose, or store or copy the
> information in any medium. Thank you.
>
> _______________________________________________
> gem5-users mailing list
> [email protected]
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to