aboutsummaryrefslogtreecommitdiff
path: root/openmp/runtime/src/kmp_settings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'openmp/runtime/src/kmp_settings.cpp')
-rw-r--r--openmp/runtime/src/kmp_settings.cpp92
1 files changed, 40 insertions, 52 deletions
diff --git a/openmp/runtime/src/kmp_settings.cpp b/openmp/runtime/src/kmp_settings.cpp
index 392a02e..31342c8 100644
--- a/openmp/runtime/src/kmp_settings.cpp
+++ b/openmp/runtime/src/kmp_settings.cpp
@@ -1158,7 +1158,6 @@ static void __kmp_parse_nested_num_threads(const char *var, const char *env,
}
if (!__kmp_dflt_max_active_levels_set && total > 1)
__kmp_dflt_max_active_levels = KMP_MAX_ACTIVE_LEVELS_LIMIT;
- KMP_DEBUG_ASSERT(total > 0);
if (total <= 0) {
KMP_WARNING(NthSyntaxError, var, env);
return;
@@ -1248,8 +1247,11 @@ static void __kmp_stg_parse_num_threads(char const *name, char const *value,
// TODO: Remove this option. OMP_NUM_THREADS is a list of positive integers!
if (!__kmp_strcasecmp_with_sentinel("all", value, 0)) {
// The array of 1 element
- __kmp_nested_nth.nth = (int *)KMP_INTERNAL_MALLOC(sizeof(int));
- __kmp_nested_nth.size = __kmp_nested_nth.used = 1;
+ if (!__kmp_nested_nth.nth) {
+ __kmp_nested_nth.nth = (int *)KMP_INTERNAL_MALLOC(sizeof(int));
+ __kmp_nested_nth.size = 1;
+ }
+ __kmp_nested_nth.used = 1;
__kmp_nested_nth.nth[0] = __kmp_dflt_team_nth = __kmp_dflt_team_nth_ub =
__kmp_xproc;
} else {
@@ -1361,6 +1363,11 @@ static void __kmp_stg_parse_tasking(char const *name, char const *value,
void *data) {
__kmp_stg_parse_int(name, value, 0, (int)tskm_max,
(int *)&__kmp_tasking_mode);
+ // KMP_TASKING=1 (task barrier) doesn't work anymore, change to task_teams (2)
+ if (__kmp_tasking_mode == tskm_extra_barrier) {
+ KMP_WARNING(StgInvalidValue, name, value);
+ __kmp_tasking_mode = tskm_task_teams;
+ }
} // __kmp_stg_parse_tasking
static void __kmp_stg_print_tasking(kmp_str_buf_t *buffer, char const *name,
@@ -1501,7 +1508,6 @@ static void __kmp_stg_print_disp_buffers(kmp_str_buf_t *buffer,
__kmp_stg_print_int(buffer, name, __kmp_dispatch_num_buffers);
} // __kmp_stg_print_disp_buffers
-#if KMP_NESTED_HOT_TEAMS
// -----------------------------------------------------------------------------
// KMP_HOT_TEAMS_MAX_LEVEL, KMP_HOT_TEAMS_MODE
@@ -1511,8 +1517,8 @@ static void __kmp_stg_parse_hot_teams_level(char const *name, char const *value,
KMP_WARNING(EnvParallelWarn, name);
return;
} // read value before first parallel only
- __kmp_stg_parse_int(name, value, 0, KMP_MAX_ACTIVE_LEVELS_LIMIT,
- &__kmp_hot_teams_max_level);
+ __kmp_stg_parse_int(name, value, 0, 1024, &__kmp_hot_teams_max_level);
+
} // __kmp_stg_parse_hot_teams_level
static void __kmp_stg_print_hot_teams_level(kmp_str_buf_t *buffer,
@@ -1535,8 +1541,6 @@ static void __kmp_stg_print_hot_teams_mode(kmp_str_buf_t *buffer,
__kmp_stg_print_int(buffer, name, __kmp_hot_teams_mode);
} // __kmp_stg_print_hot_teams_mode
-#endif // KMP_NESTED_HOT_TEAMS
-
// -----------------------------------------------------------------------------
// KMP_HANDLE_SIGNALS
@@ -1678,6 +1682,11 @@ static void __kmp_stg_parse_align_alloc(char const *name, char const *value,
void *data) {
__kmp_stg_parse_size(name, value, CACHE_LINE, INT_MAX, NULL,
&__kmp_align_alloc, 1);
+ // Must be power of 2
+ if (__kmp_align_alloc == 0 || ((__kmp_align_alloc - 1) & __kmp_align_alloc)) {
+ KMP_WARNING(StgInvalidValue, name, value);
+ __kmp_align_alloc = CACHE_LINE;
+ }
} // __kmp_stg_parse_align_alloc
static void __kmp_stg_print_align_alloc(kmp_str_buf_t *buffer, char const *name,
@@ -1710,15 +1719,16 @@ static void __kmp_stg_parse_barrier_branch_bit(char const *name,
} else {
__kmp_barrier_release_branch_bits[i] =
(kmp_uint32)__kmp_str_to_int(comma + 1, 0);
-
- if (__kmp_barrier_release_branch_bits[i] > KMP_MAX_BRANCH_BITS) {
+ if (__kmp_barrier_release_branch_bits[i] == 0 ||
+ __kmp_barrier_release_branch_bits[i] > KMP_MAX_BRANCH_BITS) {
__kmp_msg(kmp_ms_warning,
KMP_MSG(BarrReleaseValueInvalid, name, comma + 1),
__kmp_msg_null);
__kmp_barrier_release_branch_bits[i] = __kmp_barrier_release_bb_dflt;
}
}
- if (__kmp_barrier_gather_branch_bits[i] > KMP_MAX_BRANCH_BITS) {
+ if (__kmp_barrier_gather_branch_bits[i] == 0 ||
+ __kmp_barrier_gather_branch_bits[i] > KMP_MAX_BRANCH_BITS) {
KMP_WARNING(BarrGatherValueInvalid, name, value);
KMP_INFORM(Using_uint_Value, name, __kmp_barrier_gather_bb_dflt);
__kmp_barrier_gather_branch_bits[i] = __kmp_barrier_gather_bb_dflt;
@@ -2198,7 +2208,7 @@ static int __kmp_parse_affinity_proc_id_list(const char *var, const char *env,
{
ptrdiff_t len = next - env;
- char *retlist = (char *)__kmp_allocate((len + 1) * sizeof(char));
+ char *retlist = (char *)KMP_INTERNAL_MALLOC((len + 1) * sizeof(char));
KMP_MEMCPY_S(retlist, (len + 1) * sizeof(char), env, len * sizeof(char));
retlist[len] = '\0';
*proclist = retlist;
@@ -3016,7 +3026,7 @@ static int __kmp_parse_place_list(const char *var, const char *env,
{
ptrdiff_t len = scan - env;
- char *retlist = (char *)__kmp_allocate((len + 1) * sizeof(char));
+ char *retlist = (char *)KMP_INTERNAL_MALLOC((len + 1) * sizeof(char));
KMP_MEMCPY_S(retlist, (len + 1) * sizeof(char), env, len * sizeof(char));
retlist[len] = '\0';
*place_list = retlist;
@@ -3486,18 +3496,8 @@ static void __kmp_stg_parse_proc_bind(char const *name, char const *value,
const char *buf = value;
const char *next;
- int num;
+
SKIP_WS(buf);
- if ((*buf >= '0') && (*buf <= '9')) {
- next = buf;
- SKIP_DIGITS(next);
- num = __kmp_str_to_int(buf, *next);
- KMP_ASSERT(num >= 0);
- buf = next;
- SKIP_WS(buf);
- } else {
- num = -1;
- }
next = buf;
if (__kmp_match_str("disabled", buf, &next)) {
@@ -3508,8 +3508,7 @@ static void __kmp_stg_parse_proc_bind(char const *name, char const *value,
#endif /* KMP_AFFINITY_SUPPORTED */
__kmp_nested_proc_bind.used = 1;
__kmp_nested_proc_bind.bind_types[0] = proc_bind_false;
- } else if ((num == (int)proc_bind_false) ||
- __kmp_match_str("false", buf, &next)) {
+ } else if (__kmp_match_str("false", buf, &next)) {
buf = next;
SKIP_WS(buf);
#if KMP_AFFINITY_SUPPORTED
@@ -3517,8 +3516,7 @@ static void __kmp_stg_parse_proc_bind(char const *name, char const *value,
#endif /* KMP_AFFINITY_SUPPORTED */
__kmp_nested_proc_bind.used = 1;
__kmp_nested_proc_bind.bind_types[0] = proc_bind_false;
- } else if ((num == (int)proc_bind_true) ||
- __kmp_match_str("true", buf, &next)) {
+ } else if (__kmp_match_str("true", buf, &next)) {
buf = next;
SKIP_WS(buf);
__kmp_nested_proc_bind.used = 1;
@@ -3554,19 +3552,16 @@ static void __kmp_stg_parse_proc_bind(char const *name, char const *value,
for (;;) {
enum kmp_proc_bind_t bind;
- if ((num == (int)proc_bind_primary) ||
- __kmp_match_str("master", buf, &next) ||
+ if (__kmp_match_str("master", buf, &next) ||
__kmp_match_str("primary", buf, &next)) {
buf = next;
SKIP_WS(buf);
bind = proc_bind_primary;
- } else if ((num == (int)proc_bind_close) ||
- __kmp_match_str("close", buf, &next)) {
+ } else if (__kmp_match_str("close", buf, &next)) {
buf = next;
SKIP_WS(buf);
bind = proc_bind_close;
- } else if ((num == (int)proc_bind_spread) ||
- __kmp_match_str("spread", buf, &next)) {
+ } else if (__kmp_match_str("spread", buf, &next)) {
buf = next;
SKIP_WS(buf);
bind = proc_bind_spread;
@@ -3581,21 +3576,13 @@ static void __kmp_stg_parse_proc_bind(char const *name, char const *value,
if (i >= nelem) {
break;
}
- KMP_DEBUG_ASSERT(*buf == ',');
+ if (*buf != ',') {
+ KMP_WARNING(ParseExtraCharsWarn, name, buf);
+ while (*buf != ',')
+ buf++;
+ }
buf++;
SKIP_WS(buf);
-
- // Read next value if it was specified as an integer
- if ((*buf >= '0') && (*buf <= '9')) {
- next = buf;
- SKIP_DIGITS(next);
- num = __kmp_str_to_int(buf, *next);
- KMP_ASSERT(num >= 0);
- buf = next;
- SKIP_WS(buf);
- } else {
- num = -1;
- }
}
SKIP_WS(buf);
}
@@ -4536,6 +4523,10 @@ static void __kmp_stg_print_atomic_mode(kmp_str_buf_t *buffer, char const *name,
static void __kmp_stg_parse_consistency_check(char const *name,
char const *value, void *data) {
+ if (TCR_4(__kmp_init_serial)) {
+ KMP_WARNING(EnvSerialWarn, name);
+ return;
+ } // read value before serial initialization only
if (!__kmp_strcasecmp_with_sentinel("all", value, 0)) {
// Note, this will not work from kmp_set_defaults because th_cons stack was
// not allocated
@@ -4902,7 +4893,6 @@ static void __kmp_stg_parse_spin_backoff_params(const char *name,
}
}
}
- KMP_DEBUG_ASSERT(total > 0);
if (total <= 0) {
KMP_WARNING(EnvSyntaxError, name, value);
return;
@@ -4998,7 +4988,6 @@ static void __kmp_stg_parse_adaptive_lock_props(const char *name,
}
}
}
- KMP_DEBUG_ASSERT(total > 0);
if (total <= 0) {
KMP_WARNING(EnvSyntaxError, name, value);
return;
@@ -5569,12 +5558,10 @@ static kmp_setting_t __kmp_stg_table[] = {
__kmp_stg_print_wait_policy, NULL, 0, 0},
{"KMP_DISP_NUM_BUFFERS", __kmp_stg_parse_disp_buffers,
__kmp_stg_print_disp_buffers, NULL, 0, 0},
-#if KMP_NESTED_HOT_TEAMS
{"KMP_HOT_TEAMS_MAX_LEVEL", __kmp_stg_parse_hot_teams_level,
__kmp_stg_print_hot_teams_level, NULL, 0, 0},
{"KMP_HOT_TEAMS_MODE", __kmp_stg_parse_hot_teams_mode,
__kmp_stg_print_hot_teams_mode, NULL, 0, 0},
-#endif // KMP_NESTED_HOT_TEAMS
#if KMP_HANDLE_SIGNALS
{"KMP_HANDLE_SIGNALS", __kmp_stg_parse_handle_signals,
@@ -5758,7 +5745,8 @@ static kmp_setting_t __kmp_stg_table[] = {
#if OMPX_TASKGRAPH
{"KMP_MAX_TDGS", __kmp_stg_parse_max_tdgs, __kmp_std_print_max_tdgs, NULL,
0, 0},
- {"KMP_TDG_DOT", __kmp_stg_parse_tdg_dot, __kmp_stg_print_tdg_dot, NULL, 0, 0},
+ {"KMP_TDG_DOT", __kmp_stg_parse_tdg_dot, __kmp_stg_print_tdg_dot, NULL, 0,
+ 0},
#endif
#if OMPT_SUPPORT