changeset 36987780169e in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=36987780169e
description:
        network: moved network config params

        Moved the buffer_size, endpoint_bandwidth, and adaptive_routing params 
out of
        the top-level parent network object and to only those networks that 
actually
        use those parameters.

diffstat:

 src/mem/ruby/network/Network.cc                                |   3 --
 src/mem/ruby/network/Network.hh                                |   6 -----
 src/mem/ruby/network/Network.py                                |   4 ---
 src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc |   2 +
 src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh |   3 ++
 src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.py |   2 +
 src/mem/ruby/network/simple/SimpleNetwork.cc                   |   4 +++
 src/mem/ruby/network/simple/SimpleNetwork.hh                   |   8 ++++++
 src/mem/ruby/network/simple/SimpleNetwork.py                   |   4 +++
 src/mem/ruby/network/simple/Switch.cc                          |   7 +++--
 src/mem/ruby/network/simple/Switch.hh                          |   3 +-
 src/mem/ruby/network/simple/Throttle.cc                        |  12 +++++----
 src/mem/ruby/network/simple/Throttle.hh                        |  12 +++++----
 13 files changed, 42 insertions(+), 28 deletions(-)

diffs (282 lines):

diff -r 7c377f5162f8 -r 36987780169e src/mem/ruby/network/Network.cc
--- a/src/mem/ruby/network/Network.cc   Thu Apr 28 17:18:14 2011 -0700
+++ b/src/mem/ruby/network/Network.cc   Thu Apr 28 17:18:14 2011 -0700
@@ -36,9 +36,6 @@
 {
     m_virtual_networks = p->number_of_virtual_networks;
     m_topology_ptr = p->topology;
-    m_buffer_size = p->buffer_size;
-    m_endpoint_bandwidth = p->endpoint_bandwidth;
-    m_adaptive_routing = p->adaptive_routing;
     m_link_latency = p->link_latency;
     m_control_msg_size = p->control_msg_size;
 
diff -r 7c377f5162f8 -r 36987780169e src/mem/ruby/network/Network.hh
--- a/src/mem/ruby/network/Network.hh   Thu Apr 28 17:18:14 2011 -0700
+++ b/src/mem/ruby/network/Network.hh   Thu Apr 28 17:18:14 2011 -0700
@@ -66,10 +66,7 @@
 
     virtual void init();
 
-    int getBufferSize() { return m_buffer_size; }
     int getNumberOfVirtualNetworks() { return m_virtual_networks; }
-    int getEndpointBandwidth() { return m_endpoint_bandwidth; }
-    bool getAdaptiveRouting() {return m_adaptive_routing; }
     int getLinkLatency() { return m_link_latency; }
     int MessageSizeType_to_int(MessageSizeType size_type);
 
@@ -110,10 +107,7 @@
     const std::string m_name;
     int m_nodes;
     int m_virtual_networks;
-    int m_buffer_size;
-    int m_endpoint_bandwidth;
     Topology* m_topology_ptr;
-    bool m_adaptive_routing;
     int m_link_latency;
     int m_control_msg_size;
     int m_data_msg_size;
diff -r 7c377f5162f8 -r 36987780169e src/mem/ruby/network/Network.py
--- a/src/mem/ruby/network/Network.py   Thu Apr 28 17:18:14 2011 -0700
+++ b/src/mem/ruby/network/Network.py   Thu Apr 28 17:18:14 2011 -0700
@@ -47,10 +47,6 @@
     abstract = True
     number_of_virtual_networks = Param.Int(10, "");
     topology = Param.Topology("");
-    buffer_size = Param.Int(0,
-        "default buffer size; 0 indicates infinite buffering");
-    endpoint_bandwidth = Param.Int(10000, "");
-    adaptive_routing = Param.Bool(False, "enable adaptive routing");
     link_latency = Param.Int(1,
         "local memory latency ?? NetworkLinkLatency");
     control_msg_size = Param.Int(8, "");
diff -r 7c377f5162f8 -r 36987780169e 
src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc
--- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc    Thu Apr 
28 17:18:14 2011 -0700
+++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc    Thu Apr 
28 17:18:14 2011 -0700
@@ -48,6 +48,8 @@
 GarnetNetwork::GarnetNetwork(const Params *p)
     : BaseGarnetNetwork(p)
 {
+    m_buffer_size = p->buffer_size;
+
     m_ruby_start = 0;
     m_flits_received = 0;
     m_flits_injected = 0;
diff -r 7c377f5162f8 -r 36987780169e 
src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
--- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh    Thu Apr 
28 17:18:14 2011 -0700
+++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh    Thu Apr 
28 17:18:14 2011 -0700
@@ -56,6 +56,8 @@
 
     void init();
 
+    int getBufferSize() { return m_buffer_size; }
+
     // returns the queue requested for the given component
     MessageBuffer* getToNetQueue(NodeID id, bool ordered, int network_num);
     MessageBuffer* getFromNetQueue(NodeID id, bool ordered, int network_num);
@@ -122,6 +124,7 @@
     std::vector<NetworkInterface *> m_ni_ptr_vector; // All NI's in Network
 
     Time m_ruby_start;
+    int m_buffer_size;
 };
 
 inline std::ostream&
diff -r 7c377f5162f8 -r 36987780169e 
src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.py
--- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.py    Thu Apr 
28 17:18:14 2011 -0700
+++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.py    Thu Apr 
28 17:18:14 2011 -0700
@@ -33,4 +33,6 @@
 
 class GarnetNetwork(BaseGarnetNetwork):
     type = 'GarnetNetwork'
+    buffer_size = Param.Int(0,
+        "default buffer size; 0 indicates infinite buffering");
 
diff -r 7c377f5162f8 -r 36987780169e 
src/mem/ruby/network/simple/SimpleNetwork.cc
--- a/src/mem/ruby/network/simple/SimpleNetwork.cc      Thu Apr 28 17:18:14 
2011 -0700
+++ b/src/mem/ruby/network/simple/SimpleNetwork.cc      Thu Apr 28 17:18:14 
2011 -0700
@@ -62,6 +62,10 @@
 SimpleNetwork::SimpleNetwork(const Params *p)
     : Network(p)
 {
+    m_buffer_size = p->buffer_size;
+    m_endpoint_bandwidth = p->endpoint_bandwidth;
+    m_adaptive_routing = p->adaptive_routing;
+
     // Note: the parent Network Object constructor is called before the
     // SimpleNetwork child constructor.  Therefore, the member variables
     // used below should already be initialized.
diff -r 7c377f5162f8 -r 36987780169e 
src/mem/ruby/network/simple/SimpleNetwork.hh
--- a/src/mem/ruby/network/simple/SimpleNetwork.hh      Thu Apr 28 17:18:14 
2011 -0700
+++ b/src/mem/ruby/network/simple/SimpleNetwork.hh      Thu Apr 28 17:18:14 
2011 -0700
@@ -53,6 +53,10 @@
 
     void init();
 
+    int getBufferSize() { return m_buffer_size; }
+    int getEndpointBandwidth() { return m_endpoint_bandwidth; }
+    bool getAdaptiveRouting() {return m_adaptive_routing; }
+
     void printStats(std::ostream& out) const;
     void clearStats();
     void printConfig(std::ostream& out) const;
@@ -107,6 +111,10 @@
     std::vector<Switch*> m_switch_ptr_vector;
     std::vector<MessageBuffer*> m_buffers_to_free;
     std::vector<Switch*> m_endpoint_switches;
+
+    int m_buffer_size;
+    int m_endpoint_bandwidth;
+    bool m_adaptive_routing;    
 };
 
 inline std::ostream&
diff -r 7c377f5162f8 -r 36987780169e 
src/mem/ruby/network/simple/SimpleNetwork.py
--- a/src/mem/ruby/network/simple/SimpleNetwork.py      Thu Apr 28 17:18:14 
2011 -0700
+++ b/src/mem/ruby/network/simple/SimpleNetwork.py      Thu Apr 28 17:18:14 
2011 -0700
@@ -32,3 +32,7 @@
 
 class SimpleNetwork(RubyNetwork):
     type = 'SimpleNetwork'
+    buffer_size = Param.Int(0,
+        "default buffer size; 0 indicates infinite buffering");
+    endpoint_bandwidth = Param.Int(10000, "");
+    adaptive_routing = Param.Bool(False, "enable adaptive routing");
diff -r 7c377f5162f8 -r 36987780169e src/mem/ruby/network/simple/Switch.cc
--- a/src/mem/ruby/network/simple/Switch.cc     Thu Apr 28 17:18:14 2011 -0700
+++ b/src/mem/ruby/network/simple/Switch.cc     Thu Apr 28 17:18:14 2011 -0700
@@ -33,9 +33,9 @@
 #include "mem/protocol/Protocol.hh"
 #include "mem/ruby/buffers/MessageBuffer.hh"
 #include "mem/ruby/network/simple/PerfectSwitch.hh"
+#include "mem/ruby/network/simple/SimpleNetwork.hh"
 #include "mem/ruby/network/simple/Switch.hh"
 #include "mem/ruby/network/simple/Throttle.hh"
-#include "mem/ruby/network/Network.hh"
 
 using namespace std;
 using m5::stl_helpers::deletePointers;
@@ -69,10 +69,12 @@
     const NetDest& routing_table_entry, int link_latency, int bw_multiplier)
 {
     Throttle* throttle_ptr = NULL;
+    SimpleNetwork* net_ptr = 
+        safe_cast<SimpleNetwork*>(RubySystem::getNetwork());
 
     // Create a throttle
     throttle_ptr = new Throttle(m_switch_id, m_throttles.size(), link_latency,
-        bw_multiplier);
+                                bw_multiplier, 
net_ptr->getEndpointBandwidth());
     m_throttles.push_back(throttle_ptr);
 
     // Create one buffer per vnet (these are intermediaryQueues)
@@ -81,7 +83,6 @@
         MessageBuffer* buffer_ptr = new MessageBuffer;
         // Make these queues ordered
         buffer_ptr->setOrdering(true);
-        Network* net_ptr = RubySystem::getNetwork();
         if (net_ptr->getBufferSize() > 0) {
             buffer_ptr->resize(net_ptr->getBufferSize());
         }
diff -r 7c377f5162f8 -r 36987780169e src/mem/ruby/network/simple/Switch.hh
--- a/src/mem/ruby/network/simple/Switch.hh     Thu Apr 28 17:18:14 2011 -0700
+++ b/src/mem/ruby/network/simple/Switch.hh     Thu Apr 28 17:18:14 2011 -0700
@@ -49,7 +49,6 @@
 class NetDest;
 class SimpleNetwork;
 class Throttle;
-class Network;
 
 class Switch
 {
@@ -79,7 +78,7 @@
     Switch& operator=(const Switch& obj);
 
     PerfectSwitch* m_perfect_switch_ptr;
-    Network* m_network_ptr;
+    SimpleNetwork* m_network_ptr;
     std::vector<Throttle*> m_throttles;
     std::vector<MessageBuffer*> m_buffers_to_free;
     SwitchID m_switch_id;
diff -r 7c377f5162f8 -r 36987780169e src/mem/ruby/network/simple/Throttle.cc
--- a/src/mem/ruby/network/simple/Throttle.cc   Thu Apr 28 17:18:14 2011 -0700
+++ b/src/mem/ruby/network/simple/Throttle.cc   Thu Apr 28 17:18:14 2011 -0700
@@ -49,21 +49,22 @@
 static int network_message_to_size(NetworkMessage* net_msg_ptr);
 
 Throttle::Throttle(int sID, NodeID node, int link_latency,
-    int link_bandwidth_multiplier)
+                   int link_bandwidth_multiplier, int endpoint_bandwidth)
 {
-    init(node, link_latency, link_bandwidth_multiplier);
+    init(node, link_latency, link_bandwidth_multiplier, endpoint_bandwidth);
     m_sID = sID;
 }
 
 Throttle::Throttle(NodeID node, int link_latency,
-    int link_bandwidth_multiplier)
+                   int link_bandwidth_multiplier, int endpoint_bandwidth)
 {
-    init(node, link_latency, link_bandwidth_multiplier);
+    init(node, link_latency, link_bandwidth_multiplier, endpoint_bandwidth);
     m_sID = 0;
 }
 
 void
-Throttle::init(NodeID node, int link_latency, int link_bandwidth_multiplier)
+Throttle::init(NodeID node, int link_latency, int link_bandwidth_multiplier, 
+               int endpoint_bandwidth)
 {
     m_node = node;
     m_vnets = 0;
@@ -71,6 +72,7 @@
     assert(link_bandwidth_multiplier > 0);
     m_link_bandwidth_multiplier = link_bandwidth_multiplier;
     m_link_latency = link_latency;
+    m_endpoint_bandwidth = endpoint_bandwidth;
 
     m_wakeups_wo_switch = 0;
     clearStats();
diff -r 7c377f5162f8 -r 36987780169e src/mem/ruby/network/simple/Throttle.hh
--- a/src/mem/ruby/network/simple/Throttle.hh   Thu Apr 28 17:18:14 2011 -0700
+++ b/src/mem/ruby/network/simple/Throttle.hh   Thu Apr 28 17:18:14 2011 -0700
@@ -54,8 +54,9 @@
 {
   public:
     Throttle(int sID, NodeID node, int link_latency,
-        int link_bandwidth_multiplier);
-    Throttle(NodeID node, int link_latency, int link_bandwidth_multiplier);
+             int link_bandwidth_multiplier, int endpoint_bandwidth);
+    Throttle(NodeID node, int link_latency, int link_bandwidth_multiplier,
+             int endpoint_bandwidth);
     ~Throttle() {}
 
     std::string name()
@@ -73,8 +74,7 @@
     int
     getLinkBandwidth() const
     {
-        return RubySystem::getNetwork()->getEndpointBandwidth() *
-            m_link_bandwidth_multiplier;
+        return m_endpoint_bandwidth * m_link_bandwidth_multiplier;
     }
     int getLatency() const { return m_link_latency; }
 
@@ -89,7 +89,8 @@
     void print(std::ostream& out) const;
 
   private:
-    void init(NodeID node, int link_latency, int link_bandwidth_multiplier);
+    void init(NodeID node, int link_latency, int link_bandwidth_multiplier,
+              int endpoint_bandwidth);
     void addVirtualNetwork(MessageBuffer* in_ptr, MessageBuffer* out_ptr);
     void linkUtilized(double ratio) { m_links_utilized += ratio; }
 
@@ -107,6 +108,7 @@
     int m_link_bandwidth_multiplier;
     int m_link_latency;
     int m_wakeups_wo_switch;
+    int m_endpoint_bandwidth;
 
     // For tracking utilization
     Time m_ruby_start;
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to