forked from OSchip/llvm-project
[OpenMP] Fix data-race in new device RTL
This patch fixes a data-race observed when using the new device runtime library. The Internal control variable for the parallel level is read in the `__kmpc_parallel_51` function while it could potentially be written by other threads. This causes data corruption and will cause nondetermistic behaviour in the runtime. This patch fixes this by adding an explicit synchronization before the region starts. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D110366
This commit is contained in:
parent
2875d3d484
commit
d83ca624a1
|
@ -93,6 +93,7 @@ void __kmpc_parallel_51(IdentTy *ident, int32_t, int32_t if_expr,
|
|||
|
||||
uint32_t NumThreads = determineNumberOfThreads(num_threads);
|
||||
if (mapping::isSPMDMode()) {
|
||||
synchronize::threads();
|
||||
{
|
||||
state::ValueRAII ParallelTeamSizeRAII(state::ParallelTeamSize, NumThreads,
|
||||
1u, TId == 0);
|
||||
|
|
Loading…
Reference in New Issue