1d0
<
30,38c29,34
< /*
< * SimpleNetwork.cc
< *
< * Description: See SimpleNetwork.hh
< *
< * $Id$
< *
< */
<
---
> #include "mem/gems_common/Map.hh"
> #include "mem/protocol/MachineType.hh"
> #include "mem/protocol/Protocol.hh"
> #include "mem/protocol/TopologyType.hh"
> #include "mem/ruby/buffers/MessageBuffer.hh"
> #include "mem/ruby/common/NetDest.hh"
40,41d35
< #include "mem/ruby/profiler/Profiler.hh"
< #include "mem/ruby/system/System.hh"
43d36
< #include "mem/ruby/common/NetDest.hh"
45,49c38,39
< #include "mem/protocol/TopologyType.hh"
< #include "mem/protocol/MachineType.hh"
< #include "mem/ruby/buffers/MessageBuffer.hh"
< #include "mem/protocol/Protocol.hh"
< #include "mem/gems_common/Map.hh"
---
> #include "mem/ruby/profiler/Profiler.hh"
> #include "mem/ruby/system/System.hh"
50a41
> #if 0
55,56c46,47
< /*
< Network* Network::createNetwork(int nodes)
---
> Network*
> Network::createNetwork(int nodes)
58c49
< return new SimpleNetwork(nodes);
---
> return new SimpleNetwork(nodes);
60c51
< */
---
> #endif
65,71c56,58
< //
< // 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.setSize(m_nodes);
---
> // Note: the parent Network Object constructor is called before the
> // SimpleNetwork child constructor. Therefore, the member variables
> // used below should already be initialized.
73,78c60
< m_in_use.setSize(m_virtual_networks);
< m_ordered.setSize(m_virtual_networks);
< for (int i = 0; i < m_virtual_networks; i++) {
< m_in_use[i] = false;
< m_ordered[i] = false;
< }
---
> m_endpoint_switches.setSize(m_nodes);
80,90c62,66
< // Allocate to and from queues
< m_toNetQueues.setSize(m_nodes);
< m_fromNetQueues.setSize(m_nodes);
< for (int node = 0; node < m_nodes; node++) {
< m_toNetQueues[node].setSize(m_virtual_networks);
< m_fromNetQueues[node].setSize(m_virtual_networks);
< for (int j = 0; j < m_virtual_networks; j++) {
< m_toNetQueues[node][j] = new MessageBuffer(
< "toNet node "+int_to_string(node)+" j "+int_to_string(j));
< m_fromNetQueues[node][j] = new MessageBuffer(
< "fromNet node "+int_to_string(node)+" j "+int_to_string(j));
---
> m_in_use.setSize(m_virtual_networks);
> m_ordered.setSize(m_virtual_networks);
> for (int i = 0; i < m_virtual_networks; i++) {
> m_in_use[i] = false;
> m_ordered[i] = false;
92c68,81
< }
---
>
> // Allocate to and from queues
> m_toNetQueues.setSize(m_nodes);
> m_fromNetQueues.setSize(m_nodes);
> for (int node = 0; node < m_nodes; node++) {
> m_toNetQueues[node].setSize(m_virtual_networks);
> m_fromNetQueues[node].setSize(m_virtual_networks);
> for (int j = 0; j < m_virtual_networks; j++) {
> m_toNetQueues[node][j] = new MessageBuffer(
> "toNet node "+int_to_string(node)+" j "+int_to_string(j));
> m_fromNetQueues[node][j] = new MessageBuffer(
> "fromNet node "+int_to_string(node)+" j "+int_to_string(j));
> }
> }
95c84,85
< void SimpleNetwork::init()
---
> void
> SimpleNetwork::init()
96a87
> Network::init();
98c89,95
< Network::init();
---
> // The topology pointer should have already been initialized in
> // the parent class network constructor.
> assert(m_topology_ptr != NULL);
> int number_of_switches = m_topology_ptr->numSwitches();
> for (int i = 0; i < number_of_switches; i++) {
> m_switch_ptr_vector.insertAtBottom(new Switch(i, this));
> }
100,109c97,98
< //
< // The topology pointer should have already been initialized in the parent
< // class network constructor.
< //
< assert(m_topology_ptr != NULL);
< int number_of_switches = m_topology_ptr->numSwitches();
< for (int i=0; i<number_of_switches; i++) {
< m_switch_ptr_vector.insertAtBottom(new Switch(i, this));
< }
< m_topology_ptr->createLinks(this, false); // false because this isn't a reconfiguration
---
> // false because this isn't a reconfiguration
> m_topology_ptr->createLinks(this, false);
112c101,102
< void SimpleNetwork::reset()
---
> void
> SimpleNetwork::reset()
114,117c104,108
< for (int node = 0; node < m_nodes; node++) {
< for (int j = 0; j < m_virtual_networks; j++) {
< m_toNetQueues[node][j]->clear();
< m_fromNetQueues[node][j]->clear();
---
> for (int node = 0; node < m_nodes; node++) {
> for (int j = 0; j < m_virtual_networks; j++) {
> m_toNetQueues[node][j]->clear();
> m_fromNetQueues[node][j]->clear();
> }
119d109
< }
121,123c111,113
< for(int i=0; i<m_switch_ptr_vector.size(); i++){
< m_switch_ptr_vector[i]->clearBuffers();
< }
---
> for(int i = 0; i < m_switch_ptr_vector.size(); i++){
> m_switch_ptr_vector[i]->clearBuffers();
> }
128,134c118,124
< for (int i = 0; i < m_nodes; i++) {
< m_toNetQueues[i].deletePointers();
< m_fromNetQueues[i].deletePointers();
< }
< m_switch_ptr_vector.deletePointers();
< m_buffers_to_free.deletePointers();
< // delete m_topology_ptr;
---
> for (int i = 0; i < m_nodes; i++) {
> m_toNetQueues[i].deletePointers();
> m_fromNetQueues[i].deletePointers();
> }
> m_switch_ptr_vector.deletePointers();
> m_buffers_to_free.deletePointers();
> // delete m_topology_ptr;
138c128,131
< void SimpleNetwork::makeOutLink(SwitchID src, NodeID dest, const NetDest& routing_table_entry, int link_latency, int link_weight, int bw_multiplier, bool isReconfiguration)
---
> void
> SimpleNetwork::makeOutLink(SwitchID src, NodeID dest,
> const NetDest& routing_table_entry, int link_latency, int link_weight,
> int bw_multiplier, bool isReconfiguration)
140,144c133,143
< 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]->addOutPort(m_fromNetQueues[dest], routing_table_entry, link_latency, bw_multiplier);
---
> 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;
> }
>
> m_switch_ptr_vector[src]->addOutPort(m_fromNetQueues[dest],
> routing_table_entry, link_latency, bw_multiplier);
146,148d144
< } else {
< m_switch_ptr_vector[src]->reconfigureOutPort(routing_table_entry);
< }
152c148,151
< void SimpleNetwork::makeInLink(NodeID src, SwitchID dest, const NetDest& routing_table_entry, int link_latency, int bw_multiplier, bool isReconfiguration)
---
> void
> SimpleNetwork::makeInLink(NodeID src, SwitchID dest,
> const NetDest& routing_table_entry, int link_latency, int bw_multiplier,
> bool isReconfiguration)
154,155c153,158
< assert(src < m_nodes);
< if(!isReconfiguration){
---
> assert(src < m_nodes);
> if (isReconfiguration) {
> // do nothing
> return;
> }
>
157,159d159
< } else {
< // do nothing
< }
163c163,166
< void SimpleNetwork::makeInternalLink(SwitchID src, SwitchID dest, const NetDest& routing_table_entry, int link_latency, int link_weight, int bw_multiplier, bool isReconfiguration)
---
> void
> SimpleNetwork::makeInternalLink(SwitchID src, SwitchID dest,
> const NetDest& routing_table_entry, int link_latency, int link_weight,
> int bw_multiplier, bool isReconfiguration)
165c168,172
< if(!isReconfiguration){
---
> if (isReconfiguration) {
> m_switch_ptr_vector[src]->reconfigureOutPort(routing_table_entry);
> return;
> }
>
169,177c176,184
< // allocate a buffer
< MessageBuffer* buffer_ptr = new MessageBuffer;
< buffer_ptr->setOrdering(true);
< if (m_buffer_size > 0) {
< buffer_ptr->setSize(m_buffer_size);
< }
< queues.insertAtBottom(buffer_ptr);
< // remember to deallocate it
< m_buffers_to_free.insertAtBottom(buffer_ptr);
---
> // allocate a buffer
> MessageBuffer* buffer_ptr = new MessageBuffer;
> buffer_ptr->setOrdering(true);
> if (m_buffer_size > 0) {
> buffer_ptr->setSize(m_buffer_size);
> }
> queues.insertAtBottom(buffer_ptr);
> // remember to deallocate it
> m_buffers_to_free.insertAtBottom(buffer_ptr);
179d185
<
182,185c188,189
< m_switch_ptr_vector[src]->addOutPort(queues, routing_table_entry, link_latency, bw_multiplier);
< } else {
< m_switch_ptr_vector[src]->reconfigureOutPort(routing_table_entry);
< }
---
> m_switch_ptr_vector[src]->addOutPort(queues, routing_table_entry,
> link_latency, bw_multiplier);
188c192,193
< void SimpleNetwork::checkNetworkAllocation(NodeID id, bool ordered, int network_num)
---
> void
> SimpleNetwork::checkNetworkAllocation(NodeID id, bool ordered, int network_num)
190,191c195,196
< ASSERT(id < m_nodes);
< ASSERT(network_num < m_virtual_networks);
---
> ASSERT(id < m_nodes);
> ASSERT(network_num < m_virtual_networks);
193,196c198,201
< if (ordered) {
< m_ordered[network_num] = true;
< }
< m_in_use[network_num] = true;
---
> if (ordered) {
> m_ordered[network_num] = true;
> }
> m_in_use[network_num] = true;
199c204,205
< MessageBuffer* SimpleNetwork::getToNetQueue(NodeID id, bool ordered, int network_num)
---
> MessageBuffer*
> SimpleNetwork::getToNetQueue(NodeID id, bool ordered, int network_num)
201,202c207,208
< checkNetworkAllocation(id, ordered, network_num);
< return m_toNetQueues[id][network_num];
---
> checkNetworkAllocation(id, ordered, network_num);
> return m_toNetQueues[id][network_num];
205c211,212
< MessageBuffer* SimpleNetwork::getFromNetQueue(NodeID id, bool ordered, int network_num)
---
> MessageBuffer*
> SimpleNetwork::getFromNetQueue(NodeID id, bool ordered, int network_num)
207,208c214,215
< checkNetworkAllocation(id, ordered, network_num);
< return m_fromNetQueues[id][network_num];
---
> checkNetworkAllocation(id, ordered, network_num);
> return m_fromNetQueues[id][network_num];
211c218,219
< const Vector<Throttle*>* SimpleNetwork::getThrottles(NodeID id) const
---
> const Vector<Throttle*>*
> SimpleNetwork::getThrottles(NodeID id) const
213,216c221,224
< assert(id >= 0);
< assert(id < m_nodes);
< assert(m_endpoint_switches[id] != NULL);
< return m_endpoint_switches[id]->getThrottles();
---
> assert(id >= 0);
> assert(id < m_nodes);
> assert(m_endpoint_switches[id] != NULL);
> return m_endpoint_switches[id]->getThrottles();
219c227,228
< void SimpleNetwork::printStats(ostream& out) const
---
> void
> SimpleNetwork::printStats(ostream& out) const
221,228c230,237
< out << endl;
< out << "Network Stats" << endl;
< out << "-------------" << endl;
< out << endl;
< for(int i=0; i<m_switch_ptr_vector.size(); i++) {
< m_switch_ptr_vector[i]->printStats(out);
< }
< m_topology_ptr->printStats(out);
---
> out << endl;
> out << "Network Stats" << endl;
> out << "-------------" << endl;
> out << endl;
> for (int i = 0; i < m_switch_ptr_vector.size(); i++) {
> m_switch_ptr_vector[i]->printStats(out);
> }
> m_topology_ptr->printStats(out);
231c240,241
< void SimpleNetwork::clearStats()
---
> void
> SimpleNetwork::clearStats()
233,236c243,246
< for(int i=0; i<m_switch_ptr_vector.size(); i++) {
< m_switch_ptr_vector[i]->clearStats();
< }
< m_topology_ptr->clearStats();
---
> for (int i = 0; i < m_switch_ptr_vector.size(); i++) {
> m_switch_ptr_vector[i]->clearStats();
> }
> m_topology_ptr->clearStats();
239c249,250
< void SimpleNetwork::printConfig(ostream& out) const
---
> void
> SimpleNetwork::printConfig(ostream& out) const
241,246c252,257
< out << endl;
< out << "Network Configuration" << endl;
< out << "---------------------" << endl;
< out << "network: SIMPLE_NETWORK" << endl;
< out << "topology: " << m_topology_ptr->getName() << endl;
< out << endl;
---
> out << endl;
> out << "Network Configuration" << endl;
> out << "---------------------" << endl;
> out << "network: SIMPLE_NETWORK" << endl;
> out << "topology: " << m_topology_ptr->getName() << endl;
> out << endl;
248,258c259,270
< for (int i = 0; i < m_virtual_networks; i++) {
< out << "virtual_net_" << i << ": ";
< if (m_in_use[i]) {
< out << "active, ";
< if (m_ordered[i]) {
< out << "ordered" << endl;
< } else {
< out << "unordered" << endl;
< }
< } else {
< out << "inactive" << endl;
---
> for (int i = 0; i < m_virtual_networks; i++) {
> out << "virtual_net_" << i << ": ";
> if (m_in_use[i]) {
> out << "active, ";
> if (m_ordered[i]) {
> out << "ordered" << endl;
> } else {
> out << "unordered" << endl;
> }
> } else {
> out << "inactive" << endl;
> }
260,264c272
< }
< out << endl;
< for(int i=0; i<m_switch_ptr_vector.size(); i++) {
< m_switch_ptr_vector[i]->printConfig(out);
< }
---
> out << endl;
266c274,278
< m_topology_ptr->printConfig(out);
---
> for(int i = 0; i < m_switch_ptr_vector.size(); i++) {
> m_switch_ptr_vector[i]->printConfig(out);
> }
>
> m_topology_ptr->printConfig(out);
269c281,282
< void SimpleNetwork::print(ostream& out) const
---
> void
> SimpleNetwork::print(ostream& out) const
271c284
< out << "[SimpleNetwork]";
---
> out << "[SimpleNetwork]";