[Openmp-commits] [openmp] r312539 - Read blocktime value set by kmp_set_blocktime() before reading from KMP_BLOCKTIME

Jonathan Peyton via Openmp-commits openmp-commits at lists.llvm.org
Tue Sep 5 08:45:48 PDT 2017


Author: jlpeyton
Date: Tue Sep  5 08:45:48 2017
New Revision: 312539

URL: http://llvm.org/viewvc/llvm-project?rev=312539&view=rev
Log:
Read blocktime value set by kmp_set_blocktime() before reading from KMP_BLOCKTIME

Patch by Hansang Bae

Differential Revision: https://reviews.llvm.org/D37403

Modified:
    openmp/trunk/runtime/src/kmp.h
    openmp/trunk/runtime/src/kmp_barrier.cpp

Modified: openmp/trunk/runtime/src/kmp.h
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp.h?rev=312539&r1=312538&r2=312539&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp.h (original)
+++ openmp/trunk/runtime/src/kmp.h Tue Sep  5 08:45:48 2017
@@ -920,6 +920,8 @@ extern int __kmp_hws_abs_flag; // absolu
   (((blocktime) + (KMP_BLOCKTIME_MULTIPLIER / (monitor_wakeups)) - 1) /        \
    (KMP_BLOCKTIME_MULTIPLIER / (monitor_wakeups)))
 #else
+#define KMP_BLOCKTIME(team, tid)                                               \
+  (get__bt_set(team, tid) ? get__blocktime(team, tid) : __kmp_dflt_blocktime)
 #if KMP_OS_UNIX && (KMP_ARCH_X86 || KMP_ARCH_X86_64)
 // HW TSC is used to reduce overhead (clock tick instead of nanosecond).
 extern kmp_uint64 __kmp_ticks_per_msec;
@@ -929,14 +931,16 @@ extern kmp_uint64 __kmp_ticks_per_msec;
 #define KMP_NOW() __kmp_hardware_timestamp()
 #endif
 #define KMP_NOW_MSEC() (KMP_NOW() / __kmp_ticks_per_msec)
-#define KMP_BLOCKTIME_INTERVAL() (__kmp_dflt_blocktime * __kmp_ticks_per_msec)
+#define KMP_BLOCKTIME_INTERVAL(team, tid)                                      \
+  (KMP_BLOCKTIME(team, tid) * __kmp_ticks_per_msec)
 #define KMP_BLOCKING(goal, count) ((goal) > KMP_NOW())
 #else
 // System time is retrieved sporadically while blocking.
 extern kmp_uint64 __kmp_now_nsec();
 #define KMP_NOW() __kmp_now_nsec()
 #define KMP_NOW_MSEC() (KMP_NOW() / KMP_USEC_PER_SEC)
-#define KMP_BLOCKTIME_INTERVAL() (__kmp_dflt_blocktime * KMP_USEC_PER_SEC)
+#define KMP_BLOCKTIME_INTERVAL(team, tid)                                      \
+  (KMP_BLOCKTIME(team, tid) * KMP_USEC_PER_SEC)
 #define KMP_BLOCKING(goal, count) ((count) % 1000 != 0 || (goal) > KMP_NOW())
 #endif
 #define KMP_YIELD_NOW()                                                        \

Modified: openmp/trunk/runtime/src/kmp_barrier.cpp
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_barrier.cpp?rev=312539&r1=312538&r2=312539&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_barrier.cpp (original)
+++ openmp/trunk/runtime/src/kmp_barrier.cpp Tue Sep  5 08:45:48 2017
@@ -1289,7 +1289,7 @@ int __kmp_barrier(enum barrier_type bt,
       this_thr->th.th_team_bt_set =
           team->t.t_implicit_task_taskdata[tid].td_icvs.bt_set;
 #else
-      this_thr->th.th_team_bt_intervals = KMP_BLOCKTIME_INTERVAL();
+      this_thr->th.th_team_bt_intervals = KMP_BLOCKTIME_INTERVAL(team, tid);
 #endif
     }
 
@@ -1636,7 +1636,7 @@ void __kmp_join_barrier(int gtid) {
     this_thr->th.th_team_bt_set =
         team->t.t_implicit_task_taskdata[tid].td_icvs.bt_set;
 #else
-    this_thr->th.th_team_bt_intervals = KMP_BLOCKTIME_INTERVAL();
+    this_thr->th.th_team_bt_intervals = KMP_BLOCKTIME_INTERVAL(team, tid);
 #endif
   }
 
@@ -1844,7 +1844,7 @@ void __kmp_fork_barrier(int gtid, int ti
       this_thr->th.th_team_bt_set =
           team->t.t_implicit_task_taskdata[tid].td_icvs.bt_set;
 #else
-      this_thr->th.th_team_bt_intervals = KMP_BLOCKTIME_INTERVAL();
+      this_thr->th.th_team_bt_intervals = KMP_BLOCKTIME_INTERVAL(team, tid);
 #endif
     }
   } // master




More information about the Openmp-commits mailing list