[clang] [flang] [llvm] [openmp] [OpenMP][Offload] Add offload runtime support for dyn_groupprivate clause (PR #152831)
Alex Duran via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 11 04:55:02 PST 2025
================
@@ -515,8 +524,60 @@ Error GenericKernelTy::launch(GenericDeviceTy &GenericDevice, void **ArgPtrs,
llvm::SmallVector<void *, 16> Args;
llvm::SmallVector<void *, 16> Ptrs;
+ uint32_t NumThreads[3] = {KernelArgs.ThreadLimit[0],
+ KernelArgs.ThreadLimit[1],
+ KernelArgs.ThreadLimit[2]};
+ uint32_t NumBlocks[3] = {KernelArgs.NumTeams[0], KernelArgs.NumTeams[1],
+ KernelArgs.NumTeams[2]};
+ if (!isBareMode()) {
+ NumThreads[0] = getNumThreads(GenericDevice, NumThreads);
+ NumBlocks[0] = getNumBlocks(GenericDevice, NumBlocks, KernelArgs.Tripcount,
+ NumThreads[0], KernelArgs.ThreadLimit[0] > 0);
+ }
+
+ uint32_t MaxBlockMemSize = GenericDevice.getMaxBlockSharedMemSize();
+ uint32_t DynBlockMemSize = KernelArgs.DynCGroupMem;
+ uint32_t TotalBlockMemSize = StaticBlockMemSize + DynBlockMemSize;
+ if (StaticBlockMemSize > MaxBlockMemSize)
+ return Plugin::error(ErrorCode::INVALID_ARGUMENT,
+ "Static block memory size exceeds maximum");
+ else if (static_cast<DynCGroupMemFallbackType>(
+ KernelArgs.Flags.DynCGroupMemFallback) ==
+ DynCGroupMemFallbackType::Abort &&
+ TotalBlockMemSize > MaxBlockMemSize)
+ return Plugin::error(
+ ErrorCode::INVALID_ARGUMENT,
+ "Static and dynamic block memory size exceeds maximum");
+
+ void *DynBlockMemFbPtr = nullptr;
+ uint32_t DynBlockMemLaunchSize = DynBlockMemSize;
+
+ DynCGroupMemFallbackType DynBlockMemFb = DynCGroupMemFallbackType::None;
+ if (DynBlockMemSize && (!GenericDevice.hasNativeBlockSharedMem() ||
----------------
adurang wrote:
What if generally speaking Total < Max, but at this particular point in time it cannot be fulfilled because it's used for something else (e.g., other kernels, reduction buffers, ...)? It seems to me like this condition is something that needs to done at the specific level.
https://github.com/llvm/llvm-project/pull/152831
More information about the llvm-commits
mailing list