9 #ifndef OPENFPM_VCLUSTER_SRC_MPI_WRAPPER_MPI_IBCASTW_HPP_
10 #define OPENFPM_VCLUSTER_SRC_MPI_WRAPPER_MPI_IBCASTW_HPP_
35 static inline void bcast(
size_t proc ,
void * buf,
size_t sz, MPI_Request & req, MPI_Comm ext_comm)
37 MPI_SAFE_CALL(MPI_Ibcast(buf,sz,MPI_BYTE, proc , ext_comm,&req));
50 template<
typename Memory>
static inline void bcast(
size_t proc ,
openfpm::vector<T, Memory> & v, MPI_Request & req, MPI_Comm ext_comm)
52 MPI_SAFE_CALL(MPI_Ibcast(v.getPointer(), v.size() *
sizeof(T),MPI_BYTE, proc , ext_comm,&req));
63 static inline void bcast(
size_t proc ,
openfpm::vector<int> & v, MPI_Request & req, MPI_Comm ext_comm)
65 MPI_SAFE_CALL(MPI_Ibcast(v.getPointer(), v.size(),MPI_INT, proc , ext_comm,&req));
77 MPI_SAFE_CALL(MPI_Ibcast(v.getPointer(), v.size(),MPI_UNSIGNED, proc , ext_comm,&req));
89 MPI_SAFE_CALL(MPI_Ibcast(v.getPointer(), v.size(),MPI_SHORT, proc , ext_comm,&req));
101 MPI_SAFE_CALL(MPI_Ibcast(v.getPointer(), v.size(),MPI_UNSIGNED_SHORT, proc , ext_comm,&req));
111 static inline void bcast(
size_t proc ,
openfpm::vector<char> & v, MPI_Request & req, MPI_Comm ext_comm)
113 MPI_SAFE_CALL(MPI_Ibcast(v.getPointer(), v.size(),MPI_CHAR, proc , ext_comm,&req));
125 MPI_SAFE_CALL(MPI_Ibcast(v.getPointer(), v.size(),MPI_UNSIGNED_CHAR, proc , ext_comm,&req));
137 MPI_SAFE_CALL(MPI_Ibcast(v.getPointer(), v.size(),MPI_UNSIGNED_LONG, proc , ext_comm,&req));
149 MPI_SAFE_CALL(MPI_Ibcast(v.getPointer(), v.size(),MPI_LONG, proc , ext_comm,&req));
161 MPI_SAFE_CALL(MPI_Ibcast(v.getPointer(), v.size(),MPI_FLOAT, proc , ext_comm,&req));
173 MPI_SAFE_CALL(MPI_Ibcast(v.getPointer(), v.size(),MPI_DOUBLE, proc , ext_comm,&req));
185 template<
typename vect>
215 typedef typename boost::mpl::at<typename vect::value_type::type,T>::type send_type;
225 template<
bool is_lin_or_
inte>
228 template<
typename T,
typename Mem,
template<
typename>
class layout_base >
231 size_t root, MPI_Comm ext_comm)
244 template<
typename T,
typename Mem,
template<
typename>
class layout_base >
247 size_t root, MPI_Comm ext_comm)
251 boost::mpl::for_each_ref<boost::mpl::range_c<int,0,T::max_prop>>(bc);
Set of wrapping classing for MPI_Irecv.
General recv for vector of.
Implementation of 1-D std::vector like structure.
KeyT const ValueT ValueT OffsetIteratorT OffsetIteratorT int
[in] The number of segments that comprise the sorting data
this class is a functor for "for_each" algorithm
void operator()(T &t)
It call the copy function for each property.
vect & send
vector to broadcast
bcast_inte_impl(vect &send, openfpm::vector< MPI_Request > &req, size_t root, MPI_Comm ext_comm=MPI_COMM_WORLD)
constructor
openfpm::vector< MPI_Request > & req
vector of requests
MPI_Comm ext_comm
External Communicator.
size_t root
root processor