aboutsummaryrefslogtreecommitdiff
path: root/libomptarget/src/interface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libomptarget/src/interface.cpp')
-rw-r--r--libomptarget/src/interface.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/libomptarget/src/interface.cpp b/libomptarget/src/interface.cpp
index d055324..2a98b5c 100644
--- a/libomptarget/src/interface.cpp
+++ b/libomptarget/src/interface.cpp
@@ -304,8 +304,6 @@ EXTERN int __tgt_target_teams_nowait(int64_t device_id, void *host_ptr,
arg_sizes, arg_types, team_num, thread_limit);
}
-
-// The trip count mechanism will be revised - this scheme is not thread-safe.
EXTERN void __kmpc_push_target_tripcount(int64_t device_id,
uint64_t loop_tripcount) {
if (device_id == OFFLOAD_DEVICE_DEFAULT) {
@@ -320,5 +318,8 @@ EXTERN void __kmpc_push_target_tripcount(int64_t device_id,
DP("__kmpc_push_target_tripcount(%" PRId64 ", %" PRIu64 ")\n", device_id,
loop_tripcount);
- Devices[device_id].loopTripCnt = loop_tripcount;
+ TblMapMtx.lock();
+ Devices[device_id].loopTripCnt.emplace(__kmpc_global_thread_num(NULL),
+ loop_tripcount);
+ TblMapMtx.unlock();
}