Hey Andreas, Can you help me on this.
Thanks, Bhaskar On Wed, Jan 13, 2016 at 6:37 PM, Bhaskar Kalita <[email protected]> wrote: > 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
