@@ -934,39 +934,9 @@ finalize_internal (int status_code)
934934 CAF_Win_unlock_all (* p );
935935#ifdef GCC_GE_7
936936 /* 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- // {
950937 dprint ("%d/%d: MPI_Win_free (p);\n" , caf_this_image ,
951938 caf_num_images );
952939 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);
970940 free (cur_tok -> token );
971941#else // GCC_GE_7
972942 MPI_Win_free (p );
@@ -1146,27 +1116,6 @@ PREFIX (register) (size_t size, caf_register_t type, caf_token_t *token,
11461116 * token = calloc (1 , sizeof (mpi_caf_token_t ));
11471117 mpi_token = (mpi_caf_token_t * ) (* token );
11481118 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- // }
11701119
11711120#if MPI_VERSION >= 3
11721121 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,
12891238
12901239 PREFIX (sync_all ) (NULL , NULL , 0 );
12911240
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 ;
12941243 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 ;
13041245
13051246 if (stat )
13061247 * stat = 0 ;
@@ -1394,47 +1335,11 @@ PREFIX (deregister) (caf_token_t *token, int *stat, char *errmsg, int errmsg_len
13941335
13951336 if (cur -> token == * token )
13961337 {
1338+ p = TOKEN (* token );
1339+ #ifdef GCC_GE_7
13971340 dprint ("%d/%d: Found regular token %p for memptr_win: %p.\n" ,
13981341 caf_this_image , caf_num_images , * token ,
13991342 ((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- // }
14381343#endif
14391344 CAF_Win_unlock_all (* p );
14401345 MPI_Win_free (p );
@@ -2717,6 +2622,16 @@ copy_data (void *ds, mpi_caf_token_t *token, MPI_Aint offset, int dst_type,
27172622 if (dst_type == src_type && dst_kind == src_kind )
27182623 {
27192624 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
27202635 MPI_Get (ds , sz , MPI_BYTE , image_index , offset , sz , MPI_BYTE ,
27212636 win );
27222637 if ((dst_type == BT_CHARACTER || src_type == BT_CHARACTER )
0 commit comments