Sorry, somehow the formatting got messed up. I'm sending my last message again...
================================================================ Thanks Jason. I think I should have been more specific in my question: I understand how "LiveProcess" objects are created for each application and how each single threaded workload is assigned to a CPU. The loop in se.py that does the workload to CPU assignments either expects the number of specified applications to be equal to the number of cores, or expects only one application. In case of only one application and if #CPUs > 1 , it assigns the same app to all cores (line 237). To be clear this is the code excerpt I'm referring to: =============================== 233 for i in xrange(np): 234 if options.smt: 235 system.cpu[i].workload = multiprocesses 236 elif len(multiprocesses) == 1: 237 system.cpu[i].workload = multiprocesses[0] 238 else: 239 system.cpu[i].workload = multiprocesses[i] =============================== First of all, how is line 237 not causing that np copies of multiprocesses[0] to run but instead just 1 runs ? I'm trying to understand how I can create enough hardware context without assigning a workload to all of them. I modified the loop to run just for the number of given applications by replacing "for i in xrange(np):" with "for i in xrange(len(multiprocesses)):", but it throws an error which I believe means I should somehow assign a workload to all CPUs : =============================== fatal: Must specify at least one workload! @ tick 0 [create:build/ARM/cpu/o3/deriv.cc, line 48] =============================== Hope my question is clear. Thank you for your time. Majid On Mon, Nov 21, 2016 at 12:26 AM, Majid Namaki Shoushtari <[email protected]> wrote: > > Thanks Jason > . > > > I think I should have been more specific in my question: > I understand how "LiveProcess" objects are created for each application > and how each single threaded workload is assigned to a > > CPU. The loop in se.py that does the workload to > > CPU assignments either expects the > number > of specified applications to be equal to the number of cores, or expects > only one application. In case of only one > > application and if #CPUs > > > 1 > , > it assigns the same app > > to all cores > (line 237) > . > > To be clear this is the code excerpt I'm referring to: > > > =============================== > 233 for i in xrange(np): > 234 if options.smt: > 235 system.cpu[i].workload = multiprocesses > 236 elif len(multiprocesses) == 1: > 237 system.cpu[i].workload = multiprocesses[0] > 238 else: > 239 system.cpu[i].workload = multiprocesses[i] > > =============================== > > First of all, how is line 237 not causing that np copies of > multiprocesses[0] > to run but instead just 1 runs > ? > > I'm trying to understand how I can create enough hardware context without > assigning a workload to all of them. I modified the loop to run just for > the number of given applications by replacing "for i in xrange(np):" with > "for i in xrange(len(multiprocesses)):", but it throws an error > which I believe means I should somehow assign a workload to all CPUs > : > > > =============================== > fatal: Must specify at least one workload! > @ tick 0 > [create:build/ARM/cpu/o3/deriv.cc, line 48] > > =============================== > > Hope my question is clear. > > Thank > > you > > for your time. > Majid > > On Sun, Nov 20, 2016 at 12:21 PM, Jason Lowe-Power <[email protected]> > wrote: > >> Hi Majid, >> >> Yes. This is possible. To run multiple different processes, you can >> create multiple CPUs with multiple "LiveProcess" objects. For >> multi-threaded applications, I believe you need to have enough CPUs create >> (enough hardware contexts) and then link to m5threads instead of the >> pthreads library. >> >> Hopefully this will get your started down the right path. >> >> Jason >> >> On Fri, Nov 18, 2016 at 1:48 AM Majid Namaki Shoushtari <[email protected]> >> wrote: >> >>> I was wondering if there is a way to simulate >>> multiprogrammed/multithreaded workloads in SE mode? >>> Just to clarify: I mean running for example two programs that spawn 4 >>> threads each. >>> >>> As I understand this is not possible with the current se.py script, but >>> is it theoretically possible to run such simulations in SE mode? >>> If yes, could you please give some hints on how to modify se.py >>> accordingly? >>> >>> Thanks, >>> Majid >>> _______________________________________________ >>> 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 >> > > > > -- > Majid Namaki Shoushtari > PhD Candidate > Department of Computer Science > University of California, Irvine > Irvine, CA 92697 > [email protected] > http://www.ics.uci.edu/~anamakis > -- Majid Namaki Shoushtari PhD Candidate Department of Computer Science University of California, Irvine Irvine, CA 92697 [email protected] http://www.ics.uci.edu/~anamakis
_______________________________________________ gem5-users mailing list [email protected] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
