YAKL
YAKL_parallel_for_fortran_unused_doc_only.h
Go to the documentation of this file.
1 
2 #pragma once
3 // IMPORTANT: THIS FILE IS FOR DOCUMENTATION ONLY AND IS NOT USED!
4 
5 namespace yakl {
6  namespace fortran {
7 
8  // The functions are declared below so that I can document them in doxygen inside the appropriate namespace.
9 
34  template <class F, int N, bool simple, int VecLen=YAKL_DEFAULT_VECTOR_LEN , bool B4B = false>
35  inline void parallel_for( char const * str , Bounds<N,simple> const &bounds , F const &f ,
36  LaunchConfig<VecLen,B4B> config = LaunchConfig<>() );
37 
43  template <class F, int N, bool simple, int VecLen=YAKL_DEFAULT_VECTOR_LEN , bool B4B = false>
44  inline void parallel_for( Bounds<N,simple> const &bounds , F const &f ,
45  LaunchConfig<VecLen,B4B> config = LaunchConfig<>() );
46 
96  template <class F, int N, bool simple, int VecLen=YAKL_DEFAULT_VECTOR_LEN, bool B4B = false>
97  inline void parallel_outer( char const * str , Bounds<N,simple> const &bounds , F const &f ,
98  LaunchConfig<VecLen,B4B> config = LaunchConfig<>() );
99 
105  template <class F, int N, bool simple, int VecLen=YAKL_DEFAULT_VECTOR_LEN, bool B4B = false>
106  inline void parallel_outer( Bounds<N,simple> const &bounds , F const &f ,
107  LaunchConfig<VecLen,B4B> config = LaunchConfig<>() );
108 
132  template <class F, int N, bool simple>
133  YAKL_INLINE void parallel_inner( Bounds<N,simple> const &bounds , F const &f , InnerHandler handler );
134 
145  template <class F>
146  YAKL_INLINE void single_inner( F const &f , InnerHandler handler );
147 
148  }
149 }
150 
yakl::InnerHandler
struct yakl::InnerHandlerEmpty InnerHandler
This class is necessary for coordination of two-level parallelism.
yakl::fortran::parallel_outer
void parallel_outer(char const *str, Bounds< N, simple > const &bounds, F const &f, LaunchConfig< VecLen, B4B > config=LaunchConfig<>())
[ASYNCHRONOUS] Launch the passed functor in parallel in the coarsest-level parallelism on the device
yakl::fortran::parallel_for
void parallel_for(char const *str, Bounds< N, simple > const &bounds, F const &f, LaunchConfig< VecLen, B4B > config=LaunchConfig<>())
[ASYNCHRONOUS] Launch the passed functor in parallel.
YAKL_INLINE
#define YAKL_INLINE
Used to decorate functions called from kernels (parallel_for and parallel_outer) or from CPU function...
Definition: YAKL_defines.h:140
yakl::fortran::single_inner
YAKL_INLINE void single_inner(F const &f, InnerHandler handler)
Launch the passed functor to only use one of the inner threads (still parallel over outer threads).
yakl
yakl::fortran::parallel_inner
YAKL_INLINE void parallel_inner(Bounds< N, simple > const &bounds, F const &f, InnerHandler handler)
Launch the passed functor in parallel in the finenst-level parallelism on the device.