20 xt_initialize(MPI_COMM_WORLD);
22 int comm_rank, comm_size;
23 MPI_Comm_rank(MPI_COMM_WORLD, &comm_rank);
24 MPI_Comm_size(MPI_COMM_WORLD, &comm_size);
25 MPI_Barrier(MPI_COMM_WORLD);
30 PUT_ERR(
"ERROR: wrong number of processes");
42 point_infos[comm_rank],
count[comm_rank], MPI_COMM_WORLD);
46 int src_data[1] = {0}, tgt_data[1] = {-1};
47 xt_redist_s_exchange1(redist, src_data, tgt_data);
49 int ref_tgt_data[
NUM_PROCS][1] = {{-1},{-1},{-1}};
51 for (
size_t i = 0;
i <
count[comm_rank]; ++
i)
52 if (ref_tgt_data[comm_rank][i] != tgt_data[i])
53 PUT_ERR(
"error in empty exchange");
55 xt_redist_delete(redist);
65 .rank = 0, .orig_pos = 0}}},
70 .rank = 0, .orig_pos = 0}}},
75 .rank = 0, .orig_pos = 0}}}};
80 point_infos[comm_rank], count[comm_rank], MPI_COMM_WORLD);
84 int src_data[1] = {0}, tgt_data[1] = {-1};
85 xt_redist_s_exchange1(redist, src_data, tgt_data);
87 int ref_tgt_data[
NUM_PROCS][1] = {{0},{0},{0}};
89 for (
size_t i = 0;
i < count[comm_rank]; ++
i)
90 if (ref_tgt_data[comm_rank][i] != tgt_data[i])
91 PUT_ERR(
"error in bcast exchange");
93 xt_redist_delete(redist);
103 .rank = 0, .orig_pos = 0}},
108 .rank = 1, .orig_pos = 0}},
113 .rank = 2, .orig_pos = 0}}},
118 .rank = -1, .orig_pos = 999}}},
123 .rank = -1, .orig_pos = 999}}}};
128 point_infos[comm_rank], count[comm_rank], MPI_COMM_WORLD);
132 int src_data[1] = {comm_rank}, tgt_data[3] = {-1, -1, -1};
133 xt_redist_s_exchange1(redist, src_data, tgt_data);
135 int ref_tgt_data[
NUM_PROCS][3] = {{0, 1, 2},{-1},{-1}};
137 for (
size_t i = 0;
i < count[comm_rank]; ++
i)
138 if (ref_tgt_data[comm_rank][i] != tgt_data[i])
139 PUT_ERR(
"error in gather exchange");
141 xt_redist_delete(redist);
151 .rank = 0, .orig_pos = 0}},
156 .rank = 1, .orig_pos = 0}},
161 .rank = 2, .orig_pos = 0}}},
166 .rank = 0, .orig_pos = 0}},
171 .rank = 1, .orig_pos = 0}},
176 .rank = 2, .orig_pos = 0}}},
181 .rank = 0, .orig_pos = 0}},
186 .rank = 1, .orig_pos = 0}},
191 .rank = 2, .orig_pos = 0}}}};
196 point_infos[comm_rank], count[comm_rank], MPI_COMM_WORLD);
200 int src_data[1] = {comm_rank}, tgt_data[3] = {-1, -1, -1};
201 xt_redist_s_exchange1(redist, src_data, tgt_data);
203 int ref_tgt_data[
NUM_PROCS][3] = {{0, 1, 2},{0, 1, 2},{0, 1, 2}};
205 for (
size_t i = 0;
i < count[comm_rank]; ++
i)
206 if (ref_tgt_data[comm_rank][i] != tgt_data[i])
207 PUT_ERR(
"error in allgather exchange");
209 xt_redist_delete(redist);
219 .rank = 0, .orig_pos = 0}},
224 .rank = 1, .orig_pos = 0}},
229 .rank = 2, .orig_pos = 0}}},
234 .rank = 0, .orig_pos = 1}},
239 .rank = 1, .orig_pos = 1}},
244 .rank = 2, .orig_pos = 1}}},
249 .rank = 0, .orig_pos = 2}},
254 .rank = 1, .orig_pos = 2}},
259 .rank = 2, .orig_pos = 2}}}};
264 point_infos[comm_rank], count[comm_rank], MPI_COMM_WORLD);
268 int src_data[3] = {comm_rank *
NUM_PROCS + 0,
270 comm_rank *
NUM_PROCS + 2}, tgt_data[3] = {-1, -1, -1};
271 xt_redist_s_exchange1(redist, src_data, tgt_data);
273 int ref_tgt_data[
NUM_PROCS][3] = {{0, 3, 6},{1, 4, 7},{2, 5, 8}};
275 for (
size_t i = 0;
i < count[comm_rank]; ++
i)
276 if (ref_tgt_data[comm_rank][i] != tgt_data[i])
277 PUT_ERR(
"error in all2all exchange");
279 xt_redist_delete(redist);
single location information of a point
location information about a point that is located on one or
yac_xmap yac_xmap_from_point_infos(struct remote_point_infos *point_infos, size_t count, MPI_Comm comm)
void yac_xmap_delete(yac_xmap xmap)
Xt_redist yac_xmap_generate_redist(yac_xmap xmap, MPI_Datatype base_type)