diff --git a/runtime/src/katracereader.cpp b/runtime/src/katracereader.cpp index 35869aabf6f162da1890102f4d97048bb7562b72..7277c87caadbcc42f0ff19e978fde4f05201f1eb 100644 --- a/runtime/src/katracereader.cpp +++ b/runtime/src/katracereader.cpp @@ -2264,7 +2264,7 @@ static void callback_csv_event( threadstate_t threadstate(threadstate_t::STATE); threadstate.kid = kid; threadstate.start = event->date; - threadstate.value = 0; + threadstate.value = value; threadstate.cpu = KAAPI_EVENT_DATA(event,1,i32)[0]; threadstate.node = KAAPI_EVENT_DATA(event,1,i32)[1]; threadstates.push_back( threadstate ); diff --git a/runtime/src/kmp_tasking.c b/runtime/src/kmp_tasking.c index 0eca1ad7f67e20bca21b04c013183966274a82fd..78810c6d0d5391592853ece1547f9c2727e73b07 100644 --- a/runtime/src/kmp_tasking.c +++ b/runtime/src/kmp_tasking.c @@ -2508,7 +2508,8 @@ static inline int __kmp_execute_tasks_template(kmp_info_t *thread, kmp_int32 gti use_own_tasks = 1; else #endif -#if defined(LIBOMP_USE_THEQUEUE) + +#if defined(LIBOMP_USE_THEQUEUE) //TG: avoid to return if flag condition is not check - WARN: threads are higly active if (flag != NULL && flag->done_check()) #else diff --git a/runtime/src/kmp_wait_release.h b/runtime/src/kmp_wait_release.h index 720ba18f11a728d07811f1fa6436f0efcf8bcc3f..ba2ab59b6ea4c6b5a07661bebf4f6af657deb661 100644 --- a/runtime/src/kmp_wait_release.h +++ b/runtime/src/kmp_wait_release.h @@ -252,8 +252,36 @@ __kmp_wait_template(kmp_info_t *this_thr, C *flag, int final_spin continue; KF_TRACE(50, ("__kmp_wait_sleep: T#%d suspend time reached\n", th_gtid)); - +#if OMPT_SUPPORT + enum { SUSPEND_STATE=13 }; + if (ompt_enabled && + ompt_callbacks.ompt_callback(ompt_event_thread_state_begin)) { +#if defined(__linux__) + kmp_int32 cpu = sched_getcpu(); +#else + kmp_int32 cpu =th_gtid; +#endif + kmp_int32 node = __kmp_cpu2node(cpu); + ompt_callbacks.ompt_callback(ompt_event_thread_state_begin)( + GTID_TO_OMPT_THREAD_ID(th_gtid), (uint64_t)SUSPEND_STATE, cpu, node ); + } +#endif + flag->suspend(th_gtid); + +#if OMPT_SUPPORT + if (ompt_enabled && + ompt_callbacks.ompt_callback(ompt_event_thread_state_end)) { +#if defined(__linux__) + kmp_int32 cpu = sched_getcpu(); +#else + kmp_int32 cpu =th_gtid; +#endif + kmp_int32 node = __kmp_cpu2node(cpu); + ompt_callbacks.ompt_callback(ompt_event_thread_state_end)( + GTID_TO_OMPT_THREAD_ID(th_gtid), (uint64_t)SUSPEND_STATE, cpu, node); + } +#endif if (TCR_4(__kmp_global.g.g_done)) { if (__kmp_global.g.g_abort)