[Openmp-commits] [llvm] [openmp] [libomp] Set `KMP_USE_YIELD=0` when `OMP_WAIT_POLICY=active` if it's not specified explicitly (PR #199628)

Ryotaro Kasuga via Openmp-commits openmp-commits at lists.llvm.org
Tue May 26 01:40:38 PDT 2026


https://github.com/kasuga-fj updated https://github.com/llvm/llvm-project/pull/199628

>From aa50e06ce9fd13e32e79009af9661e65f290db33 Mon Sep 17 00:00:00 2001
From: Ryotaro Kasuga <kasuga.ryotaro at fujitsu.com>
Date: Tue, 26 May 2026 08:39:43 +0000
Subject: [PATCH] [libomp] Set `KMP_USE_YIELD=0` when `OMP_WAIT_POLICY=active`

---
 nvim.log                            | 0
 openmp/runtime/src/kmp_settings.cpp | 9 ++++++++-
 2 files changed, 8 insertions(+), 1 deletion(-)
 create mode 100644 nvim.log

diff --git a/nvim.log b/nvim.log
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/openmp/runtime/src/kmp_settings.cpp b/openmp/runtime/src/kmp_settings.cpp
index 66ef6f8097dce..253043652678e 100644
--- a/openmp/runtime/src/kmp_settings.cpp
+++ b/openmp/runtime/src/kmp_settings.cpp
@@ -807,6 +807,7 @@ static void __kmp_stg_print_inherit_fp_control(kmp_str_buf_t *buffer,
 
 // Used for OMP_WAIT_POLICY
 static char const *blocktime_str = NULL;
+static char const *use_yield_str = NULL;
 
 // -----------------------------------------------------------------------------
 // KMP_LIBRARY, OMP_WAIT_POLICY
@@ -829,6 +830,10 @@ static void __kmp_stg_parse_wait_policy(char const *name, char const *value,
         // KMP_BLOCKTIME not specified, so set default to "infinite".
         __kmp_dflt_blocktime = KMP_MAX_BLOCKTIME;
       }
+      if (use_yield_str == NULL) {
+        // KMP_USE_YIELD not specified, so set default to 0.
+        __kmp_use_yield = 0;
+      }
     } else if (__kmp_str_match("PASSIVE", 1, value)) {
       __kmp_library = library_throughput;
       __kmp_wpolicy_passive = true; /* allow sleep while active tasking */
@@ -6147,8 +6152,10 @@ void __kmp_env_initialize(char const *string) {
     }
   }
 
-  // We need to know if blocktime was set when processing OMP_WAIT_POLICY
+  // We need to know if blocktime and use_yield were set when processing
+  // OMP_WAIT_POLICY
   blocktime_str = __kmp_env_blk_var(&block, "KMP_BLOCKTIME");
+  use_yield_str = __kmp_env_blk_var(&block, "KMP_USE_YIELD");
 
   // Special case. If we parse environment, not a string, process KMP_WARNINGS
   // first.



More information about the Openmp-commits mailing list