MDRangePolicy#
Header File: <Kokkos_Core.hpp>
Usage#
Kokkos::MDRangePolicy<>(begin, end)
Kokkos::MDRangePolicy<>(Space, begin, end)
Kokkos::MDRangePolicy<ARGS>(begin, end, tiling)
Kokkos::MDRangePolicy<ARGS>(Space, begin, end, tiling)
MDRangePolicy defines an execution policy for a multidimensional iteration space starting at a begin tuple and going to end with an open interval. The iteration space will be tiled, and the user can optionally provide tiling sizes.
Interface#
template<class ... Args>
class Kokkos::MDRangePolicy;
Parameters#
Common Arguments for all Execution Policies#
Execution Policies generally accept compile time arguments via template parameters and runtime parameters via constructor arguments or setter functions.
Template arguments can be given in arbitrary order.
Argument |
Options |
Purpose |
|---|---|---|
ExecutionSpace |
|
Specify the Execution Space to execute the kernel in. Defaults to |
Schedule |
|
Specify scheduling policy for work items. |
IndexType |
|
Specify integer type to be used for traversing the iteration space. Defaults to |
LaunchBounds |
|
Specifies hints to to the compiler about CUDA/HIP launch bounds. |
WorkTag |
|
Specify the work tag type used to call the functor operator. Any arbitrary type defaults to |
Arguments Specific to MDRangePolicy#
template<int N, Iterate outer, Iterate inner>
class Rank;
Determines the rank of the index space as well as in which order to iterate over the tiles and how to iterate within the tiles.
outerandinnercan beKokkos::Iterate::Default,Kokkos::Iterate::Left, orKokkos::Iterate::Right.
Public Class Members#
Constructors#
-
MDRangePolicy()#
Default Constructor uninitialized policy.
-
MDRangePolicy(const Kokkos::Array<int64_t, rank> &begin, const Kokkos::Array<int64_t, rank> &end)#
Provide a start and end index.
-
MDRangePolicy(const Kokkos::Array<int64_t, rank> &begin, const Kokkos::Array<int64_t, rank> &end, const Kokkos::Array<int64_t, rank> &tiling)#
Provide a start and end index as well as the tiling dimensions.
Examples#
MDRangePolicy<Rank<3>> policy_1({0,0,0},{N0,N1,N2});
MDRangePolicy<Cuda,Rank<3,Iterate::Right,Iterate::Left>> policy_2({5,5,5},{N0-5,N1-5,N2-5},{T0,T1,T2});