This repository has been archived by the owner on Apr 15, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Kokkos::MDRangePolicy
Damien L-G edited this page Feb 7, 2022
·
7 revisions
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 multi dimensional 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.
template<class ... Args>
class Kokkos::MDRangePolicy;
- 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 |
Serial , OpenMP , Threads , Cuda , HIP , SYCL , HPX
|
Specify the Execution Space to execute the kernel in. Defaults to Kokkos::DefaultExecutionSpace . |
Schedule |
Schedule<Dynamic> , Schedule<Static>
|
Specify scheduling policy for work items. Dynamic scheduling is implemented through a work stealing queue. Default is machine and backend specific. |
IndexType | IndexType<int> |
Specify integer type to be used for traversing the iteration space. Defaults to int64_t . |
LaunchBounds | LaunchBounds<MaxThreads, MinBlocks> |
Specifies hints to to the compiler about CUDA/HIP launch bounds. |
WorkTag | SomeClass |
Specify the work tag type used to call the functor operator. Any arbitrary type defaults to void . |
-
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.
template<int N, Iterate outer, Iterate inner> class Rank;
outer
andinner
can beKokkos::Iterate::Default
,Kokkos::Iterate::Left
, orKokkos::Iterate::Right
.
-
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.
-
template<class OT, class IT, class TT> MDRangePolicy(const std::initializer_list<OT>& begin, const std::initializer_list<IT>& end)
Provide a start and end index. The length of the lists must match the rank of the policy.
-
template<class OT, class IT, class TT> MDRangePolicy(const std::initializer_list<OT>& begin, const std::initializer_list<IT>& end, std::initializer_list<TT>& tiling)
Provide a start and end index as well as the tiling dimensions. The length of the lists must match the rank of the policy.
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});
Home:
- Introduction
- Machine Model
- Programming Model
- Compiling
- Initialization
- View
- Parallel Dispatch
- Hierarchical Parallelism
- Custom Reductions
- Atomic Operations
- Subviews
- Interoperability
- Kokkos and Virtual Functions
- Initialization and Finalization
- View
- Data Parallelism
- Execution Policies
- Spaces
- Task Parallelism
- Utilities
- STL Compatibility
- Numerics
- Detection Idiom