21 #ifndef ROCPRIM_DEVICE_DETAIL_ORDERED_BLOCK_ID_HPP_ 22 #define ROCPRIM_DEVICE_DETAIL_ORDERED_BLOCK_ID_HPP_ 24 #include <type_traits> 27 #include "../../detail/temp_storage.hpp" 28 #include "../../detail/various.hpp" 29 #include "../../intrinsics.hpp" 30 #include "../../types.hpp" 32 BEGIN_ROCPRIM_NAMESPACE
38 template<
class T =
unsigned int>
41 static_assert(std::is_integral<T>::value,
"T must be integer");
50 ROCPRIM_HOST
static inline 58 ROCPRIM_HOST
static inline 59 size_t get_storage_size()
61 return sizeof(id_type);
69 ROCPRIM_DEVICE ROCPRIM_INLINE
72 *
id =
static_cast<id_type
>(0);
75 ROCPRIM_DEVICE ROCPRIM_INLINE
80 storage.id = ::rocprim::detail::atomic_add(this->
id, 1);
93 #endif // ROCPRIM_DEVICE_DETAIL_ORDERED_BLOCK_ID_HPP_ This value-structure describes the required layout of some piece of temporary memory, which includes the required size and the required alignment.
Definition: temp_storage.hpp:47
Deprecated: Configuration of device-level scan primitives.
Definition: block_histogram.hpp:62
ROCPRIM_DEVICE ROCPRIM_INLINE void syncthreads()
Synchronize all threads in a block (tile)
Definition: thread.hpp:216
Definition: ordered_block_id.hpp:39
Definition: ordered_block_id.hpp:45