48#include "fc_feature_defs.inc"
50 use,
INTRINSIC :: iso_c_binding, only: c_ptr, c_null_ptr, c_int, &
52 USE xt_core,
ONLY: xt_abort
60 TYPE,
BIND(C),
PUBLIC :: xt_config
64 TYPE(c_ptr) :: cptr = c_null_ptr
70 FUNCTION xt_config_f2c(config) bind(c, name='xt_config_f2c')
RESULT(p)
73 TYPE(xt_config),
INTENT(in) :: config
82 INTEGER,
PUBLIC,
PARAMETER :: &
83 xt_exchanger_irecv_send = 0, &
97 INTEGER,
PUBLIC,
PARAMETER :: &
100 INTEGER,
PUBLIC,
PARAMETER :: &
109 CHARACTER(len=*),
PARAMETER :: filename =
'xt_config_f.f90'
114 TYPE(xt_config) :: config
116 FUNCTION xt_config_new_c()
RESULT(config) &
117 bind(c, name=
'xt_config_new')
120 TYPE(c_ptr) :: config
121 END FUNCTION xt_config_new_c
123 config%cptr = xt_config_new_c()
127 TYPE(xt_config),
INTENT(in) :: config
129 SUBROUTINE xt_config_delete_c(config) bind(c, name='xt_config_delete')
132 TYPE(c_ptr),
VALUE,
INTENT(in) :: config
133 END SUBROUTINE xt_config_delete_c
135 CALL xt_config_delete_c(config%cptr)
139 TYPE(xt_config),
INTENT(inout) :: config
140 INTEGER,
INTENT(in) :: method
141 INTEGER(c_int) :: method_c
143 SUBROUTINE xt_config_set_exchange_method_c(config, method) &
144 bind(c, name=
'xt_config_set_exchange_method')
145 IMPORT :: c_int, c_ptr
146 TYPE(c_ptr),
VALUE :: config
147 INTEGER(c_int),
VALUE :: method
148 END SUBROUTINE xt_config_set_exchange_method_c
150 method_c = int(method, c_int)
151 CALL xt_config_set_exchange_method_c(config%cptr, method_c)
155 TYPE(xt_config),
INTENT(in) :: config
158 FUNCTION xt_config_get_exchange_method_c(config)
RESULT(method) &
159 bind(c, name=
'xt_config_get_exchange_method')
160 IMPORT :: c_int, c_ptr
161 TYPE(c_ptr),
VALUE :: config
162 INTEGER(c_int) :: method
163 END FUNCTION xt_config_get_exchange_method_c
165 method = int(xt_config_get_exchange_method_c(config%cptr))
169 CHARACTER(len=*),
INTENT(in) :: name
170 INTEGER :: exchanger_id
172 FUNCTION xt_exchanger_id_by_name_c(name)
RESULT(exchanger_id) &
173 bind(c, name=
'xt_exchanger_id_by_name')
174 IMPORT :: c_char, c_int
175 CHARACTER(len=1, kind=c_char),
INTENT(in) :: name(*)
176 INTEGER(c_int) :: exchanger_id
177 END FUNCTION xt_exchanger_id_by_name_c
179 INTEGER(c_int) :: c_id
180 CHARACTER(len=1) :: name_c(LEN(name)+1)
184 name_c(i) = name(i:i)
186 name_c(nlen+1) = c_null_char
187 c_id = xt_exchanger_id_by_name_c(name_c)
188 exchanger_id = int(c_id)
192 TYPE(xt_config),
INTENT(in) :: config
195 FUNCTION xt_config_get_idxvec_autoconvert_size_c(config)
RESULT(cnvsize) &
196 bind(c, name=
'xt_config_get_idxvec_autoconvert_size')
197 IMPORT :: c_int, c_ptr
198 TYPE(c_ptr),
VALUE :: config
199 INTEGER(c_int) :: cnvsize
200 END FUNCTION xt_config_get_idxvec_autoconvert_size_c
202 cnvsize = int(xt_config_get_idxvec_autoconvert_size_c(config%cptr))
206 TYPE(xt_config),
INTENT(inout) :: config
207 INTEGER,
INTENT(in) :: cnvsize
208 INTEGER(c_int) :: cnvsize_c
210 SUBROUTINE xt_config_set_idxvec_autoconvert_size_c(config, cnvsize) &
211 bind(c, name=
'xt_config_set_idxvec_autoconvert_size')
212 IMPORT :: c_int, c_ptr
213 TYPE(c_ptr),
VALUE :: config
214 INTEGER(c_int),
VALUE :: cnvsize
215 END SUBROUTINE xt_config_set_idxvec_autoconvert_size_c
217 IF (cnvsize > huge(1_c_int) .OR. cnvsize < 1) &
218 CALL xt_abort(
"invalid conversion size", filename, __line__)
220 cnvsize_c = int(cnvsize, c_int)
221 CALL xt_config_set_idxvec_autoconvert_size_c(config%cptr, cnvsize_c)
225 TYPE(xt_config),
INTENT(in) :: config
228 FUNCTION xt_config_get_redist_mthread_mode_c(config)
RESULT(mt_mode) &
229 bind(c, name=
'xt_config_get_redist_mthread_mode')
230 IMPORT :: c_int, c_ptr
231 TYPE(c_ptr),
VALUE :: config
232 INTEGER(c_int) :: mt_mode
233 END FUNCTION xt_config_get_redist_mthread_mode_c
235 mt_mode = int(xt_config_get_redist_mthread_mode_c(config%cptr))
239 TYPE(xt_config),
INTENT(inout) :: config
240 INTEGER,
INTENT(in) :: mt_mode
241 INTEGER(c_int) :: mt_mode_c
243 SUBROUTINE xt_config_set_redist_mthread_mode_c(config, mt_mode) &
244 bind(c, name=
'xt_config_set_redist_mthread_mode')
245 IMPORT :: c_int, c_ptr
246 TYPE(c_ptr),
VALUE :: config
247 INTEGER(c_int),
VALUE :: mt_mode
248 END SUBROUTINE xt_config_set_redist_mthread_mode_c
250 IF (mt_mode > huge(1_c_int) .OR. mt_mode < 0) &
251 CALL xt_abort(
"invalid multi-threading mode", filename, __line__)
253 mt_mode_c = int(mt_mode, c_int)
254 CALL xt_config_set_redist_mthread_mode_c(config%cptr, mt_mode_c)
258 TYPE(xt_config),
INTENT(in) :: config
261 FUNCTION xt_config_get_sort_algorithm_id_c(config)
RESULT(sort_algo) &
262 bind(c, name=
'xt_config_get_sort_algorithm_id')
263 IMPORT :: c_int, c_ptr
264 TYPE(c_ptr),
VALUE :: config
265 INTEGER(c_int) :: sort_algo
266 END FUNCTION xt_config_get_sort_algorithm_id_c
268 sort_algo = int(xt_config_get_sort_algorithm_id_c(config%cptr))
272 TYPE(xt_config),
INTENT(inout) :: config
273 INTEGER,
INTENT(in) :: sort_algo
274 INTEGER(c_int) :: sort_algo_c
276 SUBROUTINE xt_config_set_sort_algorithm_by_id_c(config, sort_algo) &
277 bind(c, name=
'xt_config_set_sort_algorithm_by_id')
278 IMPORT :: c_int, c_ptr
279 TYPE(c_ptr),
VALUE :: config
280 INTEGER(c_int),
VALUE :: sort_algo
281 END SUBROUTINE xt_config_set_sort_algorithm_by_id_c
283 IF (sort_algo > huge(1_c_int) .OR. sort_algo < 0) &
284 CALL xt_abort(
"invalid algorithm selection", filename, __line__)
286 sort_algo_c = int(sort_algo, c_int)
287 CALL xt_config_set_sort_algorithm_by_id_c(config%cptr, sort_algo_c)
306 TYPE(xt_config),
INTENT(inout) :: config
307 INTEGER,
INTENT(in) :: memconserve
309 SUBROUTINE xt_config_set_mem_saving_c(config, memconserve) &
310 BIND(c, name="xt_config_set_mem_saving")
311 IMPORT :: c_ptr, c_int
312 TYPE(c_ptr),
VALUE :: config
313 INTEGER(c_int),
VALUE :: memconserve
314 END SUBROUTINE xt_config_set_mem_saving_c
316 INTEGER(c_int) :: memconserve_c
317 memconserve_c = int(memconserve, c_int)
318 CALL xt_config_set_mem_saving_c(config%cptr, memconserve_c)
326 TYPE(xt_config),
INTENT(in) :: config
327 INTEGER :: memconserve
329 FUNCTION xt_config_get_mem_saving_c(config) &
330 BIND(c, name="xt_config_get_mem_saving") result(memconserve)
331 IMPORT :: c_ptr, c_int
332 TYPE(c_ptr),
VALUE :: config
333 INTEGER(c_int) :: memconserve
334 END FUNCTION xt_config_get_mem_saving_c
336 INTEGER(c_int) :: memconserve_c
337 memconserve_c = xt_config_get_mem_saving_c(config%cptr)
338 memconserve = int(memconserve_c)
344 TYPE(xt_config),
INTENT(in) :: config
345 TYPE(xt_xmdd_bucket_gen) :: gen
347 FUNCTION xt_config_get_xmdd_bucket_gen_c(config) &
348 bind(c, name=
'xt_config_get_xmdd_bucket_gen') result(gen)
350 TYPE(c_ptr),
VALUE :: config
352 END FUNCTION xt_config_get_xmdd_bucket_gen_c
355 gen_c = xt_config_get_xmdd_bucket_gen_c(config%cptr)
356 gen = xt_xmdd_bucket_gen_c2f(gen_c)
363 TYPE(xt_config),
INTENT(inout) :: config
364 TYPE(xt_xmdd_bucket_gen),
INTENT(in) :: gen
366 SUBROUTINE xt_config_set_xmdd_bucket_gen_c(config, gen) &
367 bind(c, name=
'xt_config_set_xmdd_bucket_gen')
369 TYPE(c_ptr),
VALUE :: config, gen
370 END SUBROUTINE xt_config_set_xmdd_bucket_gen_c
372 CALL xt_config_set_xmdd_bucket_gen_c(config%cptr, &
377 TYPE(xt_config),
INTENT(inout) :: config
378 INTEGER,
INTENT(in) :: preference
379 INTEGER(c_int) :: preference_c
381 SUBROUTINE xt_config_set_xmap_stripe_align_c(config, preference) &
382 bind(c, name=
'xt_config_set_xmap_stripe_align')
383 IMPORT :: c_int, c_ptr
384 TYPE(c_ptr),
VALUE :: config
385 INTEGER(c_int),
VALUE :: preference
386 END SUBROUTINE xt_config_set_xmap_stripe_align_c
388 preference_c = int(preference, c_int)
389 CALL xt_config_set_xmap_stripe_align_c(config%cptr, preference_c)
393 TYPE(xt_config),
INTENT(in) :: config
394 INTEGER :: preference
396 FUNCTION xt_config_get_xmap_stripe_align_c(config)
RESULT(preference) &
397 bind(c, name=
'xt_config_get_xmap_stripe_align')
398 IMPORT :: c_int, c_ptr
399 TYPE(c_ptr),
VALUE :: config
400 INTEGER(c_int) :: preference
401 END FUNCTION xt_config_get_xmap_stripe_align_c
403 preference = int(xt_config_get_xmap_stripe_align_c(config%cptr))
void xt_config_set_xmap_stripe_align(Xt_config config, int use_stripe_align)
void xt_config_set_idxvec_autoconvert_size(Xt_config config, int cnvsize)
void xt_config_set_redist_mthread_mode(Xt_config config, int mode)
int xt_exchanger_id_by_name(const char *name)
void xt_config_delete(Xt_config config)
void xt_config_set_exchange_method(Xt_config config, int method)
void xt_config_set_sort_algorithm_by_id(Xt_config config, int algo)
int xt_config_get_mem_saving(Xt_config config)
void xt_config_set_mem_saving(Xt_config config, int memconserve)
@ xt_exchanger_irecv_isend
@ xt_exchanger_irecv_isend_packed
@ xt_exchanger_irecv_isend_ddt_packed
@ xt_exchanger_neigh_alltoall
@ xt_exchanger_mix_isend_irecv
int xt_config_get_sort_algorithm_id(Xt_config config)
Xt_xmdd_bucket_gen xt_config_get_xmdd_bucket_gen(Xt_config config)
int xt_config_get_redist_mthread_mode(Xt_config config)
Xt_config xt_config_new(void)
void xt_config_set_xmdd_bucket_gen(Xt_config config, Xt_xmdd_bucket_gen bucket_gen_iface)
int xt_config_get_xmap_stripe_align(Xt_config config)
int xt_config_get_idxvec_autoconvert_size(Xt_config config)
int xt_config_get_exchange_method(Xt_config config)
Xt_xmdd_bucket_gen xt_xmdd_bucket_gen_f2c(struct xt_xmdd_bucket_gen_f *p)
Xt_config xt_config_f2c(struct xt_config_f *p)