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
43namespace Nektar
44{
45namespace LibUtilities
46{
47// Forward declarations
48class CommSerial;
49
50/// Pointer to a Communicator object.
51typedef std::shared_ptr<CommSerial> CommSerialSharedPtr;
52
53/// A global linear system.
54class CommSerial : public Comm
55{
56public:
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[]);
68
69protected:
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 LIB_UTILITIES_EXPORT virtual void v_Block() override final;
77 LIB_UTILITIES_EXPORT virtual NekDouble v_Wtime() override final;
78
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;
91
93 void *buf, int count, CommDataType dt,
94 enum ReduceOperator pOp) override final;
95
97 void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf,
98 int recvcount, CommDataType recvtype) override final;
100 void *sendbuf, int sendcounts[], int sensdispls[],
101 CommDataType sendtype, void *recvbuf, int recvcounts[], int rdispls[],
102 CommDataType recvtype) override final;
103
105 void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf,
106 int recvcount, CommDataType recvtype) override final;
108 void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf,
109 int recvcounts[], int rdispls[], CommDataType recvtype) override final;
111 void *recvbuf, int recvcounts[], int rdispls[],
112 CommDataType recvtype) override final;
113
114 LIB_UTILITIES_EXPORT virtual void v_Bcast(void *buffer, int count,
115 CommDataType dt,
116 int root) override final;
117 LIB_UTILITIES_EXPORT virtual void v_Gather(void *sendbuf, int sendcount,
118 CommDataType sendtype,
119 void *recvbuf, int recvcount,
120 CommDataType recvtype,
121 int root) override final;
122 LIB_UTILITIES_EXPORT virtual void v_Scatter(void *sendbuf, int sendcount,
123 CommDataType sendtype,
124 void *recvbuf, int recvcount,
125 CommDataType recvtype,
126 int root) override final;
127
129 int indegree, const int sources[], const int sourceweights[],
130 int reorder) override final;
132 void *sendbuf, int sendcounts[], int sdispls[], CommDataType sendtype,
133 void *recvbuf, int recvcounts[], int rdispls[],
134 CommDataType recvtype) override final;
135
136 LIB_UTILITIES_EXPORT virtual void v_Irsend(void *buf, int count,
137 CommDataType dt, int dest,
138 CommRequestSharedPtr request,
139 int loc) override final;
140 LIB_UTILITIES_EXPORT virtual void v_Isend(void *buf, int count,
141 CommDataType dt, int dest,
142 CommRequestSharedPtr request,
143 int loc) final;
144 LIB_UTILITIES_EXPORT virtual void v_SendInit(void *buf, int count,
145 CommDataType dt, int dest,
146 CommRequestSharedPtr request,
147 int loc) override final;
148 LIB_UTILITIES_EXPORT virtual void v_Irecv(void *buf, int count,
149 CommDataType dt, int source,
150 CommRequestSharedPtr request,
151 int loc) override final;
152 LIB_UTILITIES_EXPORT virtual void v_RecvInit(void *buf, int count,
153 CommDataType dt, int source,
154 CommRequestSharedPtr request,
155 int loc) override final;
156
157 LIB_UTILITIES_EXPORT virtual void v_StartAll(
158 CommRequestSharedPtr request) override final;
159 LIB_UTILITIES_EXPORT virtual void v_WaitAll(
160 CommRequestSharedPtr request) override final;
161
163 int num) override final;
164 LIB_UTILITIES_EXPORT virtual void v_SplitComm(int pRows, int pColumns,
165 int pTime) override;
167 int flag) override final;
168};
169} // namespace LibUtilities
170} // namespace Nektar
171
172#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:281
virtual NekDouble v_Wtime() override final
Definition: CommSerial.cpp:113
virtual void v_AllGatherv(void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcounts[], int rdispls[], CommDataType recvtype) override final
Definition: CommSerial.cpp:190
virtual void v_Recv(void *buf, int count, CommDataType dt, int source) override final
Definition: CommSerial.cpp:129
virtual void v_WaitAll(CommRequestSharedPtr request) override final
Definition: CommSerial.cpp:316
virtual void v_DistGraphCreateAdjacent(int indegree, const int sources[], const int sourceweights[], int reorder) override final
Definition: CommSerial.cpp:241
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:121
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:333
virtual void v_Isend(void *buf, int count, CommDataType dt, int dest, CommRequestSharedPtr request, int loc) final
Definition: CommSerial.cpp:272
virtual void v_Gather(void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype, int root) override final
Definition: CommSerial.cpp:219
virtual bool v_TreatAsRankZero() override
Definition: CommSerial.cpp:82
virtual CommRequestSharedPtr v_CreateRequest(int num) override final
Definition: CommSerial.cpp:324
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:263
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:167
virtual void v_AllReduce(void *buf, int count, CommDataType dt, enum ReduceOperator pOp) override final
Definition: CommSerial.cpp:148
virtual void v_Block() override final
Definition: CommSerial.cpp:106
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:137
virtual CommSharedPtr v_CommCreateIf(int flag) override final
Definition: CommSerial.cpp:342
virtual ~CommSerial() override
virtual void v_Bcast(void *buffer, int count, CommDataType dt, int root) override final
Definition: CommSerial.cpp:211
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:251
virtual void v_Irecv(void *buf, int count, CommDataType dt, int source, CommRequestSharedPtr request, int loc) override final
Definition: CommSerial.cpp:290
virtual void v_StartAll(CommRequestSharedPtr request) override final
Definition: CommSerial.cpp:308
virtual void v_Scatter(void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype, int root) override final
Definition: CommSerial.cpp:230
virtual void v_AllGather(void *sendbuf, int sendcount, CommDataType sendtype, void *recvbuf, int recvcount, CommDataType recvtype) override final
Definition: CommSerial.cpp:179
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:157
virtual std::tuple< int, int, int > v_GetVersion() override final
Definition: CommSerial.cpp:98
virtual void v_RecvInit(void *buf, int count, CommDataType dt, int source, CommRequestSharedPtr request, int loc) override final
Definition: CommSerial.cpp:299
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:57
std::shared_ptr< CommSerial > CommSerialSharedPtr
Pointer to a Communicator object.
Definition: CommSerial.h:51
The above copyright notice and this permission notice shall be included.
Definition: CoupledSolver.h:2
double NekDouble