From 006818aeea6176c4500c5f7414e9f2a822c77062 Mon Sep 17 00:00:00 2001 From: Nathan Binkert Date: Thu, 10 Jun 2010 23:17:07 -0700 Subject: ruby: get rid of Vector and use STL add a couple of helper functions to base for deleteing all pointers in a container and outputting containers to a stream --- src/mem/ruby/network/Network.cc | 2 +- src/mem/ruby/network/Network.hh | 3 +- .../garnet/fixed-pipeline/GarnetNetwork_d.cc | 48 +++++++++++---------- .../garnet/fixed-pipeline/GarnetNetwork_d.hh | 18 ++++---- .../network/garnet/fixed-pipeline/InputUnit_d.cc | 6 ++- .../network/garnet/fixed-pipeline/InputUnit_d.hh | 4 +- .../garnet/fixed-pipeline/NetworkInterface_d.cc | 24 ++++++----- .../garnet/fixed-pipeline/NetworkInterface_d.hh | 17 ++++---- .../network/garnet/fixed-pipeline/NetworkLink_d.cc | 6 +-- .../network/garnet/fixed-pipeline/NetworkLink_d.hh | 5 ++- .../network/garnet/fixed-pipeline/OutputUnit_d.cc | 6 ++- .../network/garnet/fixed-pipeline/OutputUnit_d.hh | 3 +- .../ruby/network/garnet/fixed-pipeline/Router_d.cc | 10 +++-- .../ruby/network/garnet/fixed-pipeline/Router_d.hh | 10 ++--- .../network/garnet/fixed-pipeline/RoutingUnit_d.cc | 4 +- .../network/garnet/fixed-pipeline/RoutingUnit_d.hh | 4 +- .../network/garnet/fixed-pipeline/SWallocator_d.cc | 12 +++--- .../network/garnet/fixed-pipeline/SWallocator_d.hh | 13 +++--- .../ruby/network/garnet/fixed-pipeline/Switch_d.cc | 7 ++- .../ruby/network/garnet/fixed-pipeline/Switch_d.hh | 5 ++- .../network/garnet/fixed-pipeline/VCallocator_d.cc | 20 ++++----- .../network/garnet/fixed-pipeline/VCallocator_d.hh | 13 +++--- .../garnet/flexible-pipeline/GarnetNetwork.cc | 40 +++++++++-------- .../garnet/flexible-pipeline/GarnetNetwork.hh | 16 +++---- .../garnet/flexible-pipeline/NetworkInterface.cc | 22 ++++++---- .../garnet/flexible-pipeline/NetworkInterface.hh | 14 +++--- .../garnet/flexible-pipeline/NetworkLink.cc | 4 +- .../garnet/flexible-pipeline/NetworkLink.hh | 5 ++- .../network/garnet/flexible-pipeline/Router.cc | 50 +++++++++++----------- .../network/garnet/flexible-pipeline/Router.hh | 23 +++++----- src/mem/ruby/network/simple/PerfectSwitch.cc | 26 +++++------ src/mem/ruby/network/simple/PerfectSwitch.hh | 14 +++--- src/mem/ruby/network/simple/SimpleNetwork.cc | 36 ++++++++-------- src/mem/ruby/network/simple/SimpleNetwork.hh | 20 ++++----- src/mem/ruby/network/simple/Switch.cc | 35 +++++++++------ src/mem/ruby/network/simple/Switch.hh | 12 +++--- src/mem/ruby/network/simple/Throttle.cc | 14 +++--- src/mem/ruby/network/simple/Throttle.hh | 16 +++---- src/mem/ruby/network/simple/Topology.cc | 36 ++++++++-------- src/mem/ruby/network/simple/Topology.hh | 21 ++++----- 40 files changed, 344 insertions(+), 300 deletions(-) (limited to 'src/mem/ruby/network') diff --git a/src/mem/ruby/network/Network.cc b/src/mem/ruby/network/Network.cc index 89b9168b6..f2e056f75 100644 --- a/src/mem/ruby/network/Network.cc +++ b/src/mem/ruby/network/Network.cc @@ -90,7 +90,7 @@ Network::MessageSizeType_to_int(MessageSizeType size_type) return 0; } -const Vector* +const std::vector* Network::getThrottles(NodeID id) const { return NULL; diff --git a/src/mem/ruby/network/Network.hh b/src/mem/ruby/network/Network.hh index fb56904db..51be0105c 100644 --- a/src/mem/ruby/network/Network.hh +++ b/src/mem/ruby/network/Network.hh @@ -42,6 +42,7 @@ #include #include +#include #include "mem/protocol/MessageSizeType.hh" #include "mem/ruby/common/Global.hh" @@ -76,7 +77,7 @@ class Network : public SimObject int netNumber) = 0; virtual MessageBuffer* getFromNetQueue(NodeID id, bool ordered, int netNumber) = 0; - virtual const Vector* getThrottles(NodeID id) const; + virtual const std::vector* getThrottles(NodeID id) const; virtual int getNumNodes() {return 1;} virtual void makeOutLink(SwitchID src, NodeID dest, 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 8bdea4894..124a38e93 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc @@ -28,6 +28,7 @@ * Authors: Niket Agarwal */ +#include "base/stl_helpers.hh" #include "mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh" #include "mem/protocol/MachineType.hh" #include "mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.hh" @@ -39,6 +40,7 @@ #include "mem/ruby/common/NetDest.hh" using namespace std; +using m5::stl_helpers::deletePointers; GarnetNetwork_d::GarnetNetwork_d(const Params *p) : BaseGarnetNetwork(p) @@ -52,10 +54,10 @@ GarnetNetwork_d::GarnetNetwork_d(const Params *p) m_router_ptr_vector.clear(); // Allocate to and from queues - m_toNetQueues.setSize(m_nodes); // Queues that are getting messages from protocol - m_fromNetQueues.setSize(m_nodes); // Queues that are feeding the protocol - m_in_use.setSize(m_virtual_networks); - m_ordered.setSize(m_virtual_networks); + m_toNetQueues.resize(m_nodes); // Queues that are getting messages from protocol + m_fromNetQueues.resize(m_nodes); // Queues that are feeding the protocol + 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; @@ -65,8 +67,8 @@ GarnetNetwork_d::GarnetNetwork_d(const Params *p) for (int node = 0; node < m_nodes; node++) { //Setting how many vitual message buffers will there be per Network Queue - m_toNetQueues[node].setSize(m_virtual_networks); - m_fromNetQueues[node].setSize(m_virtual_networks); + m_toNetQueues[node].resize(m_virtual_networks); + m_fromNetQueues[node].resize(m_virtual_networks); for (int j = 0; j < m_virtual_networks; j++) { @@ -88,13 +90,13 @@ void GarnetNetwork_d::init() int number_of_routers = m_topology_ptr->numSwitches(); for (int i=0; iaddNode(m_toNetQueues[i], m_fromNetQueues[i]); - m_ni_ptr_vector.insertAtBottom(ni); + m_ni_ptr_vector.push_back(ni); } m_topology_ptr->createLinks(this, false); // false because this isn't a reconfiguration for(int i = 0; i < m_router_ptr_vector.size(); i++) @@ -107,13 +109,13 @@ GarnetNetwork_d::~GarnetNetwork_d() { for (int i = 0; i < m_nodes; i++) { - m_toNetQueues[i].deletePointers(); - m_fromNetQueues[i].deletePointers(); + deletePointers(m_toNetQueues[i]); + deletePointers(m_fromNetQueues[i]); } - m_router_ptr_vector.deletePointers(); - m_ni_ptr_vector.deletePointers(); - m_link_ptr_vector.deletePointers(); - m_creditlink_ptr_vector.deletePointers(); + deletePointers(m_router_ptr_vector); + deletePointers(m_ni_ptr_vector); + deletePointers(m_link_ptr_vector); + deletePointers(m_creditlink_ptr_vector); delete m_topology_ptr; } @@ -143,8 +145,8 @@ void GarnetNetwork_d::makeInLink(NodeID src, SwitchID dest, const NetDest& routi { NetworkLink_d *net_link = new NetworkLink_d(m_link_ptr_vector.size(), link_latency, this); CreditLink_d *credit_link = new CreditLink_d(m_creditlink_ptr_vector.size(), link_latency, this); - m_link_ptr_vector.insertAtBottom(net_link); - m_creditlink_ptr_vector.insertAtBottom(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); @@ -172,8 +174,8 @@ void GarnetNetwork_d::makeOutLink(SwitchID src, NodeID dest, const NetDest& rout { NetworkLink_d *net_link = new NetworkLink_d(m_link_ptr_vector.size(), link_latency, this); CreditLink_d *credit_link = new CreditLink_d(m_creditlink_ptr_vector.size(), link_latency, this); - m_link_ptr_vector.insertAtBottom(net_link); - m_creditlink_ptr_vector.insertAtBottom(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_weight, credit_link); m_ni_ptr_vector[dest]->addInPort(net_link, credit_link); @@ -195,8 +197,8 @@ void GarnetNetwork_d::makeInternalLink(SwitchID src, SwitchID dest, const NetDes { NetworkLink_d *net_link = new NetworkLink_d(m_link_ptr_vector.size(), link_latency, this); CreditLink_d *credit_link = new CreditLink_d(m_creditlink_ptr_vector.size(), link_latency, this); - m_link_ptr_vector.insertAtBottom(net_link); - m_creditlink_ptr_vector.insertAtBottom(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_weight, credit_link); @@ -244,8 +246,8 @@ Time GarnetNetwork_d::getRubyStartTime() void GarnetNetwork_d::printStats(ostream& out) const { double average_link_utilization = 0; - Vector average_vc_load; - average_vc_load.setSize(m_virtual_networks*m_vcs_per_class); + vector average_vc_load; + average_vc_load.resize(m_virtual_networks*m_vcs_per_class); for(int i = 0; i < m_virtual_networks*m_vcs_per_class; i++) { @@ -260,7 +262,7 @@ void GarnetNetwork_d::printStats(ostream& out) const { average_link_utilization += (double(m_link_ptr_vector[i]->getLinkUtilization())) / (double(g_eventQueue_ptr->getTime()-m_ruby_start)); - Vector vc_load = m_link_ptr_vector[i]->getVcLoad(); + vector vc_load = m_link_ptr_vector[i]->getVcLoad(); for(int j = 0; j < vc_load.size(); j++) { assert(vc_load.size() == m_vcs_per_class*m_virtual_networks); 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 7cb87b21a..7f1b293f4 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh @@ -32,9 +32,9 @@ #define GARNETNETWORK_D_H #include +#include #include "mem/ruby/network/garnet/NetworkHeader.hh" -#include "mem/gems_common/Vector.hh" #include "mem/ruby/network/garnet/BaseGarnetNetwork.hh" #include "mem/ruby/network/Network.hh" #include "params/GarnetNetwork_d.hh" @@ -112,16 +112,16 @@ private: int m_flits_recieved, m_flits_injected; double m_network_latency, m_queueing_latency; - Vector m_in_use; - Vector m_ordered; + std::vector m_in_use; + std::vector m_ordered; - Vector > m_toNetQueues; - Vector > m_fromNetQueues; + std::vector > m_toNetQueues; + std::vector > m_fromNetQueues; - Vector m_router_ptr_vector; // All Routers in Network - Vector m_link_ptr_vector; // All links in the network - Vector m_creditlink_ptr_vector; // All links in the network - Vector m_ni_ptr_vector; // All NI's in Network + std::vector m_router_ptr_vector; // All Routers in Network + std::vector m_link_ptr_vector; // All links in the network + std::vector m_creditlink_ptr_vector; // All links in the network + std::vector m_ni_ptr_vector; // All NI's in Network // Topology* m_topology_ptr; Time m_ruby_start; diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc index ea8f7789b..d41c3d4ee 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc @@ -28,10 +28,12 @@ * Authors: Niket Agarwal */ +#include "base/stl_helpers.hh" #include "mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh" #include "mem/ruby/network/garnet/fixed-pipeline/Router_d.hh" using namespace std; +using m5::stl_helpers::deletePointers; InputUnit_d::InputUnit_d(int id, Router_d *router) { @@ -44,7 +46,7 @@ InputUnit_d::InputUnit_d(int id, Router_d *router) creditQueue = new flitBuffer_d(); // Instantiating the virtual channels - m_vcs.setSize(m_num_vcs); + m_vcs.resize(m_num_vcs); for(int i=0; i < m_num_vcs; i++) { m_vcs[i] = new VirtualChannel_d(i); @@ -54,7 +56,7 @@ InputUnit_d::InputUnit_d(int id, Router_d *router) InputUnit_d::~InputUnit_d() { delete creditQueue; - m_vcs.deletePointers(); + deletePointers(m_vcs); } void InputUnit_d::wakeup() diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh index 05358bc8b..4f02729ed 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh @@ -32,11 +32,11 @@ #define INPUT_UNIT_D_H #include +#include #include "mem/ruby/network/garnet/NetworkHeader.hh" #include "mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.hh" #include "mem/ruby/common/Consumer.hh" -#include "mem/gems_common/Vector.hh" #include "mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh" #include "mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.hh" #include "mem/ruby/network/garnet/fixed-pipeline/CreditLink_d.hh" @@ -163,7 +163,7 @@ private: flitBuffer_d *creditQueue; // Virtual channels - Vector m_vcs; // [vc] + std::vector m_vcs; // [vc] }; #endif diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc index 2a2536d53..3cda065ad 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc @@ -30,11 +30,15 @@ #include +#include "base/stl_helpers.hh" #include "mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.hh" #include "mem/ruby/buffers/MessageBuffer.hh" #include "mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.hh" #include "mem/ruby/slicc_interface/NetworkMessage.hh" +using namespace std; +using m5::stl_helpers::deletePointers; + NetworkInterface_d::NetworkInterface_d(int id, int virtual_networks, GarnetNetwork_d *network_ptr) { m_id = id; @@ -44,10 +48,10 @@ NetworkInterface_d::NetworkInterface_d(int id, int virtual_networks, GarnetNetwo m_num_vcs = m_vc_per_vnet*m_virtual_networks; m_vc_round_robin = 0; - m_ni_buffers.setSize(m_num_vcs); - m_ni_enqueue_time.setSize(m_num_vcs); - inNode_ptr.setSize(m_virtual_networks); - outNode_ptr.setSize(m_virtual_networks); + m_ni_buffers.resize(m_num_vcs); + m_ni_enqueue_time.resize(m_num_vcs); + inNode_ptr.resize(m_virtual_networks); + outNode_ptr.resize(m_virtual_networks); creditQueue = new flitBuffer_d(); for(int i =0; i < m_num_vcs; i++) @@ -55,7 +59,7 @@ NetworkInterface_d::NetworkInterface_d(int id, int virtual_networks, GarnetNetwo m_ni_buffers[i] = new flitBuffer_d(); // instantiating the NI flit buffers m_ni_enqueue_time[i] = INFINITE_; } - m_vc_allocator.setSize(m_virtual_networks); // 1 allocator per virtual net + m_vc_allocator.resize(m_virtual_networks); // 1 allocator per virtual net for(int i = 0; i < m_virtual_networks; i++) { m_vc_allocator[i] = 0; @@ -63,15 +67,15 @@ NetworkInterface_d::NetworkInterface_d(int id, int virtual_networks, GarnetNetwo for(int i = 0; i < m_num_vcs; i++) { - m_out_vc_state.insertAtBottom(new OutVcState_d(i, m_net_ptr)); + m_out_vc_state.push_back(new OutVcState_d(i, m_net_ptr)); m_out_vc_state[i]->setState(IDLE_, g_eventQueue_ptr->getTime()); } } NetworkInterface_d::~NetworkInterface_d() { - m_out_vc_state.deletePointers(); - m_ni_buffers.deletePointers(); + deletePointers(m_out_vc_state); + deletePointers(m_ni_buffers); delete creditQueue; delete outSrcQueue; } @@ -94,7 +98,7 @@ void NetworkInterface_d::addOutPort(NetworkLink_d *out_link, CreditLink_d *credi out_link->setSourceQueue(outSrcQueue); } -void NetworkInterface_d::addNode(Vector& in, Vector& out) +void NetworkInterface_d::addNode(vector& in, vector& out) { ASSERT(in.size() == m_virtual_networks); inNode_ptr = in; @@ -110,7 +114,7 @@ bool NetworkInterface_d::flitisizeMessage(MsgPtr msg_ptr, int vnet) NetworkMessage *net_msg_ptr = safe_cast(msg_ptr.get()); NetDest net_msg_dest = net_msg_ptr->getInternalDestination(); - Vector dest_nodes = net_msg_dest.getAllDest(); // gets all the destinations associated with this message. + vector dest_nodes = net_msg_dest.getAllDest(); // gets all the destinations associated with this message. int num_flits = (int) ceil((double) m_net_ptr->MessageSizeType_to_int(net_msg_ptr->getMessageSize())/m_net_ptr->getFlitSize() ); // Number of flits is dependent on the link bandwidth available. This is expressed in terms of bytes/cycle or the flit size diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.hh index 88d882969..0da162f82 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.hh @@ -32,10 +32,10 @@ #define NET_INTERFACE_D_H #include +#include #include "mem/ruby/network/garnet/NetworkHeader.hh" #include "mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh" -#include "mem/gems_common/Vector.hh" #include "mem/ruby/common/Consumer.hh" #include "mem/ruby/slicc_interface/Message.hh" #include "mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.hh" @@ -56,7 +56,8 @@ public: void addOutPort(NetworkLink_d *out_link, CreditLink_d *credit_link); void wakeup(); - void addNode(Vector &inNode, Vector &outNode); + void addNode(std::vector &inNode, + std::vector &outNode); void printConfig(std::ostream& out) const; void print(std::ostream& out) const; int get_vnet(int vc); @@ -66,8 +67,8 @@ private: GarnetNetwork_d *m_net_ptr; int m_virtual_networks, m_num_vcs, m_vc_per_vnet; NodeID m_id; - Vector m_out_vc_state; - Vector m_vc_allocator; + std::vector m_out_vc_state; + std::vector m_vc_allocator; int m_vc_round_robin; // For round robin scheduling flitBuffer_d *outSrcQueue; // For modelling link contention flitBuffer_d *creditQueue; @@ -78,11 +79,11 @@ private: CreditLink_d *m_ni_credit_link; // Input Flit Buffers - Vector m_ni_buffers; // The flit buffers which will serve the Consumer - Vector