Yet Another eXchange Tool 0.11.4
Loading...
Searching...
No Matches
yaxt.f90
Go to the documentation of this file.
1
13
14!
15! Keywords:
16! Maintainer: Jörg Behrens <behrens@dkrz.de>
17! Moritz Hanke <hanke@dkrz.de>
18! Thomas Jahns <jahns@dkrz.de>
19! URL: https://dkrz-sw.gitlab-pages.dkrz.de/yaxt/
20!
21! Redistribution and use in source and binary forms, with or without
22! modification, are permitted provided that the following conditions are
23! met:
24!
25! Redistributions of source code must retain the above copyright notice,
26! this list of conditions and the following disclaimer.
27!
28! Redistributions in binary form must reproduce the above copyright
29! notice, this list of conditions and the following disclaimer in the
30! documentation and/or other materials provided with the distribution.
31!
32! Neither the name of the DKRZ GmbH nor the names of its contributors
33! may be used to endorse or promote products derived from this software
34! without specific prior written permission.
35!
36! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
37! IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
38! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
39! PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
40! OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
41! EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
42! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
43! PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
44! LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
45! NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
46! SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47!
48#include "fc_feature_defs.inc"
49
50MODULE yaxt
51 !
52 ! Fortran interface to yaxt implementation
53 !
54 USE xt_core, ONLY: i4, xt_int_kind, xt_int_mpidt, &
55 xt_abort, xt_initialize, xt_get_default_comm, xt_stripe, xt_bounds, &
56 char, xt_finalize, xt_initialized, xt_finalized, xt_slice_c_loc, &
57 xt_pos_ext, OPERATOR(/=), OPERATOR(==), &
58 xt_set_abort_handler => set_abort_handler, xt_restore_default_abort_hndl
78 USE xt_sort, ONLY: xt_sort_int, xt_sort_index, xt_sort_idxpos, &
79 xt_sort_permutation, xt_assign_id_map
80 USE xt_idxlist_abstract, ONLY: &
81 xt_idxlist_f2c, xt_idxlist_c2f, xt_idxlist, &
83 xt_idxlist_pack => xt_idxlist_pack_f, &
84 xt_idxlist_unpack => xt_idxlist_unpack_f, xt_idxlist_copy, &
92 xt_idxlist_get_num_indices, xt_is_null, &
97 USE xt_idxvec, ONLY: xt_idxvec_from_stripes_new, xt_idxvec_new
99 USE xt_idxsection, ONLY: xt_idxsection_new, xt_idxfsection_new
100 USE xt_idxlist_collection, ONLY: xt_idxlist_collection_new
101 USE xt_xmap_abstract, ONLY: xt_xmap, xt_xmap_c2f, xt_xmap_f2c, &
114 xt_reorder_type_kind, xt_reorder_none, xt_reorder_send_up, &
115 xt_reorder_recv_up, xt_xmap_update_positions, xt_xmap_spread
118 USE xt_xmap_dist_dir_bucket_gen, ONLY: xt_xmdd_bucket_gen, &
120 xt_xmdd_bucket_gen_c2f, xt_xmdd_bucket_gen_f2c, &
121 xt_is_null
122#ifdef XT_HAVE_FC_HLF_STRUCT_RETURN
123 USE xt_xmap_dist_dir_bucket_gen2, ONLY: &
126 xt_dist_dir_bucket_gen_type_send, &
127 xt_dist_dir_bucket_gen_type_recv, &
128 xt_dist_dir_bucket_gen_type_sendrecv
129#endif
130 USE xt_xmap_intersection, ONLY: xt_xmap_intersection_new, &
133 USE xt_redist_base, ONLY: xt_redist, xt_redist_c2f, xt_redist_f2c, &
140 xt_redist_repeat_new, xt_is_null, xt_redist_get_mpi_comm, &
146 xt_redist_get_recv_mpi_datatype, xt_redist_get_send_mpi_datatype, &
149 USE xt_redist_int_i2, ONLY: xt_redist_s_exchange, xt_redist_a_exchange
150 USE xt_redist_int_i4, ONLY: xt_redist_s_exchange, xt_redist_a_exchange
151 USE xt_redist_int_i8, ONLY: xt_redist_s_exchange, xt_redist_a_exchange
152 USE xt_redist_logical, ONLY: xt_redist_s_exchange, xt_redist_a_exchange
153 USE xt_redist_real_sp, ONLY: xt_redist_s_exchange, xt_redist_a_exchange
154 USE xt_redist_real_dp, ONLY: xt_redist_s_exchange, xt_redist_a_exchange
155 USE xt_requests, ONLY: xt_request, xt_request_wait, xt_request_test, &
156 xt_is_null, xt_request_null
157 USE xt_mpi, ONLY: xt_mpi_comm_mark_exclusive, xt_mpi_fint_kind
158
159 USE iso_c_binding, ONLY: c_int, c_ptr, c_null_ptr, c_loc
160 IMPLICIT NONE
161
162 PRIVATE
163
164 PUBLIC :: xt_initialize, xt_finalize, xt_abort, xt_get_default_comm, &
166 xt_set_abort_handler, xt_restore_default_abort_hndl, &
167 xt_int_kind, xt_int_mpidt, xt_stripe, xt_bounds, xt_pos_ext
168 PUBLIC :: xt_idxlist, xt_idxlist_delete, &
169 xt_idxlist_c2f, xt_idxlist_f2c, xt_idxlist_copy, &
185 xt_idxlist_collection_new, xt_idxsection_new, xt_idxfsection_new, &
194 xt_reorder_type_kind, &
195 xt_reorder_none, xt_reorder_send_up, xt_reorder_recv_up, &
204 xt_redist, xt_redist_f2c, xt_redist_c2f, &
210 xt_redist_get_mpi_comm, &
211 xt_redist_get_recv_mpi_datatype, xt_redist_get_send_mpi_datatype, &
214 xt_redist_collection_new, xt_slice_c_loc, &
215 xt_is_null, &
216 OPERATOR(==), OPERATOR(/=), char, &
217 xt_request, xt_request_null, &
220 PUBLIC :: xt_mpi_fint_kind, &
222
223 PUBLIC :: xt_xmdd_bucket_gen
225 PUBLIC :: xt_xmdd_bucket_gen_c2f, xt_xmdd_bucket_gen_f2c
226#ifdef XT_HAVE_FC_HLF_STRUCT_RETURN
229 xt_dist_dir_bucket_gen_type_send, &
230 xt_dist_dir_bucket_gen_type_recv, &
231 xt_dist_dir_bucket_gen_type_sendrecv
232#endif
233
234 PUBLIC :: xt_sort_int, xt_sort_index, xt_sort_idxpos, xt_sort_permutation, &
235 xt_assign_id_map
240
260
267
268 INTERFACE OPERATOR(==)
269 MODULE PROCEDURE xt_bounds_eq
270 END INTERFACE OPERATOR(==)
271
272 INTERFACE OPERATOR(/=)
273 MODULE PROCEDURE xt_bounds_ne
274 END INTERFACE OPERATOR(/=)
275
276 TYPE, BIND(C), PUBLIC :: xt_modifier
277 TYPE(xt_idxlist) :: extract
278 TYPE(xt_idxlist) :: subst
279 INTEGER(c_int) :: mask
280 END TYPE xt_modifier
281
282 INTERFACE
283 FUNCTION xt_idxmod_new_c(patch, modifier, modifier_num, mstate_ptr) &
284 bind(c, name='xt_idxmod_new') result(res)
285 IMPORT :: xt_int_kind, xt_modifier, c_ptr, c_int
286 IMPLICIT NONE
287 TYPE(c_ptr), VALUE, INTENT(in) :: patch
288 INTEGER(c_int), VALUE, INTENT(in) :: modifier_num
289 TYPE(xt_modifier), INTENT(in) :: modifier(modifier_num)
290 TYPE(c_ptr), VALUE, INTENT(in) :: mstate_ptr
291 TYPE(c_ptr) :: res
292 END FUNCTION xt_idxmod_new_c
293 END INTERFACE
294
295 INTERFACE xt_idxmod_new
296 MODULE PROCEDURE xt_idxmod_new_a1d
297 MODULE PROCEDURE xt_idxmod_new_a1d_a1d
298 MODULE PROCEDURE xt_idxmod_new_a1d_i4
299 MODULE PROCEDURE xt_idxmod_new_a1d_i4_a1d
300 MODULE PROCEDURE xt_idxmod_new_a1d_i4_a2d
301 END INTERFACE xt_idxmod_new
302 CHARACTER(len=*), PARAMETER :: filename = 'yaxt.f90'
303CONTAINS
304
305 FUNCTION xt_idxempty_new() RESULT(res)
306 IMPLICIT NONE
307 TYPE(xt_idxlist) :: res
308
309 INTERFACE
310 FUNCTION xt_idxempty_new_c() &
311 bind(c, name='xt_idxempty_new') result(res_ptr)
312 IMPORT :: c_ptr
313 IMPLICIT NONE
314 TYPE(c_ptr) :: res_ptr
315 END FUNCTION xt_idxempty_new_c
316 END INTERFACE
317
318 res = xt_idxlist_c2f(xt_idxempty_new_c())
319
320 END FUNCTION xt_idxempty_new
321
322 ELEMENTAL FUNCTION xt_bounds_eq(a, b) RESULT(a_equals_b)
323 TYPE(xt_bounds), INTENT(in) :: a, b
324 LOGICAL :: a_equals_b
325 a_equals_b = a%size == b%size .AND. a%start == b%start
326 END FUNCTION xt_bounds_eq
327
328 ELEMENTAL FUNCTION xt_bounds_ne(a, b) RESULT(a_equals_b)
329 TYPE(xt_bounds), INTENT(in) :: a, b
330 LOGICAL :: a_equals_b
331 a_equals_b = a%size /= b%size .OR. a%start /= b%start
332 END FUNCTION xt_bounds_ne
333
334 FUNCTION xt_idxmod_new_a1d(patch, modifier) RESULT(res)
335 IMPLICIT NONE
336 TYPE(xt_idxlist), INTENT(in) :: patch
337 TYPE(xt_modifier), INTENT(in) :: modifier(:)
338 TYPE(xt_idxlist) :: res
339
340 INTEGER :: num_modifier
341 INTEGER(c_int) :: num_modifier_c
342 num_modifier = SIZE(modifier)
343 IF (num_modifier > huge(1_c_int)) &
344 CALL xt_abort("number of modifiers too high", filename, __line__)
345 num_modifier_c = int(num_modifier, c_int)
346 res = xt_idxlist_c2f(xt_idxmod_new_c(xt_idxlist_f2c(patch), modifier, &
347 num_modifier_c, c_null_ptr))
348 END FUNCTION xt_idxmod_new_a1d
349
350 FUNCTION xt_idxmod_new_a1d_a1d(patch, modifier, mstate) RESULT(res)
351 IMPLICIT NONE
352 TYPE(xt_idxlist), INTENT(in) :: patch
353 TYPE(xt_modifier), INTENT(in) :: modifier(:)
354 INTEGER(c_int), TARGET, INTENT(inout) :: mstate(*)
355 TYPE(xt_idxlist) :: res
356
357 INTEGER :: num_modifier
358 INTEGER(c_int) :: num_modifier_c
359 num_modifier = SIZE(modifier)
360 IF (num_modifier > huge(1_c_int)) &
361 CALL xt_abort("number of modifiers too high", filename, __line__)
362 num_modifier_c = int(num_modifier, c_int)
363 res = xt_idxlist_c2f(xt_idxmod_new_c(xt_idxlist_f2c(patch), modifier, &
364 num_modifier_c, c_loc(mstate)))
365 END FUNCTION xt_idxmod_new_a1d_a1d
366
367 FUNCTION xt_idxmod_new_a1d_i4(patch, modifier, num_modifier) RESULT(res)
368 IMPLICIT NONE
369 TYPE(xt_idxlist), INTENT(in) :: patch
370 TYPE(xt_modifier), INTENT(in) :: modifier(*)
371 INTEGER(i4), INTENT(in) :: num_modifier
372 TYPE(xt_idxlist) :: res
373 INTEGER(c_int) :: num_modifier_c
374
375 num_modifier_c = int(num_modifier, c_int)
376 res = xt_idxlist_c2f(xt_idxmod_new_c(xt_idxlist_f2c(patch), modifier, &
377 num_modifier_c, c_null_ptr))
378 END FUNCTION xt_idxmod_new_a1d_i4
379
380 FUNCTION xt_idxmod_new_a1d_i4_a1d(patch, modifier, num_modifier, mstate) &
381 result(res)
382 IMPLICIT NONE
383 TYPE(xt_idxlist), INTENT(in) :: patch
384 TYPE(xt_modifier), INTENT(in) :: modifier(*)
385 INTEGER(i4), INTENT(in) :: num_modifier
386 INTEGER(c_int), TARGET, INTENT(inout) :: mstate(*)
387 TYPE(xt_idxlist) :: res
388 INTEGER(c_int) :: num_modifier_c
389
390 num_modifier_c = int(num_modifier, c_int)
391 res = xt_idxlist_c2f(xt_idxmod_new_c(xt_idxlist_f2c(patch), modifier, &
392 num_modifier_c, c_loc(mstate)))
393 END FUNCTION xt_idxmod_new_a1d_i4_a1d
394
395 FUNCTION xt_idxmod_new_a1d_i4_a2d(patch, modifier, num_modifier, mstate) &
396 result(res)
397 IMPLICIT NONE
398 TYPE(xt_idxlist), INTENT(in) :: patch
399 TYPE(xt_modifier), INTENT(in) :: modifier(*)
400 INTEGER(i4), INTENT(in) :: num_modifier
401 INTEGER(c_int), TARGET, INTENT(inout) :: mstate(1,*)
402 TYPE(xt_idxlist) :: res
403 INTEGER(c_int) :: num_modifier_c
404
405 num_modifier_c = int(num_modifier, c_int)
406 res = xt_idxlist_c2f(xt_idxmod_new_c(xt_idxlist_f2c(patch), modifier, &
407 num_modifier_c, c_loc(mstate)))
408 END FUNCTION xt_idxmod_new_a1d_i4_a2d
409
410END MODULE yaxt
411!
412! Local Variables:
413! f90-continuation-indent: 5
414! coding: utf-8
415! indent-tabs-mode: nil
416! show-trailing-whitespace: t
417! require-trailing-newline: t
418! End:
419!
describes range of positions starting with start up to start + size - 1 i.e. [start,...
Definition xt_core_f.f90:94
void xt_config_set_xmap_stripe_align(Xt_config config, int use_stripe_align)
Definition xt_config.c:389
void xt_config_set_idxvec_autoconvert_size(Xt_config config, int cnvsize)
Definition xt_config.c:333
void xt_config_set_redist_mthread_mode(Xt_config config, int mode)
Definition xt_config.c:347
int xt_exchanger_id_by_name(const char *name)
Definition xt_config.c:126
void xt_config_delete(Xt_config config)
Definition xt_config.c:85
void xt_config_set_exchange_method(Xt_config config, int method)
Definition xt_config.c:297
void xt_config_set_sort_algorithm_by_id(Xt_config config, int algo)
Definition xt_config.c:245
int xt_config_get_mem_saving(Xt_config config)
Definition xt_config.c:269
void xt_config_set_mem_saving(Xt_config config, int memconserve)
Definition xt_config.c:263
@ xt_exchanger_irecv_isend
Definition xt_config.h:77
@ xt_exchanger_irecv_send
Definition xt_config.h:76
@ xt_exchanger_irecv_isend_packed
Definition xt_config.h:78
@ xt_exchanger_irecv_isend_ddt_packed
Definition xt_config.h:81
@ xt_exchanger_neigh_alltoall
Definition xt_config.h:80
@ xt_exchanger_mix_isend_irecv
Definition xt_config.h:79
int xt_config_get_sort_algorithm_id(Xt_config config)
Definition xt_config.c:232
Xt_xmdd_bucket_gen xt_config_get_xmdd_bucket_gen(Xt_config config)
Definition xt_config.c:276
int xt_config_get_redist_mthread_mode(Xt_config config)
Definition xt_config.c:340
Xt_config xt_config_new(void)
Definition xt_config.c:78
void xt_config_set_xmdd_bucket_gen(Xt_config config, Xt_xmdd_bucket_gen bucket_gen_iface)
Definition xt_config.c:282
int xt_config_get_xmap_stripe_align(Xt_config config)
Definition xt_config.c:399
int xt_config_get_idxvec_autoconvert_size(Xt_config config)
Definition xt_config.c:327
int xt_config_get_exchange_method(Xt_config config)
Definition xt_config.c:144
int xt_finalized(void)
void xt_initialize(MPI_Comm default_comm)
Definition xt_init.c:70
int xt_initialized(void)
void xt_finalize(void)
Definition xt_init.c:92
Xt_idxlist xt_idxempty_new(void)
Xt_idxlist xt_idxlist_sorted_copy(Xt_idxlist idxlist)
Definition xt_idxlist.c:99
int xt_idxlist_get_positions_of_indices(Xt_idxlist idxlist, const Xt_int *indices, int num_indices, int *positions, int single_match_only)
Definition xt_idxlist.c:221
Xt_idxlist xt_idxlist_unpack(void *buffer, int buffer_size, int *position, MPI_Comm comm)
Xt_int xt_idxlist_get_min_index(Xt_idxlist idxlist)
Definition xt_idxlist.c:349
int xt_idxlist_is_stripe_conversion_profitable(Xt_idxlist idxlist, Xt_config config)
Definition xt_idxlist.c:495
const Xt_int * xt_idxlist_get_indices_const(Xt_idxlist idxlist)
Definition xt_idxlist.c:119
int xt_idxlist_get_index_at_position(Xt_idxlist idxlist, int position, Xt_int *index)
Definition xt_idxlist.c:176
Xt_int xt_idxlist_get_max_index(Xt_idxlist idxlist)
Definition xt_idxlist.c:354
void xt_idxlist_get_indices(Xt_idxlist idxlist, Xt_int *indices)
Definition xt_idxlist.c:113
int xt_idxlist_get_num_index_stripes(Xt_idxlist idxlist)
Definition xt_idxlist.c:129
int xt_idxlist_get_position_of_index_off(Xt_idxlist idxlist, Xt_int index, int *position, int offset)
Definition xt_idxlist.c:306
Xt_idxlist xt_idxlist_sorted_copy_custom(Xt_idxlist idxlist, Xt_config config)
Definition xt_idxlist.c:104
void xt_idxlist_pack(Xt_idxlist idxlist, void *buffer, int buffer_size, int *position, MPI_Comm comm)
Definition xt_idxlist.c:86
size_t xt_idxlist_get_pack_size(Xt_idxlist idxlist, MPI_Comm comm)
Definition xt_idxlist.c:80
int xt_idxlist_get_indices_at_positions(Xt_idxlist idxlist, const int *positions, int num_pos, Xt_int *indices, Xt_int undef_idx)
Definition xt_idxlist.c:183
void xt_idxlist_get_index_stripes(Xt_idxlist idxlist, struct Xt_stripe **stripes, int *num_stripes)
Definition xt_idxlist.c:135
void xt_idxlist_get_bounding_box(Xt_idxlist idxlist, unsigned ndim, const Xt_int global_size[ndim], Xt_int global_start_index, struct Xt_bounds bounds[ndim])
Definition xt_idxlist.c:379
int xt_idxlist_get_pos_exts_of_index_stripes(Xt_idxlist idxlist, int num_stripes, const struct Xt_stripe stripes[num_stripes], int *num_ext, struct Xt_pos_ext **pos_ext, int single_match_only)
Definition xt_idxlist.c:262
Xt_idxlist xt_idxlist_get_intersection(Xt_idxlist idxlist_src, Xt_idxlist idxlist_dst)
Xt_idxlist xt_idxlist_copy(Xt_idxlist idxlist)
Definition xt_idxlist.c:94
int xt_idxlist_get_sorting(Xt_idxlist idxlist)
Definition xt_idxlist.c:359
int xt_idxlist_get_position_of_index(Xt_idxlist idxlist, Xt_int index, int *position)
Definition xt_idxlist.c:214
void xt_idxlist_delete(Xt_idxlist idxlist)
Definition xt_idxlist.c:75
Xt_idxlist xt_idxlist_collection_new(Xt_idxlist *idxlists, int num_idxlists)
#define xt_idxlist_get_num_indices(idxlist)
Xt_idxlist xt_idxmod_new(Xt_idxlist patch_idxlist, struct Xt_modifier *modifier, int modifier_num, int *mstate)
generates a new index list based on an index list and a sequence of modifiers
Definition xt_idxmod.c:62
Xt_idxlist xt_idxsection_new(Xt_int start, int num_dimensions, const Xt_int global_size[num_dimensions], const int local_size[num_dimensions], const Xt_int local_start[num_dimensions])
Xt_idxlist xt_idxstripes_from_idxlist_new(Xt_idxlist idxlist_src)
Xt_idxlist xt_idxstripes_new(struct Xt_stripe const *stripes, int num_stripes)
Xt_idxlist xt_idxvec_from_stripes_new(const struct Xt_stripe *stripes, int num_stripes)
Xt_idxlist xt_idxvec_new(const Xt_int *idxlist, int num_indices)
Definition xt_idxvec.c:213
void xt_mpi_comm_mark_exclusive(MPI_Comm comm)
Definition xt_mpi.c:403
void xt_redist_delete(Xt_redist redist)
Definition xt_redist.c:74
int xt_redist_get_num_recv_msg(Xt_redist redist)
Definition xt_redist.c:108
int xt_redist_get_num_send_msg(Xt_redist redist)
Definition xt_redist.c:103
void xt_redist_a_exchange1(Xt_redist redist, const void *src_data, void *dst_data, Xt_request *request)
Definition xt_redist.c:97
Xt_redist xt_redist_copy(Xt_redist redist)
Definition xt_redist.c:69
void xt_redist_s_exchange(Xt_redist redist, int num_arrays, const void *const src_data[], void *const dst_data[])
Definition xt_redist.c:79
void xt_redist_a_exchange(Xt_redist redist, int num_arrays, const void *const src_data[], void *const dst_data[], Xt_request *request)
void xt_redist_s_exchange1(Xt_redist redist, const void *src_data, void *dst_data)
Definition xt_redist.c:92
Xt_redist xt_redist_collection_new(Xt_redist *redists, int num_redists, int cache_size, MPI_Comm comm)
Xt_redist xt_redist_collection_static_new(Xt_redist *redists, int num_redists, const MPI_Aint src_displacements[num_redists], const MPI_Aint dst_displacements[num_redists], MPI_Comm comm)
Xt_redist xt_redist_p2p_custom_new(Xt_xmap xmap, MPI_Datatype datatype, Xt_config config)
Xt_redist xt_redist_p2p_off_new(Xt_xmap xmap, const int *src_offsets, const int *dst_offsets, MPI_Datatype datatype)
Xt_redist xt_redist_p2p_blocks_custom_new(Xt_xmap xmap, const int *src_block_sizes, int src_block_num, const int *dst_block_sizes, int dst_block_num, MPI_Datatype datatype, Xt_config config)
Xt_redist xt_redist_p2p_off_custom_new(Xt_xmap xmap, const int *src_offsets, const int *dst_offsets, MPI_Datatype datatype, Xt_config config)
Xt_redist xt_redist_p2p_blocks_off_custom_new(Xt_xmap xmap, const int *src_block_offsets, const int *src_block_sizes, int src_block_num, const int *dst_block_offsets, const int *dst_block_sizes, int dst_block_num, MPI_Datatype datatype, Xt_config config)
Xt_redist xt_redist_p2p_ext_new(Xt_xmap xmap, int num_src_ext, const struct Xt_offset_ext src_extents[], int num_dst_ext, const struct Xt_offset_ext dst_extents[], MPI_Datatype datatype)
Xt_redist xt_redist_p2p_blocks_off_new(Xt_xmap xmap, const int *src_block_offsets, const int *src_block_sizes, int src_block_num, const int *dst_block_offsets, const int *dst_block_sizes, int dst_block_num, MPI_Datatype datatype)
Xt_redist xt_redist_p2p_aext_new(Xt_xmap xmap, int num_src_ext, const struct Xt_aoffset_ext src_extents[], int num_dst_ext, const struct Xt_aoffset_ext dst_extents[], MPI_Datatype datatype)
Xt_redist xt_redist_p2p_blocks_new(Xt_xmap xmap, const int *src_block_sizes, int src_block_num, const int *dst_block_sizes, int dst_block_num, MPI_Datatype datatype)
Xt_redist xt_redist_repeat_new(Xt_redist redist, MPI_Aint src_extent, MPI_Aint dst_extent, int num_repetitions, const int displacements[num_repetitions])
Xt_redist xt_redist_single_array_base_new(int nsend, int nrecv, const struct Xt_redist_msg send_msgs[], const struct Xt_redist_msg recv_msgs[], MPI_Comm comm)
Xt_redist xt_redist_single_array_base_custom_new(int nsend, int nrecv, const struct Xt_redist_msg send_msgs[], const struct Xt_redist_msg recv_msgs[], MPI_Comm comm, Xt_config config)
void xt_request_wait(Xt_request *request)
Definition xt_request.c:57
void xt_request_test(Xt_request *request, int *flag)
Definition xt_request.c:66
Xt_xmap xt_xmap_update_positions(Xt_xmap xmap, const int *src_positions, const int *dst_positions)
Definition xt_xmap.c:154
int xt_xmap_iterator_next(Xt_xmap_iter iter)
Definition xt_xmap.c:101
Xt_xmap xt_xmap_reorder(Xt_xmap xmap, enum xt_reorder_type type)
Definition xt_xmap.c:143
void xt_xmap_delete(Xt_xmap xmap)
Definition xt_xmap.c:86
Xt_xmap_iter xt_xmap_get_out_iterator(Xt_xmap xmap)
Definition xt_xmap.c:96
int xt_xmap_iterator_get_num_transfer_pos_ext(Xt_xmap_iter iter)
Definition xt_xmap.c:126
Xt_xmap xt_xmap_spread(Xt_xmap xmap, int num_repetitions, const int src_displacements[num_repetitions], const int dst_displacements[num_repetitions])
Definition xt_xmap.c:159
void xt_xmap_iterator_delete(Xt_xmap_iter iter)
Definition xt_xmap.c:130
int xt_xmap_get_num_destinations(Xt_xmap xmap)
Definition xt_xmap.c:61
Xt_xmap xt_xmap_copy(Xt_xmap xmap)
Definition xt_xmap.c:81
int xt_xmap_iterator_get_rank(Xt_xmap_iter iter)
Definition xt_xmap.c:106
int xt_xmap_get_max_dst_pos(Xt_xmap xmap)
Definition xt_xmap.c:139
int xt_xmap_get_num_sources(Xt_xmap xmap)
Definition xt_xmap.c:66
const struct Xt_pos_ext * xt_xmap_iterator_get_transfer_pos_ext(Xt_xmap_iter iter)
Definition xt_xmap.c:122
void xt_xmap_get_source_ranks(Xt_xmap xmap, int *ranks)
Definition xt_xmap.c:76
Xt_xmap xt_xmap_reorder_custom(Xt_xmap xmap, enum xt_reorder_type type, Xt_config config)
Definition xt_xmap.c:148
Xt_xmap_iter xt_xmap_get_in_iterator(Xt_xmap xmap)
Definition xt_xmap.c:91
void xt_xmap_get_destination_ranks(Xt_xmap xmap, int *ranks)
Definition xt_xmap.c:71
int const * xt_xmap_iterator_get_transfer_pos(Xt_xmap_iter iter)
Definition xt_xmap.c:111
int xt_xmap_get_max_src_pos(Xt_xmap xmap)
Definition xt_xmap.c:135
int xt_xmap_iterator_get_num_transfer_pos(Xt_xmap_iter iter)
Definition xt_xmap.c:116
Xt_xmap xt_xmap_all2all_custom_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm, Xt_config config)
Xt_xmap xt_xmap_dist_dir_custom_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm, Xt_config config)
void xt_xmdd_bucket_gen_define_interface(Xt_xmdd_bucket_gen gen, Xt_xmdd_bucket_gen_init_state init, Xt_xmdd_bucket_gen_destroy_state destroy, Xt_xmdd_bucket_gen_get_intersect_max_num get_intersect_max_num, Xt_xmdd_bucket_gen_next next, size_t gen_state_size, void *init_params)
Xt_xmdd_bucket_gen xt_xmdd_bucket_gen_new(void)
void xt_xmdd_bucket_gen_delete(Xt_xmdd_bucket_gen gen)
Xt_xmap xt_xmap_dist_dir_intercomm_custom_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm inter_comm, MPI_Comm intra_comm, Xt_config config)
Xt_xmap xt_xmap_intersection_ext_new(int num_src_intersections, const struct Xt_com_list src_com[num_src_intersections], int num_dst_intersections, const struct Xt_com_list dst_com[num_dst_intersections], Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm)
Xt_xmap xt_xmap_intersection_pos_new(int num_src_msg, const struct Xt_com_pos src_com[num_src_msg], int num_dst_msg, const struct Xt_com_pos dst_com[num_dst_msg], MPI_Comm comm)
Xt_xmap xt_xmap_intersection_new(int num_src_intersections, const struct Xt_com_list src_com[num_src_intersections], int num_dst_intersections, const struct Xt_com_list dst_com[num_dst_intersections], Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm)
Xt_redist xt_redist_f2c(struct xt_redist_f *p)
Definition yaxt_f2c.c:185
Xt_xmdd_bucket_gen xt_xmdd_bucket_gen_f2c(struct xt_xmdd_bucket_gen_f *p)
Definition yaxt_f2c.c:205
Xt_idxlist xt_idxlist_f2c(struct xt_idxlist_f *p)
Definition yaxt_f2c.c:180
Xt_xmap xt_xmap_f2c(struct xt_xmap_f *p)
Definition yaxt_f2c.c:200