A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
granted-time-window-mpi-interface.h
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* This program is free software; you can redistribute it and/or modify
4
* it under the terms of the GNU General Public License version 2 as
5
* published by the Free Software Foundation;
6
*
7
* This program is distributed in the hope that it will be useful,
8
* but WITHOUT ANY WARRANTY; without even the implied warranty of
9
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
* GNU General Public License for more details.
11
*
12
* You should have received a copy of the GNU General Public License
13
* along with this program; if not, write to the Free Software
14
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15
*
16
* Author: George Riley <riley@ece.gatech.edu>
17
*
18
*/
19
20
// This object contains static methods that provide an easy interface
21
// to the necessary MPI information.
22
23
#ifndef NS3_GRANTED_TIME_WINDOW_MPI_INTERFACE_H
24
#define NS3_GRANTED_TIME_WINDOW_MPI_INTERFACE_H
25
26
#include <stdint.h>
27
#include <list>
28
29
#include "ns3/nstime.h"
30
#include "ns3/buffer.h"
31
32
#include "
parallel-communication-interface.h
"
33
34
#include "mpi.h"
35
36
namespace
ns3
{
37
42
const
uint32_t
MAX_MPI_MSG_SIZE
= 2000;
43
52
class
SentBuffer
53
{
54
public
:
55
SentBuffer
();
56
~SentBuffer
();
57
61
uint8_t*
GetBuffer
();
65
void
SetBuffer
(uint8_t* buffer);
69
MPI_Request*
GetRequest
();
70
71
private
:
72
uint8_t*
m_buffer
;
73
MPI_Request
m_request
;
74
};
75
76
class
Packet
;
77
87
class
GrantedTimeWindowMpiInterface
:
public
ParallelCommunicationInterface
,
Object
88
{
89
public
:
90
static
TypeId
GetTypeId
(
void
);
91
95
virtual
void
Destroy
();
99
virtual
uint32_t
GetSystemId
();
103
virtual
uint32_t
GetSize
();
107
virtual
bool
IsEnabled
();
114
virtual
void
Enable
(
int
* pargc,
char
*** pargv);
120
virtual
void
Disable
();
129
virtual
void
SendPacket
(
Ptr<Packet>
p,
const
Time
&rxTime, uint32_t node, uint32_t dev);
133
static
void
ReceiveMessages
();
137
static
void
TestSendComplete
();
141
static
uint32_t
GetRxCount
();
145
static
uint32_t
GetTxCount
();
146
147
private
:
148
static
uint32_t
m_sid
;
149
static
uint32_t
m_size
;
150
151
// Total packets received
152
static
uint32_t
m_rxCount
;
153
154
// Total packets sent
155
static
uint32_t
m_txCount
;
156
static
bool
m_initialized
;
157
static
bool
m_enabled
;
158
159
// Pending non-blocking receives
160
static
MPI_Request*
m_requests
;
161
162
// Data buffers for non-blocking reads
163
static
char
**
m_pRxBuffers
;
164
165
// List of pending non-blocking sends
166
static
std::list<SentBuffer>
m_pendingTx
;
167
};
168
169
}
// namespace ns3
170
171
#endif
/* NS3_GRANTED_TIME_WINDOW_MPI_INTERFACE_H */
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition:
nstime.h:103
ns3::SentBuffer::GetRequest
MPI_Request * GetRequest()
Definition:
granted-time-window-mpi-interface.cc:69
ns3::Ptr< Packet >
ns3::GrantedTimeWindowMpiInterface::GetRxCount
static uint32_t GetRxCount()
Definition:
granted-time-window-mpi-interface.cc:111
ns3::SentBuffer::~SentBuffer
~SentBuffer()
Definition:
granted-time-window-mpi-interface.cc:51
ns3::GrantedTimeWindowMpiInterface::m_enabled
static bool m_enabled
Definition:
granted-time-window-mpi-interface.h:157
ns3::GrantedTimeWindowMpiInterface::GetTypeId
static TypeId GetTypeId(void)
Definition:
granted-time-window-mpi-interface.cc:86
ns3::GrantedTimeWindowMpiInterface::GetTxCount
static uint32_t GetTxCount()
Definition:
granted-time-window-mpi-interface.cc:117
ns3::GrantedTimeWindowMpiInterface::Enable
virtual void Enable(int *pargc, char ***pargv)
Definition:
granted-time-window-mpi-interface.cc:156
ns3::GrantedTimeWindowMpiInterface::GetSize
virtual uint32_t GetSize()
Definition:
granted-time-window-mpi-interface.cc:134
ns3::ParallelCommunicationInterface
Pure virtual base class for the interface between ns-3 and the parallel communication layer being use...
Definition:
parallel-communication-interface.h:47
ns3::Packet
network packets
Definition:
packet.h:231
ns3::GrantedTimeWindowMpiInterface::TestSendComplete
static void TestSendComplete()
Check for completed sends.
Definition:
granted-time-window-mpi-interface.cc:270
ns3::GrantedTimeWindowMpiInterface::GetSystemId
virtual uint32_t GetSystemId()
Definition:
granted-time-window-mpi-interface.cc:123
ns3::GrantedTimeWindowMpiInterface::m_sid
static uint32_t m_sid
Definition:
granted-time-window-mpi-interface.h:148
ns3::SentBuffer::SentBuffer
SentBuffer()
Definition:
granted-time-window-mpi-interface.cc:45
ns3::GrantedTimeWindowMpiInterface::m_pendingTx
static std::list< SentBuffer > m_pendingTx
Definition:
granted-time-window-mpi-interface.h:166
ns3::SentBuffer::m_buffer
uint8_t * m_buffer
Definition:
granted-time-window-mpi-interface.h:72
ns3::GrantedTimeWindowMpiInterface
Interface between ns-3 and MPI.
Definition:
granted-time-window-mpi-interface.h:87
ns3::SentBuffer::SetBuffer
void SetBuffer(uint8_t *buffer)
Definition:
granted-time-window-mpi-interface.cc:63
ns3::SentBuffer::m_request
MPI_Request m_request
Definition:
granted-time-window-mpi-interface.h:73
ns3::SentBuffer
Tracks non-blocking sends.
Definition:
granted-time-window-mpi-interface.h:52
ns3::GrantedTimeWindowMpiInterface::IsEnabled
virtual bool IsEnabled()
Definition:
granted-time-window-mpi-interface.cc:145
ns3::SentBuffer::GetBuffer
uint8_t * GetBuffer()
Definition:
granted-time-window-mpi-interface.cc:57
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::GrantedTimeWindowMpiInterface::m_requests
static MPI_Request * m_requests
Definition:
granted-time-window-mpi-interface.h:160
parallel-communication-interface.h
ns3::GrantedTimeWindowMpiInterface::m_txCount
static uint32_t m_txCount
Definition:
granted-time-window-mpi-interface.h:155
ns3::GrantedTimeWindowMpiInterface::m_size
static uint32_t m_size
Definition:
granted-time-window-mpi-interface.h:149
ns3::GrantedTimeWindowMpiInterface::Disable
virtual void Disable()
Terminates the MPI environment by calling MPI_Finalize This function must be called after Destroy () ...
Definition:
granted-time-window-mpi-interface.cc:290
ns3::GrantedTimeWindowMpiInterface::SendPacket
virtual void SendPacket(Ptr< Packet > p, const Time &rxTime, uint32_t node, uint32_t dev)
Definition:
granted-time-window-mpi-interface.cc:179
ns3::GrantedTimeWindowMpiInterface::m_initialized
static bool m_initialized
Definition:
granted-time-window-mpi-interface.h:156
ns3::GrantedTimeWindowMpiInterface::ReceiveMessages
static void ReceiveMessages()
Check for received messages complete.
Definition:
granted-time-window-mpi-interface.cc:210
ns3::MAX_MPI_MSG_SIZE
const uint32_t MAX_MPI_MSG_SIZE
maximum MPI message size for easy buffer creation
Definition:
granted-time-window-mpi-interface.h:42
ns3::GrantedTimeWindowMpiInterface::m_rxCount
static uint32_t m_rxCount
Definition:
granted-time-window-mpi-interface.h:152
ns3::GrantedTimeWindowMpiInterface::m_pRxBuffers
static char ** m_pRxBuffers
Definition:
granted-time-window-mpi-interface.h:163
ns3::Object
A base class which provides memory management and object aggregation.
Definition:
object.h:87
ns3::TypeId
a unique identifier for an interface.
Definition:
type-id.h:58
ns3::GrantedTimeWindowMpiInterface::Destroy
virtual void Destroy()
Delete all buffers.
Definition:
granted-time-window-mpi-interface.cc:96
src
mpi
model
granted-time-window-mpi-interface.h
Generated on Wed Oct 7 2020 01:18:41 for ns-3 by
1.8.14