Nektar++
CommSerial.h
Go to the documentation of this file.
1 ///////////////////////////////////////////////////////////////////////////////
2 //
3 // File: CommSerial.h
4 //
5 // For more information, please see: http://www.nektar.info
6 //
7 // The MIT License
8 //
9 // Copyright (c) 2006 Division of Applied Mathematics, Brown University (USA),
10 // Department of Aeronautics, Imperial College London (UK), and Scientific
11 // Computing and Imaging Institute, University of Utah (USA).
12 //
13 // Permission is hereby granted, free of charge, to any person obtaining a
14 // copy of this software and associated documentation files (the "Software"),
15 // to deal in the Software without restriction, including without limitation
16 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
17 // and/or sell copies of the Software, and to permit persons to whom the
18 // Software is furnished to do so, subject to the following conditions:
19 //
20 // The above copyright notice and this permission notice shall be included
21 // in all copies or substantial portions of the Software.
22 //
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29 // DEALINGS IN THE SOFTWARE.
30 //
31 // Description: CommSerial header
32 //
33 ///////////////////////////////////////////////////////////////////////////////
34 #ifndef NEKTAR_LIB_UTILITIES_COMMSERIAL_H
35 #define NEKTAR_LIB_UTILITIES_COMMSERIAL_H
36 
37 #include <string>
38 
42 
43 namespace Nektar
44 {
45 namespace LibUtilities
46 {
47 // Forward declarations
48 class CommSerial;
49 
50 /// Pointer to a Communicator object.
51 typedef std::shared_ptr<CommSerial> CommSerialSharedPtr;
52 
53 /// A global linear system.
54 class CommSerial : public Comm
55 {
56 public:
57  /// Creates an instance of this class
58  LIB_UTILITIES_EXPORT static CommSharedPtr create(int narg, char *arg[])
59  {
61  }
62 
63  /// Name of class
64  LIB_UTILITIES_EXPORT static std::string className;
65 
66  LIB_UTILITIES_EXPORT CommSerial(int argc, char *argv[]);
67  LIB_UTILITIES_EXPORT virtual ~CommSerial() override;
68 
69 protected:
70  LIB_UTILITIES_EXPORT virtual void v_Finalise() override final;
71  LIB_UTILITIES_EXPORT virtual int v_GetRank() override;
72  LIB_UTILITIES_EXPORT virtual bool v_TreatAsRankZero() override;
73  LIB_UTILITIES_EXPORT virtual bool v_IsSerial() override;
74  LIB_UTILITIES_EXPORT virtual std::tuple<int, int, int> v_GetVersion()
75  override final;
76 
77  LIB_UTILITIES_EXPORT virtual void v_Block() override final;
78  LIB_UTILITIES_EXPORT virtual NekDouble v_Wtime() override final;
79  LIB_UTILITIES_EXPORT virtual void v_Send(void *buf, int count,
80  CommDataType dt,
81  int dest) override final;
82  LIB_UTILITIES_EXPORT virtual void v_Recv(void *buf, int count,
83  CommDataType dt,
84  int source) override final;
85  LIB_UTILITIES_EXPORT virtual void v_SendRecv(void *sendbuf, int sendcount,
86  CommDataType sendtype,
87  int dest, void *recvbuf,
88  int recvcount,
89  CommDataType recvtype,
90  int source) override final;
92  void *buf, int count, CommDataType dt, int pSendProc,
93  int pRecvProc) override final;
94  LIB_UTILITIES_EXPORT virtual void v_AllReduce(
95  void *buf, int count, CommDataType dt,
96  enum ReduceOperator pOp) override final;
97  LIB_UTILITIES_EXPORT virtual void v_AlltoAll(
98  void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf,
99  int recvcount, CommDataType recvtype) override final;
100  LIB_UTILITIES_EXPORT virtual void v_AlltoAllv(
101  void *sendbuf, int sendcounts[], int sensdispls[],
102  CommDataType sendtype, void *recvbuf, int recvcounts[], int rdispls[],
103  CommDataType recvtype) override final;
104  LIB_UTILITIES_EXPORT virtual void v_AllGather(
105  void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf,
106  int recvcount, CommDataType recvtype) override final;
107  LIB_UTILITIES_EXPORT virtual void v_AllGatherv(
108  void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf,
109  int recvcounts[], int rdispls[], CommDataType recvtype) override final;
110  LIB_UTILITIES_EXPORT virtual void v_AllGatherv(
111  void *recvbuf, int recvcounts[], int rdispls[],
112  CommDataType recvtype) override final;
113  LIB_UTILITIES_EXPORT virtual void v_Bcast(void *buffer, int count,
114  CommDataType dt,
115  int root) override final;
116  LIB_UTILITIES_EXPORT virtual void v_Exscan(
117  Array<OneD, unsigned long long> &pData, const enum ReduceOperator pOp,
118  Array<OneD, unsigned long long> &ans) override final;
119  LIB_UTILITIES_EXPORT virtual void v_Gather(void *sendbuf, int sendcount,
120  CommDataType sendtype,
121  void *recvbuf, int recvcount,
122  CommDataType recvtype,
123  int root) override final;
124  LIB_UTILITIES_EXPORT virtual void v_Scatter(void *sendbuf, int sendcount,
125  CommDataType sendtype,
126  void *recvbuf, int recvcount,
127  CommDataType recvtype,
128  int root) override final;
129 
131  int indegree, const int sources[], const int sourceweights[],
132  int reorder) override final;
133 
135  void *sendbuf, int sendcounts[], int sdispls[], CommDataType sendtype,
136  void *recvbuf, int recvcounts[], int rdispls[],
137  CommDataType recvtype) override final;
138 
139  LIB_UTILITIES_EXPORT virtual void v_Irsend(void *buf, int count,
140  CommDataType dt, int dest,
141  CommRequestSharedPtr request,
142  int loc) override final;
143 
144  LIB_UTILITIES_EXPORT virtual void v_Isend(void *buf, int count,
145  CommDataType dt, int dest,
146  CommRequestSharedPtr request,
147  int loc) final;
148 
149  LIB_UTILITIES_EXPORT virtual void v_SendInit(void *buf, int count,
150  CommDataType dt, int dest,
151  CommRequestSharedPtr request,
152  int loc) override final;
153 
154  LIB_UTILITIES_EXPORT virtual void v_Irecv(void *buf, int count,
155  CommDataType dt, int source,
156  CommRequestSharedPtr request,
157  int loc) override final;
158 
159  LIB_UTILITIES_EXPORT virtual void v_RecvInit(void *buf, int count,
160  CommDataType dt, int source,
161  CommRequestSharedPtr request,
162  int loc) override final;
163 
164  LIB_UTILITIES_EXPORT virtual void v_StartAll(
165  CommRequestSharedPtr request) override final;
166  LIB_UTILITIES_EXPORT virtual void v_WaitAll(
167  CommRequestSharedPtr request) override final;
169  int num) override final;
170 
171  LIB_UTILITIES_EXPORT virtual void v_SplitComm(int pRows, int pColumns,
172  int pTime) override;
174  int flag) override final;
175 };
176 } // namespace LibUtilities
177 } // namespace Nektar
178 
179 #endif
#define LIB_UTILITIES_EXPORT
Base communications class.
Definition: Comm.h:90
A global linear system.
Definition: CommSerial.h:55
virtual void v_SendInit(void *buf, int count, CommDataType dt, int dest, CommRequestSharedPtr request, int loc) override final
Definition: CommSerial.cpp:264
virtual NekDouble v_Wtime() override final
Definition: CommSerial.cpp:110
virtual void v_AllGatherv(void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcounts[], int rdispls[], CommDataType recvtype) override final
Definition: CommSerial.cpp:193
virtual void v_Recv(void *buf, int count, CommDataType dt, int source) override final
Definition: CommSerial.cpp:126
virtual void v_WaitAll(CommRequestSharedPtr request) override final
Definition: CommSerial.cpp:282
virtual void v_DistGraphCreateAdjacent(int indegree, const int sources[], const int sourceweights[], int reorder) override final
Definition: CommSerial.cpp:236
virtual void v_Finalise() override final
Definition: CommSerial.cpp:64
virtual void v_Send(void *buf, int count, CommDataType dt, int dest) override final
Definition: CommSerial.cpp:118
static CommSharedPtr create(int narg, char *arg[])
Creates an instance of this class.
Definition: CommSerial.h:58
virtual void v_SplitComm(int pRows, int pColumns, int pTime) override
Definition: CommSerial.cpp:301
virtual void v_Isend(void *buf, int count, CommDataType dt, int dest, CommRequestSharedPtr request, int loc) final
Definition: CommSerial.cpp:258
virtual void v_Gather(void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype, int root) override final
Definition: CommSerial.cpp:220
virtual bool v_TreatAsRankZero() override
Definition: CommSerial.cpp:82
virtual CommRequestSharedPtr v_CreateRequest(int num) override final
Definition: CommSerial.cpp:292
CommSerial(int argc, char *argv[])
Definition: CommSerial.cpp:50
virtual void v_Irsend(void *buf, int count, CommDataType dt, int dest, CommRequestSharedPtr request, int loc) override final
Definition: CommSerial.cpp:252
virtual void v_AlltoAllv(void *sendbuf, int sendcounts[], int sensdispls[], CommDataType sendtype, void *recvbuf, int recvcounts[], int rdispls[], CommDataType recvtype) override final
Definition: CommSerial.cpp:173
virtual void v_AllReduce(void *buf, int count, CommDataType dt, enum ReduceOperator pOp) override final
Definition: CommSerial.cpp:154
virtual void v_Block() override final
Definition: CommSerial.cpp:103
static std::string className
Name of class.
Definition: CommSerial.h:64
virtual void v_SendRecv(void *sendbuf, int sendcount, CommDataType sendtype, int dest, void *recvbuf, int recvcount, CommDataType recvtype, int source) override final
Definition: CommSerial.cpp:134
virtual CommSharedPtr v_CommCreateIf(int flag) override final
Definition: CommSerial.cpp:310
virtual void v_Exscan(Array< OneD, unsigned long long > &pData, const enum ReduceOperator pOp, Array< OneD, unsigned long long > &ans) override final
Definition: CommSerial.cpp:213
virtual ~CommSerial() override
virtual void v_Bcast(void *buffer, int count, CommDataType dt, int root) override final
Definition: CommSerial.cpp:208
virtual bool v_IsSerial() override
Definition: CommSerial.cpp:90
virtual void v_NeighborAlltoAllv(void *sendbuf, int sendcounts[], int sdispls[], CommDataType sendtype, void *recvbuf, int recvcounts[], int rdispls[], CommDataType recvtype) override final
Definition: CommSerial.cpp:243
virtual void v_Irecv(void *buf, int count, CommDataType dt, int source, CommRequestSharedPtr request, int loc) override final
Definition: CommSerial.cpp:270
virtual void v_StartAll(CommRequestSharedPtr request) override final
Definition: CommSerial.cpp:287
virtual void v_Scatter(void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype, int root) override final
Definition: CommSerial.cpp:228
virtual void v_SendRecvReplace(void *buf, int count, CommDataType dt, int pSendProc, int pRecvProc) override final
Definition: CommSerial.cpp:145
virtual void v_AllGather(void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype) override final
Definition: CommSerial.cpp:185
virtual int v_GetRank() override
Definition: CommSerial.cpp:74
virtual void v_AlltoAll(void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype) override final
Definition: CommSerial.cpp:163
virtual std::tuple< int, int, int > v_GetVersion() override final
Definition: CommSerial.cpp:95
virtual void v_RecvInit(void *buf, int count, CommDataType dt, int source, CommRequestSharedPtr request, int loc) override final
Definition: CommSerial.cpp:276
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
array buffer
Definition: GsLib.hpp:83
unsigned int CommDataType
Definition: CommDataType.h:70
std::shared_ptr< CommRequest > CommRequestSharedPtr
Definition: Comm.h:86
ReduceOperator
Type of operation to perform in AllReduce.
Definition: Comm.h:67
std::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object.
Definition: Comm.h:54
std::shared_ptr< CommSerial > CommSerialSharedPtr
Pointer to a Communicator object.
Definition: CommSerial.h:48
The above copyright notice and this permission notice shall be included.
Definition: CoupledSolver.h:2
double NekDouble