@@ -945,7 +945,20 @@ PREFIX(init) (int *argc, char ***argv)
945945 * memory. */
946946 ierr = MPI_Win_create_dynamic (MPI_INFO_NULL , CAF_COMM_WORLD ,
947947 & global_dynamic_win ); chk_err (ierr );
948+
948949 CAF_Win_lock_all (global_dynamic_win );
950+ #ifdef EXTRA_DEBUG_OUTPUT
951+ if (caf_this_image == 1 )
952+ {
953+ int * win_model ;
954+ flag = 0 ;
955+ ierr = MPI_Win_get_attr (global_dynamic_win , MPI_WIN_MODEL , & win_model , & flag );
956+ chk_err (ierr );
957+ dprint ("The mpi memory model is: %s (0x%x, %d).\n" ,
958+ * win_model == MPI_WIN_UNIFIED ? "unified " : "separate" ,
959+ * win_model , flag );
960+ }
961+ #endif
949962 }
950963}
951964
@@ -1010,6 +1023,7 @@ finalize_internal(int status_code)
10101023 /* Add a conventional barrier to prevent images from quitting too early. */
10111024 if (status_code == 0 )
10121025 {
1026+ dprint ("In barrier for finalize..." );
10131027 ierr = MPI_Barrier (CAF_COMM_WORLD ); chk_err (ierr );
10141028 }
10151029 else
@@ -1056,7 +1070,7 @@ finalize_internal(int status_code)
10561070 CAF_Win_unlock_all (* p );
10571071#ifdef GCC_GE_7
10581072 /* Unregister the window to the descriptors when freeing the token. */
1059- dprint ("MPI_Win_free(p); \n" );
1073+ dprint ("MPI_Win_free(%p) \n" , p );
10601074 ierr = MPI_Win_free (p ); chk_err (ierr );
10611075 free (cur_tok -> token );
10621076#else // GCC_GE_7
@@ -1172,6 +1186,8 @@ PREFIX(register) (size_t size, caf_register_t type, caf_token_t *token,
11721186 else
11731187 actual_size = size ;
11741188
1189+ dprint ("size = %zd, type = %d, token = %p, desc = %p\n" , size , type , token ,
1190+ desc );
11751191 switch (type )
11761192 {
11771193 case CAF_REGTYPE_COARRAY_ALLOC_REGISTER_ONLY :
@@ -1192,9 +1208,10 @@ PREFIX(register) (size_t size, caf_register_t type, caf_token_t *token,
11921208#ifdef EXTRA_DEBUG_OUTPUT
11931209 ierr = MPI_Get_address (* token , & mpi_address ); chk_err (ierr );
11941210#endif
1195- dprint ("Attach slave token %p (mpi-address: %zd ) to "
1211+ dprint ("Attach slave token %p (size: %zd, mpi-address: %p ) to "
11961212 "global_dynamic_window = %d\n" ,
1197- slave_token , mpi_address , global_dynamic_win );
1213+ slave_token , sizeof (mpi_caf_slave_token_t ), mpi_address ,
1214+ global_dynamic_win );
11981215
11991216 /* Register the memory for auto freeing. */
12001217 struct caf_allocated_slave_tokens_t * tmp =
@@ -1214,7 +1231,7 @@ PREFIX(register) (size_t size, caf_register_t type, caf_token_t *token,
12141231#ifdef EXTRA_DEBUG_OUTPUT
12151232 ierr = MPI_Get_address (mem , & mpi_address ); chk_err (ierr );
12161233#endif
1217- dprint ("Attach mem %p (mpi-address: %zd ) to global_dynamic_window = "
1234+ dprint ("Attach mem %p (mpi-address: %p ) to global_dynamic_window = "
12181235 "%d on slave_token %p, size %zd, ierr: %d\n" ,
12191236 mem , mpi_address , global_dynamic_win , slave_token ,
12201237 actual_size , ierr );
@@ -1231,8 +1248,8 @@ PREFIX(register) (size_t size, caf_register_t type, caf_token_t *token,
12311248 }
12321249 }
12331250 CAF_Win_lock_all (global_dynamic_win );
1234- dprint ("Slave token %p on exit: mpi_caf_slave_token_t { desc: %p }\n" ,
1235- slave_token , slave_token -> desc );
1251+ dprint ("Slave token %p on exit: mpi_caf_slave_token_t { memptr: %p, desc: %p }\n" ,
1252+ slave_token , slave_token -> memptr , slave_token -> desc );
12361253 }
12371254 break ;
12381255 default :
@@ -1282,8 +1299,8 @@ PREFIX(register) (size_t size, caf_register_t type, caf_token_t *token,
12821299 * register. */
12831300 mpi_token -> memptr = mem ;
12841301 dprint ("Token %p on exit: mpi_caf_token_t "
1285- "{ (local_)memptr: %p, memptr_win: %d }\n" ,
1286- mpi_token , mpi_token -> memptr , mpi_token -> memptr_win );
1302+ "{ (local_)memptr: %p (size: %zd) , memptr_win: %d }\n" ,
1303+ mpi_token , mpi_token -> memptr , size , mpi_token -> memptr_win );
12871304 } // default:
12881305 break ;
12891306 } // switch
@@ -3928,7 +3945,7 @@ get_data(void *ds, mpi_caf_token_t *token, MPI_Aint offset, int dst_type,
39283945 ds , win , image_index + 1 , offset , src_size , dst_size ,
39293946 dst_type , dst_kind , src_type , src_kind );
39303947 else
3931- dprint ("%p = global_win(%d) offset: %zd (%zd ) of size %zd -> %zd, "
3948+ dprint ("%p = global_win(%d) offset: %zd (0x%x ) of size %zd -> %zd, "
39323949 "dst type %d(%d), src type %d(%d)\n" ,
39333950 ds , image_index + 1 , offset , offset , src_size , dst_size ,
39343951 dst_type , dst_kind , src_type , src_kind );
@@ -4064,9 +4081,10 @@ get_for_ref(caf_reference_t *ref, size_t *i, size_t dst_index,
40644081 return ;
40654082 }
40664083
4067- dprint ("sr_offset = %zd, sr = %p, desc_offset = %zd, src = %p, "
4068- "sr_glb = %d, desc_glb = %d\n" ,
4069- sr_byte_offset , sr , desc_byte_offset , src , sr_global , desc_global );
4084+ dprint ("caf_ref = %p (type = %d), sr_offset = %zd, sr = %p, rdesc = %p, "
4085+ "desc_offset = %zd, src = %p, sr_glb = %d, desc_glb = %d, src_dim = %d\n" ,
4086+ ref , ref -> type , sr_byte_offset , sr , rdesc , desc_byte_offset , src ,
4087+ sr_global , desc_global , src_dim );
40704088
40714089 if (ref -> next == NULL )
40724090 {
@@ -4233,6 +4251,7 @@ get_for_ref(caf_reference_t *ref, size_t *i, size_t dst_index,
42334251 }
42344252 else
42354253 {
4254+ dprint ("Fetching remote data.\n" );
42364255 ierr = MPI_Get (& src_desc_data ,
42374256 sizeof_desc_for_rank (ref_rank ), MPI_BYTE ,
42384257 memptr_win_rank , desc_byte_offset ,
@@ -4247,8 +4266,8 @@ get_for_ref(caf_reference_t *ref, size_t *i, size_t dst_index,
42474266 sr_byte_offset = 0 ;
42484267 desc_byte_offset = 0 ;
42494268#ifdef EXTRA_DEBUG_OUTPUT
4250- dprint ("remote desc rank: %zd (ref_rank : %zd) \n" ,
4251- GFC_DESCRIPTOR_RANK ( src ), ref_rank );
4269+ dprint ("remote desc rank: %zd, base : %p \n" , GFC_DESCRIPTOR_RANK ( src ) ,
4270+ src -> base_addr );
42524271 for (int r = 0 ; r < GFC_DESCRIPTOR_RANK (src ); ++ r )
42534272 {
42544273 dprint ("remote desc dim[%d] = (lb=%zd, ub=%zd, stride=%zd)\n" ,
@@ -4617,7 +4636,8 @@ PREFIX(get_by_ref) (caf_token_t token, int image_index,
46174636
46184637 check_image_health (global_dynamic_win_rank , stat );
46194638
4620- dprint ("Entering get_by_ref(may_require_tmp = %d).\n" , may_require_tmp );
4639+ dprint ("Entering get_by_ref(may_require_tmp = %d), win_rank = %d, global_rank = %d.\n" ,
4640+ may_require_tmp , memptr_win_rank , global_dynamic_win_rank );
46214641
46224642 /* Compute the size of the result. In the beginning size just counts the
46234643 * number of elements. */
@@ -4627,8 +4647,9 @@ PREFIX(get_by_ref) (caf_token_t token, int image_index,
46274647 CAF_Win_lock (MPI_LOCK_SHARED , memptr_win_rank , mpi_token -> memptr_win );
46284648 while (riter )
46294649 {
4630- dprint ("offset = %zd, remote_mem = %p, access_data(global_win) = %d\n" ,
4631- data_offset , remote_memptr , access_data_through_global_win );
4650+ dprint ("caf_ref = %p, offset = %zd, remote_mem = %p, global_win(data, desc)) = (%d, %d)\n" ,
4651+ riter , data_offset , remote_memptr , access_data_through_global_win ,
4652+ access_desc_through_global_win );
46324653 switch (riter -> type )
46334654 {
46344655 case CAF_REF_COMPONENT :
@@ -4642,6 +4663,8 @@ PREFIX(get_by_ref) (caf_token_t token, int image_index,
46424663 MPI_Aint_add ((MPI_Aint )remote_memptr , data_offset ),
46434664 stdptr_size , MPI_BYTE , global_dynamic_win );
46444665 chk_err (ierr );
4666+ dprint ("global_win access: remote_memptr(old) = %p, remote_memptr(new) = %p, offset = %zd.\n" ,
4667+ remote_base_memptr , remote_memptr , data_offset );
46454668 /* On the second indirection access also the remote descriptor
46464669 * using the global window. */
46474670 access_desc_through_global_win = true;
@@ -4652,8 +4675,8 @@ PREFIX(get_by_ref) (caf_token_t token, int image_index,
46524675 ierr = MPI_Get (& remote_memptr , stdptr_size , MPI_BYTE , memptr_win_rank ,
46534676 data_offset , stdptr_size , MPI_BYTE ,
46544677 mpi_token -> memptr_win ); chk_err (ierr );
4655- dprint ("get(custom_token %d), offset = %zd, res. remote_mem = %p\n" ,
4656- mpi_token -> memptr_win , data_offset , remote_memptr );
4678+ dprint ("get(custom_token %d): remote_memptr(old) = %p, remote_memptr(new) = %p, offset = %zd \n" ,
4679+ mpi_token -> memptr_win , remote_base_memptr , remote_memptr , data_offset );
46574680 /* All future access is through the global dynamic window. */
46584681 access_data_through_global_win = true;
46594682 }
@@ -4701,7 +4724,7 @@ PREFIX(get_by_ref) (caf_token_t token, int image_index,
47014724 src = mpi_token -> desc ;
47024725
47034726#ifdef EXTRA_DEBUG_OUTPUT
4704- dprint ("remote desc rank: %zd\n" , GFC_DESCRIPTOR_RANK (src ));
4727+ dprint ("remote desc rank: %zd, base_addr: %p \n" , GFC_DESCRIPTOR_RANK (src ), src -> base_addr );
47054728 for (i = 0 ; i < GFC_DESCRIPTOR_RANK (src ); ++ i )
47064729 {
47074730 dprint ("remote desc dim[%zd] = (lb=%zd, ub=%zd, stride=%zd)\n" ,
0 commit comments