51 #ifdef HAVE_FC_IS_CONTIGUOUS
54 USE iso_c_binding,
ONLY: c_ptr, c_loc
57 CHARACTER(len=*),
PARAMETER :: filename =
'xt_redist_int_i4.f90'
58 INTEGER,
PARAMETER :: pi4 = 9
59 INTEGER,
PARAMETER ::
i4 = selected_int_kind(pi4)
62 MODULE PROCEDURE xt_redist_s_exchange_i4_1d
63 MODULE PROCEDURE xt_redist_s_exchange_i4_2d
64 MODULE PROCEDURE xt_redist_s_exchange_i4_3d
65 MODULE PROCEDURE xt_redist_s_exchange_i4_4d
66 MODULE PROCEDURE xt_redist_s_exchange_i4_5d
67 MODULE PROCEDURE xt_redist_s_exchange_i4_6d
68 MODULE PROCEDURE xt_redist_s_exchange_i4_7d
72 MODULE PROCEDURE xt_redist_a_exchange_i4_1d
73 MODULE PROCEDURE xt_redist_a_exchange_i4_2d
74 MODULE PROCEDURE xt_redist_a_exchange_i4_3d
75 MODULE PROCEDURE xt_redist_a_exchange_i4_4d
76 MODULE PROCEDURE xt_redist_a_exchange_i4_5d
77 MODULE PROCEDURE xt_redist_a_exchange_i4_6d
78 MODULE PROCEDURE xt_redist_a_exchange_i4_7d
84 SUBROUTINE xt_redist_s_exchange_i4_1d_as(redist, src_size, src_data, &
87 INTEGER,
INTENT(in) :: src_size, dst_size
88 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(src_size)
89 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(dst_size)
90 TYPE(c_ptr) :: src_data_cptr, dst_data_cptr
91 src_data_cptr = c_loc(src_data)
92 dst_data_cptr = c_loc(dst_data)
94 END SUBROUTINE xt_redist_s_exchange_i4_1d_as
97 SUBROUTINE xt_redist_s_exchange_i4_1d(redist, src_data, dst_data)
99 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:)
100 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:)
102 INTEGER(i4),
POINTER :: src_p(:), dst_p(:)
103 INTEGER(i4),
TARGET :: dummy(1)
104 INTEGER :: src_size, dst_size
105 src_size =
SIZE(src_data)
106 dst_size =
SIZE(dst_data)
107 IF (src_size > 0)
THEN
113 IF (dst_size > 0)
THEN
119 CALL xt_redist_s_exchange_i4_1d_as(redist, src_size, src_p, dst_size, dst_p)
120 END SUBROUTINE xt_redist_s_exchange_i4_1d
123 SUBROUTINE xt_redist_s_exchange_i4_2d(redist, src_data, dst_data)
125 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:)
126 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:)
128 INTEGER(i4),
POINTER :: src_p(:,:), dst_p(:,:)
129 INTEGER(i4),
TARGET :: dummy(1,1)
130 INTEGER :: src_size, dst_size
131 src_size =
SIZE(src_data)
132 dst_size =
SIZE(dst_data)
133 IF (src_size > 0)
THEN
139 IF (dst_size > 0)
THEN
145 CALL xt_redist_s_exchange_i4_1d_as(redist, src_size, src_p, dst_size, dst_p)
146 END SUBROUTINE xt_redist_s_exchange_i4_2d
149 SUBROUTINE xt_redist_s_exchange_i4_3d(redist, src_data, dst_data)
151 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:)
152 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:)
154 INTEGER(i4),
POINTER :: src_p(:,:,:), dst_p(:,:,:)
155 INTEGER(i4),
TARGET :: dummy(1,1,1)
156 INTEGER :: src_size, dst_size
157 src_size =
SIZE(src_data)
158 dst_size =
SIZE(dst_data)
159 IF (src_size > 0)
THEN
165 IF (dst_size > 0)
THEN
171 CALL xt_redist_s_exchange_i4_1d_as(redist, src_size, src_p, dst_size, dst_p)
172 END SUBROUTINE xt_redist_s_exchange_i4_3d
175 SUBROUTINE xt_redist_s_exchange_i4_4d(redist, src_data, dst_data)
177 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:)
178 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:)
180 INTEGER(i4),
POINTER :: src_p(:,:,:,:), dst_p(:,:,:,:)
181 INTEGER(i4),
TARGET :: dummy(1,1,1,1)
182 INTEGER :: src_size, dst_size
183 src_size =
SIZE(src_data)
184 dst_size =
SIZE(dst_data)
185 IF (src_size > 0)
THEN
191 IF (dst_size > 0)
THEN
197 CALL xt_redist_s_exchange_i4_1d_as(redist, src_size, src_p, dst_size, dst_p)
198 END SUBROUTINE xt_redist_s_exchange_i4_4d
201 SUBROUTINE xt_redist_s_exchange_i4_5d(redist, src_data, dst_data)
203 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:)
204 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:)
206 INTEGER(i4),
POINTER :: src_p(:,:,:,:,:), dst_p(:,:,:,:,:)
207 INTEGER(i4),
TARGET :: dummy(1,1,1,1,1)
208 INTEGER :: src_size, dst_size
209 src_size =
SIZE(src_data)
210 dst_size =
SIZE(dst_data)
211 IF (src_size > 0)
THEN
217 IF (dst_size > 0)
THEN
223 CALL xt_redist_s_exchange_i4_1d_as(redist, src_size, src_p, dst_size, dst_p)
224 END SUBROUTINE xt_redist_s_exchange_i4_5d
227 SUBROUTINE xt_redist_s_exchange_i4_6d(redist, src_data, dst_data)
229 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:)
230 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:,:)
232 INTEGER(i4),
POINTER :: src_p(:,:,:,:,:,:), dst_p(:,:,:,:,:,:)
233 INTEGER(i4),
TARGET :: dummy(1,1,1,1,1,1)
234 INTEGER :: src_size, dst_size
235 src_size =
SIZE(src_data)
236 dst_size =
SIZE(dst_data)
237 IF (src_size > 0)
THEN
243 IF (dst_size > 0)
THEN
249 CALL xt_redist_s_exchange_i4_1d_as(redist, src_size, src_p, dst_size, dst_p)
250 END SUBROUTINE xt_redist_s_exchange_i4_6d
253 SUBROUTINE xt_redist_s_exchange_i4_7d(redist, src_data, dst_data)
255 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:,:)
256 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:,:,:)
258 INTEGER(i4),
POINTER :: src_p(:,:,:,:,:,:,:), dst_p(:,:,:,:,:,:,:)
259 INTEGER(i4),
TARGET :: dummy(1,1,1,1,1,1,1)
260 INTEGER :: src_size, dst_size
261 src_size =
SIZE(src_data)
262 dst_size =
SIZE(dst_data)
263 IF (src_size > 0)
THEN
269 IF (dst_size > 0)
THEN
275 CALL xt_redist_s_exchange_i4_1d_as(redist, src_size, src_p, dst_size, dst_p)
276 END SUBROUTINE xt_redist_s_exchange_i4_7d
279 SUBROUTINE xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, &
280 dst_size, dst_data, request)
282 INTEGER,
INTENT(in) :: src_size, dst_size
283 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(src_size)
284 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(dst_size)
287 INTEGER(i4),
TARGET :: dummy(1)
288 TYPE(c_ptr) :: src_data_cptr, dst_data_cptr
289 IF (src_size > 0)
THEN
290 src_data_cptr = c_loc(src_data)
292 src_data_cptr = c_loc(dummy)
294 IF (dst_size > 0)
THEN
295 dst_data_cptr = c_loc(dst_data)
297 dst_data_cptr = c_loc(dummy)
300 END SUBROUTINE xt_redist_a_exchange_i4_1d_as
303 SUBROUTINE xt_redist_a_exchange_i4_1d(redist, src_data, dst_data, &
306 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:)
307 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:)
310 INTEGER :: src_size, dst_size
311 src_size =
SIZE(src_data)
312 dst_size =
SIZE(dst_data)
313 #ifdef HAVE_FC_IS_CONTIGUOUS
314 IF (.NOT. (is_contiguous(src_data) .AND. is_contiguous(dst_data))) &
315 CALL xt_abort(
'arguments to xt_redist_a_exchange must be contiguous!',&
318 CALL xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, dst_size, &
320 END SUBROUTINE xt_redist_a_exchange_i4_1d
323 SUBROUTINE xt_redist_a_exchange_i4_2d(redist, src_data, dst_data, &
326 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:)
327 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:)
330 INTEGER :: src_size, dst_size
331 src_size =
SIZE(src_data)
332 dst_size =
SIZE(dst_data)
333 #ifdef HAVE_FC_IS_CONTIGUOUS
334 IF (.NOT. (is_contiguous(src_data) .AND. is_contiguous(dst_data))) &
335 CALL xt_abort(
'arguments to xt_redist_a_exchange must be contiguous!',&
338 CALL xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, dst_size, &
340 END SUBROUTINE xt_redist_a_exchange_i4_2d
343 SUBROUTINE xt_redist_a_exchange_i4_3d(redist, src_data, dst_data, &
346 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:)
347 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:)
350 INTEGER :: src_size, dst_size
351 src_size =
SIZE(src_data)
352 dst_size =
SIZE(dst_data)
353 #ifdef HAVE_FC_IS_CONTIGUOUS
354 IF (.NOT. (is_contiguous(src_data) .AND. is_contiguous(dst_data))) &
355 CALL xt_abort(
'arguments to xt_redist_a_exchange must be contiguous!',&
358 CALL xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, dst_size, &
360 END SUBROUTINE xt_redist_a_exchange_i4_3d
363 SUBROUTINE xt_redist_a_exchange_i4_4d(redist, src_data, dst_data, &
366 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:)
367 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:)
370 INTEGER :: src_size, dst_size
371 src_size =
SIZE(src_data)
372 dst_size =
SIZE(dst_data)
373 #ifdef HAVE_FC_IS_CONTIGUOUS
374 IF (.NOT. (is_contiguous(src_data) .AND. is_contiguous(dst_data))) &
375 CALL xt_abort(
'arguments to xt_redist_a_exchange must be contiguous!',&
378 CALL xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, dst_size, &
380 END SUBROUTINE xt_redist_a_exchange_i4_4d
383 SUBROUTINE xt_redist_a_exchange_i4_5d(redist, src_data, dst_data, &
386 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:)
387 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:)
390 INTEGER :: src_size, dst_size
391 src_size =
SIZE(src_data)
392 dst_size =
SIZE(dst_data)
393 #ifdef HAVE_FC_IS_CONTIGUOUS
394 IF (.NOT. (is_contiguous(src_data) .AND. is_contiguous(dst_data))) &
395 CALL xt_abort(
'arguments to xt_redist_a_exchange must be contiguous!',&
398 CALL xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, dst_size, &
400 END SUBROUTINE xt_redist_a_exchange_i4_5d
403 SUBROUTINE xt_redist_a_exchange_i4_6d(redist, src_data, dst_data, &
406 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:)
407 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:,:)
410 INTEGER :: src_size, dst_size
411 src_size =
SIZE(src_data)
412 dst_size =
SIZE(dst_data)
413 #ifdef HAVE_FC_IS_CONTIGUOUS
414 IF (.NOT. (is_contiguous(src_data) .AND. is_contiguous(dst_data))) &
415 CALL xt_abort(
'arguments to xt_redist_a_exchange must be contiguous!',&
418 CALL xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, dst_size, &
420 END SUBROUTINE xt_redist_a_exchange_i4_6d
423 SUBROUTINE xt_redist_a_exchange_i4_7d(redist, src_data, dst_data, &
426 INTEGER(i4),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:,:)
427 INTEGER(i4),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:,:,:)
430 INTEGER :: src_size, dst_size
431 src_size =
SIZE(src_data)
432 dst_size =
SIZE(dst_data)
433 #ifdef HAVE_FC_IS_CONTIGUOUS
434 IF (.NOT. (is_contiguous(src_data) .AND. is_contiguous(dst_data))) &
435 CALL xt_abort(
'arguments to xt_redist_a_exchange must be contiguous!',&
438 CALL xt_redist_a_exchange_i4_1d_as(redist, src_size, src_data, dst_size, &
440 END SUBROUTINE xt_redist_a_exchange_i4_7d
integer, parameter, public i4
void xt_redist_a_exchange1(Xt_redist redist, const void *src_data, void *dst_data, Xt_request *request)
void xt_redist_a_exchange(Xt_redist redist, int num_arrays, const void **src_data, void **dst_data, Xt_request *request)
void xt_redist_s_exchange(Xt_redist redist, int num_arrays, const void **src_data, void **dst_data)
void xt_redist_s_exchange1(Xt_redist redist, const void *src_data, void *dst_data)