21 #ifndef ROCPRIM_FUNCTIONAL_HPP_ 22 #define ROCPRIM_FUNCTIONAL_HPP_ 29 BEGIN_ROCPRIM_NAMESPACE
37 ROCPRIM_PRAGMA_MESSAGE(
"GPU printf warnings for invalid rocPRIM warp operations on Navi GPUs " 38 "temporarily disabled, due to performance issues with printf.")
39 #define ROCPRIM_PRINT_ERROR_ONCE(message) \ 42 #define ROCPRIM_PRINT_ERROR_ONCE(message) \ 44 unsigned int idx = threadIdx.x + (blockIdx.x * blockDim.x); \ 45 idx += threadIdx.y + (blockIdx.y * blockDim.y); \ 46 idx += threadIdx.z + (blockIdx.z * blockDim.z); \ 48 printf("%s\n", #message); \ 54 ROCPRIM_HOST_DEVICE
inline 55 constexpr T
max(
const T& a,
const T& b)
62 ROCPRIM_HOST_DEVICE
inline 63 constexpr T
min(
const T& a,
const T& b)
70 ROCPRIM_HOST_DEVICE
inline 79 template<
class T =
void>
83 ROCPRIM_HOST_DEVICE
inline 96 template<
class T,
class U>
97 ROCPRIM_HOST_DEVICE
inline 105 template<
class T =
void>
109 ROCPRIM_HOST_DEVICE
inline 122 template <
typename T>
123 ROCPRIM_HOST_DEVICE
inline 131 template<
class T =
void>
135 ROCPRIM_HOST_DEVICE
inline 148 template <
typename T>
149 ROCPRIM_HOST_DEVICE
inline 157 template<
class T =
void>
161 ROCPRIM_HOST_DEVICE
inline 174 template <
typename T>
175 ROCPRIM_HOST_DEVICE
inline 183 template<
class T =
void>
187 ROCPRIM_HOST_DEVICE
inline 200 template <
typename T>
201 ROCPRIM_HOST_DEVICE
inline 209 template<
class T =
void>
213 ROCPRIM_HOST_DEVICE
inline 226 template <
typename T>
227 ROCPRIM_HOST_DEVICE
inline 235 template<
class T =
void>
239 ROCPRIM_HOST_DEVICE
inline 252 template <
typename T>
253 ROCPRIM_HOST_DEVICE
inline 261 template<
class T =
void>
265 ROCPRIM_HOST_DEVICE
inline 278 template <
typename T>
279 ROCPRIM_HOST_DEVICE
inline 287 template<
class T =
void>
291 ROCPRIM_HOST_DEVICE
inline 304 template <
typename T>
305 ROCPRIM_HOST_DEVICE
inline 313 template<
class T =
void>
317 ROCPRIM_HOST_DEVICE
inline 320 return a < b ? b : a;
330 template <
typename T>
331 ROCPRIM_HOST_DEVICE
inline 334 return a < b ? b : a;
339 template<
class T =
void>
343 ROCPRIM_HOST_DEVICE
inline 346 return a < b ? a : b;
356 template <
typename T>
357 ROCPRIM_HOST_DEVICE
inline 360 return a < b ? a : b;
365 template<
class T =
void>
369 ROCPRIM_HOST_DEVICE
inline 382 template <
typename T>
383 ROCPRIM_HOST_DEVICE
inline 397 template <
int N,
int CURRENT_VAL = N,
int COUNT = 0>
404 #ifndef DOXYGEN_SHOULD_SKIP_THIS // Do not document 406 template <
int N,
int COUNT>
409 enum {VALUE = (1 << (COUNT - 1) < N) ?
414 #endif // DOXYGEN_SHOULD_SKIP_THIS 423 template <
typename A,
typename B>
432 #ifndef DOXYGEN_SHOULD_SKIP_THIS // Do not document 434 template <
typename A>
449 #endif // DOXYGEN_SHOULD_SKIP_THIS 454 END_ROCPRIM_NAMESPACE
456 #endif // ROCPRIM_FUNCTIONAL_HPP_ Type equality test.
Definition: functional.hpp:424
ROCPRIM_HOST_DEVICE constexpr bool operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:214
ROCPRIM_HOST_DEVICE constexpr T max(const T &a, const T &b)
Returns the maximum of its arguments.
Definition: functional.hpp:55
ROCPRIM_HOST_DEVICE constexpr T operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:240
Functor that returns a - b.
Definition: functional.hpp:262
ROCPRIM_HOST_DEVICE constexpr bool operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:136
Functor that returns true if a != b. Otherwise returns false.
Definition: functional.hpp:210
ROCPRIM_HOST_DEVICE constexpr T operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:254
Functor that returns true if a >= b. Otherwise returns false.
Definition: functional.hpp:158
Functor that returns its argument.
Definition: functional.hpp:366
ROCPRIM_HOST_DEVICE constexpr T operator()(const T &a) const
Invocation operator.
Definition: functional.hpp:370
ROCPRIM_HOST_DEVICE constexpr bool operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:150
Functor that returns true if a <= b. Otherwise returns false.
Definition: functional.hpp:106
ROCPRIM_HOST_DEVICE constexpr T operator()(const T &a) const
Invocation operator.
Definition: functional.hpp:384
ROCPRIM_HOST_DEVICE constexpr T min(const T &a, const T &b)
Returns the minimum of its arguments.
Definition: functional.hpp:63
ROCPRIM_HOST_DEVICE constexpr T operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:332
ROCPRIM_HOST_DEVICE constexpr T operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:266
Definition: functional.hpp:444
ROCPRIM_HOST_DEVICE constexpr bool operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:124
ROCPRIM_HOST_DEVICE constexpr T operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:344
Returns true if a < b. Otherwise returns false.
Definition: functional.hpp:80
ROCPRIM_HOST_DEVICE constexpr bool operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:176
Functor that returns true if a > b. Otherwise returns false.
Definition: functional.hpp:132
Functor that returns a + b.
Definition: functional.hpp:236
ROCPRIM_HOST_DEVICE void swap(T &a, T &b)
Swaps two values.
Definition: functional.hpp:71
Functor that returns true if a == b. Otherwise returns false.
Definition: functional.hpp:184
ROCPRIM_HOST_DEVICE constexpr bool operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:228
ROCPRIM_HOST_DEVICE constexpr T operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:306
ROCPRIM_HOST_DEVICE constexpr bool operator()(const T &a, const U &b) const
Invocation operator.
Definition: functional.hpp:98
Functor that returns the maximum of its arguments.
Definition: functional.hpp:314
ROCPRIM_HOST_DEVICE constexpr bool operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:110
ROCPRIM_HOST_DEVICE constexpr bool operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:202
ROCPRIM_HOST_DEVICE constexpr T operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:292
Statically determine log2(N), rounded up.
Definition: functional.hpp:398
Functor that returns a * b.
Definition: functional.hpp:288
ROCPRIM_HOST_DEVICE constexpr bool operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:162
ROCPRIM_HOST_DEVICE constexpr T operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:280
ROCPRIM_HOST_DEVICE constexpr T operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:318
ROCPRIM_HOST_DEVICE constexpr bool operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:188
Functor that returns the minimum of its arguments.
Definition: functional.hpp:340
ROCPRIM_HOST_DEVICE constexpr bool operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:84
ROCPRIM_HOST_DEVICE constexpr T operator()(const T &a, const T &b) const
Invocation operator.
Definition: functional.hpp:358