aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2024-05-08 18:44:28 +0000
committerDimitry Andric <dim@FreeBSD.org>2024-05-08 18:45:45 +0000
commit22b3e7898ecdf90887a9536fab5b9a6f7a291723 (patch)
treef80be98e9355a3662446ebba4ceeb2a6c9f78891
parentda15ed2e982180198f77a0fa26628e6d414cb10e (diff)
downloadsrc-22b3e7898ecdf90887a9536fab5b9a6f7a291723.tar.gz
src-22b3e7898ecdf90887a9536fab5b9a6f7a291723.zip
Merge commit 73bb8d9d92f6 from llvm-project (by Jonathan Peyton):
[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 This should fix OpenMP processes sometimes getting stuck on a single CPU core. PR: 278845 Reported by: Cassidy B. Larson <cbl@cbl.us> MFC after: 3 days
-rw-r--r--contrib/llvm-project/openmp/runtime/src/kmp_settings.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/contrib/llvm-project/openmp/runtime/src/kmp_settings.cpp b/contrib/llvm-project/openmp/runtime/src/kmp_settings.cpp
index ec86ee07472c..58f19ea5b8ab 100644
--- a/contrib/llvm-project/openmp/runtime/src/kmp_settings.cpp
+++ b/contrib/llvm-project/openmp/runtime/src/kmp_settings.cpp
@@ -6426,6 +6426,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;