1#ifndef AMREX_MF_PARALLEL_FOR_C_H_
2#define AMREX_MF_PARALLEL_FOR_C_H_
3#include <AMReX_Config.H>
11namespace amrex::detail {
13template <FabArrayType MF,
typename F>
14void ParallelFor_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 <FabArrayType MF,
typename F>
36void ParallelFor_doit (MF
const& mf,
IntVect const& nghost,
int ncomp,
IntVect const& ts,
bool dynamic,
F const& f)
41 for (MFIter mfi(mf,MFItInfo().EnableTiling(ts).SetDynamic(dynamic)); mfi.isValid(); ++mfi) {
42 Box const& bx = mfi.growntilebox(nghost);
43 int const lidx = mfi.LocalIndex();
46 for (
int n = 0; n < ncomp; ++n) {
47 for (
int k = lo.z; k <= hi.z; ++k) {
48 for (
int j = lo.y; j <= hi.y; ++j) {
50 for (
int i = lo.x; i <= hi.x; ++i) {
59template <FabArrayType MF,
typename F>
62 const Dim3
s = stride.dim3(1);
67 Box const& bx = mfi.tilebox();
68 int const lidx = mfi.LocalIndex();
71 for (
int k = lo.z; k <= hi.z; k +=
s.z) {
72 for (
int j = lo.y; j <= hi.y; j +=
s.y) {
73 for (
int i = lo.x; i <= hi.x; i +=
s.x) {
81template <FabArrayType MF,
typename F>
82void ParallelForRedBlack_doit (MF
const& mf,
int redblack,
F const& f)
88 Box const& bx = mfi.tilebox();
89 int const lidx = mfi.LocalIndex();
92 for (
int k = lo.z; k <= hi.z; ++k) {
93 for (
int j = lo.y; j <= hi.y; ++j) {
94 for (
int i = lo.x + ((lo.x+j+k+redblack) & 1); i <= hi.x; i += 2) {
#define AMREX_PRAGMA_SIMD
Definition AMReX_Extension.H:85
Array4< int const > offset
Definition AMReX_HypreMLABecLap.cpp:1139
GpuArray< MultiArray4< Real const >, 3 > s
Definition AMReX_MLEBNodeFDLaplacian.cpp:214
static IntVect mfiter_tile_size
Default tilesize in MFIter.
Definition AMReX_FabArrayBase.H:306
__host__ __device__ Dim3 ubound(Array4< T > const &a) noexcept
Return the inclusive upper bounds of an Array4 in Dim3 form.
Definition AMReX_Array4.H:1365
__host__ __device__ Dim3 lbound(Array4< T > const &a) noexcept
Return the inclusive lower bounds of an Array4 in Dim3 form.
Definition AMReX_Array4.H:1351
BoxND< 3 > Box
Box is an alias for amrex::BoxND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:35
IntVectND< 3 > IntVect
IntVect is an alias for amrex::IntVectND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:38