[Openmp-commits] [openmp] r249857 - [OMPT] Reduce overhead of OMPT

Jonathan Peyton via Openmp-commits openmp-commits at lists.llvm.org
Fri Oct 9 10:42:52 PDT 2015


Author: jlpeyton
Date: Fri Oct  9 12:42:52 2015
New Revision: 249857

URL: http://llvm.org/viewvc/llvm-project?rev=249857&view=rev
Log:
[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

Modified:
    openmp/trunk/runtime/src/kmp_csupport.c
    openmp/trunk/runtime/src/kmp_sched.cpp
    openmp/trunk/runtime/src/ompt-specific.c

Modified: openmp/trunk/runtime/src/kmp_csupport.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_csupport.c?rev=249857&r1=249856&r2=249857&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_csupport.c (original)
+++ openmp/trunk/runtime/src/kmp_csupport.c Fri Oct  9 12:42:52 2015
@@ -1485,12 +1485,12 @@ __kmpc_for_static_fini( ident_t *loc, km
     KE_TRACE( 10, ("__kmpc_for_static_fini called T#%d\n", global_tid));
 
 #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 &&
         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)(
             team->t.ompt_team_info.parallel_id,
             team->t.t_implicit_task_taskdata[tid].ompt_task_info.task_id);

Modified: openmp/trunk/runtime/src/kmp_sched.cpp
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_sched.cpp?rev=249857&r1=249856&r2=249857&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_sched.cpp (original)
+++ openmp/trunk/runtime/src/kmp_sched.cpp Fri Oct  9 12:42:52 2015
@@ -97,8 +97,14 @@ __kmp_for_static_init(
     register kmp_info_t *th = __kmp_threads[ gtid ];
 
 #if OMPT_SUPPORT && OMPT_TRACE
-    ompt_team_info_t *team_info = __ompt_get_teaminfo(0, NULL);
-    ompt_task_info_t *task_info = __ompt_get_taskinfo(0);
+    ompt_team_info_t *team_info = NULL; 
+    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
 
     KMP_DEBUG_ASSERT( plastiter && plower && pupper && pstride );

Modified: openmp/trunk/runtime/src/ompt-specific.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/ompt-specific.c?rev=249857&r1=249856&r2=249857&view=diff
==============================================================================
--- openmp/trunk/runtime/src/ompt-specific.c (original)
+++ openmp/trunk/runtime/src/ompt-specific.c Fri Oct  9 12:42:52 2015
@@ -50,6 +50,8 @@ __ompt_get_teaminfo(int depth, int *size
 
     if (thr) {
         kmp_team *team = thr->th.th_team;
+        if (team == NULL) return NULL;
+
         ompt_lw_taskteam_t *lwt = LWT_FROM_TEAM(team);
 
         while(depth > 0) {




More information about the Openmp-commits mailing list