Nektar++
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Nektar::LibUtilities::Comm Class Referenceabstract

Base communications class. More...

#include <Comm.h>

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

Public Member Functions

 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)
 

Protected Member Functions

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

Protected Attributes

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

Base communications class.

Definition at line 81 of file Comm.h.

Constructor & Destructor Documentation

◆ Comm() [1/2]

Nektar::LibUtilities::Comm::Comm ( int  narg,
char *  arg[] 
)

Definition at line 43 of file Communication/Comm.cpp.

44 {
45  boost::ignore_unused(narg, arg);
46 }

◆ ~Comm()

Nektar::LibUtilities::Comm::~Comm ( )
virtual

Definition at line 52 of file Communication/Comm.cpp.

53 {
54 }

◆ Comm() [2/2]

Nektar::LibUtilities::Comm::Comm ( )
protected

Definition at line 48 of file Communication/Comm.cpp.

49 {
50 }

Member Function Documentation

◆ AllGather()

template<class T >
void Nektar::LibUtilities::Comm::AllGather ( T &  pSendData,
T &  pRecvData 
)

Definition at line 351 of file Comm.h.

References Nektar::LibUtilities::CommDataTypeTraits< T >::GetCount(), GetSize(), and v_AllGather().

352 {
353  BOOST_STATIC_ASSERT_MSG(
355  "AllGather only valid with Array or vector arguments.");
356 
357  int sendSize = CommDataTypeTraits<T>::GetCount(pSendData);
358  int recvSize = sendSize;
359 
360  pRecvData = T(recvSize * GetSize());
361 
362  v_AllGather(CommDataTypeTraits<T>::GetPointer(pSendData), sendSize,
364  CommDataTypeTraits<T>::GetPointer(pRecvData), recvSize,
366 }
virtual void v_AllGather(void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype)=0
int GetSize()
Returns number of processes.
Definition: Comm.h:215

◆ AllGatherv() [1/2]

template<class T >
void Nektar::LibUtilities::Comm::AllGatherv ( T &  pSendData,
T &  pRecvData,
Array< OneD, int > &  pRecvDataSizeMap,
Array< OneD, int > &  pRecvDataOffsetMap 
)

Definition at line 372 of file Comm.h.

References Nektar::LibUtilities::CommDataTypeTraits< T >::GetCount(), Nektar::LibUtilities::CommDataTypeTraits< T >::GetDataType(), and v_AllGatherv().

376 {
377  BOOST_STATIC_ASSERT_MSG(
379  "AllGatherv only valid with Array or vector arguments.");
380 
381  int sendSize = CommDataTypeTraits<T>::GetCount(pSendData);
382 
383  v_AllGatherv(CommDataTypeTraits<T>::GetPointer(pSendData), sendSize,
386  pRecvDataSizeMap.get(),
387  pRecvDataOffsetMap.get(),
389 }
virtual void v_AllGatherv(void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcounts[], int rdispls[], CommDataType recvtype)=0

◆ AllGatherv() [2/2]

template<class T >
void Nektar::LibUtilities::Comm::AllGatherv ( T &  pRecvData,
Array< OneD, int > &  pRecvDataSizeMap,
Array< OneD, int > &  pRecvDataOffsetMap 
)

Definition at line 395 of file Comm.h.

References Nektar::LibUtilities::CommDataTypeTraits< T >::GetDataType(), and v_AllGatherv().

398 {
399  BOOST_STATIC_ASSERT_MSG(
401  "AllGatherv only valid with Array or vector arguments.");
402 
404  pRecvDataSizeMap.get(),
405  pRecvDataOffsetMap.get(),
407 }
virtual void v_AllGatherv(void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcounts[], int rdispls[], CommDataType recvtype)=0

◆ AllReduce()

template<class T >
void Nektar::LibUtilities::Comm::AllReduce ( T &  pData,
enum ReduceOperator  pOp 
)

Definition at line 295 of file Comm.h.

References v_AllReduce().

296 {
300 }
virtual void v_AllReduce(void *buf, int count, CommDataType dt, enum ReduceOperator pOp)=0

◆ AlltoAll()

template<class T >
void Nektar::LibUtilities::Comm::AlltoAll ( T &  pSendData,
T &  pRecvData 
)

Definition at line 302 of file Comm.h.

References ASSERTL0, Nektar::LibUtilities::CommDataTypeTraits< T >::GetCount(), GetSize(), and v_AlltoAll().

303 {
304  static_assert(
306  "AlltoAll only valid with Array or vector arguments.");
307  int sendSize = CommDataTypeTraits<T>::GetCount(pSendData);
308  int recvSize = CommDataTypeTraits<T>::GetCount(pRecvData);
309  ASSERTL0(sendSize == recvSize,
310  "Send and Recv arrays have incompatible sizes in AlltoAll");
311 
312  int count = sendSize / GetSize();
313  ASSERTL0(count * GetSize() == sendSize,
314  "Array size incompatible with size of communicator");
315 
318  CommDataTypeTraits<T>::GetPointer(pRecvData), count,
320 }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:216
virtual void v_AlltoAll(void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype)=0
int GetSize()
Returns number of processes.
Definition: Comm.h:215

◆ AlltoAllv()

template<class T1 , class T2 >
void Nektar::LibUtilities::Comm::AlltoAllv ( T1 &  pSendData,
T2 &  pSendDataSizeMap,
T2 &  pSendDataOffsetMap,
T1 &  pRecvData,
T2 &  pRecvDataSizeMap,
T2 &  pRecvDataOffsetMap 
)

Definition at line 326 of file Comm.h.

References v_AlltoAllv().

332 {
333  static_assert(
335  "AlltoAllv only valid with Array or vector arguments.");
336  static_assert(
337  std::is_same<T2, std::vector<int>>::value ||
338  std::is_same<T2, Array<OneD, int>>::value,
339  "Alltoallv size and offset maps should be integer vectors.");
340  v_AlltoAllv(
342  (int *)CommDataTypeTraits<T2>::GetPointer(pSendDataSizeMap),
343  (int *)CommDataTypeTraits<T2>::GetPointer(pSendDataOffsetMap),
346  (int *)CommDataTypeTraits<T2>::GetPointer(pRecvDataSizeMap),
347  (int *)CommDataTypeTraits<T2>::GetPointer(pRecvDataOffsetMap),
349 }
virtual void v_AlltoAllv(void *sendbuf, int sendcounts[], int sensdispls[], CommDataType sendtype, void *recvbuf, int recvcounts[], int rdispls[], CommDataType recvtype)=0

◆ Bcast()

template<class T >
void Nektar::LibUtilities::Comm::Bcast ( T &  data,
int  rootProc 
)

Definition at line 412 of file Comm.h.

References v_Bcast().

413 {
417 }
virtual void v_Bcast(void *buffer, int count, CommDataType dt, int root)=0

◆ Block()

void Nektar::LibUtilities::Comm::Block ( )
inline

Block execution until all processes reach this point.

Definition at line 239 of file Comm.h.

References v_Block().

240 {
241  v_Block();
242 }
virtual void v_Block()=0

◆ CommCreateIf()

CommSharedPtr Nektar::LibUtilities::Comm::CommCreateIf ( int  flag)
inline

If the flag is non-zero create a new communicator.

Definition at line 476 of file Comm.h.

References v_CommCreateIf().

477 {
478  return v_CommCreateIf(flag);
479 }
virtual CommSharedPtr v_CommCreateIf(int flag)=0

◆ Exscan()

template<class T >
void Nektar::LibUtilities::Comm::Exscan ( T &  pData,
const enum ReduceOperator  pOp,
T &  ans 
)

Definition at line 420 of file Comm.h.

References ASSERTL0, and v_Exscan().

421 {
424  "Input and output array sizes don't match");
429 }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:216
virtual void v_Exscan(Array< OneD, unsigned long long > &pData, const enum ReduceOperator pOp, Array< OneD, unsigned long long > &ans)=0

◆ Finalise()

void Nektar::LibUtilities::Comm::Finalise ( )
inline

Definition at line 207 of file Comm.h.

References v_Finalise().

208 {
209  v_Finalise();
210 }
virtual void v_Finalise()=0

◆ Gather()

template<class T >
T Nektar::LibUtilities::Comm::Gather ( const int  rootProc,
T &  val 
)

Concatenate all the input arrays, in rank order, onto the process with rank == rootProc

Definition at line 435 of file Comm.h.

References Nektar::LibUtilities::CommDataTypeTraits< T >::GetCount(), Nektar::LibUtilities::CommDataTypeTraits< T >::GetPointer(), GetRank(), GetSize(), and v_Gather().

436 {
437  static_assert(
439  "Gather only valid with Array or vector arguments.");
440  bool amRoot = (GetRank() == rootProc);
441  unsigned nEl = CommDataTypeTraits<T>::GetCount(val);
442 
443  unsigned nOut = amRoot ? GetSize() * nEl : 0;
444  T ans(nOut);
445  void *recvbuf = amRoot ? CommDataTypeTraits<T>::GetPointer(ans) : NULL;
446 
447  v_Gather(CommDataTypeTraits<T>::GetPointer(val), nEl,
448  CommDataTypeTraits<T>::GetDataType(), recvbuf, nEl,
450  return ans;
451 }
virtual void v_Gather(void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype, int root)=0
int GetSize()
Returns number of processes.
Definition: Comm.h:215

◆ GetColumnComm()

CommSharedPtr Nektar::LibUtilities::Comm::GetColumnComm ( )
inline

Retrieve the column communicator to which this process belongs.

Definition at line 510 of file Comm.h.

References m_commColumn.

511 {
512  if (!m_commColumn.get())
513  {
514  return shared_from_this();
515  }
516  else
517  {
518  return m_commColumn;
519  }
520 }
CommSharedPtr m_commColumn
Column communicator.
Definition: Comm.h:151

◆ GetRank()

int Nektar::LibUtilities::Comm::GetRank ( )
inline

Definition at line 223 of file Comm.h.

References v_GetRank().

Referenced by export_Comm(), Gather(), and Scatter().

224 {
225  return v_GetRank();
226 }
virtual int v_GetRank()=0

◆ GetRowComm()

CommSharedPtr Nektar::LibUtilities::Comm::GetRowComm ( )
inline

Retrieve the row communicator to which this process belongs.

Definition at line 494 of file Comm.h.

References m_commRow.

495 {
496  if (!m_commRow.get())
497  {
498  return shared_from_this();
499  }
500  else
501  {
502  return m_commRow;
503  }
504 }
CommSharedPtr m_commRow
Row communicator.
Definition: Comm.h:150

◆ GetSize()

int Nektar::LibUtilities::Comm::GetSize ( )
inline

Returns number of processes.

Definition at line 215 of file Comm.h.

References m_size.

Referenced by AllGather(), AlltoAll(), export_Comm(), Gather(), Scatter(), and Nektar::LibUtilities::CommMpi::v_AllReduce().

216 {
217  return m_size;
218 }
int m_size
Number of processes.
Definition: Comm.h:148

◆ GetType()

const std::string & Nektar::LibUtilities::Comm::GetType ( ) const
inline

Definition at line 231 of file Comm.h.

References m_type.

Referenced by export_Comm().

232 {
233  return m_type;
234 }
std::string m_type
Type of communication.
Definition: Comm.h:149

◆ IsSerial()

bool Nektar::LibUtilities::Comm::IsSerial ( void  )
inline

Definition at line 527 of file Comm.h.

References v_IsSerial().

528 {
529  return v_IsSerial();
530 }
virtual bool v_IsSerial(void)=0

◆ Recv()

template<class T >
void Nektar::LibUtilities::Comm::Recv ( int  pProc,
T &  pData 
)

Definition at line 259 of file Comm.h.

References v_Recv().

260 {
264 }
virtual void v_Recv(void *buf, int count, CommDataType dt, int source)=0

◆ RemoveExistingFiles()

bool Nektar::LibUtilities::Comm::RemoveExistingFiles ( void  )
inline

Definition at line 532 of file Comm.h.

References v_RemoveExistingFiles().

533 {
534  return v_RemoveExistingFiles();
535 }
virtual bool v_RemoveExistingFiles(void)

◆ Scatter()

template<class T >
T Nektar::LibUtilities::Comm::Scatter ( const int  rootProc,
T &  pData 
)

Scatter pData across ranks in chunks of len(pData)/num_ranks

Definition at line 455 of file Comm.h.

References Nektar::LibUtilities::CommDataTypeTraits< T >::GetCount(), Nektar::LibUtilities::CommDataTypeTraits< T >::GetPointer(), GetRank(), GetSize(), and v_Scatter().

456 {
457  static_assert(
459  "Scatter only valid with Array or vector arguments.");
460 
461  bool amRoot = (GetRank() == rootProc);
462  unsigned nEl = CommDataTypeTraits<T>::GetCount(pData) / GetSize();
463 
464  void *sendbuf = amRoot ? CommDataTypeTraits<T>::GetPointer(pData) : NULL;
465  T ans(nEl);
466 
468  CommDataTypeTraits<T>::GetPointer(ans), nEl,
470  return ans;
471 }
virtual void v_Scatter(void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype, int root)=0
int GetSize()
Returns number of processes.
Definition: Comm.h:215

◆ Send()

template<class T >
void Nektar::LibUtilities::Comm::Send ( int  pProc,
T &  pData 
)

Definition at line 252 of file Comm.h.

References v_Send().

253 {
257 }
virtual void v_Send(void *buf, int count, CommDataType dt, int dest)=0

◆ SendRecv()

template<class T >
void Nektar::LibUtilities::Comm::SendRecv ( int  pSendProc,
T &  pSendData,
int  pRecvProc,
T &  pRecvData 
)

Definition at line 270 of file Comm.h.

References v_SendRecv().

271 {
278 }
virtual void v_SendRecv(void *sendbuf, int sendcount, CommDataType sendtype, int dest, void *recvbuf, int recvcount, CommDataType recvtype, int source)=0

◆ SendRecvReplace()

template<class T >
void Nektar::LibUtilities::Comm::SendRecvReplace ( int  pSendProc,
int  pRecvProc,
T &  pData 
)

Definition at line 284 of file Comm.h.

References v_SendRecvReplace().

285 {
289  pRecvProc);
290 }
virtual void v_SendRecvReplace(void *buf, int count, CommDataType dt, int pSendProc, int pRecvProc)=0

◆ SplitComm()

void Nektar::LibUtilities::Comm::SplitComm ( int  pRows,
int  pColumns 
)
inline

Splits this communicator into a grid of size pRows*pColumns and creates row and column communicators. By default the communicator is a single row.

Definition at line 486 of file Comm.h.

References v_SplitComm().

487 {
488  v_SplitComm(pRows, pColumns);
489 }
virtual void v_SplitComm(int pRows, int pColumns)=0

◆ TreatAsRankZero()

bool Nektar::LibUtilities::Comm::TreatAsRankZero ( void  )
inline

Definition at line 522 of file Comm.h.

References v_TreatAsRankZero().

523 {
524  return v_TreatAsRankZero();
525 }
virtual bool v_TreatAsRankZero(void)=0

◆ v_AllGather()

virtual void Nektar::LibUtilities::Comm::v_AllGather ( void sendbuf,
int  sendcount,
CommDataType  sendtype,
void recvbuf,
int  recvcount,
CommDataType  recvtype 
)
protectedpure virtual

◆ v_AllGatherv() [1/2]

virtual void Nektar::LibUtilities::Comm::v_AllGatherv ( void sendbuf,
int  sendcount,
CommDataType  sendtype,
void recvbuf,
int  recvcounts[],
int  rdispls[],
CommDataType  recvtype 
)
protectedpure virtual

◆ v_AllGatherv() [2/2]

virtual void Nektar::LibUtilities::Comm::v_AllGatherv ( void recvbuf,
int  recvcounts[],
int  rdispls[],
CommDataType  recvtype 
)
protectedpure virtual

◆ v_AllReduce()

virtual void Nektar::LibUtilities::Comm::v_AllReduce ( void buf,
int  count,
CommDataType  dt,
enum ReduceOperator  pOp 
)
protectedpure virtual

◆ v_AlltoAll()

virtual void Nektar::LibUtilities::Comm::v_AlltoAll ( void sendbuf,
int  sendcount,
CommDataType  sendtype,
void recvbuf,
int  recvcount,
CommDataType  recvtype 
)
protectedpure virtual

◆ v_AlltoAllv()

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

◆ v_Bcast()

virtual void Nektar::LibUtilities::Comm::v_Bcast ( void buffer,
int  count,
CommDataType  dt,
int  root 
)
protectedpure virtual

◆ v_Block()

virtual void Nektar::LibUtilities::Comm::v_Block ( )
protectedpure virtual

◆ v_CommCreateIf()

virtual CommSharedPtr Nektar::LibUtilities::Comm::v_CommCreateIf ( int  flag)
protectedpure virtual

◆ v_Exscan()

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

◆ v_Finalise()

virtual void Nektar::LibUtilities::Comm::v_Finalise ( )
protectedpure virtual

◆ v_Gather()

virtual void Nektar::LibUtilities::Comm::v_Gather ( void sendbuf,
int  sendcount,
CommDataType  sendtype,
void recvbuf,
int  recvcount,
CommDataType  recvtype,
int  root 
)
protectedpure virtual

◆ v_GetRank()

virtual int Nektar::LibUtilities::Comm::v_GetRank ( )
protectedpure virtual

◆ v_IsSerial()

virtual bool Nektar::LibUtilities::Comm::v_IsSerial ( void  )
protectedpure virtual

◆ v_Recv()

virtual void Nektar::LibUtilities::Comm::v_Recv ( void buf,
int  count,
CommDataType  dt,
int  source 
)
protectedpure virtual

◆ v_RemoveExistingFiles()

bool Nektar::LibUtilities::Comm::v_RemoveExistingFiles ( void  )
protectedvirtual

Reimplemented in Nektar::FieldUtils::FieldConvertComm.

Definition at line 57 of file Communication/Comm.cpp.

Referenced by RemoveExistingFiles().

58 {
59  return true;
60 }

◆ v_Scatter()

virtual void Nektar::LibUtilities::Comm::v_Scatter ( void sendbuf,
int  sendcount,
CommDataType  sendtype,
void recvbuf,
int  recvcount,
CommDataType  recvtype,
int  root 
)
protectedpure virtual

◆ v_Send()

virtual void Nektar::LibUtilities::Comm::v_Send ( void buf,
int  count,
CommDataType  dt,
int  dest 
)
protectedpure virtual

◆ v_SendRecv()

virtual void Nektar::LibUtilities::Comm::v_SendRecv ( void sendbuf,
int  sendcount,
CommDataType  sendtype,
int  dest,
void recvbuf,
int  recvcount,
CommDataType  recvtype,
int  source 
)
protectedpure virtual

◆ v_SendRecvReplace()

virtual void Nektar::LibUtilities::Comm::v_SendRecvReplace ( void buf,
int  count,
CommDataType  dt,
int  pSendProc,
int  pRecvProc 
)
protectedpure virtual

◆ v_SplitComm()

virtual void Nektar::LibUtilities::Comm::v_SplitComm ( int  pRows,
int  pColumns 
)
protectedpure virtual

◆ v_TreatAsRankZero()

virtual bool Nektar::LibUtilities::Comm::v_TreatAsRankZero ( void  )
protectedpure virtual

◆ v_Wtime()

virtual NekDouble Nektar::LibUtilities::Comm::v_Wtime ( )
protectedpure virtual

◆ Wtime()

double Nektar::LibUtilities::Comm::Wtime ( )
inline

Return the time in seconds.

Definition at line 247 of file Comm.h.

References v_Wtime().

248 {
249  return v_Wtime();
250 }
virtual NekDouble v_Wtime()=0

Member Data Documentation

◆ m_commColumn

CommSharedPtr Nektar::LibUtilities::Comm::m_commColumn
protected

Column communicator.

Definition at line 151 of file Comm.h.

Referenced by GetColumnComm(), and Nektar::LibUtilities::CommMpi::v_SplitComm().

◆ m_commRow

CommSharedPtr Nektar::LibUtilities::Comm::m_commRow
protected

Row communicator.

Definition at line 150 of file Comm.h.

Referenced by GetRowComm(), and Nektar::LibUtilities::CommMpi::v_SplitComm().

◆ m_size

int Nektar::LibUtilities::Comm::m_size
protected

◆ m_type

std::string Nektar::LibUtilities::Comm::m_type
protected