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 ()
 
- Public Member Functions inherited from Nektar::LibUtilities::Comm
 Comm (int narg, char *arg[])
 
virtual ~Comm ()
 
void Finalise ()
 
int GetSize ()
 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 &data, int rootProc)
 
template<class T >
void Exscan (T &pData, const enum ReduceOperator pOp, T &ans)
 
template<class T >
Gather (const int rootProc, T &val)
 
template<class T >
Scatter (const int rootProc, T &pData)
 
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 (void)
 
bool IsSerial (void)
 
bool RemoveExistingFiles (void)
 

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 ()
 
virtual int v_GetRank ()
 
virtual bool v_TreatAsRankZero (void)
 
virtual bool v_IsSerial (void)
 
virtual void v_Block ()
 
virtual NekDouble v_Wtime ()
 
virtual void v_Send (void *buf, int count, CommDataType dt, int dest)
 
virtual void v_Recv (void *buf, int count, CommDataType dt, int source)
 
virtual void v_SendRecv (void *sendbuf, int sendcount, CommDataType sendtype, int dest, void *recvbuf, int recvcount, CommDataType recvtype, int source)
 
virtual void v_SendRecvReplace (void *buf, int count, CommDataType dt, int pSendProc, int pRecvProc)
 
virtual void v_AllReduce (void *buf, int count, CommDataType dt, enum ReduceOperator pOp)
 
virtual void v_AlltoAll (void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype)
 
virtual void v_AlltoAllv (void *sendbuf, int sendcounts[], int sensdispls[], CommDataType sendtype, void *recvbuf, int recvcounts[], int rdispls[], CommDataType recvtype)
 
virtual void v_AllGather (void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype)
 
virtual void v_AllGatherv (void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcounts[], int rdispls[], CommDataType recvtype)
 
virtual void v_AllGatherv (void *recvbuf, int recvcounts[], int rdispls[], CommDataType recvtype)
 
virtual void v_Bcast (void *buffer, int count, CommDataType dt, int root)
 
virtual void v_Exscan (Array< OneD, unsigned long long > &pData, const enum ReduceOperator pOp, Array< OneD, unsigned long long > &ans)
 
virtual void v_Gather (void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype, int root)
 
virtual void v_Scatter (void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype, int root)
 
virtual void v_SplitComm (int pRows, int pColumns)
 
virtual CommSharedPtr v_CommCreateIf (int flag)
 
- Protected Member Functions inherited from Nektar::LibUtilities::Comm
 Comm ()
 
virtual bool v_RemoveExistingFiles (void)
 

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.

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

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

◆ ~CommSerial()

Nektar::LibUtilities::CommSerial::~CommSerial ( )
virtual

Definition at line 59 of file CommSerial.cpp.

60 {
61 }

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.

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

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

◆ v_AllGather()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 182 of file CommSerial.cpp.

184 {
185  boost::ignore_unused(sendbuf, sendcount, sendtype, recvbuf, recvcount,
186  recvtype);
187 }

◆ v_AllGatherv() [1/2]

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

Implements Nektar::LibUtilities::Comm.

Definition at line 189 of file CommSerial.cpp.

192 {
193  boost::ignore_unused(sendbuf, sendcount, sendtype, recvbuf, recvcounts,
194  rdispls, recvtype);
195 }

◆ v_AllGatherv() [2/2]

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

Implements Nektar::LibUtilities::Comm.

Definition at line 197 of file CommSerial.cpp.

199 {
200  boost::ignore_unused(recvbuf, recvcounts, rdispls, recvtype);
201 }

◆ v_AllReduce()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 151 of file CommSerial.cpp.

153 {
154  boost::ignore_unused(buf, count, dt, pOp);
155 }

◆ v_AlltoAll()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 160 of file CommSerial.cpp.

162 {
163  boost::ignore_unused(sendbuf, sendcount, sendtype, recvbuf, recvcount,
164  recvtype);
165 }

◆ v_AlltoAllv()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 170 of file CommSerial.cpp.

174 {
175  boost::ignore_unused(sendbuf, sendcounts, senddispls, sendtype, recvbuf,
176  recvcounts, rdispls, recvtype);
177 }

◆ v_Bcast()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 203 of file CommSerial.cpp.

204 {
205  boost::ignore_unused(buffer, count, dt, root);
206 }
array buffer
Definition: GsLib.hpp:61

◆ v_Block()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 100 of file CommSerial.cpp.

101 {
102 }

◆ v_CommCreateIf()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 242 of file CommSerial.cpp.

243 {
244  if (flag == 0)
245  {
246  // flag == 0 => get back MPI_COMM_NULL, return a null ptr instead.
247  return std::shared_ptr<Comm>();
248  }
249  else
250  {
251  // Return a real communicator
252  return shared_from_this();
253  }
254 
255 }

◆ v_Exscan()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 208 of file CommSerial.cpp.

211 {
212  boost::ignore_unused(pData, pOp, ans);
213 }

◆ v_Finalise()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 66 of file CommSerial.cpp.

67 {
68 #ifdef NEKTAR_USING_PETSC
69  PetscFinalize();
70 #endif
71 }

◆ v_Gather()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 215 of file CommSerial.cpp.

References Nektar::LibUtilities::CommDataTypeGetSize().

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

◆ v_GetRank()

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

Implements Nektar::LibUtilities::Comm.

Reimplemented in Nektar::FieldUtils::FieldConvertComm.

Definition at line 76 of file CommSerial.cpp.

77 {
78  return 0;
79 }

◆ v_IsSerial()

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

Implements Nektar::LibUtilities::Comm.

Reimplemented in Nektar::FieldUtils::FieldConvertComm.

Definition at line 92 of file CommSerial.cpp.

93 {
94  return true;
95 }

◆ v_Recv()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 123 of file CommSerial.cpp.

124 {
125  boost::ignore_unused(buf, count, dt, source);
126 }

◆ v_Scatter()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 223 of file CommSerial.cpp.

References Nektar::LibUtilities::CommDataTypeGetSize().

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

◆ v_Send()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 115 of file CommSerial.cpp.

116 {
117  boost::ignore_unused(buf, count, dt, dest);
118 }

◆ v_SendRecv()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 131 of file CommSerial.cpp.

134 {
135  boost::ignore_unused(sendbuf, sendcount, sendtype, dest, recvbuf,
136  recvcount, recvtype, source);
137 }

◆ v_SendRecvReplace()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 142 of file CommSerial.cpp.

144 {
145  boost::ignore_unused(buf, count, dt, pSendProc, pRecvProc);
146 }

◆ v_SplitComm()

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

Implements Nektar::LibUtilities::Comm.

Reimplemented in Nektar::FieldUtils::FieldConvertComm.

Definition at line 233 of file CommSerial.cpp.

References ASSERTL0.

234 {
235  boost::ignore_unused(pRows, pColumns);
236  ASSERTL0(false, "Cannot split a serial process.");
237 }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:216

◆ v_TreatAsRankZero()

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

Implements Nektar::LibUtilities::Comm.

Reimplemented in Nektar::FieldUtils::FieldConvertComm.

Definition at line 84 of file CommSerial.cpp.

85 {
86  return true;
87 }

◆ v_Wtime()

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

Implements Nektar::LibUtilities::Comm.

Definition at line 107 of file CommSerial.cpp.

108 {
109  return 0;
110 }

Member Data Documentation

◆ className

std::string Nektar::LibUtilities::CommSerial::className
static
Initial value:
"Serial", CommSerial::create, "Single-process serial communication.")

Name of class.

Definition at line 64 of file CommSerial.h.