SST/macro
|
A networkinterface is a delegate between a node and a server module. More...
#include <nic.h>
Public Member Functions | |
virtual std::string | to_string () const =0 |
virtual | ~nic () |
virtual void | init_factory_params (sprockit::sim_parameters *params) |
Initialize all member variables from the parameters object. More... | |
node_id | addr () const |
virtual void | set_node (node *nd) |
Set an event handler wrapper encapsulation the parent computational unit. More... | |
virtual void | finalize_init () |
A final initialization function called for the object after all parameters have been read. More... | |
virtual void | handle (event *ev)=0 |
void | mtl_handle (event *ev) |
event_handler * | mtl_handler () const |
void | internode_send (network_message *payload) |
Perform the set of operations standard to all NICs. More... | |
void | intranode_send (network_message *payload) |
Perform the set of operations standard to all NICs for transfers within a node. More... | |
virtual timestamp | injection_latency () const =0 |
virtual double | injection_bandwidth () const =0 |
virtual void | set_event_parent (event_scheduler *m) |
Set the eventmanager for this scheduler. More... | |
Public Member Functions inherited from sprockit::factory_type | |
virtual void | init_factory_params (sim_parameters *params) |
Public Member Functions inherited from sstmac::hw::failable | |
bool | failed () const |
void | fail () |
Public Member Functions inherited from sstmac::event_subscheduler | |
event_subscheduler () | |
timestamp | now () const |
get the current time More... | |
void | schedule (timestamp t, event_handler *handler, event *ev) |
Add an event to the event queue, where msg will get delivered to handler at time t. More... | |
void | schedule (timestamp t, event_queue_entry *ev) |
void | schedule_now (event_queue_entry *ev) |
void | schedule_now (event_handler *handler, event *ev) |
void | schedule_delay (timestamp delay, event_handler *handler, event *ev) |
void | schedule_delay (timestamp delay, event_queue_entry *ev) |
void | send_self_event (timestamp arrival, event *ev) |
void | send_delayed_self_event (timestamp delay, event *ev) |
void | send_now_self_event (event *ev) |
void | send_self_event_queue (timestamp arrival, event_queue_entry *ev) |
void | send_delayed_self_event_queue (timestamp delay, event_queue_entry *ev) |
void | send_now_self_event_queue (event_queue_entry *ev) |
event_scheduler * | parent () const |
Public Member Functions inherited from sstmac::event_handler | |
virtual | ~event_handler () |
event_loc_id | event_location () const |
virtual bool | ipc_handler () const |
Whether an event handler is a "fake" handler that represents logical process boundary. More... | |
int | thread_id () const |
virtual void | deadlock_check (event *ev) |
virtual void | deadlock_check () |
Public Member Functions inherited from sstmac::hw::connectable | |
virtual void | connect (int src_outport, int dst_inport, connection_type_t ty, connectable *mod, config *cfg)=0 |
connect More... | |
Static Public Member Functions | |
static void | delete_statics () |
Delete all static variables associated with this class. More... | |
Static Public Member Functions inherited from sstmac::hw::connectable | |
static const char * | str (connection_type_t ty) |
Protected Member Functions | |
nic (sprockit::factory_type *interconn) | |
virtual void | do_send (network_message *payload)=0 |
Start the message sending and inject it into the network This performs all model-specific work. More... | |
void | send_to_node (network_message *netmsg) |
bool | negligible_size (int bytes) const |
void | recv_message (message *msg) |
The NIC can either receive an entire message (bypass the byte-transfer layer) or it can receive packets. More... | |
Protected Member Functions inherited from sstmac::hw::failable | |
failable () | |
Protected Member Functions inherited from sstmac::event_handler | |
event_handler () | |
void | init_loc_id (event_loc_id id) |
void | init_thread_id (int id) |
Protected Attributes | |
node_id | my_addr_ |
int | negligible_size_ |
interconnect * | interconn_ |
node * | parent_ |
Protected Attributes inherited from sstmac::hw::failable | |
bool | failed_ |
Protected Attributes inherited from sstmac::event_subscheduler | |
event_scheduler * | parent_ |
Private Member Functions | |
void | ack_send (network_message *payload) |
For messages requiring an NIC ACK to signal that the message has injected into the interconnect. More... | |
void | send_to_interconn (network_message *netmsg) |
void | record_message (network_message *msg) |
Private Attributes | |
stat_spyplot * | spy_num_messages_ |
stat_spyplot * | spy_bytes_ |
stat_histogram * | hist_msg_size_ |
stat_local_int * | local_bytes_sent_ |
stat_global_int * | global_bytes_sent_ |
event_handler * | mtl_handler_ |
Additional Inherited Members | |
Public Types inherited from sstmac::hw::connectable | |
enum | config_type_t { RedundantConnection =0, WeightedConnection =1, FixedBandwidthConnection =2, FixedConnection =3, BasicConnection =4 } |
enum | connection_type_t { output, input } |
Static Public Attributes inherited from sstmac::event_handler | |
static const int | null_lpid = -1 |
static const int | null_threadid = -1 |
Static Public Attributes inherited from sstmac::hw::connectable | |
static const int | any_port = -1 |
A networkinterface is a delegate between a node and a server module.
This object helps ornament network operations with information about the process (ppid) involved.
|
virtual |
|
protected |
Referenced by mtl_handler().
|
private |
For messages requiring an NIC ACK to signal that the message has injected into the interconnect.
Create an ack and send it up to the parent node.
|
inline |
Definition at line 71 of file nic.h.
References my_addr_.
Referenced by sstmac::hw::packet_flow_nic::to_string().
|
static |
Delete all static variables associated with this class.
This should be registered with the runtime system via need_delete_statics
Referenced by set_node().
|
protectedpure virtual |
Start the message sending and inject it into the network This performs all model-specific work.
payload | The network message to send |
Implemented in sstmac::hw::packet_flow_nic, and sstmac::hw::simple_nic.
Referenced by mtl_handler().
|
virtual |
A final initialization function called for the object after all parameters have been read.
Guarantees initialization of all subclass variables.
Reimplemented from sprockit::factory_type.
Reimplemented in sstmac::hw::simple_nic.
Referenced by set_node().
|
pure virtual |
Reimplemented from sstmac::event_subscheduler.
Implemented in sstmac::hw::packet_flow_nic, and sstmac::hw::simple_nic.
Referenced by set_node().
|
virtual |
Initialize all member variables from the parameters object.
params |
Reimplemented in sstmac::hw::packet_flow_nic, sstmac::hw::simple_nic, and sstmac::hw::null_nic.
|
pure virtual |
Implemented in sstmac::hw::packet_flow_nic, and sstmac::hw::simple_nic.
Referenced by mtl_handler().
|
pure virtual |
Implemented in sstmac::hw::packet_flow_nic, and sstmac::hw::simple_nic.
Referenced by mtl_handler().
void sstmac::hw::nic::internode_send | ( | network_message * | payload | ) |
Perform the set of operations standard to all NICs.
This then passes control off to a model-specific do_send function to actually carry out the send
payload | The network message to send |
Referenced by mtl_handler().
void sstmac::hw::nic::intranode_send | ( | network_message * | payload | ) |
Perform the set of operations standard to all NICs for transfers within a node.
This function is model-independent, unlike internode_send which must pass control to do_send.
payload |
Referenced by mtl_handler().
void sstmac::hw::nic::mtl_handle | ( | event * | ev | ) |
Referenced by set_node().
|
inline |
Definition at line 105 of file nic.h.
References do_send(), injection_bandwidth(), injection_latency(), internode_send(), intranode_send(), mtl_handler_, nic(), send_to_node(), and set_event_parent().
|
inlineprotected |
Definition at line 156 of file nic.h.
References negligible_size_, and recv_message().
|
private |
|
protected |
The NIC can either receive an entire message (bypass the byte-transfer layer) or it can receive packets.
If an incoming message is a full message (not a packet), it gets routed here. Unlike #recv_chunk, this has a default implementation and does not throw.
chunk |
Referenced by negligible_size(), and sstmac::hw::packet_flow_nic::notify().
|
private |
|
protected |
Referenced by mtl_handler().
|
virtual |
Set the eventmanager for this scheduler.
Unfortunately, this always has to be called after an event_scheduler is constructed.
m | the simulation eventmanager |
Reimplemented from sstmac::event_subscheduler.
Reimplemented in sstmac::hw::packet_flow_nic.
Referenced by mtl_handler().
|
inlinevirtual |
Set an event handler wrapper encapsulation the parent computational unit.
nd | The compute node attached to the NIC |
Definition at line 80 of file nic.h.
References delete_statics(), finalize_init(), handle(), mtl_handle(), and parent_.
|
pure virtual |
Reimplemented from sstmac::event_subscheduler.
Implemented in sstmac::hw::simple_nic, sstmac::hw::packet_flow_nic, and sstmac::hw::null_nic.
|
private |
|
private |
|
private |
|
private |
Definition at line 183 of file nic.h.
Referenced by mtl_handler().
|
protected |
Definition at line 170 of file nic.h.
Referenced by addr(), and sstmac::hw::null_nic::to_string().
|
protected |
Definition at line 172 of file nic.h.
Referenced by negligible_size().
|
protected |
Definition at line 175 of file nic.h.
Referenced by set_node().
|
private |
|
private |