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

A global linear system. More...

#include <CommCwipi.h>

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

Public Member Functions

 CommCwipi (int narg, char *arg[])
 
virtual ~CommCwipi ()
 
- Public Member Functions inherited from Nektar::LibUtilities::CommMpi
 CommMpi (int narg, char *arg[])
 
virtual ~CommMpi () override
 
MPI_Comm GetComm ()
 
- 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 Isend (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, int pTime=1)
 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...
 
CommSharedPtr GetTimeComm ()
 Retrieve the time communicator to which this process belongs. More...
 
CommSharedPtr GetSpaceComm ()
 Retrieve the space 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 Member Functions inherited from Nektar::LibUtilities::CommMpi
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...
 
- Static Public Attributes inherited from Nektar::LibUtilities::CommMpi
static std::string className
 Name of class. More...
 

Protected Member Functions

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

Additional Inherited Members

- Protected Attributes inherited from Nektar::LibUtilities::CommMpi
MPI_Comm m_comm
 
int m_rank {}
 
bool m_controls_mpi
 
- 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...
 
CommSharedPtr m_commTime
 
CommSharedPtr m_commSpace
 

Detailed Description

A global linear system.

Definition at line 55 of file CommCwipi.h.

Constructor & Destructor Documentation

◆ CommCwipi()

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

Definition at line 56 of file CommCwipi.cpp.

56  : CommMpi(narg, arg)
57 {
58  std::string localName = "";
59  for (int i = 0; i < narg; ++i)
60  {
61  if (!std::strcmp(arg[i], "--cwipi"))
62  {
63  localName = arg[i + 1];
64  }
65  }
66 
67  // Initialise CWIPI and override MPI_COMM_WORLD communicator set in CommMPI
68  MPI_Comm localComm;
69  cwipi_init(MPI_COMM_WORLD, localName.c_str(), &localComm);
70  m_comm = localComm;
71 
72  MPI_Comm_size(m_comm, &m_size);
73  MPI_Comm_rank(m_comm, &m_rank);
74 
75 #ifdef NEKTAR_USING_PETSC
76  PETSC_COMM_WORLD = m_comm;
77  PetscInitializeNoArguments();
78 #endif
79  m_type = "Parallel MPI with CWIPI";
80 }
int m_size
Number of processes.
Definition: Comm.h:181
std::string m_type
Type of communication.
Definition: Comm.h:182
CommMpi(int narg, char *arg[])
Definition: CommMpi.cpp:53

References Nektar::LibUtilities::CommMpi::m_comm, Nektar::LibUtilities::CommMpi::m_rank, Nektar::LibUtilities::Comm::m_size, and Nektar::LibUtilities::Comm::m_type.

◆ ~CommCwipi()

Nektar::LibUtilities::CommCwipi::~CommCwipi ( )
virtual

Definition at line 85 of file CommCwipi.cpp.

86 {
87 }

Member Function Documentation

◆ create()

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

Creates an instance of this class.

Definition at line 60 of file CommCwipi.h.

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

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

◆ v_Finalise()

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

Reimplemented from Nektar::LibUtilities::CommMpi.

Definition at line 92 of file CommCwipi.cpp.

93 {
94  cwipi_finalize();
96 }
virtual void v_Finalise() override
Definition: CommMpi.cpp:119

References Nektar::LibUtilities::CommMpi::v_Finalise().

Member Data Documentation

◆ className

std::string Nektar::LibUtilities::CommCwipi::className
static
Initial value:
"CWIPI", CommCwipi::create, "Parallel communication using MPI with CWIPI.")
static CommSharedPtr create(int narg, char *arg[])
Creates an instance of this class.
Definition: CommCwipi.h:60
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 66 of file CommCwipi.h.