Block-Structured AMR Software Framework
amrex::loop_detail Namespace Reference

Functions

template<typename F , std::size_t... Ns, class... Args>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE auto call_f_intvect_inner (std::index_sequence< Ns... >, F const &f, IntVectND< 1 > iv, Args...args) noexcept -> decltype(f(0, 0, 0, args...))
 
template<typename F , std::size_t... Ns, class... Args>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE auto call_f_intvect_inner (std::index_sequence< Ns... >, F const &f, IntVectND< 2 > iv, Args...args) noexcept -> decltype(f(0, 0, 0, args...))
 
template<typename F , int dim, std::size_t... Ns, class... Args>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE auto call_f_intvect_inner (std::index_sequence< Ns... >, F const &f, IntVectND< dim > iv, Args...args) noexcept -> decltype(f(iv, args...))
 
template<typename F , int dim>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE auto call_f_intvect (F const &f, IntVectND< dim > iv) noexcept -> decltype(call_f_intvect_inner(std::make_index_sequence< dim >(), f, iv))
 
template<typename F , int dim>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE auto call_f_intvect_ncomp (F const &f, IntVectND< dim > iv, int n) noexcept -> decltype(call_f_intvect_inner(std::make_index_sequence< dim >(), f, iv, 0))
 
template<typename F , std::size_t... Ns, class... Args>
AMREX_FORCE_INLINE auto call_f_intvect_inner_cpu (std::index_sequence< Ns... >, F const &f, IntVectND< 1 > iv, Args...args) noexcept -> decltype(f(0, 0, 0, args...))
 
template<typename F , std::size_t... Ns, class... Args>
AMREX_FORCE_INLINE auto call_f_intvect_inner_cpu (std::index_sequence< Ns... >, F const &f, IntVectND< 2 > iv, Args...args) noexcept -> decltype(f(0, 0, 0, args...))
 
template<typename F , int dim, std::size_t... Ns, class... Args>
AMREX_FORCE_INLINE auto call_f_intvect_inner_cpu (std::index_sequence< Ns... >, F const &f, IntVectND< dim > iv, Args...args) noexcept -> decltype(f(iv, args...))
 
template<typename F , int dim>
AMREX_FORCE_INLINE auto call_f_intvect_cpu (F const &f, IntVectND< dim > iv) noexcept -> decltype(call_f_intvect_inner_cpu(std::make_index_sequence< dim >(), f, iv))
 
template<typename F , int dim>
AMREX_FORCE_INLINE auto call_f_intvect_ncomp_cpu (F const &f, IntVectND< dim > iv, int n) noexcept -> decltype(call_f_intvect_inner_cpu(std::make_index_sequence< dim >(), f, iv, 0))
 
template<int idim, typename L , int dim>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void Loop_impND (L const &f, IntVectND< dim > const lo, IntVectND< dim > const hi, IntVectND< dim > iv) noexcept
 
template<int idim, typename L , int dim>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void Loop_impND (L const &f, IntVectND< dim > const lo, IntVectND< dim > const hi, IntVectND< dim > iv, int n) noexcept
 
template<int idim, typename L , int dim>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void LoopConcurrent_impND (L const &f, IntVectND< dim > const lo, IntVectND< dim > const hi, IntVectND< dim > iv) noexcept
 
template<int idim, typename L , int dim>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void LoopConcurrent_impND (L const &f, IntVectND< dim > const lo, IntVectND< dim > const hi, IntVectND< dim > iv, int n) noexcept
 
template<int idim, typename L , int dim>
AMREX_FORCE_INLINE void LoopOnCpu_impND (L const &f, IntVectND< dim > const lo, IntVectND< dim > const hi, IntVectND< dim > iv) noexcept
 
template<int idim, typename L , int dim>
AMREX_FORCE_INLINE void LoopOnCpu_impND (L const &f, IntVectND< dim > const lo, IntVectND< dim > const hi, IntVectND< dim > iv, int n) noexcept
 
template<int idim, typename L , int dim>
AMREX_FORCE_INLINE void LoopConcurrentOnCpu_impND (L const &f, IntVectND< dim > const lo, IntVectND< dim > const hi, IntVectND< dim > iv) noexcept
 
template<int idim, typename L , int dim>
AMREX_FORCE_INLINE void LoopConcurrentOnCpu_impND (L const &f, IntVectND< dim > const lo, IntVectND< dim > const hi, IntVectND< dim > iv, int n) noexcept
 

Function Documentation

◆ call_f_intvect()

template<typename F , int dim>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE auto amrex::loop_detail::call_f_intvect ( F const &  f,
IntVectND< dim >  iv 
) -> decltype(call_f_intvect_inner(std::make_index_sequence<dim>(), f, iv))
noexcept

◆ call_f_intvect_cpu()

template<typename F , int dim>
AMREX_FORCE_INLINE auto amrex::loop_detail::call_f_intvect_cpu ( F const &  f,
IntVectND< dim >  iv 
) -> decltype(call_f_intvect_inner_cpu(std::make_index_sequence<dim>(), f, iv))
noexcept

◆ call_f_intvect_inner() [1/3]

template<typename F , std::size_t... Ns, class... Args>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE auto amrex::loop_detail::call_f_intvect_inner ( std::index_sequence< Ns... >  ,
F const &  f,
IntVectND< 1 >  iv,
Args...  args 
) -> decltype(f(0, 0, 0, args...))
noexcept

◆ call_f_intvect_inner() [2/3]

template<typename F , std::size_t... Ns, class... Args>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE auto amrex::loop_detail::call_f_intvect_inner ( std::index_sequence< Ns... >  ,
F const &  f,
IntVectND< 2 >  iv,
Args...  args 
) -> decltype(f(0, 0, 0, args...))
noexcept

◆ call_f_intvect_inner() [3/3]

template<typename F , int dim, std::size_t... Ns, class... Args>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE auto amrex::loop_detail::call_f_intvect_inner ( std::index_sequence< Ns... >  ,
F const &  f,
IntVectND< dim >  iv,
Args...  args 
) -> decltype(f(iv, args...))
noexcept

◆ call_f_intvect_inner_cpu() [1/3]

template<typename F , std::size_t... Ns, class... Args>
AMREX_FORCE_INLINE auto amrex::loop_detail::call_f_intvect_inner_cpu ( std::index_sequence< Ns... >  ,
F const &  f,
IntVectND< 1 >  iv,
Args...  args 
) -> decltype(f(0, 0, 0, args...))
noexcept

◆ call_f_intvect_inner_cpu() [2/3]

template<typename F , std::size_t... Ns, class... Args>
AMREX_FORCE_INLINE auto amrex::loop_detail::call_f_intvect_inner_cpu ( std::index_sequence< Ns... >  ,
F const &  f,
IntVectND< 2 >  iv,
Args...  args 
) -> decltype(f(0, 0, 0, args...))
noexcept

◆ call_f_intvect_inner_cpu() [3/3]

template<typename F , int dim, std::size_t... Ns, class... Args>
AMREX_FORCE_INLINE auto amrex::loop_detail::call_f_intvect_inner_cpu ( std::index_sequence< Ns... >  ,
F const &  f,
IntVectND< dim >  iv,
Args...  args 
) -> decltype(f(iv, args...))
noexcept

◆ call_f_intvect_ncomp()

template<typename F , int dim>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE auto amrex::loop_detail::call_f_intvect_ncomp ( F const &  f,
IntVectND< dim >  iv,
int  n 
) -> decltype(call_f_intvect_inner(std::make_index_sequence<dim>(), f, iv, 0))
noexcept

◆ call_f_intvect_ncomp_cpu()

template<typename F , int dim>
AMREX_FORCE_INLINE auto amrex::loop_detail::call_f_intvect_ncomp_cpu ( F const &  f,
IntVectND< dim >  iv,
int  n 
) -> decltype(call_f_intvect_inner_cpu(std::make_index_sequence<dim>(), f, iv, 0))
noexcept

◆ Loop_impND() [1/2]

template<int idim, typename L , int dim>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void amrex::loop_detail::Loop_impND ( L const &  f,
IntVectND< dim > const  lo,
IntVectND< dim > const  hi,
IntVectND< dim >  iv 
)
noexcept

◆ Loop_impND() [2/2]

template<int idim, typename L , int dim>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void amrex::loop_detail::Loop_impND ( L const &  f,
IntVectND< dim > const  lo,
IntVectND< dim > const  hi,
IntVectND< dim >  iv,
int  n 
)
noexcept

◆ LoopConcurrent_impND() [1/2]

template<int idim, typename L , int dim>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void amrex::loop_detail::LoopConcurrent_impND ( L const &  f,
IntVectND< dim > const  lo,
IntVectND< dim > const  hi,
IntVectND< dim >  iv 
)
noexcept

◆ LoopConcurrent_impND() [2/2]

template<int idim, typename L , int dim>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void amrex::loop_detail::LoopConcurrent_impND ( L const &  f,
IntVectND< dim > const  lo,
IntVectND< dim > const  hi,
IntVectND< dim >  iv,
int  n 
)
noexcept

◆ LoopConcurrentOnCpu_impND() [1/2]

template<int idim, typename L , int dim>
AMREX_FORCE_INLINE void amrex::loop_detail::LoopConcurrentOnCpu_impND ( L const &  f,
IntVectND< dim > const  lo,
IntVectND< dim > const  hi,
IntVectND< dim >  iv 
)
noexcept

◆ LoopConcurrentOnCpu_impND() [2/2]

template<int idim, typename L , int dim>
AMREX_FORCE_INLINE void amrex::loop_detail::LoopConcurrentOnCpu_impND ( L const &  f,
IntVectND< dim > const  lo,
IntVectND< dim > const  hi,
IntVectND< dim >  iv,
int  n 
)
noexcept

◆ LoopOnCpu_impND() [1/2]

template<int idim, typename L , int dim>
AMREX_FORCE_INLINE void amrex::loop_detail::LoopOnCpu_impND ( L const &  f,
IntVectND< dim > const  lo,
IntVectND< dim > const  hi,
IntVectND< dim >  iv 
)
noexcept

◆ LoopOnCpu_impND() [2/2]

template<int idim, typename L , int dim>
AMREX_FORCE_INLINE void amrex::loop_detail::LoopOnCpu_impND ( L const &  f,
IntVectND< dim > const  lo,
IntVectND< dim > const  hi,
IntVectND< dim >  iv,
int  n 
)
noexcept