11 #include <unordered_map> 22 template<
typename P_SRC,
typename P_DST>
struct MotionItem;
59 template<
class OP,
typename P_SRC,
typename P_DST, MemType SRC_MEM, MemType DST_MEM>
62 template<
typename PP_SRC,
typename PP_DST>
friend class MotionItem;
74 inline void define(OP a_op);
85 inline void print()
const;
123 mutable std::vector<BufferEntry<P_SRC, P_DST>> m_fromMe;
124 mutable std::vector<BufferEntry<P_SRC, P_DST>> m_toMe;
126 mutable int m_numSends;
127 mutable int m_numRecvs;
129 mutable std::vector<MPI_Request> m_sendRequests, m_recvRequests;
130 mutable std::vector<MPI_Status> m_sendStatus, m_recvStatus;
137 template<
typename P_SRC,
typename P_DST>
145 inline bool operator<(
const BufferEntry& a_rhs)
const;
148 template<
typename P_SRC,
typename P_DST>
162 const Box& a_fromRegion,
163 const Box& a_toRegion);
166 inline bool operator<(const MotionItem<P_SRC, P_DST>& a_rhs)
const;
172 template<
typename P_SRC,
typename P_DST>
181 inline void operator++();
184 inline size_t size()
const;
193 #include "implem/Proto_CopierImplem.H" 195 #endif //end include guard CopierIterator< P_SRC, P_DST > begin(MotionType a_type) const
Definition: Proto_Copier.H:124
Box fromRegion
Definition: Proto_Copier.H:153
Copier< OP, P_SRC, P_DST, SRC_MEM, DST_MEM > & operator=(const Copier< OP, P_SRC, P_DST, SRC_MEM, DST_MEM > &a_rhs)=delete
void clearMotionPlan()
Definition: Proto_Copier.H:71
OP m_op
Definition: Proto_Copier.H:90
std::vector< MotionItem< P_SRC, P_DST > > m_localMotionPlan
Definition: Proto_Copier.H:92
void completePendingSends() const
Definition: Proto_Copier.H:197
friend class MotionItem
Definition: Proto_Copier.H:62
friend class CopierIterator
Definition: Proto_Copier.H:63
void print() const
Definition: Proto_Copier.H:463
Box toRegion
Definition: Proto_Copier.H:154
CoordPermutation rotation
Definition: Proto_Copier.H:156
unsigned int procID
Definition: Proto_Copier.H:143
Definition: Proto_Copier.H:23
void makeItSoLocal()
Definition: Proto_Copier.H:173
void makeItSo()
Definition: Proto_Copier.H:143
Defines discrete rotations in logically rectangular coordinate systems.
Definition: Proto_CoordPermutation.H:13
const MotionItem< P_SRC, P_DST > * item
Definition: Proto_Copier.H:142
void * m_sendBuffer
Definition: Proto_Copier.H:118
virtual void buildMotionPlans(OP &a_op)=0
Definition: Proto_Copier.H:29
Definition: Proto_Copier.H:27
Copier()
Definition: Proto_Copier.H:6
std::vector< MotionItem< P_SRC, P_DST > > m_toMotionPlan
Definition: Proto_Copier.H:94
An interval in DIM dimensional space.
Definition: Proto_Box.H:29
void clearBuffers()
Definition: Proto_Copier.H:46
unsigned int m_current
Definition: Proto_Copier.H:189
void allocateBuffers()
Definition: Proto_Copier.H:216
void postSends() const
Definition: Proto_Copier.H:309
void * m_recvBuffer
Definition: Proto_Copier.H:119
std::vector< MotionItem< P_SRC, P_DST > > m_fromMotionPlan
Definition: Proto_Copier.H:93
bool m_isDefined
Definition: Proto_Copier.H:96
size_t m_sendCapacity
Definition: Proto_Copier.H:116
std::vector< MotionItem< P_SRC, P_DST > > & motionPlan(MotionType a_type)
Definition: Proto_Copier.H:90
MotionType
Definition: Proto_Copier.H:25
DataIndex< P_DST > toIndex
Definition: Proto_Copier.H:152
Definition: Proto_Array.H:17
void makeItSoEnd()
Definition: Proto_Copier.H:186
void clear()
Definition: Proto_Copier.H:64
void define(OP a_op)
Definition: Proto_Copier.H:35
ACCEL_DECORATION Array< T, N > & operator*(int scale, Array< T, N > &arr)
Premultiplication by a scalar int.
bool operator==(const Copier< OP, P_SRC, P_DST, SRC_MEM, DST_MEM > &a_rhs) const
Definition: Proto_Copier.H:103
void postRecvs() const
Definition: Proto_Copier.H:405
virtual ~Copier()
Definition: Proto_Copier.H:28
void readFromRecvBuffers()
Definition: Proto_Copier.H:374
size_t size
Definition: Proto_Copier.H:141
DataIndex< P_SRC > fromIndex
Definition: Proto_Copier.H:151
void * buffer
Definition: Proto_Copier.H:140
void makeItSoBegin()
Definition: Proto_Copier.H:152
Definition: Proto_Copier.H:21
MotionItem()
Definition: Proto_Copier.H:158
void execute()
Definition: Proto_Copier.H:112
int procID
Definition: Proto_Copier.H:155
void sort()
Definition: Proto_Copier.H:82
Abstract Generic Parallel Copier.
Definition: Proto_Copier.H:60
const vector< MotionItem< P_SRC, P_DST > > * m_motionPlan
Definition: Proto_Copier.H:188
void writeToSendBuffers()
Definition: Proto_Copier.H:294
Definition: Proto_Copier.H:28
size_t m_recvCapacity
Definition: Proto_Copier.H:117
Definition: Proto_Copier.H:22