[Openmp-commits] [openmp] r317928 - [OMPT] Fix assertion for OpenMP code generated with outdated compilers
Joachim Protze via Openmp-commits
openmp-commits at lists.llvm.org
Fri Nov 10 13:07:01 PST 2017
Author: jprotze
Date: Fri Nov 10 13:07:01 2017
New Revision: 317928
URL: http://llvm.org/viewvc/llvm-project?rev=317928&view=rev
Log:
[OMPT] Fix assertion for OpenMP code generated with outdated compilers
For up-to-date compilers, this assertion is reasonable, but it breaks
compatibility with the typical compiler installed on most systems.
This patch changes the default value to what we had when there was no
compiler support. A warning about the outdated compiler is printed during
runtime, when this point is reached.
Differential Revision: https://reviews.llvm.org/D39890
Modified:
openmp/trunk/runtime/src/i18n/en_US.txt
openmp/trunk/runtime/src/kmp_csupport.cpp
openmp/trunk/runtime/src/kmp_sched.cpp
Modified: openmp/trunk/runtime/src/i18n/en_US.txt
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/i18n/en_US.txt?rev=317928&r1=317927&r2=317928&view=diff
==============================================================================
--- openmp/trunk/runtime/src/i18n/en_US.txt (original)
+++ openmp/trunk/runtime/src/i18n/en_US.txt Fri Nov 10 13:07:01 2017
@@ -325,6 +325,8 @@ StgIgnored "%1$s: igno
# %1, -- name of ignored variable, %2 -- name of variable with higher priority.
OBSOLETE "%1$s: overrides %3$s specified before"
# %1, %2 -- name and value of the overriding variable, %3 -- name of overriden variable.
+OmptOutdatedWorkshare "OMPT: Cannot determine workshare type; using the default (loop) instead. "
+ "This issue is fixed in an up-to-date compiler."
# --- OpenMP errors detected at runtime ---
#
Modified: openmp/trunk/runtime/src/kmp_csupport.cpp
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_csupport.cpp?rev=317928&r1=317927&r2=317928&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_csupport.cpp (original)
+++ openmp/trunk/runtime/src/kmp_csupport.cpp Fri Nov 10 13:07:01 2017
@@ -1758,7 +1758,7 @@ void __kmpc_for_static_fini(ident_t *loc
#if OMPT_SUPPORT && OMPT_OPTIONAL
if (ompt_enabled.ompt_callback_work) {
- ompt_work_type_t ompt_work_type;
+ ompt_work_type_t ompt_work_type = ompt_work_loop;
ompt_team_info_t *team_info = __ompt_get_teaminfo(0, NULL);
ompt_task_info_t *task_info = __ompt_get_task_info_object(0);
// Determine workshare type
@@ -1770,8 +1770,8 @@ void __kmpc_for_static_fini(ident_t *loc
} else if ((loc->flags & KMP_IDENT_WORK_DISTRIBUTE) != 0) {
ompt_work_type = ompt_work_distribute;
} else {
- KMP_ASSERT2(0,
- "__kmpc_for_static_fini: can't determine workshare type");
+ // use default set above.
+ // a warning about this case is provided in __kmpc_for_static_init
}
KMP_DEBUG_ASSERT(ompt_work_type);
}
Modified: openmp/trunk/runtime/src/kmp_sched.cpp
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_sched.cpp?rev=317928&r1=317927&r2=317928&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_sched.cpp (original)
+++ openmp/trunk/runtime/src/kmp_sched.cpp Fri Nov 10 13:07:01 2017
@@ -66,9 +66,11 @@ static void __kmp_for_static_init(ident_
#if OMPT_SUPPORT && OMPT_OPTIONAL
ompt_team_info_t *team_info = NULL;
ompt_task_info_t *task_info = NULL;
- ompt_work_type_t ompt_work_type;
+ ompt_work_type_t ompt_work_type = ompt_work_loop;
- if (ompt_enabled.enabled) {
+ static kmp_int8 warn = 0;
+
+ if (ompt_enabled.ompt_callback_work) {
// Only fully initialize variables needed by OMPT if OMPT is enabled.
team_info = __ompt_get_teaminfo(0, NULL);
task_info = __ompt_get_task_info_object(0);
@@ -81,8 +83,10 @@ static void __kmp_for_static_init(ident_
} else if ((loc->flags & KMP_IDENT_WORK_DISTRIBUTE) != 0) {
ompt_work_type = ompt_work_distribute;
} else {
- KMP_ASSERT2(0,
- "__kmpc_for_static_init: can't determine workshare type");
+ kmp_int8 bool_res =
+ KMP_COMPARE_AND_STORE_ACQ8(&warn, (kmp_int8)0, (kmp_int8)1);
+ if (bool_res)
+ KMP_WARNING(OmptOutdatedWorkshare);
}
KMP_DEBUG_ASSERT(ompt_work_type);
}
More information about the Openmp-commits
mailing list