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.
This commit is contained in:
parent
62a93f0bf0
commit
b3980cdb9a
9 changed files with 72 additions and 151 deletions
|
@ -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;
|
||||
|
||||
|
|
|
@ -121,7 +121,7 @@ Topology::Topology(uint32_t num_routers, vector<BasicExtLink *> 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -68,15 +68,14 @@ class Topology
|
|||
std::vector<BasicIntLink *> 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;
|
||||
|
|
|
@ -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<NetworkLink_d*>::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<GarnetExtLink_d*>(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<GarnetExtLink_d*>(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<GarnetIntLink_d*>(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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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<GarnetExtLink*>(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<GarnetExtLink*>(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<GarnetIntLink*>(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);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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<SimpleExtLink*>(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<MessageBuffer*> queues;
|
||||
for (int i = 0; i < m_virtual_networks; i++) {
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue