git: db92b24a9b71 - main - devel/llvm16: openmp Fix child processes affinity
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 10 May 2024 20:05:19 UTC
The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/ports/commit/?id=db92b24a9b7176980dff1a05112d9afef2adda97 commit db92b24a9b7176980dff1a05112d9afef2adda97 Author: Brooks Davis <brooks@FreeBSD.org> AuthorDate: 2024-05-10 17:20:47 +0000 Commit: Brooks Davis <brooks@FreeBSD.org> CommitDate: 2024-05-10 20:04:50 +0000 devel/llvm16: openmp Fix child processes affinity Backport upstream 73bb8d9d92f6: [OpenMP] Fix child processes to use affinity_none (#91391) PR: 278843 Submitted by: cbl@cbl.us --- devel/llvm16/Makefile | 2 +- devel/llvm16/files/patch-backport-73bb8d9d92f6 | 40 ++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/devel/llvm16/Makefile b/devel/llvm16/Makefile index d8b29aa36f97..fa655ef715e1 100644 --- a/devel/llvm16/Makefile +++ b/devel/llvm16/Makefile @@ -1,6 +1,6 @@ PORTNAME= llvm DISTVERSION= 16.0.6 -PORTREVISION= 10 +PORTREVISION= 11 CATEGORIES= devel lang MASTER_SITES= https://github.com/llvm/llvm-project/releases/download/llvmorg-${DISTVERSION:S/rc/-rc/}/ \ https://${PRE_}releases.llvm.org/${LLVM_RELEASE}${RCDIR}/ diff --git a/devel/llvm16/files/patch-backport-73bb8d9d92f6 b/devel/llvm16/files/patch-backport-73bb8d9d92f6 new file mode 100644 index 000000000000..d9de14e2deb0 --- /dev/null +++ b/devel/llvm16/files/patch-backport-73bb8d9d92f6 @@ -0,0 +1,40 @@ +commit 73bb8d9d92f689863c94d48517e89d35dae0ebcf +Author: Jonathan Peyton <jonathan.l.peyton@intel.com> +Date: Wed May 8 09:23:50 2024 -0500 + + [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 + +diff --git openmp/runtime/src/kmp_settings.cpp openmp/runtime/src/kmp_settings.cpp +index b9c8289b5c51..8b6092cb1085 100644 +--- openmp/runtime/src/kmp_settings.cpp ++++ 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 openmp/runtime/test/affinity/redetect.c openmp/runtime/test/affinity/redetect.c +index dba83b72cc42..4b96d1bd92ee 100644 +--- openmp/runtime/test/affinity/redetect.c ++++ 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 +