alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
DomainSpec.hpp
Go to the documentation of this file.
1/* Copyright 2024 René Widera
2 * SPDX-License-Identifier: MPL-2.0
3 */
4
5#pragma once
6
8
9namespace alpaka::onAcc
10{
11 template<typename T_WorkGroup, typename T_IdxRange>
13 {
14 constexpr DomainSpec(T_WorkGroup const threadGroup, T_IdxRange const idxRange)
15 : m_threadGroup{threadGroup}
16 , m_idxRange{idxRange}
17 {
18 }
19
20 private:
21 friend internal::MakeIter;
22
23 constexpr auto getIdxRange(auto const& acc) const
24 {
25 alpaka::unused(acc);
26 return m_idxRange;
27 }
28
29 constexpr auto getIdxRange(auto const& acc) const
30 requires(requires { std::declval<T_IdxRange>().getIdxRange(acc); })
31 {
32 return m_idxRange.getIdxRange(acc);
33 }
34
35 constexpr auto getThreadSpace(auto const& acc) const
36 {
37 alpaka::unused(acc);
38 return m_threadGroup;
39 }
40
41 constexpr auto getThreadSpace(auto const& acc) const
42 requires(requires { std::declval<T_WorkGroup>().getThreadSpace(acc); })
43 {
44 return m_threadGroup.getThreadSpace(acc);
45 }
46
47 T_WorkGroup m_threadGroup;
48 T_IdxRange m_idxRange;
49 };
50} // namespace alpaka::onAcc
functionality which is usable on the accelerator compute device from within a kernel.
Definition executor.hpp:38
constexpr auto getThreadSpace(auto const &acc) const
constexpr auto getIdxRange(auto const &acc) const
constexpr auto getThreadSpace(auto const &acc) const
constexpr auto getIdxRange(auto const &acc) const
constexpr DomainSpec(T_WorkGroup const threadGroup, T_IdxRange const idxRange)