From a1202bf5944ad4a28d1e391a0a2da175bd9b27d0 Mon Sep 17 00:00:00 2001 From: Jonathan Peyton Date: Tue, 19 Apr 2016 16:55:17 +0000 Subject: [PATCH] [ITTNOTIFY] Remove serialized parallel regions from frame notification llvm-svn: 266760 --- openmp/runtime/src/kmp.h | 1 - openmp/runtime/src/kmp_csupport.c | 30 ------------------------------ openmp/runtime/src/kmp_itt.h | 4 ++-- openmp/runtime/src/kmp_itt.inl | 16 ++++++++-------- openmp/runtime/src/kmp_runtime.c | 24 ------------------------ 5 files changed, 10 insertions(+), 65 deletions(-) diff --git a/openmp/runtime/src/kmp.h b/openmp/runtime/src/kmp.h index b115648e8cba..7855a94e4e2f 100644 --- a/openmp/runtime/src/kmp.h +++ b/openmp/runtime/src/kmp.h @@ -2351,7 +2351,6 @@ typedef struct KMP_ALIGN_CACHE kmp_base_info { kmp_uint64 th_bar_arrive_time; /* arrival to barrier timestamp */ kmp_uint64 th_bar_min_time; /* minimum arrival time at the barrier */ kmp_uint64 th_frame_time; /* frame timestamp */ - kmp_uint64 th_frame_time_serialized; /* frame timestamp in serialized parallel */ #endif /* USE_ITT_BUILD */ kmp_local_t th_local; struct private_common *th_pri_head; diff --git a/openmp/runtime/src/kmp_csupport.c b/openmp/runtime/src/kmp_csupport.c index 604798dfc52e..aa934ae26b6d 100644 --- a/openmp/runtime/src/kmp_csupport.c +++ b/openmp/runtime/src/kmp_csupport.c @@ -585,36 +585,6 @@ __kmpc_end_serialized_parallel(ident_t *loc, kmp_int32 global_tid) } } -#if USE_ITT_BUILD - kmp_uint64 cur_time = 0; -#if USE_ITT_NOTIFY - if ( __itt_get_timestamp_ptr ) { - cur_time = __itt_get_timestamp(); - } -#endif /* USE_ITT_NOTIFY */ - if ( this_thr->th.th_team->t.t_level == 0 -#if OMP_40_ENABLED - && this_thr->th.th_teams_microtask == NULL -#endif - ) { - // Report the barrier - this_thr->th.th_ident = loc; - if ( ( __itt_frame_submit_v3_ptr || KMP_ITT_DEBUG ) && - ( __kmp_forkjoin_frames_mode == 3 || __kmp_forkjoin_frames_mode == 1 ) ) - { - __kmp_itt_frame_submit( global_tid, this_thr->th.th_frame_time_serialized, - cur_time, 0, loc, this_thr->th.th_team_nproc, 0 ); - if ( __kmp_forkjoin_frames_mode == 3 ) - // Since barrier frame for serialized region is equal to the region we use the same begin timestamp as for the barrier. - __kmp_itt_frame_submit( global_tid, serial_team->t.t_region_time, - cur_time, 0, loc, this_thr->th.th_team_nproc, 2 ); - } else if ( ( __itt_frame_end_v3_ptr || KMP_ITT_DEBUG ) && - ! __kmp_forkjoin_frames_mode && __kmp_forkjoin_frames ) - // Mark the end of the "parallel" region for VTune. Only use one of frame notification scheme at the moment. - __kmp_itt_region_joined( global_tid, 1 ); - } -#endif /* USE_ITT_BUILD */ - if ( __kmp_env_consistency_check ) __kmp_pop_parallel( global_tid, NULL ); } diff --git a/openmp/runtime/src/kmp_itt.h b/openmp/runtime/src/kmp_itt.h index 925a4f04ca28..96a95951baac 100644 --- a/openmp/runtime/src/kmp_itt.h +++ b/openmp/runtime/src/kmp_itt.h @@ -53,8 +53,8 @@ void __kmp_itt_destroy(); // __kmp_itt_xxxed() function should be called after action. // --- Parallel region reporting --- -__kmp_inline void __kmp_itt_region_forking( int gtid, int team_size, int barriers, int serialized = 0 ); // Master only, before forking threads. -__kmp_inline void __kmp_itt_region_joined( int gtid, int serialized = 0 ); // Master only, after joining threads. +__kmp_inline void __kmp_itt_region_forking( int gtid, int team_size, int barriers ); // Master only, before forking threads. +__kmp_inline void __kmp_itt_region_joined( int gtid ); // Master only, after joining threads. // (*) Note: A thread may execute tasks after this point, though. // --- Frame reporting --- diff --git a/openmp/runtime/src/kmp_itt.inl b/openmp/runtime/src/kmp_itt.inl index 6dafa6c16e1d..cd670a518be6 100644 --- a/openmp/runtime/src/kmp_itt.inl +++ b/openmp/runtime/src/kmp_itt.inl @@ -89,10 +89,10 @@ static kmp_bootstrap_lock_t metadata_lock = KMP_BOOTSTRAP_LOCK_INITIALIZER( met // ------------------------------------------------------------------------------------------------- LINKAGE void -__kmp_itt_region_forking( int gtid, int team_size, int barriers, int serialized ) { +__kmp_itt_region_forking( int gtid, int team_size, int barriers ) { #if USE_ITT_NOTIFY kmp_team_t * team = __kmp_team_from_gtid( gtid ); - if (team->t.t_active_level + serialized > 1) + if (team->t.t_active_level > 1) { // The frame notifications are only supported for the outermost teams. return; @@ -176,8 +176,8 @@ __kmp_itt_region_forking( int gtid, int team_size, int barriers, int serialized } } KMP_ITT_DEBUG_LOCK(); - KMP_ITT_DEBUG_PRINT( "[frm beg] gtid=%d, idx=%x, serialized:%d, loc:%p\n", - gtid, loc->reserved_2, serialized, loc ); + KMP_ITT_DEBUG_PRINT( "[frm beg] gtid=%d, idx=%x, loc:%p\n", + gtid, loc->reserved_2, loc ); } #endif } // __kmp_itt_region_forking @@ -409,10 +409,10 @@ __kmp_itt_region_finished( int gtid ) { // ------------------------------------------------------------------------------------------------- LINKAGE void -__kmp_itt_region_joined( int gtid, int serialized ) { +__kmp_itt_region_joined( int gtid ) { #if USE_ITT_NOTIFY kmp_team_t * team = __kmp_team_from_gtid( gtid ); - if (team->t.t_active_level + serialized > 1) + if (team->t.t_active_level > 1) { // The frame notifications are only supported for the outermost teams. return; @@ -424,8 +424,8 @@ __kmp_itt_region_joined( int gtid, int serialized ) { if(frm < KMP_MAX_FRAME_DOMAINS) { KMP_ITT_DEBUG_LOCK(); __itt_frame_end_v3(__kmp_itt_region_domains[frm], NULL); - KMP_ITT_DEBUG_PRINT( "[frm end] gtid=%d, idx=%x, serialized:%d, loc:%p\n", - gtid, loc->reserved_2, serialized, loc ); + KMP_ITT_DEBUG_PRINT( "[frm end] gtid=%d, idx=%x, loc:%p\n", + gtid, loc->reserved_2, loc ); } } #endif diff --git a/openmp/runtime/src/kmp_runtime.c b/openmp/runtime/src/kmp_runtime.c index c2a6f9b254f2..092d913bbbb2 100644 --- a/openmp/runtime/src/kmp_runtime.c +++ b/openmp/runtime/src/kmp_runtime.c @@ -1374,30 +1374,6 @@ __kmp_serialized_parallel(ident_t *loc, kmp_int32 global_tid) if ( __kmp_env_consistency_check ) __kmp_push_parallel( global_tid, NULL ); -#if USE_ITT_BUILD - // Mark the start of the "parallel" region for VTune. Only use one of frame notification scheme at the moment - if ( serial_team->t.t_level == 1 -#if OMP_40_ENABLED - && this_thr->th.th_teams_microtask == NULL -#endif - ) { -#if USE_ITT_NOTIFY - // Save the start of the "parallel" region for VTune. This is the frame begin at the same time. - if ( ( __itt_get_timestamp_ptr || KMP_ITT_DEBUG ) && - ( __kmp_forkjoin_frames_mode == 3 || __kmp_forkjoin_frames_mode == 1 ) ) - { - serial_team->t.t_region_time = this_thr->th.th_frame_time_serialized = __itt_get_timestamp(); - } else // only one notification scheme (either "submit" or "forking/joined", not both) -#endif - if ( ( __itt_frame_begin_v3_ptr || KMP_ITT_DEBUG ) && - __kmp_forkjoin_frames && ! __kmp_forkjoin_frames_mode ) - { - this_thr->th.th_ident = loc; - // 0 - no barriers; 1 - serialized parallel - __kmp_itt_region_forking( global_tid, this_thr->th.th_team_nproc, 0, 1 ); - } - } -#endif /* USE_ITT_BUILD */ } /* most of the work for a fork */