alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
warp.hpp
Go to the documentation of this file.
1/* Copyright 2025 Mehmet Yusufoglu, René Widera
2 * SPDX-License-Identifier: MPL-2.0
3 *
4 * Provides warp trait fallbacks for scalar host execution.
5 */
6
7#pragma once
8
12
13#include <cstdint>
14
16{
17 template<alpaka::onAcc::concepts::Acc T_Acc>
18 struct Activemask::Op<T_Acc, api::Host>
19 {
20 constexpr auto operator()(T_Acc const& acc, api::Host) const
21 {
22 alpaka::unused(acc);
23 return uint32_t{1u};
24 }
25 };
26
27 template<alpaka::onAcc::concepts::Acc T_Acc>
28 struct GetLaneIdx::Op<T_Acc, api::Host>
29 {
30 constexpr auto operator()(T_Acc const& acc, api::Host) const
31 {
32 alpaka::unused(acc);
33 return uint32_t{0u};
34 }
35 };
36
37 template<alpaka::onAcc::concepts::Acc T_Acc>
38 struct GetWarpIdx::Op<T_Acc, api::Host>
39 {
40 constexpr auto operator()(T_Acc const& acc, api::Host) const
41 {
42 alpaka::unused(acc);
43 return uint32_t{0u};
44 }
45 };
46
47 template<alpaka::onAcc::concepts::Acc T_Acc>
48 struct All::Op<T_Acc, api::Host>
49 {
50 constexpr bool operator()(T_Acc const& acc, api::Host, int32_t predicate) const
51 {
52 alpaka::unused(acc);
53 return predicate != 0;
54 }
55 };
56
57 template<alpaka::onAcc::concepts::Acc T_Acc>
58 struct Any::Op<T_Acc, api::Host>
59 {
60 constexpr bool operator()(T_Acc const& acc, api::Host, int32_t predicate) const
61 {
62 alpaka::unused(acc);
63 return predicate != 0;
64 }
65 };
66
67 template<alpaka::onAcc::concepts::Acc T_Acc>
68 struct Ballot::Op<T_Acc, api::Host>
69 {
70 constexpr auto operator()(T_Acc const& acc, api::Host, int32_t predicate) const
71 {
72 alpaka::unused(acc);
73 return predicate != 0 ? 1u : 0u;
74 }
75 };
76
77 template<alpaka::onAcc::concepts::Acc T_Acc, typename T>
78 struct Shfl::Op<T_Acc, api::Host, T>
79 {
80 constexpr T operator()(T_Acc const& acc, api::Host, T const& value, uint32_t srcLane, uint32_t width) const
81 {
82 alpaka::unused(acc, srcLane, width);
83 return value;
84 }
85 };
86
87 template<alpaka::onAcc::concepts::Acc T_Acc, typename T>
88 struct ShflDown::Op<T_Acc, api::Host, T>
89 {
90 constexpr T operator()(T_Acc const& acc, api::Host, T const& value, uint32_t delta, uint32_t width) const
91 {
92 alpaka::unused(acc, delta, width);
93 return value;
94 }
95 };
96
97 template<alpaka::onAcc::concepts::Acc T_Acc, typename T>
98 struct ShflUp::Op<T_Acc, api::Host, T>
99 {
100 constexpr T operator()(T_Acc const& acc, api::Host, T const& value, uint32_t delta, uint32_t width) const
101 {
102 alpaka::unused(acc, delta, width);
103 return value;
104 }
105 };
106
107 template<alpaka::onAcc::concepts::Acc T_Acc, typename T>
108 struct ShflXor::Op<T_Acc, api::Host, T>
109 {
110 constexpr T operator()(T_Acc const& acc, api::Host, T const& value, uint32_t laneMask, uint32_t width) const
111 {
112 alpaka::unused(acc, laneMask, width);
113 return value;
114 }
115 };
116} // namespace alpaka::onAcc::warp::internal
constexpr auto operator()(T_Acc const &acc, api::Host) const
Definition warp.hpp:20
constexpr bool operator()(T_Acc const &acc, api::Host, int32_t predicate) const
Definition warp.hpp:50
constexpr bool operator()(T_Acc const &acc, api::Host, int32_t predicate) const
Definition warp.hpp:60
constexpr auto operator()(T_Acc const &acc, api::Host, int32_t predicate) const
Definition warp.hpp:70
constexpr auto operator()(T_Acc const &acc, api::Host) const
Definition warp.hpp:30
constexpr auto operator()(T_Acc const &acc, api::Host) const
Definition warp.hpp:40
constexpr T operator()(T_Acc const &acc, api::Host, T const &value, uint32_t delta, uint32_t width) const
Definition warp.hpp:90
constexpr T operator()(T_Acc const &acc, api::Host, T const &value, uint32_t delta, uint32_t width) const
Definition warp.hpp:100
constexpr T operator()(T_Acc const &acc, api::Host, T const &value, uint32_t laneMask, uint32_t width) const
Definition warp.hpp:110
constexpr T operator()(T_Acc const &acc, api::Host, T const &value, uint32_t srcLane, uint32_t width) const
Definition warp.hpp:80