Skip to content

Commit 89bd04f

Browse files
authored
Merge pull request #276 from sourceryinstitute/vehre/async-alloc-comp-support
Vehre/async alloc comp support
2 parents bb700f2 + 4bb2863 commit 89bd04f

10 files changed

+524
-72
lines changed

CMakeLists.txt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -360,10 +360,16 @@ if(opencoarrays_aware_compiler)
360360
# Unit tests targeting each libcaf_mpi function, argument, and branch of code
361361
add_mpi_test(initialize_mpi 2 ${tests_root}/unit/init_register/initialize_mpi)
362362
add_mpi_test(register 2 ${tests_root}/unit/init_register/register)
363-
add_mpi_test(register_rename_me 2 ${tests_root}/unit/init_register/register_rename_me)
364-
add_mpi_test(register_rename_me_too 2 ${tests_root}/unit/init_register/register_rename_me_too)
363+
add_mpi_test(register_vector 2 ${tests_root}/unit/init_register/register_vector)
364+
add_mpi_test(register_alloc_vector 2 ${tests_root}/unit/init_register/register_alloc_vector)
365365
add_mpi_test(allocate_as_barrier 2 ${tests_root}/unit/init_register/allocate_as_barrier)
366366
add_mpi_test(allocate_as_barrier_proc 32 ${tests_root}/unit/init_register/allocate_as_barrier_proc)
367+
if (gfortran_compiler AND (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 7))
368+
add_mpi_test(register_alloc_comp_1 2 ${tests_root}/unit/init_register/register_alloc_comp_1)
369+
add_mpi_test(register_alloc_comp_2 2 ${tests_root}/unit/init_register/register_alloc_comp_2)
370+
add_mpi_test(register_alloc_comp_3 2 ${tests_root}/unit/init_register/register_alloc_comp_3)
371+
add_mpi_test(check_remote_alloced_comp_1 6 ${tests_root}/unit/init_register/check_remote_alloced_comp_1)
372+
endif()
367373
add_mpi_test(get_array 2 ${tests_root}/unit/send-get/get_array)
368374
add_mpi_test(get_self 2 ${tests_root}/unit/send-get/get_self)
369375
add_mpi_test(send_array 2 ${tests_root}/unit/send-get/send_array)

src/libcaf.h

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,20 @@ typedef enum caf_register_t {
7373
CAF_REGTYPE_LOCK_ALLOC,
7474
CAF_REGTYPE_CRITICAL,
7575
CAF_REGTYPE_EVENT_STATIC,
76-
CAF_REGTYPE_EVENT_ALLOC
76+
CAF_REGTYPE_EVENT_ALLOC,
77+
CAF_REGTYPE_COARRAY_ALLOC_REGISTER_ONLY,
78+
CAF_REGTYPE_COARRAY_ALLOC_ALLOCATE_ONLY
7779
}
7880
caf_register_t;
7981

82+
/* Describes the action to take on _caf_deregister. Keep in sync with
83+
gcc/fortran/trans.h. */
84+
typedef enum caf_deregister_t {
85+
CAF_DEREGTYPE_COARRAY_DEREGISTER,
86+
CAF_DEREGTYPE_COARRAY_DEALLOCATE_ONLY
87+
}
88+
caf_deregister_t;
89+
8090
typedef void* caf_token_t;
8191

8292

@@ -203,11 +213,12 @@ int PREFIX (num_images) (int, int);
203213
#ifdef GCC_GE_7
204214
void PREFIX (register) (size_t, caf_register_t, caf_token_t *,
205215
gfc_descriptor_t *, int *, char *, int);
216+
void PREFIX (deregister) (caf_token_t *, int, int *, char *, int);
206217
#else
207218
void * PREFIX (register) (size_t, caf_register_t, caf_token_t *,
208219
int *, char *, int);
209-
#endif
210220
void PREFIX (deregister) (caf_token_t *, int *, char *, int);
221+
#endif
211222

212223
void PREFIX (caf_get) (caf_token_t, size_t, int, gfc_descriptor_t *,
213224
caf_vector_t *, gfc_descriptor_t *, int, int, int);
@@ -231,9 +242,10 @@ void PREFIX(sendget_by_ref) (caf_token_t dst_token, int dst_image_index,
231242
caf_reference_t *dst_refs, caf_token_t src_token, int src_image_index,
232243
caf_reference_t *src_refs, int dst_kind, int src_kind,
233244
bool may_require_tmp, int *dst_stat, int *src_stat);
245+
int PREFIX(is_present) (caf_token_t, int, caf_reference_t *refs);
234246
#endif
235247

236-
void PREFIX (co_broadcast) (gfc_descriptor_t *, int, int *, char *, int);
248+
void PREFIX (co_broadcast) (gfc_descriptor_t *, int, int *, char *, int);
237249
void PREFIX (co_max) (gfc_descriptor_t *, int, int *, char *, int, int);
238250
void PREFIX (co_min) (gfc_descriptor_t *, int, int *, char *, int, int);
239251
void PREFIX (co_reduce) (gfc_descriptor_t *, void *(*opr) (void *, void *),

0 commit comments

Comments
 (0)