From 7abf9d5927b39abf8e2d29a2edc66fc7f828289c Mon Sep 17 00:00:00 2001 From: Jonathan Peyton Date: Thu, 26 May 2016 18:19:10 +0000 Subject: [PATCH] Make LIBOMP_USE_ITT_NOTIFY a setting that can be enabled or disabled On Blue Gene/Q, having LIBOMP_USE_ITT_NOTIFY support compiled into a statically-linked binary causes a failure at runtime because dlopen fails. This patch changes LIBOMP_USE_ITT_NOTIFY to a cacheable configuration setting that can be disabled. Patch by John Mellor-Crummey Differential Revision: http://reviews.llvm.org/D20517 llvm-svn: 270884 --- openmp/runtime/CMakeLists.txt | 6 ++++-- openmp/runtime/src/kmp_config.h.cmake | 2 +- openmp/runtime/src/kmp_csupport.c | 2 +- openmp/runtime/src/kmp_runtime.c | 4 +++- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/openmp/runtime/CMakeLists.txt b/openmp/runtime/CMakeLists.txt index a4c7690bd285..d22b9185ed06 100644 --- a/openmp/runtime/CMakeLists.txt +++ b/openmp/runtime/CMakeLists.txt @@ -200,8 +200,9 @@ elseif("${libomp_build_type_lowercase}" STREQUAL "minsizerel") set(MINSIZEREL_BUILD TRUE) endif() -# Include itt notify interface? Right now, always. -set(LIBOMP_USE_ITT_NOTIFY TRUE) +# Include itt notify interface? +set(LIBOMP_USE_ITT_NOTIFY TRUE CACHE BOOL + "Enable ITT notify?") # normal, profile, stubs library. set(NORMAL_LIBRARY FALSE) @@ -354,6 +355,7 @@ if(${LIBOMP_STANDALONE_BUILD}) libomp_say("Build -- ${LIBOMP_BUILD}") libomp_say("Use Stats-gathering -- ${LIBOMP_STATS}") libomp_say("Use Debugger-support -- ${LIBOMP_USE_DEBUGGER}") + libomp_say("Use ITT notify -- ${LIBOMP_USE_ITT_NOTIFY}") libomp_say("Use OMPT-support -- ${LIBOMP_OMPT_SUPPORT}") if(${LIBOMP_OMPT_SUPPORT}) libomp_say("Use OMPT-blame -- ${LIBOMP_OMPT_BLAME}") diff --git a/openmp/runtime/src/kmp_config.h.cmake b/openmp/runtime/src/kmp_config.h.cmake index dc37da09a1b1..f5ac6f1a0e37 100644 --- a/openmp/runtime/src/kmp_config.h.cmake +++ b/openmp/runtime/src/kmp_config.h.cmake @@ -85,7 +85,7 @@ #define KMP_ADJUST_BLOCKTIME 1 #define BUILD_PARALLEL_ORDERED 1 #define KMP_ASM_INTRINS 1 -#define USE_ITT_BUILD 1 +#define USE_ITT_BUILD LIBOMP_USE_ITT_NOTIFY #define INTEL_ITTNOTIFY_PREFIX __kmp_itt_ #if ! KMP_MIC # define USE_LOAD_BALANCE 1 diff --git a/openmp/runtime/src/kmp_csupport.c b/openmp/runtime/src/kmp_csupport.c index a34c8059e8a3..75ac2dbeb217 100644 --- a/openmp/runtime/src/kmp_csupport.c +++ b/openmp/runtime/src/kmp_csupport.c @@ -507,7 +507,7 @@ __kmpc_end_serialized_parallel(ident_t *loc, kmp_int32 global_tid) // we need to wait for the proxy tasks before finishing the thread if ( task_team != NULL && task_team->tt.tt_found_proxy_tasks ) - __kmp_task_team_wait(this_thr, serial_team, NULL ); // is an ITT object needed here? + __kmp_task_team_wait(this_thr, serial_team USE_ITT_BUILD_ARG(NULL) ); // is an ITT object needed here? #endif KMP_MB(); diff --git a/openmp/runtime/src/kmp_runtime.c b/openmp/runtime/src/kmp_runtime.c index 56fa1b015421..72ecd7ee6ec0 100644 --- a/openmp/runtime/src/kmp_runtime.c +++ b/openmp/runtime/src/kmp_runtime.c @@ -3734,7 +3734,9 @@ __kmp_register_root( int initial_thread ) /* prepare the master thread for get_gtid() */ __kmp_gtid_set_specific( gtid ); +#if USE_ITT_BUILD __kmp_itt_thread_name( gtid ); +#endif /* USE_ITT_BUILD */ #ifdef KMP_TDATA_GTID __kmp_gtid = gtid; @@ -3908,7 +3910,7 @@ __kmp_unregister_root_current_thread( int gtid ) // the runtime is shutting down so we won't report any events thread->th.ompt_thread_info.state = ompt_state_undefined; #endif - __kmp_task_team_wait(thread, team, NULL ); + __kmp_task_team_wait(thread, team USE_ITT_BUILD_ARG(NULL)); } #endif