[Openmp-commits] [openmp] 02aacc4 - Reland: [OpenMP][clang] 6.0: num_threads strict (part 1: host runtime) (#147532)

via Openmp-commits openmp-commits at lists.llvm.org
Tue Jul 8 08:19:44 PDT 2025


Author: Robert Imschweiler
Date: 2025-07-08T17:19:40+02:00
New Revision: 02aacc4cef65387161a91399561ea7eaf2b27e8d

URL: https://github.com/llvm/llvm-project/commit/02aacc4cef65387161a91399561ea7eaf2b27e8d
DIFF: https://github.com/llvm/llvm-project/commit/02aacc4cef65387161a91399561ea7eaf2b27e8d.diff

LOG: Reland: [OpenMP][clang] 6.0: num_threads strict (part 1: host runtime) (#147532)

OpenMP 6.0 12.1.2 specifies the behavior of the strict modifier for the
num_threads clause on parallel directives, along with the message and
severity clauses. This commit implements necessary host runtime changes.

Reland https://github.com/llvm/llvm-project/pull/146403. After manual
testing on a gfx90a machine, I could not reproduce the failing test,
which makes it even more likely that the test has just been flaky. (Or
at least that it's not an issue related to this patch.)

Added: 
    

Modified: 
    openmp/runtime/src/kmp_runtime.cpp

Removed: 
    


################################################################################
diff  --git a/openmp/runtime/src/kmp_runtime.cpp b/openmp/runtime/src/kmp_runtime.cpp
index 417eceb8ebecc..6afea9b994de4 100644
--- a/openmp/runtime/src/kmp_runtime.cpp
+++ b/openmp/runtime/src/kmp_runtime.cpp
@@ -1214,6 +1214,12 @@ void __kmp_serialized_parallel(ident_t *loc, kmp_int32 global_tid) {
   // Reset for next parallel region
   this_thr->th.th_set_proc_bind = proc_bind_default;
 
+  // OpenMP 6.0 12.1.2 requires the num_threads 'strict' modifier to also have
+  // effect when parallel execution is disabled by a corresponding if clause
+  // attached to the parallel directive.
+  if (this_thr->th.th_nt_strict && this_thr->th.th_set_nproc > 1)
+    __kmpc_error(this_thr->th.th_nt_loc, this_thr->th.th_nt_sev,
+                 this_thr->th.th_nt_msg);
   // Reset num_threads for next parallel region
   this_thr->th.th_set_nproc = 0;
 


        


More information about the Openmp-commits mailing list