forked from OSchip/llvm-project
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 llvm-svn: 272937
This commit is contained in:
parent
ed44cf6ccd
commit
b9d28fbeb3
|
|
@ -38,7 +38,7 @@ Language "English"
|
|||
Country "USA"
|
||||
LangId "1033"
|
||||
Version "2"
|
||||
Revision "20140827"
|
||||
Revision "20160405"
|
||||
|
||||
|
||||
|
||||
|
|
@ -388,10 +388,10 @@ OBSOLETE "%1$s: granularity=core will be used."
|
|||
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 @@ EnvSpacesNotAllowed "%1$s: Spaces between digits are not allowed \"%2$s
|
|||
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."
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -3390,19 +3390,19 @@ __kmp_apply_thread_places(AddrUnsPair **pAddr, int depth)
|
|||
__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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4274,11 +4274,11 @@ __kmp_stg_print_speculative_statsfile( kmp_str_buf_t * buffer, char const * name
|
|||
#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 const * name, char const * value, void * dat
|
|||
// 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 const * name, char const * value, void * dat
|
|||
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 const * name, char const * value, void * dat
|
|||
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 const * name, char const * value, void * dat
|
|||
__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 const * name, char const * value, void * dat
|
|||
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 const * name, char const * value, void * dat
|
|||
__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 const * name, char const * value, void * dat
|
|||
__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 const * name, char const * value, void * dat
|
|||
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 const * name, char const * value, void * dat
|
|||
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 const * name, char const * value, void * dat
|
|||
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 const * name, char const * value, void * dat
|
|||
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 const * name, char const * value, void * dat
|
|||
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 },
|
||||
|
|
|
|||
Loading…
Reference in New Issue