27 #ifndef NS3_NULLMESSAGE_MPI_INTERFACE_H 28 #define NS3_NULLMESSAGE_MPI_INTERFACE_H 32 #include <ns3/nstime.h> 33 #include <ns3/buffer.h> 40 class NullMessageSimulatorImpl;
41 class NullMessageSentBuffer;
42 class RemoteChannelBundle;
68 virtual void Enable (
int* pargc,
char*** pargv);
69 virtual void Enable (MPI_Comm communicator);
virtual void Destroy()
Deletes storage used by the parallel environment.
static MPI_Request * g_requests
Pending non-blocking receives.
Simulation virtual time values and global simulation resolution.
~NullMessageMpiInterface()
virtual uint32_t GetSystemId()
Get the id number of this rank.
static void ReceiveMessagesNonBlocking()
Non-blocking check for received messages complete.
Collection of ns-3 channels between local and remote nodes.
Pure virtual base class for the interface between ns-3 and the parallel communication layer being use...
static bool g_freeCommunicator
Did we create the communicator? Have to free it.
virtual void SendPacket(Ptr< Packet > p, const Time &rxTime, uint32_t node, uint32_t dev)
Send a packet to a remote node.
static void TestSendComplete()
Check for completed sends.
virtual MPI_Comm GetCommunicator()
Return the communicator used to run ns-3.
virtual uint32_t GetSize()
Get the number of ranks used by ns-3.
virtual void Enable(int *pargc, char ***pargv)
Setup the parallel communication interface.
static void SendNullMessage(const Time &guaranteeUpdate, Ptr< RemoteChannelBundle > bundle)
Send a Null Message to across the specified bundle.
static void ReceiveMessages(bool blocking=false)
Check for received messages complete.
virtual void Disable()
Clean up the ns-3 parallel communications interface.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
static void ReceiveMessagesBlocking()
Blocking message receive.
virtual bool IsEnabled()
Returns enabled state of parallel environment.
static MPI_Comm g_communicator
MPI communicator being used for ns-3 tasks.
Declaration of class ns3::ParallelCommunicationInterface.
static TypeId GetTypeId(void)
Register this type.
static bool g_mpiInitCalled
Has MPI Init been called by this interface.
Simulator implementation using MPI and a Null Message algorithm.
static bool g_enabled
Has this interface been enabled.
static uint32_t g_size
Size of the MPI COM_WORLD group.
static char ** g_pRxBuffers
Data buffers for non-blocking receives.
A base class which provides memory management and object aggregation.
static void InitializeSendReceiveBuffers(void)
Initialize send and receive buffers.
static uint32_t g_sid
System ID (rank) for this task.
static uint32_t g_numNeighbors
Number of neighbor tasks, tasks that this task shares a link with.
a unique identifier for an interface.
static std::list< NullMessageSentBuffer > g_pendingTx
List of pending non-blocking sends.
NullMessageMpiInterface()
Interface between ns-3 and MPI for the Null Message distributed simulation implementation.