diff options
Diffstat (limited to 'runtime/src/kmp_runtime.cpp')
-rw-r--r-- | runtime/src/kmp_runtime.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/runtime/src/kmp_runtime.cpp b/runtime/src/kmp_runtime.cpp index df0ae04..d876ba1 100644 --- a/runtime/src/kmp_runtime.cpp +++ b/runtime/src/kmp_runtime.cpp @@ -24,6 +24,10 @@ #include "kmp_str.h" #include "kmp_wait_release.h" #include "kmp_wrapper_getpid.h" +#include "kmp_dispatch.h" +#if KMP_USE_HIER_SCHED +#include "kmp_dispatch_hier.h" +#endif #if OMPT_SUPPORT #include "ompt-specific.h" @@ -3072,6 +3076,9 @@ static void __kmp_free_team_arrays(kmp_team_t *team) { team->t.t_dispatch[i].th_disp_buffer = NULL; } } +#if KMP_USE_HIER_SCHED + __kmp_dispatch_free_hierarchies(team); +#endif __kmp_free(team->t.t_threads); __kmp_free(team->t.t_disp_buffer); __kmp_free(team->t.t_dispatch); @@ -5855,6 +5862,13 @@ static void __kmp_reap_thread(kmp_info_t *thread, int is_root) { } #endif /* KMP_AFFINITY_SUPPORTED */ +#if KMP_USE_HIER_SCHED + if (thread->th.th_hier_bar_data != NULL) { + __kmp_free(thread->th.th_hier_bar_data); + thread->th.th_hier_bar_data = NULL; + } +#endif + __kmp_reap_team(thread->th.th_serial_team); thread->th.th_serial_team = NULL; __kmp_free(thread); @@ -7370,6 +7384,10 @@ void __kmp_cleanup(void) { __kmp_i18n_catclose(); +#if KMP_USE_HIER_SCHED + __kmp_hier_scheds.deallocate(); +#endif + #if KMP_STATS_ENABLED __kmp_stats_fini(); #endif |