Index: openmp/trunk/runtime/src/i18n/en_US.txt =================================================================== --- openmp/trunk/runtime/src/i18n/en_US.txt +++ openmp/trunk/runtime/src/i18n/en_US.txt @@ -38,7 +38,7 @@ Country "USA" LangId "1033" Version "2" -Revision "20140827" +Revision "20160405" @@ -388,10 +388,10 @@ EnvLockWarn "%1$s must be set prior to first OMP lock call or critical section; ignored." FutexNotSupported "futex system call not supported; %1$s=%2$s ignored." AffGranUsing "%1$s: granularity=%2$s will be used." -AffThrPlaceInvalid "%1$s: invalid value \"%2$s\", valid format is \"Ns[@N],Nc[@N],Nt " +AffHWSubsetInvalid "%1$s: invalid value \"%2$s\", valid format is \"Ns[@N],Nc[@N],Nt " "(nSockets@offset, nCores@offset, nTthreads per core)\"." -AffThrPlaceUnsupported "KMP_PLACE_THREADS ignored: unsupported architecture." -AffThrPlaceManyCores "KMP_PLACE_THREADS ignored: too many cores requested." +AffHWSubsetUnsupported "KMP_HW_SUBSET ignored: unsupported architecture." +AffHWSubsetManyCores "KMP_HW_SUBSET ignored: too many cores requested." SyntaxErrorUsing "%1$s: syntax error, using %2$s." AdaptiveNotSupported "%1$s: Adaptive locks are not supported; using queuing." EnvSyntaxError "%1$s: Invalid symbols found. Check the value \"%2$s\"." @@ -399,16 +399,17 @@ BoundToOSProcSet "%1$s: pid %2$d thread %3$d bound to OS proc set %4$s" CnsLoopIncrIllegal "%1$s error: parallel loop increment and condition are inconsistent." NoGompCancellation "libgomp cancellation is not currently supported." -AffThrPlaceNonUniform "KMP_PLACE_THREADS ignored: non-uniform topology." -AffThrPlaceNonThreeLevel "KMP_PLACE_THREADS ignored: only three-level topology is supported." +AffHWSubsetNonUniform "KMP_HW_SUBSET ignored: non-uniform topology." +AffHWSubsetNonThreeLevel "KMP_HW_SUBSET ignored: only three-level topology is supported." AffGranTopGroup "%1$s: granularity=%2$s is not supported with KMP_TOPOLOGY_METHOD=group. Using \"granularity=fine\"." AffGranGroupType "%1$s: granularity=group is not supported with KMP_AFFINITY=%2$s. Using \"granularity=core\"." -AffThrPlaceManySockets "KMP_PLACE_THREADS ignored: too many sockets requested." -AffThrPlaceDeprecated "KMP_PLACE_THREADS \"o\" offset designator deprecated, please use @ prefix for offset value." +AffHWSubsetManySockets "KMP_HW_SUBSET ignored: too many sockets requested." +AffHWSubsetDeprecated "KMP_HW_SUBSET \"o\" offset designator deprecated, please use @ prefix for offset value." AffUsingHwloc "%1$s: Affinity capable, using hwloc." AffIgnoringHwloc "%1$s: Ignoring hwloc mechanism." AffHwlocErrorOccurred "%1$s: Hwloc failed in %2$s. Relying on internal affinity mechanisms." EnvSerialWarn "%1$s must be set prior to OpenMP runtime library initialization; ignored." +EnvVarDeprecated "%1$s variable deprecated, please use %2$s instead." # -------------------------------------------------------------------------------------------------- Index: openmp/trunk/runtime/src/kmp_affinity.cpp =================================================================== --- openmp/trunk/runtime/src/kmp_affinity.cpp +++ openmp/trunk/runtime/src/kmp_affinity.cpp @@ -3390,19 +3390,19 @@ __kmp_place_num_threads_per_core = __kmp_nThreadsPerCore; // use all HW contexts if ( !__kmp_affinity_uniform_topology() ) { - KMP_WARNING( AffThrPlaceNonUniform ); + KMP_WARNING( AffHWSubsetNonUniform ); return; // don't support non-uniform topology } if ( depth != 3 ) { - KMP_WARNING( AffThrPlaceNonThreeLevel ); + KMP_WARNING( AffHWSubsetNonThreeLevel ); return; // don't support not-3-level topology } if (__kmp_place_socket_offset + __kmp_place_num_sockets > nPackages) { - KMP_WARNING(AffThrPlaceManySockets); + KMP_WARNING(AffHWSubsetManySockets); return; } if ( __kmp_place_core_offset + __kmp_place_num_cores > nCoresPerPkg ) { - KMP_WARNING( AffThrPlaceManyCores ); + KMP_WARNING( AffHWSubsetManyCores ); return; } Index: openmp/trunk/runtime/src/kmp_settings.c =================================================================== --- openmp/trunk/runtime/src/kmp_settings.c +++ openmp/trunk/runtime/src/kmp_settings.c @@ -4274,11 +4274,11 @@ #endif // KMP_USE_ADAPTIVE_LOCKS // ------------------------------------------------------------------------------------------------- -// KMP_PLACE_THREADS +// KMP_HW_SUBSET (was KMP_PLACE_THREADS) // ------------------------------------------------------------------------------------------------- static void -__kmp_stg_parse_place_threads( char const * name, char const * value, void * data ) { +__kmp_stg_parse_hw_subset( char const * name, char const * value, void * data ) { // Value example: 5Cx2Tx15O // Which means "use 5 cores with offset 15, 2 threads per core" // AC: extended to sockets level, examples of @@ -4288,12 +4288,32 @@ // postfix "o" or prefix @ can be offset designator. // Note: not all syntax errors are analyzed, some may be skipped. #define CHECK_DELIM(_x) (*(_x) == ',' || *(_x) == 'x') + static int parsed = 0; int num; int single_warning = 0; int flagS = 0, flagC = 0, flagT = 0, flagSO = 0, flagCO = 0; const char *next = value; const char *prev; + if( strcmp(name, "KMP_PLACE_THREADS") == 0 ) { + KMP_INFORM(EnvVarDeprecated,name,"KMP_HW_SUBSET"); + if( parsed == 1 ) { + return; // already parsed KMP_HW_SUBSET + } + } + parsed = 1; + + SKIP_WS(next); // skip white spaces + if (*next == '\0') + return; // no data provided, retain default values + if( strcmp(name, "KMP_PLACE_THREADS") == 0 ) { + KMP_INFORM(EnvVarDeprecated,name,"KMP_HW_SUBSET"); + if( parsed == 1 ) { + return; // already parsed KMP_HW_SUBSET + } + } + parsed = 1; + SKIP_WS(next); // skip white spaces if (*next == '\0') return; // no data provided, retain default values @@ -4311,7 +4331,7 @@ flagSO = 1; prev = ++next; // don't allow spaces for simplicity if (!(*next >= '0' && *next <= '9')) { - KMP_WARNING(AffThrPlaceInvalid, name, value); + KMP_WARNING(AffHWSubsetInvalid, name, value); return; } SKIP_DIGITS(next); @@ -4326,7 +4346,7 @@ flagCO = 1; prev = ++next; // don't allow spaces for simplicity if (!(*next >= '0' && *next <= '9')) { - KMP_WARNING(AffThrPlaceInvalid, name, value); + KMP_WARNING(AffHWSubsetInvalid, name, value); return; } SKIP_DIGITS(next); @@ -4345,11 +4365,11 @@ __kmp_place_num_cores = num; return; // the only value provided - set num cores } else { - KMP_WARNING(AffThrPlaceInvalid, name, value); + KMP_WARNING(AffHWSubsetInvalid, name, value); return; } } else { - KMP_WARNING(AffThrPlaceInvalid, name, value); + KMP_WARNING(AffHWSubsetInvalid, name, value); return; } KMP_DEBUG_ASSERT(flagS); // num sockets should already be set here @@ -4376,7 +4396,7 @@ flagCO = 1; prev = ++next; // don't allow spaces for simplicity if (!(*next >= '0' && *next <= '9')) { - KMP_WARNING(AffThrPlaceInvalid, name, value); + KMP_WARNING(AffHWSubsetInvalid, name, value); return; } SKIP_DIGITS(next); @@ -4384,7 +4404,7 @@ __kmp_place_core_offset = num; } } else if (*next == 'o' || *next == 'O') { // offset specified - KMP_WARNING(AffThrPlaceDeprecated); + KMP_WARNING(AffHWSubsetDeprecated); single_warning = 1; if (flagC) { // whether num_cores already specified (sockets skipped) KMP_DEBUG_ASSERT(!flagCO); // either "o" or @, not both @@ -4405,11 +4425,11 @@ __kmp_place_num_threads_per_core = num; return; // two values provided without letter-designator } else { - KMP_WARNING(AffThrPlaceInvalid, name, value); + KMP_WARNING(AffHWSubsetInvalid, name, value); return; } } else { - KMP_WARNING(AffThrPlaceInvalid, name, value); + KMP_WARNING(AffHWSubsetInvalid, name, value); return; } SKIP_WS(next); @@ -4440,18 +4460,18 @@ next++; //KMP_DEBUG_ASSERT(*next != '@'); // socket offset used "o" designator } else if (*next == 'o' || *next == 'O') { - KMP_WARNING(AffThrPlaceDeprecated); + KMP_WARNING(AffHWSubsetDeprecated); single_warning = 1; KMP_DEBUG_ASSERT(flagC); //KMP_DEBUG_ASSERT(!flagSO); // socket offset couldn't use @ designator __kmp_place_core_offset = num; next++; } else { - KMP_WARNING(AffThrPlaceInvalid, name, value); + KMP_WARNING(AffHWSubsetInvalid, name, value); return; } } else { - KMP_WARNING(AffThrPlaceInvalid, name, value); + KMP_WARNING(AffHWSubsetInvalid, name, value); return; } KMP_DEBUG_ASSERT(flagC); @@ -4471,7 +4491,7 @@ SKIP_WS(next); if (*next == 'o' || *next == 'O') { if (!single_warning) { // warn once - KMP_WARNING(AffThrPlaceDeprecated); + KMP_WARNING(AffHWSubsetDeprecated); } KMP_DEBUG_ASSERT(!flagSO); // socket offset couldn't use @ designator __kmp_place_core_offset = num; @@ -4482,11 +4502,11 @@ flagT = 1; next++; // can have core-offset specified after num threads } else { - KMP_WARNING(AffThrPlaceInvalid, name, value); + KMP_WARNING(AffHWSubsetInvalid, name, value); return; } } else { - KMP_WARNING(AffThrPlaceInvalid, name, value); + KMP_WARNING(AffHWSubsetInvalid, name, value); return; } SKIP_WS(next); @@ -4505,7 +4525,7 @@ SKIP_WS(next); if (*next == 'o' || *next == 'O') { if (!single_warning) { // warn once - KMP_WARNING(AffThrPlaceDeprecated); + KMP_WARNING(AffHWSubsetDeprecated); } KMP_DEBUG_ASSERT(flagT); KMP_DEBUG_ASSERT(!flagSO); // socket offset couldn't use @ designator @@ -4514,17 +4534,17 @@ KMP_DEBUG_ASSERT(flagT == 0); __kmp_place_num_threads_per_core = num; } else { - KMP_WARNING(AffThrPlaceInvalid, name, value); + KMP_WARNING(AffHWSubsetInvalid, name, value); } } else { - KMP_WARNING(AffThrPlaceInvalid, name, value); + KMP_WARNING(AffHWSubsetInvalid, name, value); } return; #undef CHECK_DELIM } static void -__kmp_stg_print_place_threads( kmp_str_buf_t * buffer, char const * name, void * data ) { +__kmp_stg_print_hw_subset( kmp_str_buf_t * buffer, char const * name, void * data ) { if (__kmp_place_num_sockets + __kmp_place_num_cores + __kmp_place_num_threads_per_core) { int comma = 0; kmp_str_buf_t buf; @@ -4775,7 +4795,8 @@ { "KMP_SPECULATIVE_STATSFILE", __kmp_stg_parse_speculative_statsfile,__kmp_stg_print_speculative_statsfile, NULL, 0, 0 }, #endif #endif // KMP_USE_ADAPTIVE_LOCKS - { "KMP_PLACE_THREADS", __kmp_stg_parse_place_threads, __kmp_stg_print_place_threads, NULL, 0, 0 }, + { "KMP_PLACE_THREADS", __kmp_stg_parse_hw_subset, __kmp_stg_print_hw_subset, NULL, 0, 0 }, + { "KMP_HW_SUBSET", __kmp_stg_parse_hw_subset, __kmp_stg_print_hw_subset, NULL, 0, 0 }, #if USE_ITT_BUILD { "KMP_FORKJOIN_FRAMES", __kmp_stg_parse_forkjoin_frames, __kmp_stg_print_forkjoin_frames, NULL, 0, 0 }, { "KMP_FORKJOIN_FRAMES_MODE", __kmp_stg_parse_forkjoin_frames_mode,__kmp_stg_print_forkjoin_frames_mode, NULL, 0, 0 },