forked from OSchip/llvm-project
Replaces KMP_OS_WINDOWS && KMP_ARCH_X86_64 or any combination of those two options with the feature macro KMP_GROUP_AFFINITY.
llvm-svn: 227199
This commit is contained in:
parent
42a79217a8
commit
7daf9803f5
|
@ -547,7 +547,7 @@ typedef unsigned char kmp_affin_mask_t;
|
|||
// Intel(R) 64 it is 8 bytes times the number of processor groups.
|
||||
//
|
||||
|
||||
# if KMP_ARCH_X86_64
|
||||
# if KMP_GROUP_AFFINITY
|
||||
|
||||
// GROUP_AFFINITY is already defined for _MSC_VER>=1600 (VS2010 and later).
|
||||
# if _MSC_VER < 1600
|
||||
|
@ -644,7 +644,7 @@ typedef DWORD kmp_affin_mask_t; /* for compatibility with older winbase.h */
|
|||
# define KMP_CPU_COMPLEMENT(mask) (*(mask) = ~*(mask))
|
||||
# define KMP_CPU_UNION(dest, src) (*(dest) |= *(src))
|
||||
|
||||
# endif /* KMP_ARCH_X86 */
|
||||
# endif /* KMP_GROUP_AFFINITY */
|
||||
|
||||
# endif /* KMP_OS_WINDOWS */
|
||||
|
||||
|
@ -690,13 +690,13 @@ enum affinity_gran {
|
|||
affinity_gran_core,
|
||||
affinity_gran_package,
|
||||
affinity_gran_node,
|
||||
#if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
#if KMP_GROUP_AFFINITY
|
||||
//
|
||||
// The "group" granularity isn't necesssarily coarser than all of the
|
||||
// other levels, but we put it last in the enum.
|
||||
//
|
||||
affinity_gran_group,
|
||||
#endif /* KMP_OS_WINDOWS && KMP_ARCH_X86_64 */
|
||||
#endif /* KMP_GROUP_AFFINITY */
|
||||
affinity_gran_default
|
||||
};
|
||||
|
||||
|
@ -707,9 +707,9 @@ enum affinity_top_method {
|
|||
affinity_top_method_x2apicid,
|
||||
#endif /* KMP_ARCH_X86 || KMP_ARCH_X86_64 */
|
||||
affinity_top_method_cpuinfo, // KMP_CPUINFO_FILE is usable on Windows* OS, too
|
||||
#if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
#if KMP_GROUP_AFFINITY
|
||||
affinity_top_method_group,
|
||||
#endif /* KMP_OS_WINDOWS && KMP_ARCH_X86_64 */
|
||||
#endif /* KMP_GROUP_AFFINITY */
|
||||
affinity_top_method_flat,
|
||||
affinity_top_method_default
|
||||
};
|
||||
|
|
|
@ -85,7 +85,7 @@ __kmp_affinity_entire_machine_mask(kmp_affin_mask_t *mask)
|
|||
{
|
||||
KMP_CPU_ZERO(mask);
|
||||
|
||||
# if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
# if KMP_GROUP_AFFINITY
|
||||
|
||||
if (__kmp_num_proc_groups > 1) {
|
||||
int group;
|
||||
|
@ -100,7 +100,7 @@ __kmp_affinity_entire_machine_mask(kmp_affin_mask_t *mask)
|
|||
}
|
||||
else
|
||||
|
||||
# endif /* KMP_OS_WINDOWS && KMP_ARCH_X86_64 */
|
||||
# endif /* KMP_GROUP_AFFINITY */
|
||||
|
||||
{
|
||||
int proc;
|
||||
|
@ -641,7 +641,7 @@ __kmp_affinity_create_flat_map(AddrUnsPair **address2os,
|
|||
}
|
||||
|
||||
|
||||
# if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
# if KMP_GROUP_AFFINITY
|
||||
|
||||
//
|
||||
// If multiple Windows* OS processor groups exist, we can create a 2-level
|
||||
|
@ -723,7 +723,7 @@ __kmp_affinity_create_proc_group_map(AddrUnsPair **address2os,
|
|||
return 2;
|
||||
}
|
||||
|
||||
# endif /* KMP_OS_WINDOWS && KMP_ARCH_X86_64 */
|
||||
# endif /* KMP_GROUP_AFFINITY */
|
||||
|
||||
|
||||
# if KMP_ARCH_X86 || KMP_ARCH_X86_64
|
||||
|
@ -3541,7 +3541,7 @@ __kmp_aux_affinity_initialize(void)
|
|||
|
||||
# endif /* KMP_OS_LINUX */
|
||||
|
||||
# if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
# if KMP_GROUP_AFFINITY
|
||||
|
||||
if ((depth < 0) && (__kmp_num_proc_groups > 1)) {
|
||||
if (__kmp_affinity_verbose) {
|
||||
|
@ -3552,7 +3552,7 @@ __kmp_aux_affinity_initialize(void)
|
|||
KMP_ASSERT(depth != 0);
|
||||
}
|
||||
|
||||
# endif /* KMP_OS_WINDOWS && KMP_ARCH_X86_64 */
|
||||
# endif /* KMP_GROUP_AFFINITY */
|
||||
|
||||
if (depth < 0) {
|
||||
if (__kmp_affinity_verbose && (msg_id != kmp_i18n_null)) {
|
||||
|
@ -3678,7 +3678,7 @@ __kmp_aux_affinity_initialize(void)
|
|||
}
|
||||
}
|
||||
|
||||
# if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
# if KMP_GROUP_AFFINITY
|
||||
|
||||
else if (__kmp_affinity_top_method == affinity_top_method_group) {
|
||||
if (__kmp_affinity_verbose) {
|
||||
|
@ -3693,7 +3693,7 @@ __kmp_aux_affinity_initialize(void)
|
|||
}
|
||||
}
|
||||
|
||||
# endif /* KMP_OS_WINDOWS && KMP_ARCH_X86_64 */
|
||||
# endif /* KMP_GROUP_AFFINITY */
|
||||
|
||||
else if (__kmp_affinity_top_method == affinity_top_method_flat) {
|
||||
if (__kmp_affinity_verbose) {
|
||||
|
@ -4019,7 +4019,7 @@ __kmp_affinity_set_init_mask(int gtid, int isa_root)
|
|||
{
|
||||
if ((__kmp_affinity_type == affinity_none) || (__kmp_affinity_type == affinity_balanced)
|
||||
) {
|
||||
# if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
# if KMP_GROUP_AFFINITY
|
||||
if (__kmp_num_proc_groups > 1) {
|
||||
return;
|
||||
}
|
||||
|
@ -4038,7 +4038,7 @@ __kmp_affinity_set_init_mask(int gtid, int isa_root)
|
|||
else {
|
||||
if ((! isa_root)
|
||||
|| (__kmp_nested_proc_bind.bind_types[0] == proc_bind_false)) {
|
||||
# if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
# if KMP_GROUP_AFFINITY
|
||||
if (__kmp_num_proc_groups > 1) {
|
||||
return;
|
||||
}
|
||||
|
@ -4206,11 +4206,11 @@ __kmp_aux_set_affinity(void **mask)
|
|||
KMP_FATAL(AffinityInvalidMask, "kmp_set_affinity");
|
||||
}
|
||||
|
||||
# if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
# if KMP_GROUP_AFFINITY
|
||||
if (__kmp_get_proc_group((kmp_affin_mask_t *)(*mask)) < 0) {
|
||||
KMP_FATAL(AffinityInvalidMask, "kmp_set_affinity");
|
||||
}
|
||||
# endif /* KMP_OS_WINDOWS && KMP_ARCH_X86_64 */
|
||||
# endif /* KMP_GROUP_AFFINITY */
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -259,11 +259,11 @@ FTN_GET_AFFINITY_MAX_PROC( void )
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
#if KMP_GROUP_AFFINITY
|
||||
if ( __kmp_num_proc_groups <= 1 ) {
|
||||
return (int)KMP_CPU_SETSIZE;
|
||||
}
|
||||
#endif /* KMP_OS_WINDOWS && KMP_ARCH_X86_64 */
|
||||
#endif /* KMP_GROUP_AFFINITY */
|
||||
return __kmp_xproc;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -217,7 +217,7 @@ int __kmp_clock_function_param;
|
|||
|
||||
#if KMP_AFFINITY_SUPPORTED
|
||||
|
||||
# if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
# if KMP_GROUP_AFFINITY
|
||||
|
||||
int __kmp_num_proc_groups = 1;
|
||||
|
||||
|
@ -226,7 +226,7 @@ kmp_GetActiveProcessorGroupCount_t __kmp_GetActiveProcessorGroupCount = NULL;
|
|||
kmp_GetThreadGroupAffinity_t __kmp_GetThreadGroupAffinity = NULL;
|
||||
kmp_SetThreadGroupAffinity_t __kmp_SetThreadGroupAffinity = NULL;
|
||||
|
||||
# endif /* KMP_OS_WINDOWS && KMP_ARCH_X86_64 */
|
||||
# endif /* KMP_GROUP_AFFINITY */
|
||||
|
||||
size_t __kmp_affin_mask_size = 0;
|
||||
enum affinity_type __kmp_affinity_type = affinity_default;
|
||||
|
|
|
@ -121,12 +121,6 @@
|
|||
# define KMP_OS_UNIX 1
|
||||
#endif
|
||||
|
||||
#if (KMP_OS_LINUX || KMP_OS_WINDOWS) && !KMP_OS_CNK && !KMP_ARCH_PPC64
|
||||
# define KMP_AFFINITY_SUPPORTED 1
|
||||
#else
|
||||
# define KMP_AFFINITY_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#if KMP_OS_WINDOWS
|
||||
# if defined _M_AMD64
|
||||
# undef KMP_ARCH_X86_64
|
||||
|
@ -199,6 +193,18 @@
|
|||
# error Unknown or unsupported architecture
|
||||
#endif
|
||||
|
||||
#if (KMP_OS_LINUX || KMP_OS_WINDOWS) && !KMP_OS_CNK && !KMP_ARCH_PPC64
|
||||
# define KMP_AFFINITY_SUPPORTED 1
|
||||
# if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
# define KMP_GROUP_AFFINITY 1
|
||||
# else
|
||||
# define KMP_GROUP_AFFINITY 0
|
||||
# endif
|
||||
#else
|
||||
# define KMP_AFFINITY_SUPPORTED 0
|
||||
# define KMP_GROUP_AFFINITY 0
|
||||
#endif
|
||||
|
||||
/* Check for quad-precision extension. */
|
||||
#define KMP_HAVE_QUAD 0
|
||||
#if KMP_ARCH_X86 || KMP_ARCH_X86_64
|
||||
|
|
|
@ -2192,11 +2192,11 @@ __kmp_parse_affinity_env( char const * name, char const * value,
|
|||
} else if (__kmp_match_str("node", buf, (const char **)&next)) {
|
||||
set_gran( affinity_gran_node, -1 );
|
||||
buf = next;
|
||||
# if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
# if KMP_GROUP_AFFINITY
|
||||
} else if (__kmp_match_str("group", buf, (const char **)&next)) {
|
||||
set_gran( affinity_gran_group, -1 );
|
||||
buf = next;
|
||||
# endif /* KMP_OS_WINDOWS && KMP_ARCH_X86_64 */
|
||||
# endif /* KMP_GROUP AFFINITY */
|
||||
} else if ((*buf >= '0') && (*buf <= '9')) {
|
||||
int n;
|
||||
next = buf;
|
||||
|
@ -2430,11 +2430,11 @@ __kmp_stg_print_affinity( kmp_str_buf_t * buffer, char const * name, void * data
|
|||
case affinity_gran_node:
|
||||
__kmp_str_buf_print( buffer, "%s", "granularity=node,");
|
||||
break;
|
||||
# if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
# if KMP_GROUP_AFFINITY
|
||||
case affinity_gran_group:
|
||||
__kmp_str_buf_print( buffer, "%s", "granularity=group,");
|
||||
break;
|
||||
# endif /* KMP_OS_WINDOWS && KMP_ARCH_X86_64 */
|
||||
# endif /* KMP_GROUP_AFFINITY */
|
||||
}
|
||||
if ( __kmp_affinity_dups ) {
|
||||
__kmp_str_buf_print( buffer, "%s,", "duplicates");
|
||||
|
@ -3103,11 +3103,11 @@ __kmp_stg_parse_topology_method( char const * name, char const * value,
|
|||
|| __kmp_str_match( "cpuinfo", 5, value )) {
|
||||
__kmp_affinity_top_method = affinity_top_method_cpuinfo;
|
||||
}
|
||||
# if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
# if KMP_GROUP_AFFINITY
|
||||
else if ( __kmp_str_match( "group", 1, value ) ) {
|
||||
__kmp_affinity_top_method = affinity_top_method_group;
|
||||
}
|
||||
# endif /* KMP_OS_WINDOWS && KMP_ARCH_X86_64 */
|
||||
# endif /* KMP_GROUP_AFFINITY */
|
||||
else if ( __kmp_str_match( "flat", 1, value ) ) {
|
||||
__kmp_affinity_top_method = affinity_top_method_flat;
|
||||
}
|
||||
|
@ -3145,11 +3145,11 @@ __kmp_stg_print_topology_method( kmp_str_buf_t * buffer, char const * name,
|
|||
value = "cpuinfo";
|
||||
break;
|
||||
|
||||
# if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
# if KMP_GROUP_AFFINITY
|
||||
case affinity_top_method_group:
|
||||
value = "group";
|
||||
break;
|
||||
# endif /* KMP_OS_WINDOWS && KMP_ARCH_X86_64 */
|
||||
# endif /* KMP_GROUP_AFFINITY */
|
||||
|
||||
case affinity_top_method_flat:
|
||||
value = "flat";
|
||||
|
@ -5106,7 +5106,7 @@ __kmp_env_initialize( char const * string ) {
|
|||
|
||||
if ( KMP_AFFINITY_CAPABLE() ) {
|
||||
|
||||
# if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
# if KMP_GROUP_AFFINITY
|
||||
|
||||
//
|
||||
// Handle the Win 64 group affinity stuff if there are multiple
|
||||
|
@ -5180,16 +5180,16 @@ __kmp_env_initialize( char const * string ) {
|
|||
}
|
||||
else
|
||||
|
||||
# endif /* KMP_OS_WINDOWS && KMP_ARCH_X86_64 */
|
||||
# endif /* KMP_GROUP_AFFINITY */
|
||||
|
||||
{
|
||||
if ( __kmp_affinity_respect_mask == affinity_respect_mask_default ) {
|
||||
# if KMP_OS_WINDOWS && KMP_ARCH_X86_64
|
||||
# if KMP_GROUP_AFFINITY
|
||||
if ( __kmp_num_proc_groups > 1 ) {
|
||||
__kmp_affinity_respect_mask = FALSE;
|
||||
}
|
||||
else
|
||||
# endif /* KMP_OS_WINDOWS && KMP_ARCH_X86_64 */
|
||||
# endif /* KMP_GROUP_AFFINITY */
|
||||
{
|
||||
__kmp_affinity_respect_mask = TRUE;
|
||||
}
|
||||
|
|
|
@ -134,9 +134,9 @@ HMODULE ntdll = NULL;
|
|||
|
||||
/* End of NtQuerySystemInformation()-related code */
|
||||
|
||||
#if KMP_ARCH_X86_64
|
||||
#if KMP_GROUP_AFFINITY
|
||||
static HMODULE kernel32 = NULL;
|
||||
#endif /* KMP_ARCH_X86_64 */
|
||||
#endif /* KMP_GROUP_AFFINITY */
|
||||
|
||||
/* ----------------------------------------------------------------------------------- */
|
||||
/* ----------------------------------------------------------------------------------- */
|
||||
|
@ -547,7 +547,7 @@ __kmp_gtid_get_specific()
|
|||
/* ------------------------------------------------------------------------ */
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
#if KMP_ARCH_X86_64
|
||||
#if KMP_GROUP_AFFINITY
|
||||
|
||||
//
|
||||
// Only 1 DWORD in the mask should have any procs set.
|
||||
|
@ -570,13 +570,13 @@ __kmp_get_proc_group( kmp_affin_mask_t const *mask )
|
|||
return group;
|
||||
}
|
||||
|
||||
#endif /* KMP_ARCH_X86_64 */
|
||||
#endif /* KMP_GROUP_AFFINITY */
|
||||
|
||||
int
|
||||
__kmp_set_system_affinity( kmp_affin_mask_t const *mask, int abort_on_error )
|
||||
{
|
||||
|
||||
#if KMP_ARCH_X86_64
|
||||
#if KMP_GROUP_AFFINITY
|
||||
|
||||
if (__kmp_num_proc_groups > 1) {
|
||||
//
|
||||
|
@ -615,7 +615,7 @@ __kmp_set_system_affinity( kmp_affin_mask_t const *mask, int abort_on_error )
|
|||
}
|
||||
else
|
||||
|
||||
#endif /* KMP_ARCH_X86_64 */
|
||||
#endif /* KMP_GROUP_AFFINITY */
|
||||
|
||||
{
|
||||
if (!SetThreadAffinityMask( GetCurrentThread(), *mask )) {
|
||||
|
@ -638,7 +638,7 @@ int
|
|||
__kmp_get_system_affinity( kmp_affin_mask_t *mask, int abort_on_error )
|
||||
{
|
||||
|
||||
#if KMP_ARCH_X86_64
|
||||
#if KMP_GROUP_AFFINITY
|
||||
|
||||
if (__kmp_num_proc_groups > 1) {
|
||||
KMP_CPU_ZERO(mask);
|
||||
|
@ -667,7 +667,7 @@ __kmp_get_system_affinity( kmp_affin_mask_t *mask, int abort_on_error )
|
|||
}
|
||||
else
|
||||
|
||||
#endif /* KMP_ARCH_X86_64 */
|
||||
#endif /* KMP_GROUP_AFFINITY */
|
||||
|
||||
{
|
||||
kmp_affin_mask_t newMask, sysMask, retval;
|
||||
|
@ -718,7 +718,7 @@ void
|
|||
__kmp_affinity_bind_thread( int proc )
|
||||
{
|
||||
|
||||
#if KMP_ARCH_X86_64
|
||||
#if KMP_GROUP_AFFINITY
|
||||
|
||||
if (__kmp_num_proc_groups > 1) {
|
||||
//
|
||||
|
@ -747,7 +747,7 @@ __kmp_affinity_bind_thread( int proc )
|
|||
}
|
||||
else
|
||||
|
||||
#endif /* KMP_ARCH_X86_64 */
|
||||
#endif /* KMP_GROUP_AFFINITY */
|
||||
|
||||
{
|
||||
kmp_affin_mask_t mask;
|
||||
|
@ -764,7 +764,7 @@ __kmp_affinity_determine_capable( const char *env_var )
|
|||
// All versions of Windows* OS (since Win '95) support SetThreadAffinityMask().
|
||||
//
|
||||
|
||||
#if KMP_ARCH_X86_64
|
||||
#if KMP_GROUP_AFFINITY
|
||||
__kmp_affin_mask_size = __kmp_num_proc_groups * sizeof(kmp_affin_mask_t);
|
||||
#else
|
||||
__kmp_affin_mask_size = sizeof(kmp_affin_mask_t);
|
||||
|
@ -920,7 +920,7 @@ __kmp_runtime_initialize( void )
|
|||
}
|
||||
KMP_DEBUG_ASSERT( NtQuerySystemInformation != NULL );
|
||||
|
||||
#if KMP_ARCH_X86_64
|
||||
#if KMP_GROUP_AFFINITY
|
||||
//
|
||||
// Load kernel32.dll.
|
||||
// Same caveat - must use full system path name.
|
||||
|
@ -985,7 +985,7 @@ __kmp_runtime_initialize( void )
|
|||
#else
|
||||
GetSystemInfo( & info );
|
||||
__kmp_xproc = info.dwNumberOfProcessors;
|
||||
#endif // KMP_ARCH_X86_64
|
||||
#endif /* KMP_GROUP_AFFINITY */
|
||||
|
||||
//
|
||||
// If the OS said there were 0 procs, take a guess and use a value of 2.
|
||||
|
|
Loading…
Reference in New Issue