mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-06 09:33:13 +00:00
[OMPT] Reduce overhead of OMPT
* Avoid computing state needed only by OMPT unless the ompt_enabled flag is set. * Properly handle a corner case in OMPT where team == NULL. Patch by John Mellor-Crummey Differential Revision: http://reviews.llvm.org/D13502 llvm-svn: 249857
This commit is contained in:
parent
cca800207a
commit
f0344bb02b
@ -1485,12 +1485,12 @@ __kmpc_for_static_fini( ident_t *loc, kmp_int32 global_tid )
|
|||||||
KE_TRACE( 10, ("__kmpc_for_static_fini called T#%d\n", global_tid));
|
KE_TRACE( 10, ("__kmpc_for_static_fini called T#%d\n", global_tid));
|
||||||
|
|
||||||
#if OMPT_SUPPORT && OMPT_TRACE
|
#if OMPT_SUPPORT && OMPT_TRACE
|
||||||
kmp_info_t *this_thr = __kmp_threads[ global_tid ];
|
|
||||||
kmp_team_t *team = this_thr -> th.th_team;
|
|
||||||
int tid = __kmp_tid_from_gtid( global_tid );
|
|
||||||
|
|
||||||
if (ompt_enabled &&
|
if (ompt_enabled &&
|
||||||
ompt_callbacks.ompt_callback(ompt_event_loop_end)) {
|
ompt_callbacks.ompt_callback(ompt_event_loop_end)) {
|
||||||
|
kmp_info_t *this_thr = __kmp_threads[ global_tid ];
|
||||||
|
kmp_team_t *team = this_thr -> th.th_team;
|
||||||
|
int tid = __kmp_tid_from_gtid( global_tid );
|
||||||
|
|
||||||
ompt_callbacks.ompt_callback(ompt_event_loop_end)(
|
ompt_callbacks.ompt_callback(ompt_event_loop_end)(
|
||||||
team->t.ompt_team_info.parallel_id,
|
team->t.ompt_team_info.parallel_id,
|
||||||
team->t.t_implicit_task_taskdata[tid].ompt_task_info.task_id);
|
team->t.t_implicit_task_taskdata[tid].ompt_task_info.task_id);
|
||||||
|
@ -97,8 +97,14 @@ __kmp_for_static_init(
|
|||||||
register kmp_info_t *th = __kmp_threads[ gtid ];
|
register kmp_info_t *th = __kmp_threads[ gtid ];
|
||||||
|
|
||||||
#if OMPT_SUPPORT && OMPT_TRACE
|
#if OMPT_SUPPORT && OMPT_TRACE
|
||||||
ompt_team_info_t *team_info = __ompt_get_teaminfo(0, NULL);
|
ompt_team_info_t *team_info = NULL;
|
||||||
ompt_task_info_t *task_info = __ompt_get_taskinfo(0);
|
ompt_task_info_t *task_info = NULL;
|
||||||
|
|
||||||
|
if (ompt_enabled) {
|
||||||
|
// Only fully initialize variables needed by OMPT if OMPT is enabled.
|
||||||
|
team_info = __ompt_get_teaminfo(0, NULL);
|
||||||
|
task_info = __ompt_get_taskinfo(0);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
KMP_DEBUG_ASSERT( plastiter && plower && pupper && pstride );
|
KMP_DEBUG_ASSERT( plastiter && plower && pupper && pstride );
|
||||||
|
@ -50,6 +50,8 @@ __ompt_get_teaminfo(int depth, int *size)
|
|||||||
|
|
||||||
if (thr) {
|
if (thr) {
|
||||||
kmp_team *team = thr->th.th_team;
|
kmp_team *team = thr->th.th_team;
|
||||||
|
if (team == NULL) return NULL;
|
||||||
|
|
||||||
ompt_lw_taskteam_t *lwt = LWT_FROM_TEAM(team);
|
ompt_lw_taskteam_t *lwt = LWT_FROM_TEAM(team);
|
||||||
|
|
||||||
while(depth > 0) {
|
while(depth > 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user