From ab9f3f5d25dc14a9dcffa48389cd1a321d598578 Mon Sep 17 00:00:00 2001 From: Johannes Doerfert Date: Wed, 3 Nov 2021 10:26:34 -0500 Subject: [PATCH] [OpenMP] Introduce the keepAlive function into the old device RT Reviewed By: ye-luo Differential Revision: https://reviews.llvm.org/D113110 --- openmp/libomptarget/deviceRTLs/common/src/support.cu | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/openmp/libomptarget/deviceRTLs/common/src/support.cu b/openmp/libomptarget/deviceRTLs/common/src/support.cu index 6dd5913..b3bf550 100644 --- a/openmp/libomptarget/deviceRTLs/common/src/support.cu +++ b/openmp/libomptarget/deviceRTLs/common/src/support.cu @@ -226,4 +226,14 @@ void __kmp_invoke_microtask(kmp_int32 global_tid, kmp_int32 bound_tid, void *fn, } } +namespace _OMP { +/// Helper to keep code alive without introducing a performance penalty. +__attribute__((used, weak, optnone)) void keepAlive() { + __kmpc_get_hardware_thread_id_in_block(); + __kmpc_get_hardware_num_threads_in_block(); + __kmpc_barrier_simple_spmd(nullptr, 0); + __kmpc_barrier_simple_generic(nullptr, 0); +} +} // namespace _OMP + #pragma omp end declare target -- 2.7.4