29#ifndef __PASO_COUPLER_H__
30#define __PASO_COUPLER_H__
42template<
typename Scalar>
struct Coupler;
43template<
typename T>
using Coupler_ptr = boost::shared_ptr<Coupler<T> >;
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));
98template<
typename Scalar>
104 void startCollect(
const Scalar* in);
105 Scalar* finishCollect();
107 void fillOverlap(dim_t n, Scalar* x);
108 void max(dim_t n, Scalar* 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;
int MPI_Request
Definition EsysMPI.h:45
int MPI_Status
Definition EsysMPI.h:47
PasoException exception class.
Definition PasoException.h:34
boost::shared_ptr< JMPI_ > JMPI
Definition EsysMPI.h:76
Definition BiCGStab.cpp:25
boost::shared_ptr< const Coupler< T > > const_Coupler_ptr
Definition Coupler.h:44
boost::shared_ptr< const Connector > const_Connector_ptr
Definition Coupler.h:40
boost::shared_ptr< Connector > Connector_ptr
Definition Coupler.h:39
boost::shared_ptr< SharedComponents > SharedComponents_ptr
Definition SharedComponents.h:37
boost::shared_ptr< Coupler< T > > Coupler_ptr
Definition Coupler.h:43
#define PASO_DLL_API
Definition paso/src/system_dep.h:29
Connector(SharedComponents_ptr s, SharedComponents_ptr r)
Definition Coupler.h:51
Connector_ptr copy() const
creates a copy
Definition Coupler.h:62
SharedComponents_ptr recv
Definition Coupler.h:49
Connector_ptr unroll(index_t block_size) const
Definition Coupler.h:64
SharedComponents_ptr send
Definition Coupler.h:48
const Scalar * borrowLocalData() const
Definition Coupler.h:110
dim_t getNumOverlapValues() const
Definition Coupler.h:129
void max(dim_t n, Scalar *x)
Scalar * recv_buffer
Definition Coupler.h:146
dim_t getLocalLength() const
Definition Coupler.h:134
escript::JMPI mpi_info
Definition Coupler.h:149
const_Connector_ptr connector
Definition Coupler.h:139
bool in_use
Definition Coupler.h:141
MPI_Request * mpi_requests
Definition Coupler.h:147
const Scalar * borrowRemoteData() const
Definition Coupler.h:112
Scalar * data
Definition Coupler.h:144
dim_t getNumOverlapComponents() const
Definition Coupler.h:119
MPI_Status * mpi_stati
Definition Coupler.h:148
Scalar * send_buffer
Definition Coupler.h:145
dim_t getNumSharedComponents() const
Definition Coupler.h:114
dim_t getNumSharedValues() const
Definition Coupler.h:124
dim_t block_size
Definition Coupler.h:140
Definition SharedComponents.h:41