Skip to content

Commit

Permalink
implement WeiqunZhang's suggestion to fix race conditions
Browse files Browse the repository at this point in the history
  • Loading branch information
lucafedeli88 committed Jun 2, 2024
1 parent ce12a95 commit 69d1292
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions Source/Particles/ParticleBoundaryBuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -393,17 +393,22 @@ void ParticleBoundaryBuffer::gatherParticlesFromDomainBoundaries (MultiParticleC
auto& species_buffer = buffer[i];
for (int lev = 0; lev < pc.numLevels(); ++lev)
{
for (PIter pti(pc, lev); pti.isValid(); ++pti) {
species_buffer.DefineAndReturnParticleTile(
lev, pti.index(), pti.LocalTileIndex());
}

const auto& plevel = pc.GetParticles(lev);
#ifdef AMREX_USE_OMP
#pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
#endif
for(PIter pti(pc, lev); pti.isValid(); ++pti)
{
auto index = std::make_pair(pti.index(), pti.LocalTileIndex());
if(plevel.find(index) == plevel.end()) { continue; }

auto& ptile_buffer = species_buffer.DefineAndReturnParticleTile(
lev, pti.index(), pti.LocalTileIndex());
auto& ptile_buffer =
species_buffer.ParticlesAt(lev, pti.index(), pti.LocalTileIndex());

const auto& ptile = plevel.at(index);
auto np = ptile.numParticles();
if (np == 0) { continue; }
Expand Down

0 comments on commit 69d1292

Please sign in to comment.