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
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev