SST/macro
|
#include <sstmac/common/rng.h>
#include <sstmac/hardware/interconnect/interconnect_fwd.h>
#include <sstmac/hardware/topology/coordinates.h>
#include <sstmac/hardware/topology/traffic/traffic.h>
#include <sstmac/hardware/router/routable.h>
#include <sstmac/hardware/router/routing_enum.h>
#include <sstmac/hardware/router/router_fwd.h>
#include <sstmac/hardware/common/connection.h>
#include <sstmac/backends/common/sim_partition_fwd.h>
#include <sprockit/sim_parameters_fwd.h>
#include <sprockit/debug.h>
#include <sprockit/factories/factory.h>
#include <sprockit/unordered.h>
Go to the source code of this file.
Macros | |
#define | top_debug(...) debug_printf(sprockit::dbg::topology, __VA_ARGS__) |
Functions | |
DeclareDebugSlot (topology) namespace sstmac | |
#define top_debug | ( | ... | ) | debug_printf(sprockit::dbg::topology, __VA_ARGS__) |
DeclareDebugSlot | ( | topology | ) |
Given a switch address, return number of nodes connected to it
For indirect networks, this includes all switches - those connected directly to nodes and internal switches that are only a part of the network
Given a set of connectables, connect them appropriately
objects | The set of objects to connect |
cloner | If in parallel mode, not all objects may exist. The factory creates missing objects. |
value_error | If invalid switchid is passed to cloner |
For a given node, determine the injection switch All messages from this node inject into the network through this switch
nodeaddr | The node to inject to |
switch_port | [inout] The port on the switch the node injects on |
For a given node, determine the ejection switch All messages to this node eject into the network through this switch
nodeaddr | The node to eject from |
switch_port | [inout] The port on the switch the node ejects on |
For a given node, determine the ejection switch All messages to this node eject into the network through this switch
nodeaddr | The node to eject from |
switch_port | [inout] The port on the switch the node ejects on |
For a given node, determine the ejection switch All messages to this node eject into the network through this switch
nodeaddr | The node to eject from |
switch_port | [inout] The port on the switch the node ejects on |
For a given input switch, return all nodes connected to it. This return vector might be empty if the switch is an internal switch not connected to any nodes
value_error | If invalid switch id is given |
dim | The dimension (e.g. x, y, or z) that should be routed on next. Integer value has different meaning depending on type of router (torus/dragonfly/etc) |
dir | The direction (e.g. +/-) that should be routed on. Integer value has different physical meaning depending on type of router (torus/dragonly/etc) |
Given the current location and a destination, compute the minimal path to the destination. The path generally consists of a dimension, a direction or branch along that dimension, a port number for that dim/dir combination, and a virtual channel along the dim/dir appropriate for avoiding deadlock.
current_sw_addr | The addr of the current switch |
dest_sw_addr | The addr of the destination switch |
path | [inout] A complete path descriptor to the destination switch |
Given a traffic pattern (e.g. bit-complement), return the partner nodes a given source node needs to send messages to for the given traffic pattern
ty | The desired traffic pattern |
src_node | The source node that sends messages |
partners | [inout] The list of partner nodes to send to |
Given a traffic pattern (e.g. bit-complement), return the partner nodes a given destination node needs to receive messages to for the given traffic pattern
ty | The desired traffic pattern |
src_node | The source node that sends messages |
partners | [inout] The list of partner nodes to send to |
Figure out how many hops we have to go from a source node to a destination node
src | The source node address |
dst | The destination node address |
Generate a path that is considered the cheapest, given the statistics of the inteconnect. The 3 argument version should be a pure virtual function, but for now, will just return an empty path.
src | The source node address |
dst | The destination node address |
stats | A pointer to the statistics data; Type will change once established |
Template utility function for allowing any specific map type to be connected. This creates an equivalent map of connectables that then calls the actual #connect_objects function
objects | A map of connectable* types (map might hold more specific type like networkswitch) |
Template utility function for allowing any specific map type to be connected. This creates an equivalent map of connectables that then calls the actual #connect_objects function
objects | A map of connectable* types (map might hold more specific type like networkswitch) |
Get a random switch from the topoology. This is most often used in things like valiant routing. The input parameter avoids accidentally returning the exact same switch you are currently on.
current_sw | The current location switch |
For a given node, determine the injection switch All messages from this node inject into the network through this switch
nodeaddr | The node to inject to |
For a given node, determine the ejection switch All messages to this node eject into the network through this switch
nodeaddr | The node to eject from |
Return the port number for the ith injection/ejection node
ith | The injection/ejection index |
Given the current location and a destination, compute the minimal path to the destination. In most cases, this function first computes the destination switch attached to the node and then calls #minimal_route_to_switch. The path generally consists of a dimension, a direction or branch along that dimension, a port number for that dim/dir combination, and a virtual channel along the dim/dir appropriate for avoiding deadlock.
current_sw_addr | The addr of the current switch |
dest_sw_addr | The addr of the destination switch |
path | [inout] A complete path descriptor to the destination node |
Informs topology that a new routing stage has begun, allowing any topology specific state to be modified.
rinfo | Routing info object |
Nodes per switch. The number of nodes connected to a leaf switch. In many topologies, there is a 1-1 correspondence. For others, you might have many compute nodes connected to a single injection/ejection switch.
Definition at line 29 of file topology.h.
References sstmac::hw::DeclareFactory().