49 #ifdef HAVE_FC_LOGICAL_INTEROP 50 USE iso_c_binding
, ONLY: c_ptr, c_loc
52 USE iso_c_binding
, ONLY: c_ptr
57 MODULE PROCEDURE xt_redist_s_exchange_l_1d
58 MODULE PROCEDURE xt_redist_s_exchange_l_2d
59 MODULE PROCEDURE xt_redist_s_exchange_l_3d
60 MODULE PROCEDURE xt_redist_s_exchange_l_4d
61 MODULE PROCEDURE xt_redist_s_exchange_l_5d
62 MODULE PROCEDURE xt_redist_s_exchange_l_6d
63 MODULE PROCEDURE xt_redist_s_exchange_l_7d
69 SUBROUTINE xt_redist_s_exchange_l_1d_as(redist, src_size, src_data, &
72 INTEGER,
INTENT(in) :: src_size, dst_size
73 LOGICAL,
TARGET,
INTENT(in) :: src_data(src_size)
74 LOGICAL,
TARGET,
INTENT(inout) :: dst_data(dst_size)
75 TYPE(c_ptr) :: src_data_cptr, dst_data_cptr
76 #ifdef HAVE_FC_LOGICAL_INTEROP 77 src_data_cptr = c_loc(src_data)
78 dst_data_cptr = c_loc(dst_data)
80 CALL xt_slice_c_loc(src_data, src_data_cptr)
81 CALL xt_slice_c_loc(dst_data, dst_data_cptr)
84 END SUBROUTINE xt_redist_s_exchange_l_1d_as
87 SUBROUTINE xt_redist_s_exchange_l_1d(redist, src_data, dst_data)
89 LOGICAL,
TARGET,
INTENT(in) :: src_data(:)
90 LOGICAL,
TARGET,
INTENT(inout) :: dst_data(:)
92 LOGICAL,
POINTER :: src_p(:), dst_p(:)
93 LOGICAL,
TARGET :: dummy(1)
94 INTEGER :: src_size, dst_size
95 src_size =
SIZE(src_data)
96 dst_size =
SIZE(dst_data)
97 IF (src_size > 0)
THEN 103 IF (dst_size > 0)
THEN 109 CALL xt_redist_s_exchange_l_1d_as(redist, src_size, src_p, dst_size, dst_p)
110 END SUBROUTINE xt_redist_s_exchange_l_1d
113 SUBROUTINE xt_redist_s_exchange_l_2d(redist, src_data, dst_data)
115 LOGICAL,
TARGET,
INTENT(in) :: src_data(:,:)
116 LOGICAL,
TARGET,
INTENT(inout) :: dst_data(:,:)
118 LOGICAL,
POINTER :: src_p(:,:), dst_p(:,:)
119 LOGICAL,
TARGET :: dummy(1,1)
120 INTEGER :: src_size, dst_size
121 src_size =
SIZE(src_data)
122 dst_size =
SIZE(dst_data)
123 IF (src_size > 0)
THEN 129 IF (dst_size > 0)
THEN 135 CALL xt_redist_s_exchange_l_1d_as(redist, src_size, src_p, dst_size, dst_p)
136 END SUBROUTINE xt_redist_s_exchange_l_2d
139 SUBROUTINE xt_redist_s_exchange_l_3d(redist, src_data, dst_data)
141 LOGICAL,
TARGET,
INTENT(in) :: src_data(:,:,:)
142 LOGICAL,
TARGET,
INTENT(inout) :: dst_data(:,:,:)
144 LOGICAL,
POINTER :: src_p(:,:,:), dst_p(:,:,:)
145 LOGICAL,
TARGET :: dummy(1,1,1)
146 INTEGER :: src_size, dst_size
147 src_size =
SIZE(src_data)
148 dst_size =
SIZE(dst_data)
149 IF (src_size > 0)
THEN 155 IF (dst_size > 0)
THEN 161 CALL xt_redist_s_exchange_l_1d_as(redist, src_size, src_p, dst_size, dst_p)
162 END SUBROUTINE xt_redist_s_exchange_l_3d
165 SUBROUTINE xt_redist_s_exchange_l_4d(redist, src_data, dst_data)
167 LOGICAL,
TARGET,
INTENT(in) :: src_data(:,:,:,:)
168 LOGICAL,
TARGET,
INTENT(inout) :: dst_data(:,:,:,:)
170 LOGICAL,
POINTER :: src_p(:,:,:,:), dst_p(:,:,:,:)
171 LOGICAL,
TARGET :: dummy(1,1,1,1)
172 INTEGER :: src_size, dst_size
173 src_size =
SIZE(src_data)
174 dst_size =
SIZE(dst_data)
175 IF (src_size > 0)
THEN 181 IF (dst_size > 0)
THEN 187 CALL xt_redist_s_exchange_l_1d_as(redist, src_size, src_p, dst_size, dst_p)
188 END SUBROUTINE xt_redist_s_exchange_l_4d
191 SUBROUTINE xt_redist_s_exchange_l_5d(redist, src_data, dst_data)
193 LOGICAL,
TARGET,
INTENT(in) :: src_data(:,:,:,:,:)
194 LOGICAL,
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:)
196 LOGICAL,
POINTER :: src_p(:,:,:,:,:), dst_p(:,:,:,:,:)
197 LOGICAL,
TARGET :: dummy(1,1,1,1,1)
198 INTEGER :: src_size, dst_size
199 src_size =
SIZE(src_data)
200 dst_size =
SIZE(dst_data)
201 IF (src_size > 0)
THEN 207 IF (dst_size > 0)
THEN 213 CALL xt_redist_s_exchange_l_1d_as(redist, src_size, src_p, dst_size, dst_p)
214 END SUBROUTINE xt_redist_s_exchange_l_5d
217 SUBROUTINE xt_redist_s_exchange_l_6d(redist, src_data, dst_data)
219 LOGICAL,
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:)
220 LOGICAL,
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:,:)
222 LOGICAL,
POINTER :: src_p(:,:,:,:,:,:), dst_p(:,:,:,:,:,:)
223 LOGICAL,
TARGET :: dummy(1,1,1,1,1,1)
224 INTEGER :: src_size, dst_size
225 src_size =
SIZE(src_data)
226 dst_size =
SIZE(dst_data)
227 IF (src_size > 0)
THEN 233 IF (dst_size > 0)
THEN 239 CALL xt_redist_s_exchange_l_1d_as(redist, src_size, src_p, dst_size, dst_p)
240 END SUBROUTINE xt_redist_s_exchange_l_6d
243 SUBROUTINE xt_redist_s_exchange_l_7d(redist, src_data, dst_data)
245 LOGICAL,
TARGET,
INTENT(in) :: src_data(:,:,:,:,:,:,:)
246 LOGICAL,
TARGET,
INTENT(inout) :: dst_data(:,:,:,:,:,:,:)
248 LOGICAL,
POINTER :: src_p(:,:,:,:,:,:,:), dst_p(:,:,:,:,:,:,:)
249 LOGICAL,
TARGET :: dummy(1,1,1,1,1,1,1)
250 INTEGER :: src_size, dst_size
251 src_size =
SIZE(src_data)
252 dst_size =
SIZE(dst_data)
253 IF (src_size > 0)
THEN 259 IF (dst_size > 0)
THEN 265 CALL xt_redist_s_exchange_l_1d_as(redist, src_size, src_p, dst_size, dst_p)
266 END SUBROUTINE xt_redist_s_exchange_l_7d
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)