47 #ifndef ZOLTAN2_DIRECTORY_COMM_H_
48 #define ZOLTAN2_DIRECTORY_COMM_H_
50 #include <Teuchos_CommHelpers.hpp>
53 #include <Teuchos_ArrayRCP.hpp>
67 void print(
const std::string& headerMessage)
const;
114 Teuchos::RCP<const Teuchos::Comm<int> >
comm;
116 Teuchos::ArrayRCP<Teuchos::RCP<Teuchos::CommRequest<int> > >
request;
128 const Teuchos::ArrayRCP<int> &assign,
129 Teuchos::RCP<
const Teuchos::Comm<int> > comm,
136 const Teuchos::ArrayRCP<char> &send_data,
138 Teuchos::ArrayRCP<char> &recv_data);
142 const Teuchos::ArrayRCP<char> &send_data,
144 const Teuchos::ArrayRCP<int> &sizes,
145 Teuchos::ArrayRCP<char> &recv_data);
153 int resize(
const Teuchos::ArrayRCP<int> &sizes,
int tag,
154 int *sum_recv_sizes);
158 const Teuchos::ArrayRCP<int> &sizes,
int tag,
int *sum_recv_sizes);
161 const Teuchos::ArrayRCP<char> &send_data,
163 Teuchos::ArrayRCP<char> &recv_data);
166 const Teuchos::ArrayRCP<char> &send_data,
168 Teuchos::ArrayRCP<char> &recv_data);
171 const Teuchos::ArrayRCP<char> &send_data,
173 Teuchos::ArrayRCP<char> &recv_data);
175 int sort_ints(Teuchos::ArrayRCP<int> &vals_sort, Teuchos::ArrayRCP<int> &vals_other);
177 int invert_map(
const Teuchos::ArrayRCP<int> &lengths_to,
178 const Teuchos::ArrayRCP<int> &procs_to,
int nsends,
int self_msg,
179 Teuchos::ArrayRCP<int> &lengths_from, Teuchos::ArrayRCP<int> &procs_from,
180 int *pnrecvs,
int my_proc,
int nprocs,
int out_of_mem,
int tag,
181 Teuchos::RCP<
const Teuchos::Comm<int> > comm);
183 int exchange_sizes(
const Teuchos::ArrayRCP<int> &sizes_to,
184 const Teuchos::ArrayRCP<int> &procs_to,
int nsends,
185 int self_msg, Teuchos::ArrayRCP<int> &sizes_from,
186 const Teuchos::ArrayRCP<int> &procs_from,
187 int nrecvs,
int *total_recv_size,
int my_proc,
int tag,
188 Teuchos::RCP<
const Teuchos::Comm<int> > comm);
192 int create_reverse_plan(
int tag,
const Teuchos::ArrayRCP<int> &sizes);
194 Teuchos::RCP<const Teuchos::Comm<int> > comm_;
204 #ifndef MPI_RECV_LIMIT
213 #define MPI_RECV_LIMIT 0
~Zoltan2_Directory_Plan()
Teuchos::ArrayRCP< int > procs_from
Teuchos::ArrayRCP< int > indices_to
Teuchos::ArrayRCP< int > lengths_to
Teuchos::ArrayRCP< char > recv_buff
Teuchos::ArrayRCP< int > indices_from_ptr
Teuchos::ArrayRCP< int > starts_from
void print(const std::string &headerMessage) const
Teuchos::ArrayRCP< int > procs_to
int do_reverse(int tag, const Teuchos::ArrayRCP< char > &send_data, int nbytes, const Teuchos::ArrayRCP< int > &sizes, Teuchos::ArrayRCP< char > &recv_data)
Teuchos::ArrayRCP< char > getRecvBuff() const
~Zoltan2_Directory_Comm()
Teuchos::ArrayRCP< int > starts_to
int get_plan_forward_recv_size() const
Teuchos::ArrayRCP< int > indices_to_ptr
Teuchos::ArrayRCP< int > indices_from
Teuchos::ArrayRCP< int > starts_from_ptr
Teuchos::ArrayRCP< int > sizes_from
Teuchos::ArrayRCP< int > sizes_to
int do_forward(int tag, const Teuchos::ArrayRCP< char > &send_data, int nbytes, Teuchos::ArrayRCP< char > &recv_data)
Teuchos::ArrayRCP< Teuchos::RCP< Teuchos::CommRequest< int > > > request
int resize(const Teuchos::ArrayRCP< int > &sizes, int tag, int *sum_recv_sizes)
Teuchos::ArrayRCP< int > lengths_from
Teuchos::ArrayRCP< int > sizes
Zoltan2_Directory_Plan * plan_reverse
Teuchos::RCP< const Teuchos::Comm< int > > comm
Zoltan2_Directory_Comm(int nvals, const Teuchos::ArrayRCP< int > &assign, Teuchos::RCP< const Teuchos::Comm< int > > comm, int tag)
Teuchos::ArrayRCP< int > starts_to_ptr
void getInvertedValues(Zoltan2_Directory_Plan *from)