51 #ifdef HAVE_FC_IS_CONTIGUOUS
54 USE iso_c_binding,
ONLY: c_ptr, c_loc
57 CHARACTER(len=*),
PARAMETER :: filename =
'xt_redist_real_sp.f90'
58 INTEGER,
PARAMETER :: ps = 6
59 INTEGER,
PARAMETER :: rs = 37
60 INTEGER,
PARAMETER ::
sp = selected_real_kind(ps,rs)
63 MODULE PROCEDURE xt_redist_s_exchange_sp_1d
64 MODULE PROCEDURE xt_redist_s_exchange_sp_2d
65 MODULE PROCEDURE xt_redist_s_exchange_sp_3d
66 MODULE PROCEDURE xt_redist_s_exchange_sp_4d
67 MODULE PROCEDURE xt_redist_s_exchange_sp_5d
68 MODULE PROCEDURE xt_redist_s_exchange_sp_6d
69 MODULE PROCEDURE xt_redist_s_exchange_sp_7d
73 MODULE PROCEDURE xt_redist_a_exchange_sp_1d
74 MODULE PROCEDURE xt_redist_a_exchange_sp_2d
75 MODULE PROCEDURE xt_redist_a_exchange_sp_3d
76 MODULE PROCEDURE xt_redist_a_exchange_sp_4d
77 MODULE PROCEDURE xt_redist_a_exchange_sp_5d
78 MODULE PROCEDURE xt_redist_a_exchange_sp_6d
79 MODULE PROCEDURE xt_redist_a_exchange_sp_7d
85 SUBROUTINE xt_redist_s_exchange_sp_1d_as(redist, src_size, src_data, &
88 INTEGER,
INTENT(in) :: src_size, dst_size
89 REAL(
sp),
TARGET,
INTENT(in) :: src_data(src_size)
90 REAL(
sp),
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_sp_1d_as
98 SUBROUTINE xt_redist_s_exchange_sp_1d(redist, src_data, dst_data)
100 REAL(
sp),
TARGET,
INTENT(in) :: src_data(:)
101 REAL(
sp),
TARGET,
INTENT(inout) :: dst_data(:)
103 REAL(
sp),
POINTER :: src_p(:), dst_p(:)
104 REAL(
sp),
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_sp_1d_as(redist, src_size, src_p, dst_size, dst_p)
121 END SUBROUTINE xt_redist_s_exchange_sp_1d
124 SUBROUTINE xt_redist_s_exchange_sp_2d(redist, src_data, dst_data)
126 REAL(
sp),
TARGET,
INTENT(in) :: src_data(:,:)
127 REAL(
sp),
TARGET,
INTENT(inout) :: dst_data(:,:)
129 REAL(
sp),
POINTER :: src_p(:,:), dst_p(:,:)
130 REAL(
sp),
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_sp_1d_as(redist, src_size, src_p, dst_size, dst_p)
147 END SUBROUTINE xt_redist_s_exchange_sp_2d
150 SUBROUTINE xt_redist_s_exchange_sp_3d(redist, src_data, dst_data)
152 REAL(
sp),
TARGET,
INTENT(in) :: src_data(:,:,:)
153 REAL(
sp),
TARGET,
INTENT(inout) :: dst_data(:,:,:)
155 REAL(
sp),
POINTER :: src_p(:,:,:), dst_p(:,:,:)
156 REAL(
sp),
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_sp_1d_as(redist, src_size, src_p, dst_size, dst_p)
173 END SUBROUTINE xt_redist_s_exchange_sp_3d
176 SUBROUTINE xt_redist_s_exchange_sp_4d(redist, src_data, dst_data)
178 REAL(
sp),
TARGET,
INTENT(in) :: src_data(:,:,:,:)
179 REAL(
sp),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:)
181 REAL(
sp),
POINTER :: src_p(:,:,:,:), dst_p(:,:,:,:)
182 REAL(
sp),
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_sp_1d_as(redist, src_size, src_p, dst_size, dst_p)
199 END SUBROUTINE xt_redist_s_exchange_sp_4d
202 SUBROUTINE xt_redist_s_exchange_sp_5d(redist, src_data, dst_data)
204 REAL(
sp),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:)
205 REAL(
sp),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:)
207 REAL(
sp),
POINTER :: src_p(:,:,:,:,:), dst_p(:,:,:,:,:)
208 REAL(
sp),
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_sp_1d_as(redist, src_size, src_p, dst_size, dst_p)
225 END SUBROUTINE xt_redist_s_exchange_sp_5d
228 SUBROUTINE xt_redist_s_exchange_sp_6d(redist, src_data, dst_data)
230 REAL(
sp),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:)
231 REAL(
sp),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:,:)
233 REAL(
sp),
POINTER :: src_p(:,:,:,:,:,:), dst_p(:,:,:,:,:,:)
234 REAL(
sp),
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_sp_1d_as(redist, src_size, src_p, dst_size, dst_p)
251 END SUBROUTINE xt_redist_s_exchange_sp_6d
254 SUBROUTINE xt_redist_s_exchange_sp_7d(redist, src_data, dst_data)
256 REAL(
sp),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:,:)
257 REAL(
sp),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:,:,:)
259 REAL(
sp),
POINTER :: src_p(:,:,:,:,:,:,:), dst_p(:,:,:,:,:,:,:)
260 REAL(
sp),
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_sp_1d_as(redist, src_size, src_p, dst_size, dst_p)
277 END SUBROUTINE xt_redist_s_exchange_sp_7d
280 SUBROUTINE xt_redist_a_exchange_sp_1d_as(redist, src_size, src_data, &
281 dst_size, dst_data, request)
283 INTEGER,
INTENT(in) :: src_size, dst_size
284 REAL(
sp),
TARGET,
INTENT(in) :: src_data(src_size)
285 REAL(
sp),
TARGET,
INTENT(inout) :: dst_data(dst_size)
288 REAL(
sp),
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_sp_1d_as
304 SUBROUTINE xt_redist_a_exchange_sp_1d(redist, src_data, dst_data, &
307 REAL(
sp),
TARGET,
INTENT(in) :: src_data(:)
308 REAL(
sp),
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_sp_1d_as(redist, src_size, src_data, dst_size, &
321 END SUBROUTINE xt_redist_a_exchange_sp_1d
324 SUBROUTINE xt_redist_a_exchange_sp_2d(redist, src_data, dst_data, &
327 REAL(
sp),
TARGET,
INTENT(in) :: src_data(:,:)
328 REAL(
sp),
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_sp_1d_as(redist, src_size, src_data, dst_size, &
341 END SUBROUTINE xt_redist_a_exchange_sp_2d
344 SUBROUTINE xt_redist_a_exchange_sp_3d(redist, src_data, dst_data, &
347 REAL(
sp),
TARGET,
INTENT(in) :: src_data(:,:,:)
348 REAL(
sp),
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_sp_1d_as(redist, src_size, src_data, dst_size, &
361 END SUBROUTINE xt_redist_a_exchange_sp_3d
364 SUBROUTINE xt_redist_a_exchange_sp_4d(redist, src_data, dst_data, &
367 REAL(
sp),
TARGET,
INTENT(in) :: src_data(:,:,:,:)
368 REAL(
sp),
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_sp_1d_as(redist, src_size, src_data, dst_size, &
381 END SUBROUTINE xt_redist_a_exchange_sp_4d
384 SUBROUTINE xt_redist_a_exchange_sp_5d(redist, src_data, dst_data, &
387 REAL(
sp),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:)
388 REAL(
sp),
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_sp_1d_as(redist, src_size, src_data, dst_size, &
401 END SUBROUTINE xt_redist_a_exchange_sp_5d
404 SUBROUTINE xt_redist_a_exchange_sp_6d(redist, src_data, dst_data, &
407 REAL(
sp),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:)
408 REAL(
sp),
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_sp_1d_as(redist, src_size, src_data, dst_size, &
421 END SUBROUTINE xt_redist_a_exchange_sp_6d
424 SUBROUTINE xt_redist_a_exchange_sp_7d(redist, src_data, dst_data, &
427 REAL(
sp),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:,:)
428 REAL(
sp),
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_sp_1d_as(redist, src_size, src_data, dst_size, &
441 END SUBROUTINE xt_redist_a_exchange_sp_7d
integer, parameter, public sp
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)