Skip to content
  • Jonathan Peyton's avatar
    [STATS] Use partitioned timer scheme · 11dc82fa
    Jonathan Peyton authored
    This change removes the current timers with ones that partition time properly.
    The current timers are nested, so that if a new timer, B, starts when the
    current timer, A, is already timing, A's time will include B's. To eliminate
    this problem, the partitioned timers are designed to stop the current timer (A),
    let the new timer run (B), and when the new timer is finished, restart the
    previously running timer (A). With this partitioning of time, a threads' timers
    all sum up to the OMP_worker_thread_life time and can now easily show the
    percentage of time a thread is spending in different parts of the runtime or
    user code.
    
    There is also a new state variable associated with each thread which tells where
    it is executing a task. This corresponds with the timers: OMP_task_*, e.g., if
    time is spent in OMP_task_taskwait, then that thread executed tasks inside a
    #pragma omp taskwait construct.
    
    The changes are mostly changing the MACROs to use the new PARITIONED_* macros,
    the new partitionedTimers class and its methods, and new state logic.
    
    Differential Revision: http://reviews.llvm.org/D19229
    
    llvm-svn: 268640
    11dc82fa
Loading