diff options
| author | Jonathan Peyton <jonathan.l.peyton@intel.com> | 2017-02-17 17:06:16 +0000 |
|---|---|---|
| committer | Jonathan Peyton <jonathan.l.peyton@intel.com> | 2017-02-17 17:06:16 +0000 |
| commit | 12ecbb35eb03c09528d3b5b470a908b50d765601 (patch) | |
| tree | 8e7dfe0108420456c5147eccfde242ac6f846fd9 /openmp/runtime/src | |
| parent | f2a345c8ee21f1a9a81d1e7bc91a70359a932f15 (diff) | |
| download | bcm5719-llvm-12ecbb35eb03c09528d3b5b470a908b50d765601.tar.gz bcm5719-llvm-12ecbb35eb03c09528d3b5b470a908b50d765601.zip | |
[stats] add stats-gathering for static_steal scheduling method
Add counter to count number of static_steal for loops
Add counter for number of chunks executed per static_steal for loop
Add counter for number of chunks stolen per static_steal for loop
llvm-svn: 295461
Diffstat (limited to 'openmp/runtime/src')
| -rw-r--r-- | openmp/runtime/src/kmp_dispatch.cpp | 5 | ||||
| -rw-r--r-- | openmp/runtime/src/kmp_stats.h | 3 |
2 files changed, 8 insertions, 0 deletions
diff --git a/openmp/runtime/src/kmp_dispatch.cpp b/openmp/runtime/src/kmp_dispatch.cpp index 00f080d0add..49bb2164505 100644 --- a/openmp/runtime/src/kmp_dispatch.cpp +++ b/openmp/runtime/src/kmp_dispatch.cpp @@ -826,6 +826,7 @@ __kmp_dispatch_init( ntc = (tc % chunk ? 1 : 0) + tc / chunk; if ( nproc > 1 && ntc >= nproc ) { + KMP_COUNT_BLOCK(OMP_FOR_static_steal); T id = __kmp_tid_from_gtid(gtid); T small_chunk, extras; @@ -1637,8 +1638,10 @@ __kmp_dispatch_next( } // stealing succeded, reduce victim's ub by 1/4 of undone chunks or by 1 if( remaining > 3 ) { + KMP_COUNT_VALUE(FOR_static_steal_stolen, remaining>>2); init = ( victim->u.p.ub -= (remaining>>2) ); // steal 1/4 of remaining } else { + KMP_COUNT_VALUE(FOR_static_steal_stolen, 1); init = ( victim->u.p.ub -= 1 ); // steal 1 chunk of 2 or 3 remaining } __kmp_release_lock(lck, gtid); @@ -1739,6 +1742,7 @@ __kmp_dispatch_next( *VOLATILE_CAST(kmp_int64 *)&vold.b, *VOLATILE_CAST(kmp_int64 *)&vnew.b ) ) { // stealing succedded + KMP_COUNT_VALUE(FOR_static_steal_stolen, vold.p.ub-vnew.p.ub); status = 1; while_index = 0; // now update own count and ub @@ -1765,6 +1769,7 @@ __kmp_dispatch_next( init *= chunk; limit = chunk + init - 1; incr = pr->u.p.st; + KMP_COUNT_VALUE(FOR_static_steal_chunks, 1); KMP_DEBUG_ASSERT(init <= trip); if ( (last = (limit >= trip)) != 0 ) diff --git a/openmp/runtime/src/kmp_stats.h b/openmp/runtime/src/kmp_stats.h index 1521d219141..40ccb50805e 100644 --- a/openmp/runtime/src/kmp_stats.h +++ b/openmp/runtime/src/kmp_stats.h @@ -89,6 +89,7 @@ enum stats_state_e { macro (OMP_PARALLEL, stats_flags_e::onlyInMaster | stats_flags_e::noTotal, arg) \ macro (OMP_NESTED_PARALLEL, 0, arg) \ macro (OMP_FOR_static, 0, arg) \ + macro (OMP_FOR_static_steal, 0, arg) \ macro (OMP_FOR_dynamic, 0, arg) \ macro (OMP_DISTRIBUTE, 0, arg) \ macro (OMP_BARRIER, 0, arg) \ @@ -146,6 +147,8 @@ enum stats_state_e { macro (OMP_PARALLEL_args, stats_flags_e::noUnits | stats_flags_e::noTotal, arg) \ macro (FOR_static_iterations, stats_flags_e::noUnits | stats_flags_e::noTotal, arg) \ macro (FOR_dynamic_iterations,stats_flags_e::noUnits | stats_flags_e::noTotal, arg) \ + macro (FOR_static_steal_stolen,stats_flags_e::noUnits | stats_flags_e::noTotal, arg) \ + macro (FOR_static_steal_chunks,stats_flags_e::noUnits | stats_flags_e::noTotal, arg) \ KMP_FOREACH_DEVELOPER_TIMER(macro, arg) |

