aboutsummaryrefslogtreecommitdiff
path: root/openmp
diff options
context:
space:
mode:
authorJonathan Peyton <jonathan.l.peyton@intel.com>2024-05-08 09:23:50 -0500
committerGitHub <noreply@github.com>2024-05-08 09:23:50 -0500
commit73bb8d9d92f689863c94d48517e89d35dae0ebcf (patch)
treeadefa0ca21cc271eff16246fc144ecfb470b454f /openmp
parent27a062e9ca7c92e89ed4084c3c3affb9fa39aabb (diff)
downloadllvm-73bb8d9d92f689863c94d48517e89d35dae0ebcf.zip
llvm-73bb8d9d92f689863c94d48517e89d35dae0ebcf.tar.gz
llvm-73bb8d9d92f689863c94d48517e89d35dae0ebcf.tar.bz2
[OpenMP] Fix child processes to use affinity_none (#91391)
When a child process is forked with OpenMP already initialized, the child process resets its affinity mask and sets proc-bind-var to false so that the entire original affinity mask is used. This patch corrects an issue with the affinity initialization code setting affinity to compact instead of none for this special case of forked children. The test trying to catch this only testing explicit setting of KMP_AFFINITY=none. Add test run for no KMP_AFFINITY setting. Fixes: #91098
Diffstat (limited to 'openmp')
-rw-r--r--openmp/runtime/src/kmp_settings.cpp2
-rw-r--r--openmp/runtime/test/affinity/redetect.c1
2 files changed, 3 insertions, 0 deletions
diff --git a/openmp/runtime/src/kmp_settings.cpp b/openmp/runtime/src/kmp_settings.cpp
index b9c8289..8b6092c 100644
--- a/openmp/runtime/src/kmp_settings.cpp
+++ b/openmp/runtime/src/kmp_settings.cpp
@@ -6420,6 +6420,8 @@ void __kmp_env_initialize(char const *string) {
}
if ((__kmp_nested_proc_bind.bind_types[0] != proc_bind_intel) &&
(__kmp_nested_proc_bind.bind_types[0] != proc_bind_default)) {
+ if (__kmp_nested_proc_bind.bind_types[0] == proc_bind_false)
+ __kmp_affinity.type = affinity_none;
if (__kmp_affinity.type == affinity_default) {
__kmp_affinity.type = affinity_compact;
__kmp_affinity.flags.dups = FALSE;
diff --git a/openmp/runtime/test/affinity/redetect.c b/openmp/runtime/test/affinity/redetect.c
index dba83b7..4b96d1b 100644
--- a/openmp/runtime/test/affinity/redetect.c
+++ b/openmp/runtime/test/affinity/redetect.c
@@ -1,4 +1,5 @@
// RUN: %libomp-compile
+// RUN: %libomp-run
// RUN: env KMP_AFFINITY=none %libomp-run
// REQUIRES: linux