1#ifndef AMREX_MF_PARALLEL_FOR_C_H_
2#define AMREX_MF_PARALLEL_FOR_C_H_
3#include <AMReX_Config.H>
10namespace amrex::detail {
12template <
typename MF,
typename F>
13std::enable_if_t<IsFabArray<MF>::value>
14ParallelFor_doit (MF
const& mf, IntVect
const& nghost, IntVect
const& ts,
bool dynamic, F
const& f)
19 for (MFIter mfi(mf,MFItInfo().EnableTiling(ts).SetDynamic(dynamic)); mfi.isValid(); ++mfi) {
20 Box const& bx = mfi.growntilebox(nghost);
21 int const lidx = mfi.LocalIndex();
24 for (
int k = lo.z; k <= hi.z; ++k) {
25 for (
int j = lo.y; j <= hi.y; ++j) {
27 for (
int i = lo.x; i <= hi.x; ++i) {
35template <
typename MF,
typename F>
36std::enable_if_t<IsFabArray<MF>::value>
37ParallelFor_doit (MF
const& mf, IntVect
const& nghost,
int ncomp, IntVect
const& ts,
bool dynamic, F
const& f)
42 for (MFIter mfi(mf,MFItInfo().EnableTiling(ts).SetDynamic(dynamic)); mfi.isValid(); ++mfi) {
43 Box const& bx = mfi.growntilebox(nghost);
44 int const lidx = mfi.LocalIndex();
47 for (
int n = 0; n < ncomp; ++n) {
48 for (
int k = lo.z; k <= hi.z; ++k) {
49 for (
int j = lo.y; j <= hi.y; ++j) {
51 for (
int i = lo.x; i <= hi.x; ++i) {
#define AMREX_PRAGMA_SIMD
Definition AMReX_Extension.H:80
__host__ __device__ Dim3 ubound(Array4< T > const &a) noexcept
Definition AMReX_Array4.H:319
BoxND< 3 > Box
Box is an alias for amrex::BoxND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:27
__host__ __device__ Dim3 lbound(Array4< T > const &a) noexcept
Definition AMReX_Array4.H:312