aboutsummaryrefslogtreecommitdiff
path: root/Source/BoundaryConditions/PML.cpp
diff options
context:
space:
mode:
authorGravatar MaxThevenet <mthevenet@lbl.gov> 2019-09-12 17:12:24 -0700
committerGravatar GitHub <noreply@github.com> 2019-09-12 17:12:24 -0700
commit80a22a69820d24a712d7ceed8928c4f368bd782b (patch)
tree7c863b3b89579da757478f827dd59b83e6475745 /Source/BoundaryConditions/PML.cpp
parent71cb2243531bd14cf48348e5d9c6f38b9df8cd0b (diff)
parent569c9a98c3cbaffe418ce094c74e760e9ba216d6 (diff)
downloadWarpX-80a22a69820d24a712d7ceed8928c4f368bd782b.tar.gz
WarpX-80a22a69820d24a712d7ceed8928c4f368bd782b.tar.zst
WarpX-80a22a69820d24a712d7ceed8928c4f368bd782b.zip
Merge pull request #348 from atmyers/pml_exchange_gpu
Pml exchange gpu
Diffstat (limited to 'Source/BoundaryConditions/PML.cpp')
-rw-r--r--Source/BoundaryConditions/PML.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/Source/BoundaryConditions/PML.cpp b/Source/BoundaryConditions/PML.cpp
index 8f8a2608e..edf8c8358 100644
--- a/Source/BoundaryConditions/PML.cpp
+++ b/Source/BoundaryConditions/PML.cpp
@@ -806,16 +806,22 @@ PML::Exchange (MultiFab& pml, MultiFab& reg, const Geometry& geom,
MultiFab::Copy(tmpregmf, reg, 0, 0, 1, ngr);
tmpregmf.ParallelCopy(totpmlmf, 0, 0, 1, IntVect(0), ngr, period);
#ifdef _OPENMP
-#pragma omp parallel
+#pragma omp parallel if (Gpu::notInLaunchRegion())
#endif
for (MFIter mfi(reg); mfi.isValid(); ++mfi)
{
const FArrayBox& src = tmpregmf[mfi];
FArrayBox& dst = reg[mfi];
+ const auto srcarr = src.array();
+ auto dstarr = dst.array();
const BoxList& bl = amrex::boxDiff(dst.box(), mfi.validbox());
// boxDiff avoids the outermost valid cell
for (const Box& bx : bl) {
- dst.copy(src, bx, 0, bx, 0, 1);
+ amrex::ParallelFor(bx,
+ [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
+ {
+ dstarr(i,j,k,0) = srcarr(i,j,k,0);
+ });
}
}
}