47#include "fc_feature_defs.inc"
48MODULE xt_redist_int_i4
52#ifdef HAVE_FC_IS_CONTIGUOUS
53 USE xt_core,
ONLY: xt_abort
55 USE iso_c_binding,
ONLY: c_ptr, c_loc
58 CHARACTER(len=*),
PARAMETER :: filename =
'xt_redist_int_i4.f90'
59 INTEGER,
PARAMETER :: pi4 = 9
60 INTEGER,
PARAMETER :: i4 = selected_int_kind(pi4)
63 MODULE PROCEDURE xt_redist_s_exchange_i4_1d
64 MODULE PROCEDURE xt_redist_s_exchange_i4_2d
65 MODULE PROCEDURE xt_redist_s_exchange_i4_3d
66 MODULE PROCEDURE xt_redist_s_exchange_i4_4d
67 MODULE PROCEDURE xt_redist_s_exchange_i4_5d
68 MODULE PROCEDURE xt_redist_s_exchange_i4_6d
69 MODULE PROCEDURE xt_redist_s_exchange_i4_7d
73 MODULE PROCEDURE xt_redist_a_exchange_i4_1d
74 MODULE PROCEDURE xt_redist_a_exchange_i4_2d
75 MODULE PROCEDURE xt_redist_a_exchange_i4_3d
76 MODULE PROCEDURE xt_redist_a_exchange_i4_4d
77 MODULE PROCEDURE xt_redist_a_exchange_i4_5d
78 MODULE PROCEDURE xt_redist_a_exchange_i4_6d
79 MODULE PROCEDURE xt_redist_a_exchange_i4_7d
85 SUBROUTINE xt_redist_s_exchange_i4_1d_as(redist, src_size, src_data, &
88 INTEGER,
INTENT(in) :: src_size, dst_size
89 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(src_size)
90 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(dst_size)
91 TYPE(c_ptr) :: src_data_cptr, dst_data_cptr
92 src_data_cptr = c_loc(src_data)
93 dst_data_cptr = c_loc(dst_data)
95 END SUBROUTINE xt_redist_s_exchange_i4_1d_as
98 SUBROUTINE xt_redist_s_exchange_i4_1d(redist, src_data, dst_data)
100 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:)
101 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:)
103 INTEGER(i4),
POINTER :: src_p(:), dst_p(:)
104 INTEGER(i4),
TARGET :: dummy(1)
105 INTEGER :: src_size, dst_size
106 src_size =
SIZE(src_data)
107 dst_size =
SIZE(dst_data)
108 IF (src_size > 0)
THEN
114 IF (dst_size > 0)
THEN
120 CALL xt_redist_s_exchange_i4_1d_as(redist, src_size, src_p, dst_size, dst_p)
121 END SUBROUTINE xt_redist_s_exchange_i4_1d
124 SUBROUTINE xt_redist_s_exchange_i4_2d(redist, src_data, dst_data)
126 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:)
127 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:)
129 INTEGER(i4),
POINTER :: src_p(:,:), dst_p(:,:)
130 INTEGER(i4),
TARGET :: dummy(1,1)
131 INTEGER :: src_size, dst_size
132 src_size =
SIZE(src_data)
133 dst_size =
SIZE(dst_data)
134 IF (src_size > 0)
THEN
140 IF (dst_size > 0)
THEN
146 CALL xt_redist_s_exchange_i4_1d_as(redist, src_size, src_p, dst_size, dst_p)
147 END SUBROUTINE xt_redist_s_exchange_i4_2d
150 SUBROUTINE xt_redist_s_exchange_i4_3d(redist, src_data, dst_data)
152 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:)
153 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:)
155 INTEGER(i4),
POINTER :: src_p(:,:,:), dst_p(:,:,:)
156 INTEGER(i4),
TARGET :: dummy(1,1,1)
157 INTEGER :: src_size, dst_size
158 src_size =
SIZE(src_data)
159 dst_size =
SIZE(dst_data)
160 IF (src_size > 0)
THEN
166 IF (dst_size > 0)
THEN
172 CALL xt_redist_s_exchange_i4_1d_as(redist, src_size, src_p, dst_size, dst_p)
173 END SUBROUTINE xt_redist_s_exchange_i4_3d
176 SUBROUTINE xt_redist_s_exchange_i4_4d(redist, src_data, dst_data)
178 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:)
179 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:)
181 INTEGER(i4),
POINTER :: src_p(:,:,:,:), dst_p(:,:,:,:)
182 INTEGER(i4),
TARGET :: dummy(1,1,1,1)
183 INTEGER :: src_size, dst_size
184 src_size =
SIZE(src_data)
185 dst_size =
SIZE(dst_data)
186 IF (src_size > 0)
THEN
192 IF (dst_size > 0)
THEN
198 CALL xt_redist_s_exchange_i4_1d_as(redist, src_size, src_p, dst_size, dst_p)
199 END SUBROUTINE xt_redist_s_exchange_i4_4d
202 SUBROUTINE xt_redist_s_exchange_i4_5d(redist, src_data, dst_data)
204 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:)
205 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:)
207 INTEGER(i4),
POINTER :: src_p(:,:,:,:,:), dst_p(:,:,:,:,:)
208 INTEGER(i4),
TARGET :: dummy(1,1,1,1,1)
209 INTEGER :: src_size, dst_size
210 src_size =
SIZE(src_data)
211 dst_size =
SIZE(dst_data)
212 IF (src_size > 0)
THEN
218 IF (dst_size > 0)
THEN
224 CALL xt_redist_s_exchange_i4_1d_as(redist, src_size, src_p, dst_size, dst_p)
225 END SUBROUTINE xt_redist_s_exchange_i4_5d
228 SUBROUTINE xt_redist_s_exchange_i4_6d(redist, src_data, dst_data)
230 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:)
231 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:,:)
233 INTEGER(i4),
POINTER :: src_p(:,:,:,:,:,:), dst_p(:,:,:,:,:,:)
234 INTEGER(i4),
TARGET :: dummy(1,1,1,1,1,1)
235 INTEGER :: src_size, dst_size
236 src_size =
SIZE(src_data)
237 dst_size =
SIZE(dst_data)
238 IF (src_size > 0)
THEN
244 IF (dst_size > 0)
THEN
250 CALL xt_redist_s_exchange_i4_1d_as(redist, src_size, src_p, dst_size, dst_p)
251 END SUBROUTINE xt_redist_s_exchange_i4_6d
254 SUBROUTINE xt_redist_s_exchange_i4_7d(redist, src_data, dst_data)
256 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:,:)
257 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:,:,:)
259 INTEGER(i4),
POINTER :: src_p(:,:,:,:,:,:,:), dst_p(:,:,:,:,:,:,:)
260 INTEGER(i4),
TARGET :: dummy(1,1,1,1,1,1,1)
261 INTEGER :: src_size, dst_size
262 src_size =
SIZE(src_data)
263 dst_size =
SIZE(dst_data)
264 IF (src_size > 0)
THEN
270 IF (dst_size > 0)
THEN
276 CALL xt_redist_s_exchange_i4_1d_as(redist, src_size, src_p, dst_size, dst_p)
277 END SUBROUTINE xt_redist_s_exchange_i4_7d
280 SUBROUTINE xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, &
281 dst_size, dst_data, request)
283 INTEGER,
INTENT(in) :: src_size, dst_size
284 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(src_size)
285 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(dst_size)
288 INTEGER(i4),
TARGET :: dummy(1)
289 TYPE(c_ptr) :: src_data_cptr, dst_data_cptr
290 IF (src_size > 0)
THEN
291 src_data_cptr = c_loc(src_data)
293 src_data_cptr = c_loc(dummy)
295 IF (dst_size > 0)
THEN
296 dst_data_cptr = c_loc(dst_data)
298 dst_data_cptr = c_loc(dummy)
301 END SUBROUTINE xt_redist_a_exchange_i4_1d_as
304 SUBROUTINE xt_redist_a_exchange_i4_1d(redist, src_data, dst_data, &
307 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:)
308 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:)
311 INTEGER :: src_size, dst_size
312 src_size =
SIZE(src_data)
313 dst_size =
SIZE(dst_data)
314#ifdef HAVE_FC_IS_CONTIGUOUS
315 IF (.NOT. (is_contiguous(src_data) .AND. is_contiguous(dst_data))) &
316 CALL xt_abort(
'arguments to xt_redist_a_exchange must be contiguous!',&
319 CALL xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, dst_size, &
321 END SUBROUTINE xt_redist_a_exchange_i4_1d
324 SUBROUTINE xt_redist_a_exchange_i4_2d(redist, src_data, dst_data, &
327 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:)
328 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:)
331 INTEGER :: src_size, dst_size
332 src_size =
SIZE(src_data)
333 dst_size =
SIZE(dst_data)
334#ifdef HAVE_FC_IS_CONTIGUOUS
335 IF (.NOT. (is_contiguous(src_data) .AND. is_contiguous(dst_data))) &
336 CALL xt_abort(
'arguments to xt_redist_a_exchange must be contiguous!',&
339 CALL xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, dst_size, &
341 END SUBROUTINE xt_redist_a_exchange_i4_2d
344 SUBROUTINE xt_redist_a_exchange_i4_3d(redist, src_data, dst_data, &
347 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:)
348 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:)
351 INTEGER :: src_size, dst_size
352 src_size =
SIZE(src_data)
353 dst_size =
SIZE(dst_data)
354#ifdef HAVE_FC_IS_CONTIGUOUS
355 IF (.NOT. (is_contiguous(src_data) .AND. is_contiguous(dst_data))) &
356 CALL xt_abort(
'arguments to xt_redist_a_exchange must be contiguous!',&
359 CALL xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, dst_size, &
361 END SUBROUTINE xt_redist_a_exchange_i4_3d
364 SUBROUTINE xt_redist_a_exchange_i4_4d(redist, src_data, dst_data, &
367 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:)
368 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:)
371 INTEGER :: src_size, dst_size
372 src_size =
SIZE(src_data)
373 dst_size =
SIZE(dst_data)
374#ifdef HAVE_FC_IS_CONTIGUOUS
375 IF (.NOT. (is_contiguous(src_data) .AND. is_contiguous(dst_data))) &
376 CALL xt_abort(
'arguments to xt_redist_a_exchange must be contiguous!',&
379 CALL xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, dst_size, &
381 END SUBROUTINE xt_redist_a_exchange_i4_4d
384 SUBROUTINE xt_redist_a_exchange_i4_5d(redist, src_data, dst_data, &
387 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:)
388 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:)
391 INTEGER :: src_size, dst_size
392 src_size =
SIZE(src_data)
393 dst_size =
SIZE(dst_data)
394#ifdef HAVE_FC_IS_CONTIGUOUS
395 IF (.NOT. (is_contiguous(src_data) .AND. is_contiguous(dst_data))) &
396 CALL xt_abort(
'arguments to xt_redist_a_exchange must be contiguous!',&
399 CALL xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, dst_size, &
401 END SUBROUTINE xt_redist_a_exchange_i4_5d
404 SUBROUTINE xt_redist_a_exchange_i4_6d(redist, src_data, dst_data, &
407 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:)
408 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:,:)
411 INTEGER :: src_size, dst_size
412 src_size =
SIZE(src_data)
413 dst_size =
SIZE(dst_data)
414#ifdef HAVE_FC_IS_CONTIGUOUS
415 IF (.NOT. (is_contiguous(src_data) .AND. is_contiguous(dst_data))) &
416 CALL xt_abort(
'arguments to xt_redist_a_exchange must be contiguous!',&
419 CALL xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, dst_size, &
421 END SUBROUTINE xt_redist_a_exchange_i4_6d
424 SUBROUTINE xt_redist_a_exchange_i4_7d(redist, src_data, dst_data, &
427 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:,:)
428 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:,:,:)
431 INTEGER :: src_size, dst_size
432 src_size =
SIZE(src_data)
433 dst_size =
SIZE(dst_data)
434#ifdef HAVE_FC_IS_CONTIGUOUS
435 IF (.NOT. (is_contiguous(src_data) .AND. is_contiguous(dst_data))) &
436 CALL xt_abort(
'arguments to xt_redist_a_exchange must be contiguous!',&
439 CALL xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, dst_size, &
441 END SUBROUTINE xt_redist_a_exchange_i4_7d
442END MODULE xt_redist_int_i4
void xt_redist_a_exchange1(Xt_redist redist, const void *src_data, void *dst_data, Xt_request *request)
void xt_redist_s_exchange(Xt_redist redist, int num_arrays, const void *const src_data[], void *const dst_data[])
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)