|
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 |
1.8.11