Index: runtime/src/kmp_csupport.cpp =================================================================== --- runtime/src/kmp_csupport.cpp +++ runtime/src/kmp_csupport.cpp @@ -18,6 +18,7 @@ #include "kmp_itt.h" #include "kmp_lock.h" #include "kmp_stats.h" +#include "kmp_io.h" #if OMPT_SUPPORT #include "ompt-specific.h" @@ -1761,7 +1762,8 @@ ompt_work_type_t ompt_work_type; 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 + static __thread int singleWarning=0; + // Determine workshare type if (loc != NULL) { if ((loc->flags & KMP_IDENT_WORK_LOOP) != 0) { ompt_work_type = ompt_work_loop; @@ -1770,8 +1772,13 @@ } 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"); + ompt_work_type = ompt_work_loop; + if(!singleWarning){ + __kmp_printf("OMPT Warning: The used compiler is outdated! The provided kind of worksharing event in OMPT is not reliable.\n"); + singleWarning=1; + } +// KMP_ASSERT2(0, +// "__kmpc_for_static_fini: can't determine workshare type"); } KMP_DEBUG_ASSERT(ompt_work_type); } Index: runtime/src/kmp_sched.cpp =================================================================== --- runtime/src/kmp_sched.cpp +++ runtime/src/kmp_sched.cpp @@ -23,6 +23,7 @@ #include "kmp_itt.h" #include "kmp_stats.h" #include "kmp_str.h" +#include "kmp_io.h" #if OMPT_SUPPORT #include "ompt-specific.h" @@ -67,8 +68,9 @@ ompt_team_info_t *team_info = NULL; ompt_task_info_t *task_info = NULL; ompt_work_type_t ompt_work_type; + static __thread int singleWarning=0; - if (ompt_enabled.enabled) { + 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,13 @@ } 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"); + ompt_work_type = ompt_work_loop; + if(!singleWarning){ + __kmp_printf("OMPT Warning: The used compiler is outdated! The provided kind of worksharing event in OMPT is not reliable.\n"); + singleWarning=1; + } +// KMP_ASSERT2(0, +// "__kmpc_for_static_init: can't determine workshare type"); } KMP_DEBUG_ASSERT(ompt_work_type); }