Generic network interface. More...
#include <simpleNetwork.h>
Data Structures | |
class | Handler |
Event Handler class with user-data argument. More... | |
class | Handler< classT, void > |
Event Handler class without user-data. More... | |
class | HandlerBase |
Functor classes for handling of callbacks. More... | |
class | Mapping |
Class to hold network mappings. More... | |
class | NetworkInspector |
Class used to inspect network requests going through the network. More... | |
class | Request |
Represents both network sends and receives. More... | |
Public Types | |
typedef int64_t | nid_t |
All Addresses can be 64-bit. | |
Public Member Functions | |
SimpleNetwork (SST::Component *comp) | |
Constructor, designed to be used via 'loadSubComponent'. | |
virtual bool | initialize (const std::string &portName, const UnitAlgebra &link_bw, int vns, const UnitAlgebra &in_buf_size, const UnitAlgebra &out_buf_size)=0 |
Second half of building the interface. | |
virtual void | sendInitData (Request *req)=0 |
Sends a network request during the init() phase. | |
virtual Request * | recvInitData ()=0 |
Receive any data during the init() phase. | |
virtual bool | send (Request *req, int vn)=0 |
Returns a handle to the underlying SST::Link. | |
virtual Request * | recv (int vn)=0 |
Receive a Request from the network. | |
virtual void | setup () |
Called after all components have been constructed and inialization has completed, but before simulation time has begun. | |
virtual void | init (unsigned int phase) |
Used during the init phase. | |
virtual void | finish () |
Called after simulation completes, but before objects are destroyed. | |
virtual bool | spaceToSend (int vn, int num_bits)=0 |
Checks if there is sufficient space to send on the specified virtual netork. | |
virtual bool | requestToReceive (int vn)=0 |
Checks if there is a waiting network request request pending in the specified virtual network. | |
virtual void | setNotifyOnReceive (HandlerBase *functor)=0 |
Registers a functor which will fire when a new request is received from the network. | |
virtual void | setNotifyOnSend (HandlerBase *functor)=0 |
Registers a functor which will fire when a request is sent to the network. | |
virtual bool | isNetworkInitialized () const =0 |
Check to see if network is initialized. | |
virtual nid_t | getEndpointID () const =0 |
Returns the endpoint ID. | |
virtual const UnitAlgebra & | getLinkBW () const =0 |
Returns the final BW of the link managed by the simpleNetwork instance. | |
Static Public Member Functions | |
static void | addMappingEntry (std::string mapName, nid_t from, nid_t to) |
Adds a mapping to the table. | |
static void | exchangeMappingData () |
Exchange data across ranks. | |
Static Public Attributes | |
static const nid_t | INIT_BROADCAST_ADDR = 0xffffffffffffffffl |
Generic network interface.
SST::Interfaces::SimpleNetwork::SimpleNetwork | ( | SST::Component * | comp | ) | [inline] |
Constructor, designed to be used via 'loadSubComponent'.
static void SST::Interfaces::SimpleNetwork::addMappingEntry | ( | std::string | mapName, | |
nid_t | from, | |||
nid_t | to | |||
) | [static] |
Adds a mapping to the table.
The "from" entries must be a set of nid_t's that are between 0 and N, where N is the total number of entries in the map. The "to" entries can be sparse. If a "from" nid is added to the same table more than once, the "to" nid must match or the call will fatal. Mapping entries can be added through the end of the init phase of simulation, after that a call to this function will cause a fatal.
virtual void SST::Interfaces::SimpleNetwork::finish | ( | ) | [inline, virtual] |
Called after simulation completes, but before objects are destroyed.
A good place to print out statistics.
Reimplemented from SST::SubComponent.
virtual nid_t SST::Interfaces::SimpleNetwork::getEndpointID | ( | ) | const [pure virtual] |
Returns the endpoint ID.
Cannot be called until after the network is initialized.
virtual const UnitAlgebra& SST::Interfaces::SimpleNetwork::getLinkBW | ( | ) | const [pure virtual] |
Returns the final BW of the link managed by the simpleNetwork instance.
Cannot be called until after the network is initialized.
virtual void SST::Interfaces::SimpleNetwork::init | ( | unsigned int | phase | ) | [inline, virtual] |
Used during the init phase.
The method will be called each phase of initialization. Initialization ends when no components have sent any data.
Reimplemented from SST::SubComponent.
virtual bool SST::Interfaces::SimpleNetwork::initialize | ( | const std::string & | portName, | |
const UnitAlgebra & | link_bw, | |||
int | vns, | |||
const UnitAlgebra & | in_buf_size, | |||
const UnitAlgebra & | out_buf_size | |||
) | [pure virtual] |
Second half of building the interface.
Initialize network interface
portName | - Name of port to connect to | |
link_bw | - Bandwidth of the link | |
vns | - Number of virtual networks to be provided | |
in_buf_size | - Size of input buffers (from router) | |
out_buf_size | - Size of output buffers (to router) |
virtual bool SST::Interfaces::SimpleNetwork::isNetworkInitialized | ( | ) | const [pure virtual] |
Check to see if network is initialized.
If network is not initialized, then no other functions other than init() can can be called on the interface.
virtual Request* SST::Interfaces::SimpleNetwork::recv | ( | int | vn | ) | [pure virtual] |
Receive a Request from the network.
Use this method for polling-based applications. Register a handler for push-based notification of responses.
vn | Virtual network to receive on |
Referenced by exchangeMappingData().
virtual Request* SST::Interfaces::SimpleNetwork::recvInitData | ( | ) | [pure virtual] |
Receive any data during the init() phase.
virtual bool SST::Interfaces::SimpleNetwork::requestToReceive | ( | int | vn | ) | [pure virtual] |
Checks if there is a waiting network request request pending in the specified virtual network.
vn | Virtual network to check |
virtual bool SST::Interfaces::SimpleNetwork::send | ( | Request * | req, | |
int | vn | |||
) | [pure virtual] |
Returns a handle to the underlying SST::Link.
Send a Request to the network.
Referenced by exchangeMappingData().
virtual void SST::Interfaces::SimpleNetwork::setNotifyOnReceive | ( | HandlerBase * | functor | ) | [pure virtual] |
Registers a functor which will fire when a new request is received from the network.
Note, the actual request that was received is not passed into the functor, it is only a notification that something is available.
functor | Functor to call when request is received |
virtual void SST::Interfaces::SimpleNetwork::setNotifyOnSend | ( | HandlerBase * | functor | ) | [pure virtual] |
Registers a functor which will fire when a request is sent to the network.
Note, this only tells you when data is sent, it does not guarentee any specified amount of available space.
functor | Functor to call when request is sent |
virtual void SST::Interfaces::SimpleNetwork::setup | ( | ) | [inline, virtual] |
Called after all components have been constructed and inialization has completed, but before simulation time has begun.
Reimplemented from SST::SubComponent.
virtual bool SST::Interfaces::SimpleNetwork::spaceToSend | ( | int | vn, | |
int | num_bits | |||
) | [pure virtual] |
Checks if there is sufficient space to send on the specified virtual netork.
vn | Virtual network to check | |
num_bits | Minimum size in bits required to have space to send |