[Openmp-commits] [openmp] r320151 - Fix thread affinity on non-x86 Linux
Jonas Hahnfeld via Openmp-commits
openmp-commits at lists.llvm.org
Fri Dec 8 07:07:05 PST 2017
Author: hahnfeld
Date: Fri Dec 8 07:07:05 2017
New Revision: 320151
URL: http://llvm.org/viewvc/llvm-project?rev=320151&view=rev
Log:
Fix thread affinity on non-x86 Linux
To make thread affinity work according to the OpenMP spec, the
runtime needs information about the hardware topology. On Linux
the default way is to parse /proc/cpuinfo which contains this
information for x86 machines but (at least) not for AArch64 and
Power architectures.
Fortunately, there is a different code path which is able to get
that data from sysfs. The needed patch has landed in 2006 for
Linux 2.6.16 which is safe to assume nowadays (even RHEL 5 had
a kernel version derived from 2.6.18, and we are now at RHEL 7!).
Differential Revision: https://reviews.llvm.org/D40357
Modified:
openmp/trunk/runtime/src/kmp_affinity.cpp
openmp/trunk/runtime/src/kmp_os.h
Modified: openmp/trunk/runtime/src/kmp_affinity.cpp
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_affinity.cpp?rev=320151&r1=320150&r2=320151&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_affinity.cpp (original)
+++ openmp/trunk/runtime/src/kmp_affinity.cpp Fri Dec 8 07:07:05 2017
@@ -2030,7 +2030,7 @@ static int __kmp_affinity_create_cpuinfo
if (threadInfo[num_avail][osIdIndex] != UINT_MAX)
goto dup_field;
threadInfo[num_avail][osIdIndex] = val;
-#if KMP_OS_LINUX && USE_SYSFS_INFO
+#if KMP_OS_LINUX && !(KMP_ARCH_X86 || KMP_ARCH_X86_64)
char path[256];
KMP_SNPRINTF(
path, sizeof(path),
Modified: openmp/trunk/runtime/src/kmp_os.h
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_os.h?rev=320151&r1=320150&r2=320151&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_os.h (original)
+++ openmp/trunk/runtime/src/kmp_os.h Fri Dec 8 07:07:05 2017
@@ -61,7 +61,7 @@
#error Unknown compiler
#endif
-#if (KMP_OS_LINUX || KMP_OS_WINDOWS) && !KMP_OS_CNK && !KMP_ARCH_PPC64
+#if (KMP_OS_LINUX || KMP_OS_WINDOWS) && !KMP_OS_CNK
#define KMP_AFFINITY_SUPPORTED 1
#if KMP_OS_WINDOWS && KMP_ARCH_X86_64
#define KMP_GROUP_AFFINITY 1
@@ -859,9 +859,6 @@ typedef void (*microtask_t)(int *gtid, i
#endif
// Switches for OSS builds
-#ifndef USE_SYSFS_INFO
-#define USE_SYSFS_INFO 0
-#endif
#ifndef USE_CMPXCHG_FIX
#define USE_CMPXCHG_FIX 1
#endif
More information about the Openmp-commits
mailing list