49 USE iso_c_binding
, ONLY: c_ptr, c_loc
52 INTEGER,
PARAMETER :: ps = 6
53 INTEGER,
PARAMETER :: rs = 37
54 INTEGER,
PARAMETER ::
sp = selected_real_kind(ps,rs)
57 MODULE PROCEDURE xt_redist_s_exchange_sp_1d
58 MODULE PROCEDURE xt_redist_s_exchange_sp_2d
59 MODULE PROCEDURE xt_redist_s_exchange_sp_3d
60 MODULE PROCEDURE xt_redist_s_exchange_sp_4d
61 MODULE PROCEDURE xt_redist_s_exchange_sp_5d
62 MODULE PROCEDURE xt_redist_s_exchange_sp_6d
63 MODULE PROCEDURE xt_redist_s_exchange_sp_7d
69 SUBROUTINE xt_redist_s_exchange_sp_1d_as(redist, src_size, src_data, &
72 INTEGER,
INTENT(in) :: src_size, dst_size
73 REAL(sp),
TARGET,
INTENT(in) :: src_data(src_size)
74 REAL(sp),
TARGET,
INTENT(inout) :: dst_data(dst_size)
75 TYPE(c_ptr) :: src_data_cptr, dst_data_cptr
76 src_data_cptr = c_loc(src_data)
77 dst_data_cptr = c_loc(dst_data)
79 END SUBROUTINE xt_redist_s_exchange_sp_1d_as
82 SUBROUTINE xt_redist_s_exchange_sp_1d(redist, src_data, dst_data)
84 REAL(sp),
TARGET,
INTENT(in) :: src_data(:)
85 REAL(sp),
TARGET,
INTENT(inout) :: dst_data(:)
87 REAL(sp),
POINTER :: src_p(:), dst_p(:)
88 REAL(sp),
TARGET :: dummy(1)
89 INTEGER :: src_size, dst_size
90 src_size =
SIZE(src_data)
91 dst_size =
SIZE(dst_data)
92 IF (src_size > 0)
THEN 98 IF (dst_size > 0)
THEN 104 CALL xt_redist_s_exchange_sp_1d_as(redist, src_size, src_p, dst_size, dst_p)
105 END SUBROUTINE xt_redist_s_exchange_sp_1d
108 SUBROUTINE xt_redist_s_exchange_sp_2d(redist, src_data, dst_data)
110 REAL(sp),
TARGET,
INTENT(in) :: src_data(:,:)
111 REAL(sp),
TARGET,
INTENT(inout) :: dst_data(:,:)
113 REAL(sp),
POINTER :: src_p(:,:), dst_p(:,:)
114 REAL(sp),
TARGET :: dummy(1,1)
115 INTEGER :: src_size, dst_size
116 src_size =
SIZE(src_data)
117 dst_size =
SIZE(dst_data)
118 IF (src_size > 0)
THEN 124 IF (dst_size > 0)
THEN 130 CALL xt_redist_s_exchange_sp_1d_as(redist, src_size, src_p, dst_size, dst_p)
131 END SUBROUTINE xt_redist_s_exchange_sp_2d
134 SUBROUTINE xt_redist_s_exchange_sp_3d(redist, src_data, dst_data)
136 REAL(sp),
TARGET,
INTENT(in) :: src_data(:,:,:)
137 REAL(sp),
TARGET,
INTENT(inout) :: dst_data(:,:,:)
139 REAL(sp),
POINTER :: src_p(:,:,:), dst_p(:,:,:)
140 REAL(sp),
TARGET :: dummy(1,1,1)
141 INTEGER :: src_size, dst_size
142 src_size =
SIZE(src_data)
143 dst_size =
SIZE(dst_data)
144 IF (src_size > 0)
THEN 150 IF (dst_size > 0)
THEN 156 CALL xt_redist_s_exchange_sp_1d_as(redist, src_size, src_p, dst_size, dst_p)
157 END SUBROUTINE xt_redist_s_exchange_sp_3d
160 SUBROUTINE xt_redist_s_exchange_sp_4d(redist, src_data, dst_data)
162 REAL(sp),
TARGET,
INTENT(in) :: src_data(:,:,:,:)
163 REAL(sp),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:)
165 REAL(sp),
POINTER :: src_p(:,:,:,:), dst_p(:,:,:,:)
166 REAL(sp),
TARGET :: dummy(1,1,1,1)
167 INTEGER :: src_size, dst_size
168 src_size =
SIZE(src_data)
169 dst_size =
SIZE(dst_data)
170 IF (src_size > 0)
THEN 176 IF (dst_size > 0)
THEN 182 CALL xt_redist_s_exchange_sp_1d_as(redist, src_size, src_p, dst_size, dst_p)
183 END SUBROUTINE xt_redist_s_exchange_sp_4d
186 SUBROUTINE xt_redist_s_exchange_sp_5d(redist, src_data, dst_data)
188 REAL(sp),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:)
189 REAL(sp),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:)
191 REAL(sp),
POINTER :: src_p(:,:,:,:,:), dst_p(:,:,:,:,:)
192 REAL(sp),
TARGET :: dummy(1,1,1,1,1)
193 INTEGER :: src_size, dst_size
194 src_size =
SIZE(src_data)
195 dst_size =
SIZE(dst_data)
196 IF (src_size > 0)
THEN 202 IF (dst_size > 0)
THEN 208 CALL xt_redist_s_exchange_sp_1d_as(redist, src_size, src_p, dst_size, dst_p)
209 END SUBROUTINE xt_redist_s_exchange_sp_5d
212 SUBROUTINE xt_redist_s_exchange_sp_6d(redist, src_data, dst_data)
214 REAL(sp),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:)
215 REAL(sp),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:,:)
217 REAL(sp),
POINTER :: src_p(:,:,:,:,:,:), dst_p(:,:,:,:,:,:)
218 REAL(sp),
TARGET :: dummy(1,1,1,1,1,1)
219 INTEGER :: src_size, dst_size
220 src_size =
SIZE(src_data)
221 dst_size =
SIZE(dst_data)
222 IF (src_size > 0)
THEN 228 IF (dst_size > 0)
THEN 234 CALL xt_redist_s_exchange_sp_1d_as(redist, src_size, src_p, dst_size, dst_p)
235 END SUBROUTINE xt_redist_s_exchange_sp_6d
238 SUBROUTINE xt_redist_s_exchange_sp_7d(redist, src_data, dst_data)
240 REAL(sp),
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:,:)
241 REAL(sp),
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:,:,:)
243 REAL(sp),
POINTER :: src_p(:,:,:,:,:,:,:), dst_p(:,:,:,:,:,:,:)
244 REAL(sp),
TARGET :: dummy(1,1,1,1,1,1,1)
245 INTEGER :: src_size, dst_size
246 src_size =
SIZE(src_data)
247 dst_size =
SIZE(dst_data)
248 IF (src_size > 0)
THEN 254 IF (dst_size > 0)
THEN 260 CALL xt_redist_s_exchange_sp_1d_as(redist, src_size, src_p, dst_size, dst_p)
261 END SUBROUTINE xt_redist_s_exchange_sp_7d
void xt_redist_s_exchange(Xt_redist redist, int num_arrays, const void **src_data, void **dst_data)
integer, parameter, public sp
void xt_redist_s_exchange1(Xt_redist redist, const void *src_data, void *dst_data)