@@ -945,7 +945,20 @@ PREFIX(init) (int *argc, char ***argv)
945
945
* memory. */
946
946
ierr = MPI_Win_create_dynamic (MPI_INFO_NULL , CAF_COMM_WORLD ,
947
947
& global_dynamic_win ); chk_err (ierr );
948
+
948
949
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
949
962
}
950
963
}
951
964
@@ -1010,6 +1023,7 @@ finalize_internal(int status_code)
1010
1023
/* Add a conventional barrier to prevent images from quitting too early. */
1011
1024
if (status_code == 0 )
1012
1025
{
1026
+ dprint ("In barrier for finalize..." );
1013
1027
ierr = MPI_Barrier (CAF_COMM_WORLD ); chk_err (ierr );
1014
1028
}
1015
1029
else
@@ -1056,7 +1070,7 @@ finalize_internal(int status_code)
1056
1070
CAF_Win_unlock_all (* p );
1057
1071
#ifdef GCC_GE_7
1058
1072
/* 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 );
1060
1074
ierr = MPI_Win_free (p ); chk_err (ierr );
1061
1075
free (cur_tok -> token );
1062
1076
#else // GCC_GE_7
@@ -1172,6 +1186,8 @@ PREFIX(register) (size_t size, caf_register_t type, caf_token_t *token,
1172
1186
else
1173
1187
actual_size = size ;
1174
1188
1189
+ dprint ("size = %zd, type = %d, token = %p, desc = %p\n" , size , type , token ,
1190
+ desc );
1175
1191
switch (type )
1176
1192
{
1177
1193
case CAF_REGTYPE_COARRAY_ALLOC_REGISTER_ONLY :
@@ -1192,9 +1208,10 @@ PREFIX(register) (size_t size, caf_register_t type, caf_token_t *token,
1192
1208
#ifdef EXTRA_DEBUG_OUTPUT
1193
1209
ierr = MPI_Get_address (* token , & mpi_address ); chk_err (ierr );
1194
1210
#endif
1195
- dprint ("Attach slave token %p (mpi-address: %zd ) to "
1211
+ dprint ("Attach slave token %p (size: %zd, mpi-address: %p ) to "
1196
1212
"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 );
1198
1215
1199
1216
/* Register the memory for auto freeing. */
1200
1217
struct caf_allocated_slave_tokens_t * tmp =
@@ -1214,7 +1231,7 @@ PREFIX(register) (size_t size, caf_register_t type, caf_token_t *token,
1214
1231
#ifdef EXTRA_DEBUG_OUTPUT
1215
1232
ierr = MPI_Get_address (mem , & mpi_address ); chk_err (ierr );
1216
1233
#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 = "
1218
1235
"%d on slave_token %p, size %zd, ierr: %d\n" ,
1219
1236
mem , mpi_address , global_dynamic_win , slave_token ,
1220
1237
actual_size , ierr );
@@ -1231,8 +1248,8 @@ PREFIX(register) (size_t size, caf_register_t type, caf_token_t *token,
1231
1248
}
1232
1249
}
1233
1250
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 );
1236
1253
}
1237
1254
break ;
1238
1255
default :
@@ -1282,8 +1299,8 @@ PREFIX(register) (size_t size, caf_register_t type, caf_token_t *token,
1282
1299
* register. */
1283
1300
mpi_token -> memptr = mem ;
1284
1301
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 );
1287
1304
} // default:
1288
1305
break ;
1289
1306
} // switch
@@ -3928,7 +3945,7 @@ get_data(void *ds, mpi_caf_token_t *token, MPI_Aint offset, int dst_type,
3928
3945
ds , win , image_index + 1 , offset , src_size , dst_size ,
3929
3946
dst_type , dst_kind , src_type , src_kind );
3930
3947
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, "
3932
3949
"dst type %d(%d), src type %d(%d)\n" ,
3933
3950
ds , image_index + 1 , offset , offset , src_size , dst_size ,
3934
3951
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,
4064
4081
return ;
4065
4082
}
4066
4083
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 );
4070
4088
4071
4089
if (ref -> next == NULL )
4072
4090
{
@@ -4233,6 +4251,7 @@ get_for_ref(caf_reference_t *ref, size_t *i, size_t dst_index,
4233
4251
}
4234
4252
else
4235
4253
{
4254
+ dprint ("Fetching remote data.\n" );
4236
4255
ierr = MPI_Get (& src_desc_data ,
4237
4256
sizeof_desc_for_rank (ref_rank ), MPI_BYTE ,
4238
4257
memptr_win_rank , desc_byte_offset ,
@@ -4247,8 +4266,8 @@ get_for_ref(caf_reference_t *ref, size_t *i, size_t dst_index,
4247
4266
sr_byte_offset = 0 ;
4248
4267
desc_byte_offset = 0 ;
4249
4268
#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 );
4252
4271
for (int r = 0 ; r < GFC_DESCRIPTOR_RANK (src ); ++ r )
4253
4272
{
4254
4273
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,
4617
4636
4618
4637
check_image_health (global_dynamic_win_rank , stat );
4619
4638
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 );
4621
4641
4622
4642
/* Compute the size of the result. In the beginning size just counts the
4623
4643
* number of elements. */
@@ -4627,8 +4647,9 @@ PREFIX(get_by_ref) (caf_token_t token, int image_index,
4627
4647
CAF_Win_lock (MPI_LOCK_SHARED , memptr_win_rank , mpi_token -> memptr_win );
4628
4648
while (riter )
4629
4649
{
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 );
4632
4653
switch (riter -> type )
4633
4654
{
4634
4655
case CAF_REF_COMPONENT :
@@ -4642,6 +4663,8 @@ PREFIX(get_by_ref) (caf_token_t token, int image_index,
4642
4663
MPI_Aint_add ((MPI_Aint )remote_memptr , data_offset ),
4643
4664
stdptr_size , MPI_BYTE , global_dynamic_win );
4644
4665
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 );
4645
4668
/* On the second indirection access also the remote descriptor
4646
4669
* using the global window. */
4647
4670
access_desc_through_global_win = true;
@@ -4652,8 +4675,8 @@ PREFIX(get_by_ref) (caf_token_t token, int image_index,
4652
4675
ierr = MPI_Get (& remote_memptr , stdptr_size , MPI_BYTE , memptr_win_rank ,
4653
4676
data_offset , stdptr_size , MPI_BYTE ,
4654
4677
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 );
4657
4680
/* All future access is through the global dynamic window. */
4658
4681
access_data_through_global_win = true;
4659
4682
}
@@ -4701,7 +4724,7 @@ PREFIX(get_by_ref) (caf_token_t token, int image_index,
4701
4724
src = mpi_token -> desc ;
4702
4725
4703
4726
#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 );
4705
4728
for (i = 0 ; i < GFC_DESCRIPTOR_RANK (src ); ++ i )
4706
4729
{
4707
4730
dprint ("remote desc dim[%zd] = (lb=%zd, ub=%zd, stride=%zd)\n" ,
0 commit comments