Re: [Gems-users] FILE_SPECIFIED: Network Interconnect


Date: Tue, 23 Jan 2007 12:53:14 -0600 (CST)
From: Mike Marty <mikem@xxxxxxxxxxx>
Subject: Re: [Gems-users] FILE_SPECIFIED: Network Interconnect
That file is specified to the NUCA/DNUCA protocol.  I don't recommend
using the DNUCA/NUCA protocol if you are new to GEMS.  It is a very
complex.  If you do, the parameters must be set as described in this page:

http://www.cs.wisc.edu/gems/doc/wiki/moin.cgi/CMP-NUCA

--Mike


> Thanks allot for resolving my queries. I am just ramping up, so really
> appreciate your responses.
>
> I have few other execution time failures with
> NUCA_Procs-8_ProcsPerChip-8_L2Banks-256_Memories-8.txt and below are
> few rubyconfig.default
> parameters which i modified:
>
> L2_CACHE_ASSOC: 4
> L2_CACHE_NUM_SETS_BITS: 16
> g_NETWORK_TOPOLOGY: FILE_SPECIFIED
> g_CACHE_DESIGN: NUCA
> g_NUM_DNUCA_BANK_SETS: 32
> g_NUCA_PREDICTOR_CONFIG: DNUCA
> ENABLE_MIGRATION: true
> ENABLE_REPLICATION: false
> COLLECTOR_HANDLES_OFF_CHIP_REQUESTS: true
>
> 1.) I get an error:
>
> failed assertion 'RubyConfig::DNUCABankSetBits() > 0' at fn MachineID map_L1Cach
> eMachId_to_L2Cache(const Address&, MachineID) in slicc_interface/RubySlicc_Compo
> nentMapping.h:232
>
> Which according to the code is g_NUM_BANKS_IN_BANK_SET_BITS which should be:
> g_NUM_BANKS_IN_BANK_SET =
> g_NUM_L2_BANKS_PER_CHIP/g_NUM_DNUCA_BANK_SETS;  // 256/32 = 8
> g_NUM_BANKS_IN_BANK_SET_BITS = log_int(g_NUM_BANKS_IN_BANK_SET); // 3
>
> 2.) Now If I just set the "ENABLE_MIGRATION to false" then I get the
> following error:
>
> failed assertion 'true == Protocol::m_NUCA' at fn void
> Profiler::printStats(std::ostream&, bool) in profiler/Profiler.C:449
> failed assertion 'true == Protocol::m_NUCA' at fn void
> Profiler::printStats(std::ostream&, bool) in profiler/Profiler.C:449
>
> Which according to the code is assigned a value FALSE in
> slicc_interface/AbstractProtocol.h
>
> Further, If I set the "g_NUCA_PREDICTOR_CONFIG to NULL" then the
> tester.exec works fine. But if I enable the -c n option then it fails
> giving:
>
> Debug: in fn void Check::initiateAction() in tester/Check.C:145:
> m_status is Idle
> Debug: in fn bool Sequencer::doRequest(const CacheMsg&) in
> system/Sequencer.C:532: Fast path miss
> Debug: in fn void Check::initiateAction() in tester/Check.C:149:
> m_status is Action_Pending
> Debug: in fn virtual void PerfectSwitch::wakeup() in
> network/simple/PerfectSwitch.C:155: m_switch_id is 48
> Debug: in fn virtual void PerfectSwitch::wakeup() in
> network/simple/PerfectSwitch.C:200: incoming is 4
> Debug: in fn virtual void PerfectSwitch::wakeup() in
> network/simple/PerfectSwitch.C:205: *net_msg_ptr is [RequestMsg:
> Address=[0x62c0, line 0x62c0] Type=GETX Requestor=L1Cache-6Fatal
> Error: in fn std::string MachineType_to_string(const MachineType&) in
> generated/MOESI_CMP_directory/MachineType.C:23: Invalid range for type
> MachineType
> RequestorMachine=Fatal Error: in fn std::string
> MachineType_to_string(const MachineType&) in
> generated/MOESI_CMP_directory/MachineType.C:23: Invalid range for type
> MachineType
>
> -Thank You,
> Nitin Bhardwaj
>
> > I am trying to understand the Ruby code base, and is experimenting with
>
> > FILE_SPECIFIED network interconnect and coherence protocol.
> > I have few questions regarding the Ruby Network specification.
>
>
> >
> > 1.) In the rubyconfig.defaults when i specify
> > (NUCA_Procs-8_ProcsPerChip-8_L2Banks-256_Memories-
> 8.txt I get an error:
> >
> >  Warning: in fn MachineType string_to_MachineType(const std::string&) in
>
>
> > generated/MOESI_CMP_directory/MachineType.C:38: str is Collector
> >
> > I looked at the code and can see that in the
> Topology.C function
> > makefilespecified() parses the NUCA*_*.txt file and gets the machine type
>
>
> > info from the MachineType.C file. I haven't changed nything in the
> > NUCA*_*.txt file.
> >
>
> This file is specific to the DNUCA SLICC protocol that implements a
> controller called "Collector"
>
>
>
> > 2.) What does the function call to shortest path do? If i am using a NUCA
> > network specified file then does this shortest path from one node to the
>
> > other is going to change my topology by finding a  shortest path for node'x'
>
>
> > to node'y' and creating a link between them? Or is it controlled by adaptive
> > routing parameter?
> >
>
>
> It is used for adaptive routing to compute the routes
>
>
> > 3.) When I specify a network using the NUCA_**** file does that create a
>
>
> > physical link between the 2 nodes. Meaning if i want to route packets from
>
> > L1:0 to {L1:1 or L1:2 or L2:0}, depending on some condition's and i specify
> >
> > bw_unit:1000
> > ext_node:L1Cache:0 int_node:0 link_latency:1 bw_multiplier:64
>
>
> > ext_node:L1Cache:1 int_node:1 link_latency:1 bw_multiplier:64
>
> > ext_node:L1Cache:2 int_node:2 link_latency:1 bw_multiplier:64
> > ext_node:L2Cache:0 int_node:0 link_latency:1 bw_multiplier:64
>
> > ext_node:L2Cache:1 int_node:1 link_latency:1 bw_multiplier:64
>
> > ext_node:L2Cache:2 int_node:2 link_latency:1 bw_multiplier:64
>
> >
> > int_node:0 int_node:1 link_latency:1 bw_multiplier:16
> > int_node:0 int_node:2 link_latency:1 bw_multiplier:16
>
> > int_node:1 int_node:2 link_latency:1 bw_multiplier:16
>
> > ....................
>
> >
> > then my L1Cache0 to switch 0 [bandwidth is 64 bytes / cycle] and L1Cache1 to
> > switch 1 [bandwidth is 64 bytes /cycle] and my switch0 to switch1 is
>
> > connected with an internal bandwith of 16 bytes /cycle. Now, if i have to
>
>
> > route the RequestMsg (packets) from L1:0 to {L1:1 or L1:2 or L2:0}? Then
> > where should i specify the changes. Is it going to be in  slicc/protocol/L1-
>
> >
> Cache.sm?
> >
>
>
> Yes, thats correct.
>
> The network will route the message to the destination you choose by
>
> computing the shortest route.  Adaptive routing also takes into account
> network congestion.  You can disable adaptive routing if you want.
>
>
>
> --Mike
>
[← Prev in Thread] Current Thread [Next in Thread→]