From b3980cdb9a511227d5b2eb2d4ba75fde34cb209b Mon Sep 17 00:00:00 2001 From: Nilay Vaish Date: Fri, 28 Jun 2013 21:36:37 -0500 Subject: [PATCH] ruby: network: remove reconfiguration code This code seems not to be of any use now. There is no path in the simulator that allows for reconfiguring the network. A better approach would be to take a checkpoint and start the simulation from the checkpoint with the new configuration. --- src/mem/ruby/network/Network.hh | 9 +-- src/mem/ruby/network/Topology.cc | 20 +++--- src/mem/ruby/network/Topology.hh | 5 +- .../garnet/fixed-pipeline/GarnetNetwork_d.cc | 72 +++++++------------ .../garnet/fixed-pipeline/GarnetNetwork_d.hh | 9 +-- .../garnet/flexible-pipeline/GarnetNetwork.cc | 61 ++++++---------- .../garnet/flexible-pipeline/GarnetNetwork.hh | 9 +-- src/mem/ruby/network/simple/SimpleNetwork.cc | 27 ++----- src/mem/ruby/network/simple/SimpleNetwork.hh | 11 ++- 9 files changed, 72 insertions(+), 151 deletions(-) diff --git a/src/mem/ruby/network/Network.hh b/src/mem/ruby/network/Network.hh index b0cca6806..c2c8f322b 100644 --- a/src/mem/ruby/network/Network.hh +++ b/src/mem/ruby/network/Network.hh @@ -80,16 +80,13 @@ class Network : public ClockedObject virtual void makeOutLink(SwitchID src, NodeID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration) = 0; + const NetDest& routing_table_entry) = 0; virtual void makeInLink(NodeID src, SwitchID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration) = 0; + const NetDest& routing_table_entry) = 0; virtual void makeInternalLink(SwitchID src, SwitchID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration) = 0; + const NetDest& routing_table_entry) = 0; virtual void reset() = 0; diff --git a/src/mem/ruby/network/Topology.cc b/src/mem/ruby/network/Topology.cc index b8f6fb914..bf270cce1 100644 --- a/src/mem/ruby/network/Topology.cc +++ b/src/mem/ruby/network/Topology.cc @@ -121,7 +121,7 @@ Topology::Topology(uint32_t num_routers, vector ext_links, } void -Topology::createLinks(Network *net, bool isReconfiguration) +Topology::createLinks(Network *net) { // Find maximum switchID SwitchID max_switch_id = 0; @@ -179,9 +179,9 @@ Topology::createLinks(Network *net, bool isReconfiguration) for (int j = 0; j < topology_weights[i].size(); j++) { int weight = topology_weights[i][j]; if (weight > 0 && weight != INFINITE_LATENCY) { - NetDest destination_set = shortest_path_to_node(i, j, - topology_weights, dist); - makeLink(net, i, j, destination_set, isReconfiguration); + NetDest destination_set = + shortest_path_to_node(i, j, topology_weights, dist); + makeLink(net, i, j, destination_set); } } } @@ -206,7 +206,7 @@ Topology::addLink(SwitchID src, SwitchID dest, BasicLink* link, void Topology::makeLink(Network *net, SwitchID src, SwitchID dest, - const NetDest& routing_table_entry, bool isReconfiguration) + const NetDest& routing_table_entry) { // Make sure we're not trying to connect two end-point nodes // directly together @@ -220,9 +220,7 @@ Topology::makeLink(Network *net, SwitchID src, SwitchID dest, src_dest.second = dest; link_entry = m_link_map[src_dest]; net->makeInLink(src, dest - (2 * m_nodes), link_entry.link, - link_entry.direction, - routing_table_entry, - isReconfiguration); + link_entry.direction, routing_table_entry); } else if (dest < 2*m_nodes) { assert(dest >= m_nodes); NodeID node = dest - m_nodes; @@ -230,9 +228,7 @@ Topology::makeLink(Network *net, SwitchID src, SwitchID dest, src_dest.second = dest; link_entry = m_link_map[src_dest]; net->makeOutLink(src - (2 * m_nodes), node, link_entry.link, - link_entry.direction, - routing_table_entry, - isReconfiguration); + link_entry.direction, routing_table_entry); } else { assert((src >= 2 * m_nodes) && (dest >= 2 * m_nodes)); src_dest.first = src; @@ -240,7 +236,7 @@ Topology::makeLink(Network *net, SwitchID src, SwitchID dest, link_entry = m_link_map[src_dest]; net->makeInternalLink(src - (2 * m_nodes), dest - (2 * m_nodes), link_entry.link, link_entry.direction, - routing_table_entry, isReconfiguration); + routing_table_entry); } } diff --git a/src/mem/ruby/network/Topology.hh b/src/mem/ruby/network/Topology.hh index 11b1fe118..cd0e03d09 100644 --- a/src/mem/ruby/network/Topology.hh +++ b/src/mem/ruby/network/Topology.hh @@ -68,15 +68,14 @@ class Topology std::vector int_links); uint32_t numSwitches() const { return m_number_of_switches; } - void createLinks(Network *net, bool isReconfiguration); + void createLinks(Network *net); void print(std::ostream& out) const { out << "[Topology]"; } protected: void addLink(SwitchID src, SwitchID dest, BasicLink* link, LinkDirection dir); void makeLink(Network *net, SwitchID src, SwitchID dest, - const NetDest& routing_table_entry, - bool isReconfiguration); + const NetDest& routing_table_entry); NodeID m_nodes; uint32_t m_number_of_switches; diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc index 4b1e0d0d7..491a413b4 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc @@ -88,8 +88,7 @@ GarnetNetwork_d::init() ni->addNode(m_toNetQueues[i], m_fromNetQueues[i]); m_ni_ptr_vector.push_back(ni); } - // false because this isn't a reconfiguration - m_topology_ptr->createLinks(this, false); + m_topology_ptr->createLinks(this); // initialize the link's network pointers for (vector::const_iterator i = m_link_ptr_vector.begin(); @@ -150,26 +149,19 @@ GarnetNetwork_d::reset() void GarnetNetwork_d::makeInLink(NodeID src, SwitchID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration) + const NetDest& routing_table_entry) { assert(src < m_nodes); GarnetExtLink_d* garnet_link = safe_cast(link); + NetworkLink_d* net_link = garnet_link->m_network_links[direction]; + CreditLink_d* credit_link = garnet_link->m_credit_links[direction]; - if (!isReconfiguration) { - NetworkLink_d* net_link = garnet_link->m_network_links[direction]; - CreditLink_d* credit_link = garnet_link->m_credit_links[direction]; + m_link_ptr_vector.push_back(net_link); + m_creditlink_ptr_vector.push_back(credit_link); - m_link_ptr_vector.push_back(net_link); - m_creditlink_ptr_vector.push_back(credit_link); - - m_router_ptr_vector[dest]->addInPort(net_link, credit_link); - m_ni_ptr_vector[src]->addOutPort(net_link, credit_link); - } else { - panic("Fatal Error:: Reconfiguration not allowed here"); - // do nothing - } + m_router_ptr_vector[dest]->addInPort(net_link, credit_link); + m_ni_ptr_vector[src]->addOutPort(net_link, credit_link); } /* @@ -181,30 +173,22 @@ GarnetNetwork_d::makeInLink(NodeID src, SwitchID dest, BasicLink* link, void GarnetNetwork_d::makeOutLink(SwitchID src, NodeID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration) + const NetDest& routing_table_entry) { assert(dest < m_nodes); assert(src < m_router_ptr_vector.size()); assert(m_router_ptr_vector[src] != NULL); GarnetExtLink_d* garnet_link = safe_cast(link); + NetworkLink_d* net_link = garnet_link->m_network_links[direction]; + CreditLink_d* credit_link = garnet_link->m_credit_links[direction]; - if (!isReconfiguration) { - NetworkLink_d* net_link = garnet_link->m_network_links[direction]; - CreditLink_d* credit_link = garnet_link->m_credit_links[direction]; - - m_link_ptr_vector.push_back(net_link); - m_creditlink_ptr_vector.push_back(credit_link); + m_link_ptr_vector.push_back(net_link); + m_creditlink_ptr_vector.push_back(credit_link); - m_router_ptr_vector[src]->addOutPort(net_link, routing_table_entry, - link->m_weight, - credit_link); - m_ni_ptr_vector[dest]->addInPort(net_link, credit_link); - } else { - fatal("Fatal Error:: Reconfiguration not allowed here"); - // do nothing - } + m_router_ptr_vector[src]->addOutPort(net_link, routing_table_entry, + link->m_weight, credit_link); + m_ni_ptr_vector[dest]->addInPort(net_link, credit_link); } /* @@ -214,26 +198,18 @@ GarnetNetwork_d::makeOutLink(SwitchID src, NodeID dest, BasicLink* link, void GarnetNetwork_d::makeInternalLink(SwitchID src, SwitchID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration) + const NetDest& routing_table_entry) { GarnetIntLink_d* garnet_link = safe_cast(link); + NetworkLink_d* net_link = garnet_link->m_network_links[direction]; + CreditLink_d* credit_link = garnet_link->m_credit_links[direction]; - if (!isReconfiguration) { - NetworkLink_d* net_link = garnet_link->m_network_links[direction]; - CreditLink_d* credit_link = garnet_link->m_credit_links[direction]; - - m_link_ptr_vector.push_back(net_link); - m_creditlink_ptr_vector.push_back(credit_link); + m_link_ptr_vector.push_back(net_link); + m_creditlink_ptr_vector.push_back(credit_link); - m_router_ptr_vector[dest]->addInPort(net_link, credit_link); - m_router_ptr_vector[src]->addOutPort(net_link, routing_table_entry, - link->m_weight, - credit_link); - } else { - fatal("Fatal Error:: Reconfiguration not allowed here"); - // do nothing - } + m_router_ptr_vector[dest]->addInPort(net_link, credit_link); + m_router_ptr_vector[src]->addOutPort(net_link, routing_table_entry, + link->m_weight, credit_link); } void diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh index 912bbb955..9c2cc63bf 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh @@ -79,16 +79,13 @@ class GarnetNetwork_d : public BaseGarnetNetwork // Methods used by Topology to setup the network void makeOutLink(SwitchID src, NodeID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration); + const NetDest& routing_table_entry); void makeInLink(NodeID src, SwitchID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration); + const NetDest& routing_table_entry); void makeInternalLink(SwitchID src, SwitchID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration); + const NetDest& routing_table_entry); //! Function for performing a functional write. The return value //! indicates the number of messages that were written. diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc index ee54dc2c5..77444204e 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc +++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc @@ -82,8 +82,7 @@ GarnetNetwork::init() m_ni_ptr_vector.push_back(ni); } - // false because this isn't a reconfiguration : - m_topology_ptr->createLinks(this, false); + m_topology_ptr->createLinks(this); } GarnetNetwork::~GarnetNetwork() @@ -112,69 +111,51 @@ GarnetNetwork::reset() void GarnetNetwork::makeInLink(NodeID src, SwitchID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration) + const NetDest& routing_table_entry) { assert(src < m_nodes); GarnetExtLink* garnet_link = safe_cast(link); + NetworkLink *net_link = garnet_link->m_network_links[direction]; - if (!isReconfiguration) { - NetworkLink *net_link = garnet_link->m_network_links[direction]; - net_link->init_net_ptr(this); - m_link_ptr_vector.push_back(net_link); - m_router_ptr_vector[dest]->addInPort(net_link); - m_ni_ptr_vector[src]->addOutPort(net_link); - } else { - fatal("Fatal Error:: Reconfiguration not allowed here"); - // do nothing - } + net_link->init_net_ptr(this); + m_link_ptr_vector.push_back(net_link); + m_router_ptr_vector[dest]->addInPort(net_link); + m_ni_ptr_vector[src]->addOutPort(net_link); } void GarnetNetwork::makeOutLink(SwitchID src, NodeID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration) + const NetDest& routing_table_entry) { assert(dest < m_nodes); assert(src < m_router_ptr_vector.size()); assert(m_router_ptr_vector[src] != NULL); GarnetExtLink* garnet_link = safe_cast(link); + NetworkLink *net_link = garnet_link->m_network_links[direction]; - if (!isReconfiguration) { - NetworkLink *net_link = garnet_link->m_network_links[direction]; - net_link->init_net_ptr(this); - m_link_ptr_vector.push_back(net_link); - m_router_ptr_vector[src]->addOutPort(net_link, routing_table_entry, - link->m_weight); - m_ni_ptr_vector[dest]->addInPort(net_link); - } else { - fatal("Fatal Error:: Reconfiguration not allowed here"); - //do nothing - } + net_link->init_net_ptr(this); + m_link_ptr_vector.push_back(net_link); + m_router_ptr_vector[src]->addOutPort(net_link, routing_table_entry, + link->m_weight); + m_ni_ptr_vector[dest]->addInPort(net_link); } void GarnetNetwork::makeInternalLink(SwitchID src, SwitchID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration) + const NetDest& routing_table_entry) { GarnetIntLink* garnet_link = safe_cast(link); + NetworkLink *net_link = garnet_link->m_network_links[direction]; - if (!isReconfiguration) { - NetworkLink *net_link = garnet_link->m_network_links[direction]; - net_link->init_net_ptr(this); - m_link_ptr_vector.push_back(net_link); - m_router_ptr_vector[dest]->addInPort(net_link); - m_router_ptr_vector[src]->addOutPort(net_link, routing_table_entry, - link->m_weight); - } else { - fatal("Fatal Error:: Reconfiguration not allowed here"); - // do nothing - } + net_link->init_net_ptr(this); + m_link_ptr_vector.push_back(net_link); + m_router_ptr_vector[dest]->addInPort(net_link); + m_router_ptr_vector[src]->addOutPort(net_link, routing_table_entry, + link->m_weight); } diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh index 1db4c9874..60f3f8b4e 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh +++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh @@ -70,16 +70,13 @@ class GarnetNetwork : public BaseGarnetNetwork // Methods used by Topology to setup the network void makeOutLink(SwitchID src, NodeID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration); + const NetDest& routing_table_entry); void makeInLink(NodeID src, SwitchID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration); + const NetDest& routing_table_entry); void makeInternalLink(SwitchID src, SwitchID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration); + const NetDest& routing_table_entry); //! Function for performing a functional read. The return value //! indicates if a message was found that had the required address. diff --git a/src/mem/ruby/network/simple/SimpleNetwork.cc b/src/mem/ruby/network/simple/SimpleNetwork.cc index a51add4a5..071e1adae 100644 --- a/src/mem/ruby/network/simple/SimpleNetwork.cc +++ b/src/mem/ruby/network/simple/SimpleNetwork.cc @@ -96,8 +96,7 @@ SimpleNetwork::init() // The topology pointer should have already been initialized in // the parent class network constructor. assert(m_topology_ptr != NULL); - // false because this isn't a reconfiguration - m_topology_ptr->createLinks(this, false); + m_topology_ptr->createLinks(this); } void @@ -130,18 +129,12 @@ SimpleNetwork::~SimpleNetwork() void SimpleNetwork::makeOutLink(SwitchID src, NodeID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration) + const NetDest& routing_table_entry) { assert(dest < m_nodes); assert(src < m_switch_ptr_vector.size()); assert(m_switch_ptr_vector[src] != NULL); - if (isReconfiguration) { - m_switch_ptr_vector[src]->reconfigureOutPort(routing_table_entry); - return; - } - SimpleExtLink *simple_link = safe_cast(link); m_switch_ptr_vector[src]->addOutPort(m_fromNetQueues[dest], @@ -156,15 +149,9 @@ SimpleNetwork::makeOutLink(SwitchID src, NodeID dest, BasicLink* link, void SimpleNetwork::makeInLink(NodeID src, SwitchID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration) + const NetDest& routing_table_entry) { assert(src < m_nodes); - if (isReconfiguration) { - // do nothing - return; - } - m_switch_ptr_vector[dest]->addInPort(m_toNetQueues[src]); } @@ -172,14 +159,8 @@ SimpleNetwork::makeInLink(NodeID src, SwitchID dest, BasicLink* link, void SimpleNetwork::makeInternalLink(SwitchID src, SwitchID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration) + const NetDest& routing_table_entry) { - if (isReconfiguration) { - m_switch_ptr_vector[src]->reconfigureOutPort(routing_table_entry); - return; - } - // Create a set of new MessageBuffers std::vector queues; for (int i = 0; i < m_virtual_networks; i++) { diff --git a/src/mem/ruby/network/simple/SimpleNetwork.hh b/src/mem/ruby/network/simple/SimpleNetwork.hh index 879446822..60831ad0f 100644 --- a/src/mem/ruby/network/simple/SimpleNetwork.hh +++ b/src/mem/ruby/network/simple/SimpleNetwork.hh @@ -73,16 +73,13 @@ class SimpleNetwork : public Network // Methods used by Topology to setup the network void makeOutLink(SwitchID src, NodeID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration); - void makeInLink(NodeID src, SwitchID dest, BasicLink* link, + const NetDest& routing_table_entry); + void makeInLink(NodeID src, SwitchID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration); + const NetDest& routing_table_entry); void makeInternalLink(SwitchID src, SwitchID dest, BasicLink* link, LinkDirection direction, - const NetDest& routing_table_entry, - bool isReconfiguration); + const NetDest& routing_table_entry); void print(std::ostream& out) const; -- 2.30.2