ruby: network: move getNumNodes() to base class
authorNilay Vaish <nilay@cs.wisc.edu>
Mon, 1 Sep 2014 21:55:42 +0000 (16:55 -0500)
committerNilay Vaish <nilay@cs.wisc.edu>
Mon, 1 Sep 2014 21:55:42 +0000 (16:55 -0500)
All the implementations were doing the same things.

src/mem/ruby/network/Network.cc
src/mem/ruby/network/Network.hh
src/mem/ruby/network/garnet/BaseGarnetNetwork.cc
src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh
src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc
src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc
src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
src/mem/ruby/network/simple/SimpleNetwork.cc
src/mem/ruby/network/simple/SimpleNetwork.hh

index 6e843716008137c8997eaa932ec4d40ed7f2bda9..60531a423103b61ff0f77cae43fe0a7984747598 100644 (file)
@@ -49,6 +49,35 @@ Network::Network(const Params *p)
 
     m_topology_ptr = new Topology(p->routers.size(), p->ext_links,
                                   p->int_links);
+
+    // Allocate to and from queues
+    // Queues that are getting messages from protocol
+    m_toNetQueues.resize(m_nodes);
+
+    // Queues that are feeding the protocol
+    m_fromNetQueues.resize(m_nodes);
+
+    for (int node = 0; node < m_nodes; node++) {
+        // Setting number of virtual message buffers per Network Queue
+        m_toNetQueues[node].resize(m_virtual_networks);
+        m_fromNetQueues[node].resize(m_virtual_networks);
+
+        // Instantiating the Message Buffers that
+        // interact with the coherence protocol
+        for (int j = 0; j < m_virtual_networks; j++) {
+            m_toNetQueues[node][j] = new MessageBuffer();
+            m_fromNetQueues[node][j] = new MessageBuffer();
+        }
+    }
+
+    m_in_use.resize(m_virtual_networks);
+    m_ordered.resize(m_virtual_networks);
+
+    for (int i = 0; i < m_virtual_networks; i++) {
+        m_in_use[i] = false;
+        m_ordered[i] = false;
+    }
+
     p->ruby_system->registerNetwork(this);
 
     // Initialize the controller's network pointers
@@ -63,6 +92,19 @@ Network::Network(const Params *p)
     Stats::registerDumpCallback(new StatsCallback(this));
 }
 
+Network::~Network()
+{
+    for (int node = 0; node < m_nodes; node++) {
+        // Delete the Message Buffers
+        for (int j = 0; j < m_virtual_networks; j++) {
+            delete m_toNetQueues[node][j];
+            delete m_fromNetQueues[node][j];
+        }
+    }
+
+    delete m_topology_ptr;
+}
+
 void
 Network::init()
 {
index 9ddf5c8e600cd04d89117c28bc90cf8f5bd640f8..dcdd791e7d626acb5e0a161799e3b9695268038a 100644 (file)
@@ -60,13 +60,15 @@ class Network : public ClockedObject
   public:
     typedef RubyNetworkParams Params;
     Network(const Params *p);
-    virtual ~Network() {}
     const Params * params() const
     { return dynamic_cast<const Params *>(_params);}
 
+    virtual ~Network();
     virtual void init();
 
     static uint32_t getNumberOfVirtualNetworks() { return m_virtual_networks; }
+    int getNumNodes() const { return m_nodes; }
+
     static uint32_t MessageSizeType_to_int(MessageSizeType size_type);
 
     // returns the queue requested for the given component
@@ -74,7 +76,7 @@ class Network : public ClockedObject
         int netNumber, std::string vnet_type) = 0;
     virtual MessageBuffer* getFromNetQueue(NodeID id, bool ordered,
         int netNumber, std::string vnet_type) = 0;
-    virtual int getNumNodes() {return 1;}
+
 
     virtual void makeOutLink(SwitchID src, NodeID dest, BasicLink* link,
                              LinkDirection direction,
index 01f1b80ed9a28a5af9f53a17a69b2992054fc5c8..92e45c36db8e605cc7c496ce63926aedaaf7bb91 100644 (file)
@@ -58,34 +58,6 @@ BaseGarnetNetwork::BaseGarnetNetwork(const Params *p)
             fatal("Garnet only supports uniform bw across all links and NIs\n");
         }
     }
-
-    // Allocate to and from queues
-
-    // Queues that are getting messages from protocol
-    m_toNetQueues.resize(m_nodes);
-
-    // Queues that are feeding the protocol
-    m_fromNetQueues.resize(m_nodes);
-
-    m_in_use.resize(m_virtual_networks);
-    m_ordered.resize(m_virtual_networks);
-    for (int i = 0; i < m_virtual_networks; i++) {
-        m_in_use[i] = false;
-        m_ordered[i] = false;
-    }
-
-    for (int node = 0; node < m_nodes; node++) {
-        // Setting number of virtual message buffers per Network Queue
-        m_toNetQueues[node].resize(m_virtual_networks);
-        m_fromNetQueues[node].resize(m_virtual_networks);
-
-        // Instantiating the Message Buffers that
-        // interact with the coherence protocol
-        for (int j = 0; j < m_virtual_networks; j++) {
-            m_toNetQueues[node][j] = new MessageBuffer();
-            m_fromNetQueues[node][j] = new MessageBuffer();
-        }
-    }
 }
 
 void
index 6de60b285247f9f93f7ea87dbe9010d634cf5c3f..baf6a9687cec513fa09014d104ac521ed3a76184 100644 (file)
@@ -108,15 +108,10 @@ GarnetNetwork_d::init()
 
 GarnetNetwork_d::~GarnetNetwork_d()
 {
-    for (int i = 0; i < m_nodes; i++) {
-        deletePointers(m_toNetQueues[i]);
-        deletePointers(m_fromNetQueues[i]);
-    }
     deletePointers(m_routers);
     deletePointers(m_nis);
     deletePointers(m_links);
     deletePointers(m_creditlinks);
-    delete m_topology_ptr;
 }
 
 /*
index 5aef42f3aeb1f652727a76effa82c2745d88cc54..507d8bbd6522c59859c8d638114a1ecf127a5996 100644 (file)
@@ -52,11 +52,8 @@ class GarnetNetwork_d : public BaseGarnetNetwork
     GarnetNetwork_d(const Params *p);
 
     ~GarnetNetwork_d();
-
     void init();
 
-    int getNumNodes() { return m_nodes; }
-
     int getBuffersPerDataVC() {return m_buffers_per_data_vc; }
     int getBuffersPerCtrlVC() {return m_buffers_per_ctrl_vc; }
 
index db71c997470fa050746888c0ac3919a98fed7dc3..2f1b5ee461284ed8622bee3832ef0ab0ea2794a6 100644 (file)
@@ -114,8 +114,8 @@ NetworkInterface_d::addNode(vector<MessageBuffer *>& in,
     assert(in.size() == m_virtual_networks);
     inNode_ptr = in;
     outNode_ptr = out;
-    for (int j = 0; j < m_virtual_networks; j++) {
 
+    for (int j = 0; j < m_virtual_networks; j++) {
         // the protocol injects messages into the NI
         inNode_ptr[j]->setConsumer(this);
         inNode_ptr[j]->setReceiver(this);
index 280917baba93e892fd70474c5faf0a912c6c1f91..07d5412d0ff28c053725629b9da68a29c4b933f9 100644 (file)
@@ -88,14 +88,9 @@ GarnetNetwork::init()
 
 GarnetNetwork::~GarnetNetwork()
 {
-    for (int i = 0; i < m_nodes; i++) {
-        deletePointers(m_toNetQueues[i]);
-        deletePointers(m_fromNetQueues[i]);
-    }
     deletePointers(m_routers);
     deletePointers(m_nis);
     deletePointers(m_links);
-    delete m_topology_ptr;
 }
 
 void
index bd273b0c84616835a1234a56c28593cc29881207..906e7eb3a1d2b5c2f457441da48c2222a60d6eb2 100644 (file)
@@ -50,12 +50,10 @@ class GarnetNetwork : public BaseGarnetNetwork
     GarnetNetwork(const Params *p);
 
     ~GarnetNetwork();
-
     void init();
 
     int getBufferSize() { return m_buffer_size; }
     int getNumPipeStages() {return m_number_of_pipe_stages; }
-    int getNumNodes(){ return m_nodes; }
 
     void collateStats();
     void regStats();
index 9eca157f6c407e5b21db2718cb10305ab71a1ddf..2d08f9fa42827bbf4ba684396de00d6a49cafe19 100644 (file)
@@ -53,30 +53,8 @@ SimpleNetwork::SimpleNetwork(const Params *p)
     // Note: the parent Network Object constructor is called before the
     // SimpleNetwork child constructor.  Therefore, the member variables
     // used below should already be initialized.
-
     m_endpoint_switches.resize(m_nodes);
 
-    m_in_use.resize(m_virtual_networks);
-    m_ordered.resize(m_virtual_networks);
-    for (int i = 0; i < m_virtual_networks; i++) {
-        m_in_use[i] = false;
-        m_ordered[i] = false;
-    }
-
-    // Allocate to and from queues
-    m_toNetQueues.resize(m_nodes);
-    m_fromNetQueues.resize(m_nodes);
-    for (int node = 0; node < m_nodes; node++) {
-        m_toNetQueues[node].resize(m_virtual_networks);
-        m_fromNetQueues[node].resize(m_virtual_networks);
-        for (int j = 0; j < m_virtual_networks; j++) {
-            m_toNetQueues[node][j] =
-                new MessageBuffer(csprintf("toNet node %d j %d", node, j));
-            m_fromNetQueues[node][j] =
-                new MessageBuffer(csprintf("fromNet node %d j %d", node, j));
-        }
-    }
-
     // record the routers
     for (vector<BasicRouter*>::const_iterator i = p->routers.begin();
          i != p->routers.end(); ++i) {
@@ -99,13 +77,8 @@ SimpleNetwork::init()
 
 SimpleNetwork::~SimpleNetwork()
 {
-    for (int i = 0; i < m_nodes; i++) {
-        deletePointers(m_toNetQueues[i]);
-        deletePointers(m_fromNetQueues[i]);
-    }
     deletePointers(m_switches);
     deletePointers(m_buffers_to_free);
-    // delete m_topology_ptr;
 }
 
 // From a switch to an endpoint node
index 335ba15a0a770099bb77fe6709d6d44e348b266f..90560c2674af84ff2a67d7a6b581d35538b7ddf8 100644 (file)
@@ -63,8 +63,6 @@ class SimpleNetwork : public Network
     bool isVNetOrdered(int vnet) { return m_ordered[vnet]; }
     bool validVirtualNetwork(int vnet) { return m_in_use[vnet]; }
 
-    int getNumNodes() {return m_nodes; }
-
     // Methods used by Topology to setup the network
     void makeOutLink(SwitchID src, NodeID dest, BasicLink* link, 
                      LinkDirection direction,