[Openmp-commits] [openmp] r272937 - Deprecate KMP_PLACE_THREADS and rename as KMP_HW_SUBSET
Jonathan Peyton via Openmp-commits
openmp-commits at lists.llvm.org
Thu Jun 16 11:53:48 PDT 2016
Author: jlpeyton
Date: Thu Jun 16 13:53:48 2016
New Revision: 272937
URL: http://llvm.org/viewvc/llvm-project?rev=272937&view=rev
Log:
Deprecate KMP_PLACE_THREADS and rename as KMP_HW_SUBSET
Deprecate KMP_PLACE_THREADS and rename it to KMP_HW_SUBSET due to confusion
about its purpose and function among users. KMP_HW_SUBSET is an environment
variable which allows users to easily pick a subset of the hardware topology to
use. e.g., KMP_HW_SUBSET=30c,2t means use 30 cores, 2 threads per core.
Patch by Andrey Churbanov
Differential Revision: http://reviews.llvm.org/D21340
Modified:
openmp/trunk/runtime/src/i18n/en_US.txt
openmp/trunk/runtime/src/kmp_affinity.cpp
openmp/trunk/runtime/src/kmp_settings.c
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=272937&r1=272936&r2=272937&view=diff
==============================================================================
--- openmp/trunk/runtime/src/i18n/en_US.txt (original)
+++ openmp/trunk/runtime/src/i18n/en_US.txt Thu Jun 16 13:53:48 2016
@@ -38,7 +38,7 @@ Language "English"
Country "USA"
LangId "1033"
Version "2"
-Revision "20140827"
+Revision "20160405"
@@ -388,10 +388,10 @@ OBSOLETE "%1$s: gran
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 at offset, nCores at 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 @@ EnvSpacesNotAllowed "%1$s: Spac
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."
# --------------------------------------------------------------------------------------------------
Modified: openmp/trunk/runtime/src/kmp_affinity.cpp
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_affinity.cpp?rev=272937&r1=272936&r2=272937&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_affinity.cpp (original)
+++ openmp/trunk/runtime/src/kmp_affinity.cpp Thu Jun 16 13:53:48 2016
@@ -3390,19 +3390,19 @@ __kmp_apply_thread_places(AddrUnsPair **
__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;
}
Modified: openmp/trunk/runtime/src/kmp_settings.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_settings.c?rev=272937&r1=272936&r2=272937&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_settings.c (original)
+++ openmp/trunk/runtime/src/kmp_settings.c Thu Jun 16 13:53:48 2016
@@ -4274,11 +4274,11 @@ __kmp_stg_print_speculative_statsfile( k
#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 @@ __kmp_stg_parse_place_threads( char cons
// 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 @@ __kmp_stg_parse_place_threads( char cons
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 @@ __kmp_stg_parse_place_threads( char cons
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_stg_parse_place_threads( char cons
__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 @@ __kmp_stg_parse_place_threads( char cons
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_stg_parse_place_threads( char cons
__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_stg_parse_place_threads( char cons
__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 @@ __kmp_stg_parse_place_threads( char cons
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 @@ __kmp_stg_parse_place_threads( char cons
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 @@ __kmp_stg_parse_place_threads( char cons
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 @@ __kmp_stg_parse_place_threads( char cons
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_stg_parse_place_threads( char cons
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 @@ static kmp_setting_t __kmp_stg_table[] =
{ "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 },
More information about the Openmp-commits
mailing list