30 #ifndef HIPCUB_ROCPRIM_BLOCK_BLOCK_DISCONTINUITY_HPP_
31 #define HIPCUB_ROCPRIM_BLOCK_BLOCK_DISCONTINUITY_HPP_
33 #include "../../../config.hpp"
35 #include <rocprim/block/block_discontinuity.hpp>
37 BEGIN_HIPCUB_NAMESPACE
44 int ARCH = HIPCUB_ARCH
47 :
private ::rocprim::block_discontinuity<
55 BLOCK_DIM_X * BLOCK_DIM_Y * BLOCK_DIM_Z > 0,
56 "BLOCK_DIM_X * BLOCK_DIM_Y * BLOCK_DIM_Z must be greater than 0"
60 typename ::rocprim::block_discontinuity<
68 typename base_type::storage_type& temp_storage_;
71 using TempStorage =
typename base_type::storage_type;
83 template<
int ITEMS_PER_THREAD,
typename FlagT,
typename FlagOp>
85 void FlagHeads(FlagT (&head_flags)[ITEMS_PER_THREAD],
86 T (&input)[ITEMS_PER_THREAD],
89 base_type::flag_heads(head_flags, input, flag_op, temp_storage_);
92 template<
int ITEMS_PER_THREAD,
typename FlagT,
typename FlagOp>
94 void FlagHeads(FlagT (&head_flags)[ITEMS_PER_THREAD],
95 T (&input)[ITEMS_PER_THREAD],
97 T tile_predecessor_item)
99 base_type::flag_heads(head_flags, tile_predecessor_item, input, flag_op, temp_storage_);
102 template<
int ITEMS_PER_THREAD,
typename FlagT,
typename FlagOp>
104 void FlagTails(FlagT (&tail_flags)[ITEMS_PER_THREAD],
105 T (&input)[ITEMS_PER_THREAD],
108 base_type::flag_tails(tail_flags, input, flag_op, temp_storage_);
111 template<
int ITEMS_PER_THREAD,
typename FlagT,
typename FlagOp>
113 void FlagTails(FlagT (&tail_flags)[ITEMS_PER_THREAD],
114 T (&input)[ITEMS_PER_THREAD],
116 T tile_successor_item)
118 base_type::flag_tails(tail_flags, tile_successor_item, input, flag_op, temp_storage_);
121 template<
int ITEMS_PER_THREAD,
typename FlagT,
typename FlagOp>
123 void FlagHeadsAndTails(FlagT (&head_flags)[ITEMS_PER_THREAD],
124 FlagT (&tail_flags)[ITEMS_PER_THREAD],
125 T (&input)[ITEMS_PER_THREAD],
128 base_type::flag_heads_and_tails(
129 head_flags, tail_flags, input,
130 flag_op, temp_storage_
134 template<
int ITEMS_PER_THREAD,
typename FlagT,
typename FlagOp>
136 void FlagHeadsAndTails(FlagT (&head_flags)[ITEMS_PER_THREAD],
137 FlagT (&tail_flags)[ITEMS_PER_THREAD],
138 T tile_successor_item,
139 T (&input)[ITEMS_PER_THREAD],
142 base_type::flag_heads_and_tails(
143 head_flags, tail_flags, tile_successor_item, input,
144 flag_op, temp_storage_
148 template<
int ITEMS_PER_THREAD,
typename FlagT,
typename FlagOp>
150 void FlagHeadsAndTails(FlagT (&head_flags)[ITEMS_PER_THREAD],
151 T tile_predecessor_item,
152 FlagT (&tail_flags)[ITEMS_PER_THREAD],
153 T (&input)[ITEMS_PER_THREAD],
156 base_type::flag_heads_and_tails(
157 head_flags, tile_predecessor_item, tail_flags, input,
158 flag_op, temp_storage_
162 template<
int ITEMS_PER_THREAD,
typename FlagT,
typename FlagOp>
164 void FlagHeadsAndTails(FlagT (&head_flags)[ITEMS_PER_THREAD],
165 T tile_predecessor_item,
166 FlagT (&tail_flags)[ITEMS_PER_THREAD],
167 T tile_successor_item,
168 T (&input)[ITEMS_PER_THREAD],
171 base_type::flag_heads_and_tails(
172 head_flags, tile_predecessor_item, tail_flags, tile_successor_item, input,
173 flag_op, temp_storage_
179 TempStorage& private_storage()
181 HIPCUB_SHARED_MEMORY TempStorage private_storage;
182 return private_storage;
Definition: block_discontinuity.hpp:53