From 597d2f7662c31cae4c8a54cc27e2ea12833380ea Mon Sep 17 00:00:00 2001 From: Tim Gymnich Date: Fri, 14 Jun 2024 16:35:23 +0200 Subject: [OpenMP] Add Environment Variable to disable Reuse of Blocks for High Loop Trip Counts (#89239) Sometimes it might be beneficial to spawn more thread blocks instead of reusing existing for multiple loop iterations. **Alternatives considered:** Make `DefaultNumBlocks` settable via an environment variable. --------- Co-authored-by: Joseph Huber --- offload/plugins-nextgen/common/src/PluginInterface.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'offload/plugins-nextgen/common/src/PluginInterface.cpp') diff --git a/offload/plugins-nextgen/common/src/PluginInterface.cpp b/offload/plugins-nextgen/common/src/PluginInterface.cpp index 94f9d4670b67..118265973f32 100644 --- a/offload/plugins-nextgen/common/src/PluginInterface.cpp +++ b/offload/plugins-nextgen/common/src/PluginInterface.cpp @@ -701,8 +701,11 @@ uint64_t GenericKernelTy::getNumBlocks(GenericDeviceTy &GenericDevice, TripCountNumBlocks = LoopTripCount; } } + + uint32_t PreferredNumBlocks = TripCountNumBlocks; // If the loops are long running we rather reuse blocks than spawn too many. - uint32_t PreferredNumBlocks = std::min(TripCountNumBlocks, DefaultNumBlocks); + if (GenericDevice.getReuseBlocksForHighTripCount()) + PreferredNumBlocks = std::min(TripCountNumBlocks, DefaultNumBlocks); return std::min(PreferredNumBlocks, GenericDevice.getBlockLimit()); } -- cgit v1.2.3