28 #ifndef __PASO_COUPLER_H__ 29 #define __PASO_COUPLER_H__ 53 if (s->local_length != r->local_length) {
54 throw PasoException(
"Connector: local length of send and recv " 55 "SharedComponents must match.");
70 send->neighbour, send->shared, send->offsetInShared,
74 recv->neighbour, recv->shared, recv->offsetInShared,
77 new_send_shcomp =
send;
78 new_recv_shcomp =
recv;
80 out.reset(
new Connector(new_send_shcomp, new_recv_shcomp));
104 void startCollect(
const double* in);
105 double* finishCollect();
106 void copyAll(Coupler_ptr target)
const;
107 void fillOverlap(
dim_t n,
double* x);
108 void max(
dim_t n,
double* x);
116 return connector->send->numSharedComponents;
121 return connector->recv->numSharedComponents;
126 return getNumSharedComponents() * block_size;
131 return getNumOverlapComponents() * block_size;
136 return connector->send->local_length;
155 #endif // __PASO_COUPLER_H__ dim_t getLocalLength() const
Definition: Coupler.h:134
#define PASO_DLL_API
Definition: Paso.h:58
boost::shared_ptr< const Coupler > const_Coupler_ptr
Definition: Coupler.h:43
const double * borrowLocalData() const
Definition: Coupler.h:110
Connector_ptr copy() const
creates a copy
Definition: Coupler.h:62
SharedComponents_ptr recv
Definition: Coupler.h:49
boost::shared_ptr< SharedComponents > SharedComponents_ptr
Definition: SharedComponents.h:35
int MPI_Status
Definition: EsysMPI.h:44
dim_t getNumOverlapValues() const
Definition: Coupler.h:129
bool in_use
Definition: Coupler.h:141
boost::shared_ptr< JMPI_ > JMPI
Definition: EsysMPI.h:71
double * send_buffer
Definition: Coupler.h:145
MPI_Request * mpi_requests
Definition: Coupler.h:147
Connector(SharedComponents_ptr s, SharedComponents_ptr r)
Definition: Coupler.h:51
dim_t block_size
Definition: Coupler.h:140
escript::JMPI mpi_info
Definition: Coupler.h:149
MPI_Status * mpi_stati
Definition: Coupler.h:148
double * data
Definition: Coupler.h:144
int index_t
type for array/matrix indices used both globally and on each rank
Definition: DataTypes.h:59
dim_t getNumSharedValues() const
Definition: Coupler.h:124
dim_t getNumOverlapComponents() const
Definition: Coupler.h:119
double * recv_buffer
Definition: Coupler.h:146
Connector_ptr unroll(index_t block_size) const
Definition: Coupler.h:64
SharedComponents_ptr send
Definition: Coupler.h:48
dim_t getNumSharedComponents() const
Definition: Coupler.h:114
int MPI_Request
Definition: EsysMPI.h:42
Definition: SharedComponents.h:40
boost::shared_ptr< Coupler > Coupler_ptr
Definition: Coupler.h:41
boost::shared_ptr< Connector > Connector_ptr
Definition: Coupler.h:37
boost::shared_ptr< const Connector > const_Connector_ptr
Definition: Coupler.h:39
PasoException exception class.
Definition: PasoException.h:32
const_Connector_ptr connector
Definition: Coupler.h:139
const double * borrowRemoteData() const
Definition: Coupler.h:112
index_t dim_t
Definition: DataTypes.h:64