Nektar++
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
Nektar::LibUtilities::CommSerial Class Reference

A global linear system. More...

#include <CommSerial.h>

Inheritance diagram for Nektar::LibUtilities::CommSerial:
[legend]

Public Member Functions

 CommSerial (int argc, char *argv[])
 
virtual ~CommSerial () override
 
- Public Member Functions inherited from Nektar::LibUtilities::Comm
 Comm (int narg, char *arg[])
 
virtual ~Comm ()
 
void Finalise ()
 
int GetSize () const
 Returns number of processes. More...
 
int GetRank ()
 
const std::string & GetType () const
 
void Block ()
 Block execution until all processes reach this point. More...
 
NekDouble Wtime ()
 Return the time in seconds. More...
 
template<class T >
void Send (int pProc, T &pData)
 
template<class T >
void Recv (int pProc, T &pData)
 
template<class T >
void SendRecv (int pSendProc, T &pSendData, int pRecvProc, T &pRecvData)
 
template<class T >
void SendRecvReplace (int pSendProc, int pRecvProc, T &pData)
 
template<class T >
void AllReduce (T &pData, enum ReduceOperator pOp)
 
template<class T >
void AlltoAll (T &pSendData, T &pRecvData)
 
template<class T1 , class T2 >
void AlltoAllv (T1 &pSendData, T2 &pSendDataSizeMap, T2 &pSendDataOffsetMap, T1 &pRecvData, T2 &pRecvDataSizeMap, T2 &pRecvDataOffsetMap)
 
template<class T >
void AllGather (T &pSendData, T &pRecvData)
 
template<class T >
void AllGatherv (T &pSendData, T &pRecvData, Array< OneD, int > &pRecvDataSizeMap, Array< OneD, int > &pRecvDataOffsetMap)
 
template<class T >
void AllGatherv (T &pRecvData, Array< OneD, int > &pRecvDataSizeMap, Array< OneD, int > &pRecvDataOffsetMap)
 
template<class T >
void Bcast (T &pData, int pRoot)
 
template<class T >
void Exscan (T &pData, enum ReduceOperator pOp, T &ans)
 
template<class T >
Gather (int rootProc, T &val)
 
template<class T >
Scatter (int rootProc, T &pData)
 
template<class T >
void DistGraphCreateAdjacent (T &sources, T &sourceweights, int reorder)
 
template<class T1 , class T2 >
void NeighborAlltoAllv (T1 &pSendData, T2 &pSendDataSizeMap, T2 &pSendDataOffsetMap, T1 &pRecvData, T2 &pRecvDataSizeMap, T2 &pRecvDataOffsetMap)
 
template<class T >
void Irsend (int pProc, T &pData, int count, const CommRequestSharedPtr &request, int loc)
 
template<class T >
void SendInit (int pProc, T &pData, int count, const CommRequestSharedPtr &request, int loc)
 
template<class T >
void Irecv (int pProc, T &pData, int count, const CommRequestSharedPtr &request, int loc)
 
template<class T >
void RecvInit (int pProc, T &pData, int count, const CommRequestSharedPtr &request, int loc)
 
void StartAll (const CommRequestSharedPtr &request)
 
void WaitAll (const CommRequestSharedPtr &request)
 
CommRequestSharedPtr CreateRequest (int num)
 
CommSharedPtr CommCreateIf (int flag)
 If the flag is non-zero create a new communicator. More...
 
void SplitComm (int pRows, int pColumns)
 Splits this communicator into a grid of size pRows*pColumns and creates row and column communicators. By default the communicator is a single row. More...
 
CommSharedPtr GetRowComm ()
 Retrieve the row communicator to which this process belongs. More...
 
CommSharedPtr GetColumnComm ()
 Retrieve the column communicator to which this process belongs. More...
 
bool TreatAsRankZero ()
 
bool IsSerial ()
 
std::tuple< int, int, int > GetVersion ()
 
bool RemoveExistingFiles ()
 
std::pair< CommSharedPtr, CommSharedPtrSplitCommNode ()
 

Static Public Member Functions

static CommSharedPtr create (int narg, char *arg[])
 Creates an instance of this class. More...
 

Static Public Attributes

static std::string className
 Name of class. More...
 

Protected Member Functions

virtual void v_Finalise () final
 
virtual int v_GetRank () override
 
virtual bool v_TreatAsRankZero () override
 
virtual bool v_IsSerial () override
 
virtual std::tuple< int, int, int > v_GetVersion () final
 
virtual void v_Block () final
 
virtual NekDouble v_Wtime () final
 
virtual void v_Send (void *buf, int count, CommDataType dt, int dest) final
 
virtual void v_Recv (void *buf, int count, CommDataType dt, int source) final
 
virtual void v_SendRecv (void *sendbuf, int sendcount, CommDataType sendtype, int dest, void *recvbuf, int recvcount, CommDataType recvtype, int source) final
 
virtual void v_SendRecvReplace (void *buf, int count, CommDataType dt, int pSendProc, int pRecvProc) final
 
virtual void v_AllReduce (void *buf, int count, CommDataType dt, enum ReduceOperator pOp) final
 
virtual void v_AlltoAll (void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype) final
 
virtual void v_AlltoAllv (void *sendbuf, int sendcounts[], int sensdispls[], CommDataType sendtype, void *recvbuf, int recvcounts[], int rdispls[], CommDataType recvtype) final
 
virtual void v_AllGather (void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype) final
 
virtual void v_AllGatherv (void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcounts[], int rdispls[], CommDataType recvtype) final
 
virtual void v_AllGatherv (void *recvbuf, int recvcounts[], int rdispls[], CommDataType recvtype) final
 
virtual void v_Bcast (void *buffer, int count, CommDataType dt, int root) final
 
virtual void v_Exscan (Array< OneD, unsigned long long > &pData, const enum ReduceOperator pOp, Array< OneD, unsigned long long > &ans) final
 
virtual void v_Gather (void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype, int root) final
 
virtual void v_Scatter (void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype, int root) final
 
virtual void v_DistGraphCreateAdjacent (int indegree, const int sources[], const int sourceweights[], int reorder) final
 
virtual void v_NeighborAlltoAllv (void *sendbuf, int sendcounts[], int sdispls[], CommDataType sendtype, void *recvbuf, int recvcounts[], int rdispls[], CommDataType recvtype) final
 
virtual void v_Irsend (void *buf, int count, CommDataType dt, int dest, CommRequestSharedPtr request, int loc) final
 
virtual void v_SendInit (void *buf, int count, CommDataType dt, int dest, CommRequestSharedPtr request, int loc) final
 
virtual void v_Irecv (void *buf, int count, CommDataType dt, int source, CommRequestSharedPtr request, int loc) final
 
virtual void v_RecvInit (void *buf, int count, CommDataType dt, int source, CommRequestSharedPtr request, int loc) final
 
virtual void v_StartAll (CommRequestSharedPtr request) final
 
virtual void v_WaitAll (CommRequestSharedPtr request) final
 
virtual CommRequestSharedPtr v_CreateRequest (int num) final
 
virtual void v_SplitComm (int pRows, int pColumns) override
 
virtual CommSharedPtr v_CommCreateIf (int flag) final
 
- Protected Member Functions inherited from Nektar::LibUtilities::Comm
 Comm ()
 
virtual bool v_RemoveExistingFiles ()
 
virtual std::pair< CommSharedPtr, CommSharedPtrv_SplitCommNode ()
 

Additional Inherited Members

- Protected Attributes inherited from Nektar::LibUtilities::Comm
int m_size
 Number of processes. More...
 
std::string m_type
 Type of communication. More...
 
CommSharedPtr m_commRow
 Row communicator. More...
 
CommSharedPtr m_commColumn
 Column communicator. More...
 

Detailed Description

A global linear system.

Definition at line 54 of file CommSerial.h.

Constructor & Destructor Documentation

◆ CommSerial()

Nektar::LibUtilities::CommSerial::CommSerial ( int  argc,
char *  argv[] 
)

Definition at line 50 of file CommSerial.cpp.

50  : Comm(argc, argv)
51 {
52 #ifdef NEKTAR_USING_PETSC
53  PetscInitializeNoArguments();
54 #endif
55  m_size = 1;
56  m_type = "Serial";
57 }
int m_size
Number of processes.
Definition: Comm.h:175
std::string m_type
Type of communication.
Definition: Comm.h:176

References Nektar::LibUtilities::Comm::m_size, and Nektar::LibUtilities::Comm::m_type.

◆ ~CommSerial()

Nektar::LibUtilities::CommSerial::~CommSerial ( )
overridevirtualdefault

Member Function Documentation

◆ create()

static CommSharedPtr Nektar::LibUtilities::CommSerial::create ( int  narg,
char *  arg[] 
)
inlinestatic

Creates an instance of this class.

Definition at line 58 of file CommSerial.h.

59  {
61  }
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.

References Nektar::MemoryManager< DataType >::AllocateSharedPtr().

◆ v_AllGather()

void Nektar::LibUtilities::CommSerial::v_AllGather ( void sendbuf,
int  sendcount,
CommDataType  sendtype,
void recvbuf,
int  recvcount,
CommDataType  recvtype 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 185 of file CommSerial.cpp.

188 {
189  boost::ignore_unused(sendbuf, sendcount, sendtype, recvbuf, recvcount,
190  recvtype);
191 }

◆ v_AllGatherv() [1/2]

void Nektar::LibUtilities::CommSerial::v_AllGatherv ( void recvbuf,
int  recvcounts[],
int  rdispls[],
CommDataType  recvtype 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 202 of file CommSerial.cpp.

204 {
205  boost::ignore_unused(recvbuf, recvcounts, rdispls, recvtype);
206 }

◆ v_AllGatherv() [2/2]

void Nektar::LibUtilities::CommSerial::v_AllGatherv ( void sendbuf,
int  sendcount,
CommDataType  sendtype,
void recvbuf,
int  recvcounts[],
int  rdispls[],
CommDataType  recvtype 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 193 of file CommSerial.cpp.

197 {
198  boost::ignore_unused(sendbuf, sendcount, sendtype, recvbuf, recvcounts,
199  rdispls, recvtype);
200 }

◆ v_AllReduce()

void Nektar::LibUtilities::CommSerial::v_AllReduce ( void buf,
int  count,
CommDataType  dt,
enum ReduceOperator  pOp 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 154 of file CommSerial.cpp.

156 {
157  boost::ignore_unused(buf, count, dt, pOp);
158 }

◆ v_AlltoAll()

void Nektar::LibUtilities::CommSerial::v_AlltoAll ( void sendbuf,
int  sendcount,
CommDataType  sendtype,
void recvbuf,
int  recvcount,
CommDataType  recvtype 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 163 of file CommSerial.cpp.

165 {
166  boost::ignore_unused(sendbuf, sendcount, sendtype, recvbuf, recvcount,
167  recvtype);
168 }

◆ v_AlltoAllv()

void Nektar::LibUtilities::CommSerial::v_AlltoAllv ( void sendbuf,
int  sendcounts[],
int  sensdispls[],
CommDataType  sendtype,
void recvbuf,
int  recvcounts[],
int  rdispls[],
CommDataType  recvtype 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 173 of file CommSerial.cpp.

177 {
178  boost::ignore_unused(sendbuf, sendcounts, sdispls, sendtype, recvbuf,
179  recvcounts, rdispls, recvtype);
180 }

◆ v_Bcast()

void Nektar::LibUtilities::CommSerial::v_Bcast ( void buffer,
int  count,
CommDataType  dt,
int  root 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 208 of file CommSerial.cpp.

209 {
210  boost::ignore_unused(buffer, count, dt, root);
211 }
array buffer
Definition: GsLib.hpp:83

◆ v_Block()

void Nektar::LibUtilities::CommSerial::v_Block ( )
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 103 of file CommSerial.cpp.

104 {
105 }

◆ v_CommCreateIf()

CommSharedPtr Nektar::LibUtilities::CommSerial::v_CommCreateIf ( int  flag)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 304 of file CommSerial.cpp.

305 {
306  if (flag == 0)
307  {
308  // flag == 0 => get back MPI_COMM_NULL, return a null ptr instead.
309  return std::shared_ptr<Comm>();
310  }
311  else
312  {
313  // Return a real communicator
314  return shared_from_this();
315  }
316 }

◆ v_CreateRequest()

CommRequestSharedPtr Nektar::LibUtilities::CommSerial::v_CreateRequest ( int  num)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 286 of file CommSerial.cpp.

287 {
288  boost::ignore_unused(num);
289  return std::shared_ptr<CommRequest>(new CommRequest);
290 }

◆ v_DistGraphCreateAdjacent()

void Nektar::LibUtilities::CommSerial::v_DistGraphCreateAdjacent ( int  indegree,
const int  sources[],
const int  sourceweights[],
int  reorder 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 236 of file CommSerial.cpp.

239 {
240  boost::ignore_unused(indegree, sources, sourceweights, reorder);
241 }

◆ v_Exscan()

void Nektar::LibUtilities::CommSerial::v_Exscan ( Array< OneD, unsigned long long > &  pData,
const enum ReduceOperator  pOp,
Array< OneD, unsigned long long > &  ans 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 213 of file CommSerial.cpp.

216 {
217  boost::ignore_unused(pData, pOp, ans);
218 }

◆ v_Finalise()

void Nektar::LibUtilities::CommSerial::v_Finalise ( )
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 64 of file CommSerial.cpp.

65 {
66 #ifdef NEKTAR_USING_PETSC
67  PetscFinalize();
68 #endif
69 }

◆ v_Gather()

void Nektar::LibUtilities::CommSerial::v_Gather ( void sendbuf,
int  sendcount,
CommDataType  sendtype,
void recvbuf,
int  recvcount,
CommDataType  recvtype,
int  root 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 220 of file CommSerial.cpp.

223 {
224  boost::ignore_unused(recvcount, recvtype, root);
225  std::memcpy(recvbuf, sendbuf, sendcount * CommDataTypeGetSize(sendtype));
226 }
int CommDataTypeGetSize(CommDataType dt)
Return the size in bytes of a data type dt.

References Nektar::LibUtilities::CommDataTypeGetSize().

◆ v_GetRank()

int Nektar::LibUtilities::CommSerial::v_GetRank ( void  )
overrideprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Reimplemented in Nektar::FieldUtils::FieldConvertComm.

Definition at line 74 of file CommSerial.cpp.

75 {
76  return 0;
77 }

◆ v_GetVersion()

std::tuple< int, int, int > Nektar::LibUtilities::CommSerial::v_GetVersion ( )
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 95 of file CommSerial.cpp.

96 {
97  return std::make_tuple(0, 0, 0);
98 }

◆ v_Irecv()

void Nektar::LibUtilities::CommSerial::v_Irecv ( void buf,
int  count,
CommDataType  dt,
int  source,
CommRequestSharedPtr  request,
int  loc 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 264 of file CommSerial.cpp.

266 {
267  boost::ignore_unused(buf, count, dt, source, request, loc);
268 }

References CG_Iterations::loc.

◆ v_Irsend()

void Nektar::LibUtilities::CommSerial::v_Irsend ( void buf,
int  count,
CommDataType  dt,
int  dest,
CommRequestSharedPtr  request,
int  loc 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 252 of file CommSerial.cpp.

254 {
255  boost::ignore_unused(buf, count, dt, dest, request, loc);
256 }

References CG_Iterations::loc.

◆ v_IsSerial()

bool Nektar::LibUtilities::CommSerial::v_IsSerial ( void  )
overrideprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Reimplemented in Nektar::FieldUtils::FieldConvertComm.

Definition at line 90 of file CommSerial.cpp.

91 {
92  return true;
93 }

◆ v_NeighborAlltoAllv()

void Nektar::LibUtilities::CommSerial::v_NeighborAlltoAllv ( void sendbuf,
int  sendcounts[],
int  sdispls[],
CommDataType  sendtype,
void recvbuf,
int  recvcounts[],
int  rdispls[],
CommDataType  recvtype 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 243 of file CommSerial.cpp.

247 {
248  boost::ignore_unused(sendbuf, sendcounts, senddispls, sendtype, recvbuf,
249  recvcounts, rdispls, recvtype);
250 }

◆ v_Recv()

void Nektar::LibUtilities::CommSerial::v_Recv ( void buf,
int  count,
CommDataType  dt,
int  source 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 126 of file CommSerial.cpp.

127 {
128  boost::ignore_unused(buf, count, dt, source);
129 }

◆ v_RecvInit()

void Nektar::LibUtilities::CommSerial::v_RecvInit ( void buf,
int  count,
CommDataType  dt,
int  source,
CommRequestSharedPtr  request,
int  loc 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 270 of file CommSerial.cpp.

272 {
273  boost::ignore_unused(buf, count, dt, source, request, loc);
274 }

References CG_Iterations::loc.

◆ v_Scatter()

void Nektar::LibUtilities::CommSerial::v_Scatter ( void sendbuf,
int  sendcount,
CommDataType  sendtype,
void recvbuf,
int  recvcount,
CommDataType  recvtype,
int  root 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 228 of file CommSerial.cpp.

231 {
232  boost::ignore_unused(recvcount, recvtype, root);
233  std::memcpy(recvbuf, sendbuf, sendcount * CommDataTypeGetSize(sendtype));
234 }

References Nektar::LibUtilities::CommDataTypeGetSize().

◆ v_Send()

void Nektar::LibUtilities::CommSerial::v_Send ( void buf,
int  count,
CommDataType  dt,
int  dest 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 118 of file CommSerial.cpp.

119 {
120  boost::ignore_unused(buf, count, dt, dest);
121 }

◆ v_SendInit()

void Nektar::LibUtilities::CommSerial::v_SendInit ( void buf,
int  count,
CommDataType  dt,
int  dest,
CommRequestSharedPtr  request,
int  loc 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 258 of file CommSerial.cpp.

260 {
261  boost::ignore_unused(buf, count, dt, dest, request, loc);
262 }

References CG_Iterations::loc.

◆ v_SendRecv()

void Nektar::LibUtilities::CommSerial::v_SendRecv ( void sendbuf,
int  sendcount,
CommDataType  sendtype,
int  dest,
void recvbuf,
int  recvcount,
CommDataType  recvtype,
int  source 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 134 of file CommSerial.cpp.

137 {
138  boost::ignore_unused(sendbuf, sendcount, sendtype, dest, recvbuf, recvcount,
139  recvtype, source);
140 }

◆ v_SendRecvReplace()

void Nektar::LibUtilities::CommSerial::v_SendRecvReplace ( void buf,
int  count,
CommDataType  dt,
int  pSendProc,
int  pRecvProc 
)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 145 of file CommSerial.cpp.

147 {
148  boost::ignore_unused(buf, count, dt, pSendProc, pRecvProc);
149 }

◆ v_SplitComm()

void Nektar::LibUtilities::CommSerial::v_SplitComm ( int  pRows,
int  pColumns 
)
overrideprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Reimplemented in Nektar::FieldUtils::FieldConvertComm.

Definition at line 295 of file CommSerial.cpp.

296 {
297  boost::ignore_unused(pRows, pColumns);
298  ASSERTL0(false, "Cannot split a serial process.");
299 }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:215

References ASSERTL0.

◆ v_StartAll()

void Nektar::LibUtilities::CommSerial::v_StartAll ( CommRequestSharedPtr  request)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 281 of file CommSerial.cpp.

282 {
283  boost::ignore_unused(request);
284 }

◆ v_TreatAsRankZero()

bool Nektar::LibUtilities::CommSerial::v_TreatAsRankZero ( void  )
overrideprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Reimplemented in Nektar::FieldUtils::FieldConvertComm.

Definition at line 82 of file CommSerial.cpp.

83 {
84  return true;
85 }

◆ v_WaitAll()

void Nektar::LibUtilities::CommSerial::v_WaitAll ( CommRequestSharedPtr  request)
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 276 of file CommSerial.cpp.

277 {
278  boost::ignore_unused(request);
279 }

◆ v_Wtime()

NekDouble Nektar::LibUtilities::CommSerial::v_Wtime ( )
finalprotectedvirtual

Implements Nektar::LibUtilities::Comm.

Definition at line 110 of file CommSerial.cpp.

111 {
112  return 0;
113 }

Member Data Documentation

◆ className

std::string Nektar::LibUtilities::CommSerial::className
static
Initial value:
"Serial", CommSerial::create, "Single-process serial communication.")
static CommSharedPtr create(int narg, char *arg[])
Creates an instance of this class.
Definition: CommSerial.h:58
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
Definition: NekFactory.hpp:198
CommFactory & GetCommFactory()

Name of class.

Definition at line 64 of file CommSerial.h.