14 #ifndef SST_CORE_INTERFACES_SIMPLENETWORK_H 15 #define SST_CORE_INTERFACES_SIMPLENETWORK_H 17 #include "sst/core/params.h" 18 #include "sst/core/serialization/serializable.h" 19 #include "sst/core/sst_types.h" 20 #include "sst/core/ssthandler.h" 21 #include "sst/core/subcomponent.h" 22 #include "sst/core/warnmacros.h" 25 #include <unordered_map> 33 namespace Interfaces {
43 bool delegate_send =
false;
44 bool delegate_recv =
false;
52 static const
nid_t INIT_BROADCAST_ADDR;
117 allow_adaptive(true),
126 size_in_bits(size_in_bits),
129 allow_adaptive(true),
137 if ( payload !=
nullptr )
delete payload;
140 inline Request* clone()
142 Request* req =
new Request(*
this);
145 if ( payload !=
nullptr ) req->payload = payload->
clone();
149 void setTraceID(
int id) { traceID = id; }
150 void setTraceType(TraceType type) { trace = type; }
151 int getTraceID() {
return traceID; }
152 TraceType getTraceType() {
return trace; }
188 virtual void inspectNetworkData(
Request* req) = 0;
220 template <
typename classT,
typename dataT =
void>
231 #if !SST_BUILDING_CORE 233 "sendInitData() has been deprecated and will be removed in SST 14. Please use sendUntimedData() instead.")]]
242 #if !SST_BUILDING_CORE 244 "recvInitData() has been deprecated and will be removed in SST 14. Please use recvUntimedData() instead.")]]
286 virtual bool send(Request* req,
int vn) = 0;
298 virtual Request*
recv(
int vn) = 0;
301 virtual void init(
unsigned int UNUSED(phase))
override {}
302 virtual void complete(
unsigned int UNUSED(phase))
override {}
313 virtual bool spaceToSend(
int vn,
int num_bits) = 0;
368 #endif // SST_CORE_INTERFACES_SIMPLENETWORK_H virtual bool isNetworkInitialized() const =0
Check to see if network is initialized.
Definition: simpleNetwork.h:106
nid_t src
Definition: simpleNetwork.h:62
This class is basically a wrapper for objects to declare the order in which their members should be s...
Definition: serializer.h:34
Handlers with 1 handler defined argument to callback from caller.
Definition: ssthandler.h:170
Event * inspectPayload()
Returns the payload for the request for inspection.
Definition: simpleNetwork.h:99
bool allow_adaptive
Definition: simpleNetwork.h:67
void givePayload(Event *event)
Sets the payload field for this request.
Definition: simpleNetwork.h:77
virtual Request * recv(int vn)=0
Receive a Request from the network.
Handler class with user-data argument.
Definition: ssthandler.h:219
bool tail
Definition: simpleNetwork.h:66
virtual void setup() override
Called after all components have been constructed and initialization has completed, but before simulation time has begun.
Definition: simpleNetwork.h:300
virtual void sendInitData(Request *req)
Sends a network request during the init() phase.
Definition: simpleNetwork.cc:55
virtual void setNotifyOnReceive(HandlerBase *functor)=0
Registers a functor which will fire when a new request is received from the network.
Request()
Constructor.
Definition: simpleNetwork.h:111
nid_t dest
Definition: simpleNetwork.h:61
virtual Request * recvUntimedData()
Receive any data during untimed phases (init() and complete()).
Definition: simpleNetwork.cc:40
virtual void sendUntimedData(Request *req)
Sends a network request during untimed phases (init() and complete()).
Definition: simpleNetwork.cc:26
virtual nid_t getEndpointID() const =0
Returns the endpoint ID.
Definition: serializable.h:118
virtual void init(unsigned int UNUSED(phase)) override
Used during the init phase.
Definition: simpleNetwork.h:301
SimpleNetwork(SST::ComponentId_t id)
Constructor, designed to be used via 'loadUserSubComponent or loadAnonymousSubComponent'.
Definition: simpleNetwork.h:226
Definition: simpleNetwork.h:105
Represents both network sends and receives.
Definition: simpleNetwork.h:57
virtual void finish() override
Called after simulation completes, but before objects are destroyed.
Definition: simpleNetwork.h:303
virtual bool send(Request *req, int vn)=0
Returns a handle to the underlying SST::Link.
virtual const UnitAlgebra & getLinkBW() const =0
Returns the final BW of the link managed by the simpleNetwork instance.
SSTHandlerBase< bool, int > HandlerBase
Base handler for event delivery.
Definition: simpleNetwork.h:194
bool head
Definition: simpleNetwork.h:65
virtual bool requestToReceive(int vn)=0
Checks if there is a waiting network request request pending in the specified virtual network...
virtual bool spaceToSend(int vn, int num_bits)=0
Checks if there is sufficient space to send on the specified virtual network.
size_t size_in_bits
Definition: simpleNetwork.h:64
Event * takePayload()
Returns the payload for the request.
Definition: simpleNetwork.h:85
int64_t nid_t
All Addresses can be 64-bit.
Definition: simpleNetwork.h:50
Generic network interface.
Definition: simpleNetwork.h:38
Base class for Events - Items sent across links to communicate between components.
Definition: event.h:34
Performs Unit math in full precision.
Definition: unitAlgebra.h:106
virtual void setNotifyOnSend(HandlerBase *functor)=0
Registers a functor which will fire when a request is sent to the network.
Class used to inspect network requests going through the network.
Definition: simpleNetwork.h:178
virtual void complete(unsigned int UNUSED(phase)) override
Used during the complete phase after the end of simulation.
Definition: simpleNetwork.h:302
SubComponent is a class loadable through the factory which allows dynamic functionality to be added t...
Definition: subcomponent.h:28
virtual Event * clone()
Clones the event in for the case of a broadcast.
Definition: event.cc:35
int vn
Definition: simpleNetwork.h:63
virtual Request * recvInitData()
Receive any data during the init() phase.
Definition: simpleNetwork.cc:69
Definition: serializable.h:138