@@ -934,39 +934,9 @@ finalize_internal (int status_code)
934
934
CAF_Win_unlock_all (* p );
935
935
#ifdef GCC_GE_7
936
936
/* Unregister the window to the descriptors when freeing the token. */
937
- // mpi_caf_token_t *mpi_token = (mpi_caf_token_t *)cur_tok->token;
938
- // if (mpi_token->desc_win)
939
- // {
940
- // dprint ("%d/%d: MPI_Win_free (mpi_token->desc_win);\n", caf_this_image,
941
- // caf_num_images);
942
- // CAF_Win_unlock_all (*mpi_token->desc_win);
943
- // MPI_Win_free (mpi_token->desc_win);
944
- // free (mpi_token->desc_win);
945
- // }
946
- // else if (*(mpi_token->flags) & FLAG_DESC_PRESENT)
947
- // MPI_Win_detach (global_dynamic_win, mpi_token->desc);
948
- // if (p != NULL)
949
- // {
950
937
dprint ("%d/%d: MPI_Win_free (p);\n" , caf_this_image ,
951
938
caf_num_images );
952
939
MPI_Win_free (p );
953
- // }
954
- // else
955
- // MPI_Win_detach (global_dynamic_win, mpi_token->memptr);
956
- /* Free the memory only, when it was allocated by the caf-library. */
957
- // if ((*(mpi_token->flags) & FLAG_MEM_NOT_ALLOCATED_BY_MPI) > 0)
958
- // free (mpi_token->memptr);
959
- // if ((*(mpi_token->flags) & FLAG_AVAIL_BY_DYNAMIC_WIN) > 0)
960
- // {
961
- // CAF_Win_unlock_all (global_dynamic_win);
962
- // MPI_Win_detach (global_dynamic_win, mpi_token);
963
- // CAF_Win_lock_all (global_dynamic_win);
964
- // }
965
- /* Free the flags window only after accessing. */
966
- // CAF_Win_unlock_all (mpi_token->flags_win);
967
- // dprint ("%d/%d: MPI_Win_free (mpi_token->flags_win);\n", caf_this_image,
968
- // caf_num_images);
969
- // MPI_Win_free (&mpi_token->flags_win);
970
940
free (cur_tok -> token );
971
941
#else // GCC_GE_7
972
942
MPI_Win_free (p );
@@ -1146,27 +1116,6 @@ PREFIX (register) (size_t size, caf_register_t type, caf_token_t *token,
1146
1116
* token = calloc (1 , sizeof (mpi_caf_token_t ));
1147
1117
mpi_token = (mpi_caf_token_t * ) (* token );
1148
1118
p = TOKEN (mpi_token );
1149
- // MPI_Win_allocate (sizeof(unsigned), 1, mpi_info_same_size, CAF_COMM_WORLD,
1150
- // &mpi_token->flags,
1151
- // &mpi_token->flags_win);
1152
- // CAF_Win_lock_all (mpi_token->flags_win);
1153
-
1154
- // if ((type == CAF_REGTYPE_COARRAY_ALLOC
1155
- // || type == CAF_REGTYPE_COARRAY_STATIC)
1156
- // && GFC_DESCRIPTOR_RANK (desc) != 0)
1157
- // {
1158
- // /* Add a window for the descriptor when an array is registered. */
1159
- // mpi_token->desc_win = (MPI_Win *)malloc (sizeof (MPI_Win));
1160
- // const size_t desc_size = sizeof (gfc_descriptor_t)
1161
- // + /*GFC_DESCRIPTOR_RANK (desc)*/
1162
- // GFC_MAX_DIMENSIONS
1163
- // * sizeof (descriptor_dimension);
1164
- // mpi_token->desc = desc;
1165
- // MPI_Win_create (desc, desc_size, 1, mpi_info_same_size,
1166
- // CAF_COMM_WORLD, mpi_token->desc_win);
1167
- // CAF_Win_lock_all (*(mpi_token->desc_win));
1168
- // *(mpi_token->flags) |= FLAG_DESC_PRESENT;
1169
- // }
1170
1119
1171
1120
#if MPI_VERSION >= 3
1172
1121
MPI_Win_allocate (actual_size , 1 , MPI_INFO_NULL , CAF_COMM_WORLD , & mem , p );
@@ -1289,18 +1238,10 @@ PREFIX (register) (size_t size, caf_register_t type, caf_token_t *token,
1289
1238
1290
1239
PREFIX (sync_all ) (NULL , NULL , 0 );
1291
1240
1292
- caf_static_t * tmp = malloc (sizeof (caf_static_t ));
1293
- tmp -> prev = caf_tot ;
1241
+ struct caf_allocated_tokens_t * tmp = malloc (sizeof (struct caf_allocated_tokens_t ));
1242
+ tmp -> prev = caf_allocated_tokens ;
1294
1243
tmp -> token = * token ;
1295
- caf_tot = tmp ;
1296
-
1297
- if (type == CAF_REGTYPE_COARRAY_STATIC )
1298
- {
1299
- caf_static_t * tmp = malloc (sizeof (caf_static_t ));
1300
- tmp -> prev = caf_static_list ;
1301
- tmp -> token = * token ;
1302
- caf_static_list = tmp ;
1303
- }
1244
+ caf_allocated_tokens = tmp ;
1304
1245
1305
1246
if (stat )
1306
1247
* stat = 0 ;
@@ -1394,47 +1335,11 @@ PREFIX (deregister) (caf_token_t *token, int *stat, char *errmsg, int errmsg_len
1394
1335
1395
1336
if (cur -> token == * token )
1396
1337
{
1338
+ p = TOKEN (* token );
1339
+ #ifdef GCC_GE_7
1397
1340
dprint ("%d/%d: Found regular token %p for memptr_win: %p.\n" ,
1398
1341
caf_this_image , caf_num_images , * token ,
1399
1342
((mpi_caf_token_t * )* token )-> memptr_win );
1400
- p = TOKEN (* token );
1401
- #ifdef GCC_GE_7
1402
- // mpi_caf_token_t *mpi_token = *(mpi_caf_token_t **)token;
1403
- // if (mpi_token->memptr)
1404
- // {
1405
- // /* Free the memory, when we have allocated it. */
1406
- // free (mpi_token->memptr);
1407
- // mpi_token->memptr = NULL;
1408
- // }
1409
-
1410
- // if (type != CAF_DEREGTYPE_COARRAY_DEALLOCATE_ONLY)
1411
- // {
1412
- // if (mpi_token->desc_win)
1413
- // {
1414
- // CAF_Win_unlock_all(*(mpi_token->desc_win));
1415
- // MPI_Win_free (mpi_token->desc_win);
1416
- // free (mpi_token->desc_win);
1417
- // mpi_token->desc_win = NULL;
1418
- // mpi_token->desc = NULL;
1419
- // // Flags is deleted below. No needed to remove any flags here.
1420
- // }
1421
- // else if (mpi_token->desc)
1422
- // {
1423
- // CAF_Win_unlock_all (global_dynamic_win);
1424
- // MPI_Win_detach (global_dynamic_win, mpi_token->desc);
1425
- // CAF_Win_lock_all (global_dynamic_win);
1426
- // mpi_token->desc = NULL;
1427
- // // Flags is deleted below. No needed to remove any flags here.
1428
- // }
1429
- // if ((*(mpi_token->flags) & FLAG_AVAIL_BY_DYNAMIC_WIN) > 0)
1430
- // {
1431
- // CAF_Win_unlock_all (global_dynamic_win);
1432
- // MPI_Win_detach (global_dynamic_win, mpi_token);
1433
- // CAF_Win_lock_all (global_dynamic_win);
1434
- // }
1435
- // CAF_Win_unlock_all (mpi_token->flags_win);
1436
- // MPI_Win_free (&mpi_token->flags_win);
1437
- // }
1438
1343
#endif
1439
1344
CAF_Win_unlock_all (* p );
1440
1345
MPI_Win_free (p );
@@ -2717,6 +2622,16 @@ copy_data (void *ds, mpi_caf_token_t *token, MPI_Aint offset, int dst_type,
2717
2622
if (dst_type == src_type && dst_kind == src_kind )
2718
2623
{
2719
2624
size_t sz = (dst_size > src_size ? src_size : dst_size ) * num ;
2625
+ #ifdef EXTRA_DEBUG_OUTPUT
2626
+ if (token )
2627
+ dprint ("%d/%d: %s() %p = win: %p -> offset: %d of size %d bytes\n" ,
2628
+ caf_this_image , caf_num_images , __FUNCTION__ , ds , win ,
2629
+ offset , sz );
2630
+ else
2631
+ dprint ("%d/%d: %s() %p = global_win offset: %d of size %d bytes\n" ,
2632
+ caf_this_image , caf_num_images , __FUNCTION__ , ds ,
2633
+ offset , sz );
2634
+ #endif
2720
2635
MPI_Get (ds , sz , MPI_BYTE , image_index , offset , sz , MPI_BYTE ,
2721
2636
win );
2722
2637
if ((dst_type == BT_CHARACTER || src_type == BT_CHARACTER )
0 commit comments