diff options
author | 2019-09-12 17:12:24 -0700 | |
---|---|---|
committer | 2019-09-12 17:12:24 -0700 | |
commit | 80a22a69820d24a712d7ceed8928c4f368bd782b (patch) | |
tree | 7c863b3b89579da757478f827dd59b83e6475745 /Source/BoundaryConditions/PML.cpp | |
parent | 71cb2243531bd14cf48348e5d9c6f38b9df8cd0b (diff) | |
parent | 569c9a98c3cbaffe418ce094c74e760e9ba216d6 (diff) | |
download | WarpX-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.cpp | 10 |
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); + }); } } } |