clr/hipamd/include/hip/amd_detail/amd_hip_cooperative_groups.h Source File#
amd_hip_cooperative_groups.h
Go to the documentation of this file.
308 __CG_QUALIFIER__ void barrier_wait(arrival_token&&) const { internal::workgroup::barrier_wait(); }
395 friend __CG_QUALIFIER__ coalesced_group binary_partition(const coalesced_group& cgrp, bool pred);
1017__CG_QUALIFIER__ thread_group tiled_partition(const thread_group& parent, unsigned int tile_size) {
1031__CG_QUALIFIER__ thread_group tiled_partition(const thread_block& parent, unsigned int tile_size) {
1035__CG_QUALIFIER__ tiled_group tiled_partition(const tiled_group& parent, unsigned int tile_size) {
1261 static_assert(size < ParentSize, "Sub tile size must be < parent tile size in tiled_partition");
1263 __CG_QUALIFIER__ tiled_partition_internal(const thread_block_tile<ParentSize, GrandParentCGTy>& g)
1466 // we cannot simply just use the __activemask() here, because more than one tile could have active
1479template <bool isPrimitiveType, class T, size_t NumPermutes, typename __hip_internal::enable_if<NumPermutes == 0, int>::type = 0>
1485template <bool IsPrimitiveType, class T, size_t NumPermutes, typename __hip_internal::enable_if<IsPrimitiveType && NumPermutes == 1, int>::type = 0>
1554 __CG_STATIC_QUALIFIER__ void barrier_wait(arrival_token&&) { internal::cluster::barrier_wait(); }
1572 __CG_STATIC_QUALIFIER__ unsigned int thread_rank() { return internal::cluster::thread_rank(); }
1584 __CG_STATIC_QUALIFIER__ unsigned int num_threads() { return internal::cluster::num_threads(); }
static unsigned int query_shared_rank(const void *in)
Definition amd_hip_cooperative_groups.h:1592
static unsigned int thread_rank()
Definition amd_hip_cooperative_groups.h:1572
static dim3 thread_index()
Definition amd_hip_cooperative_groups.h:1569
static T * map_shared_rank(T *in, int rank)
Definition amd_hip_cooperative_groups.h:1587
static void sync()
Definition amd_hip_cooperative_groups.h:1544
{} arrival_token
Definition amd_hip_cooperative_groups.h:1541
static dim3 block_index()
Definition amd_hip_cooperative_groups.h:1563
static void barrier_wait(arrival_token &&)
Definition amd_hip_cooperative_groups.h:1554
static unsigned int block_rank()
Definition amd_hip_cooperative_groups.h:1566
static unsigned int num_threads()
Definition amd_hip_cooperative_groups.h:1584
static unsigned int size()
Definition amd_hip_cooperative_groups.h:1597
static arrival_token barrier_arrive()
Definition amd_hip_cooperative_groups.h:1547
static unsigned int num_blocks()
Definition amd_hip_cooperative_groups.h:1578
friend cluster_group this_cluster()
get cluster group
Definition amd_hip_cooperative_groups.h:1605
static dim3 dim_threads()
Definition amd_hip_cooperative_groups.h:1581
static dim3 dim_blocks()
Definition amd_hip_cooperative_groups.h:1575
The coalesced_group cooperative group type.
Definition amd_hip_cooperative_groups.h:388
The grid cooperative group type.
Definition amd_hip_cooperative_groups.h:185
Definition amd_hip_cooperative_groups.h:1049
thread_block_tile_internal(const thread_block &g)
Definition amd_hip_cooperative_groups.h:1055
thread_block_tile_internal(const thread_block_tile_internal< tbtSize, tbtParentT > &g)
Definition amd_hip_cooperative_groups.h:1051
The multi-grid cooperative group type.
Definition amd_hip_cooperative_groups.h:130
User exposed API that captures the state of the parent group pre-partition.
Definition amd_hip_cooperative_groups.h:917
thread_block_tile(const thread_block_tile< size, ParentCGTy > &g)
Definition amd_hip_cooperative_groups.h:1242
Definition amd_hip_cooperative_groups.h:858
Group type - thread_block_tile.
Definition amd_hip_cooperative_groups.h:940
Group type - thread_block_tile.
Definition amd_hip_cooperative_groups.h:1099
T shfl_down(T var, unsigned int lane_delta) const
Shuffle down operation on group level.
unsigned long long ballot(int pred) const
Ballot function on group level.
thread_block_tile(const ParentCGTy &g)
Definition amd_hip_cooperative_groups.h:1101
unsigned int meta_group_rank() const
unsigned int thread_rank() const
Rank of the calling thread within [0, num_threads() ).
T shfl_xor(T var, unsigned int laneMask) const
Shuffle xor operation on group level.
unsigned long long match_any(T value) const
Match any function on group level.
unsigned long long match_all(T value, int &pred) const
Match all function on group level.
unsigned int meta_group_size() const
Returns the number of groups created when the parent group was partitioned.
T shfl_up(T var, unsigned int lane_delta) const
Shuffle up operation on group level.
T shfl(T var, int srcRank) const
Shuffle operation on group level.
The workgroup (thread-block in CUDA terminology) cooperative group type.
Definition amd_hip_cooperative_groups.h:241
The base type of all cooperative group types.
Definition amd_hip_cooperative_groups.h:39
Definition amd_hip_cooperative_groups.h:835
The tiled_group cooperative group type.
Definition amd_hip_cooperative_groups.h:332
const struct texture< T, dim, readMode > const void size_t size
Definition hip_runtime_api.h:10563
bool is_valid(CGTy const &g)
Returns true if the group has not violated any API constraints.
Definition amd_hip_cooperative_groups.h:814
void sync(CGTy const &g)
Synchronizes the threads in the group.
Definition amd_hip_cooperative_groups.h:825
__hip_uint32_t group_size(CGTy const &g)
Returns the size of the group.
Definition amd_hip_cooperative_groups.h:786
__hip_uint32_t thread_rank(CGTy const &g)
Returns the rank of thread of the group.
Definition amd_hip_cooperative_groups.h:801
thread_block this_thread_block()
User-exposed API interface to construct workgroup cooperative group type object - thread_block.
Definition amd_hip_cooperative_groups.h:321
coalesced_group binary_partition(const coalesced_group &cgrp, bool pred)
Binary partition.
Definition amd_hip_cooperative_groups.h:1298
thread_group tiled_partition(const thread_group &parent, unsigned int tile_size)
User-exposed API to partition groups.
Definition amd_hip_cooperative_groups.h:1017
multi_grid_group this_multi_grid()
User-exposed API interface to construct grid cooperative group type object - multi_grid_group.
Definition amd_hip_cooperative_groups.h:171
coalesced_group coalesced_threads()
User-exposed API to create coalesced groups.
Definition amd_hip_cooperative_groups.h:663
grid_group this_grid()
User-exposed API interface to construct grid cooperative group type object - grid_group.
Definition amd_hip_cooperative_groups.h:230
void sync() const
Synchronizes the threads in the group.
Definition amd_hip_cooperative_groups.h:376
T shfl_xor(T var, unsigned int laneMask) const
Definition amd_hip_cooperative_groups.h:889
static constexpr unsigned int numThreads
Definition amd_hip_cooperative_groups.h:837
friend multi_grid_group this_multi_grid()
User-exposed API interface to construct grid cooperative group type object - multi_grid_group.
Definition amd_hip_cooperative_groups.h:171
void sync() const
Synchronizes the threads in the group.
Definition amd_hip_cooperative_groups.h:477
static void sync()
Definition amd_hip_cooperative_groups.h:875
void barrier_wait(arrival_token &&t) const
Arrive at a barrier.
Definition amd_hip_cooperative_groups.h:215
unsigned int num_threads
Definition amd_hip_cooperative_groups.h:62
__hip_uint32_t thread_rank() const
Rank of the calling thread within [0, num_threads() ).
Definition amd_hip_cooperative_groups.h:197
arrival_token barrier_arrive() const
Arrive at a barrier.
Definition amd_hip_cooperative_groups.h:209
void sync() const
Synchronizes the threads in the group.
Definition amd_hip_cooperative_groups.h:203
__hip_uint32_t size() const
Total number of threads in the group (alias of num_threads())
Definition amd_hip_cooperative_groups.h:84
unsigned int size() const
Total number of threads in the group (alias of num_threads())
Definition amd_hip_cooperative_groups.h:469
__hip_uint32_t num_grids()
Definition amd_hip_cooperative_groups.h:143
unsigned long long match_all(T value, int &pred) const
Definition amd_hip_cooperative_groups.h:908
unsigned long long match_any(T value) const
Match any function on group level.
Definition amd_hip_cooperative_groups.h:629
friend thread_block this_thread_block()
User-exposed API interface to construct workgroup cooperative group type object - thread_block.
Definition amd_hip_cooperative_groups.h:321
static unsigned int meta_group_size()
Returns the number of groups created when the parent group was partitioned.
Definition amd_hip_cooperative_groups.h:926
unsigned int signal
Definition amd_hip_cooperative_groups.h:206
unsigned int meta_group_rank() const
Definition amd_hip_cooperative_groups.h:481
dim3 group_dim() const
Definition amd_hip_cooperative_groups.h:204
unsigned int meta_group_rank() const
Definition amd_hip_cooperative_groups.h:991
__hip_uint32_t _num_threads
Type of the thread_group.
Definition amd_hip_cooperative_groups.h:44
__hip_uint32_t block_rank() const
Rank of the block in calling thread within [0, num_threads() ).
static unsigned int num_threads()
Number of threads within this tile.
Definition amd_hip_cooperative_groups.h:846
thread_group(internal::group_type type, __hip_uint32_t num_threads=static_cast< __hip_uint64_t >(0), __hip_uint64_t mask=static_cast< __hip_uint64_t >(0))
Definition amd_hip_cooperative_groups.h:52
unsigned int meta_group_size() const
Returns the number of groups created when the parent group was partitioned.
Definition amd_hip_cooperative_groups.h:486
unsigned int thread_rank() const
Rank of the calling thread within [0, num_threads() ).
Definition amd_hip_cooperative_groups.h:372
unsigned int thread_rank() const
Rank of the calling thread within [0, num_threads() ).
Definition amd_hip_cooperative_groups.h:472
unsigned int meta_group_size() const
Returns the number of groups created when the parent group was partitioned.
Definition amd_hip_cooperative_groups.h:996
int all(int pred) const
All function on group level.
Definition amd_hip_cooperative_groups.h:617
unsigned int cg_type() const
Returns the type of the group.
Definition amd_hip_cooperative_groups.h:86
T shfl(T var, int srcRank) const
Definition amd_hip_cooperative_groups.h:877
thread_group new_tiled_group(unsigned int tile_size) const
Definition amd_hip_cooperative_groups.h:255
static __hip_uint32_t size()
Total number of threads in the group (alias of num_threads())
Definition amd_hip_cooperative_groups.h:294
unsigned int num_threads() const
Definition amd_hip_cooperative_groups.h:364
unsigned int num_threads() const
Definition amd_hip_cooperative_groups.h:466
void barrier_wait(arrival_token &&) const
Arrive at a barrier.
Definition amd_hip_cooperative_groups.h:308
tiled_group(unsigned int tileSize)
Definition amd_hip_cooperative_groups.h:356
unsigned int meta_group_rank
Definition amd_hip_cooperative_groups.h:63
unsigned long long match_all(T value, int &pred) const
Match all function on group level.
Definition amd_hip_cooperative_groups.h:646
thread_block_tile_type()
Definition amd_hip_cooperative_groups.h:945
__hip_uint32_t block_rank() const
Rank of the block in calling thread within [0, num_threads() ).
Definition amd_hip_cooperative_groups.h:199
grid_group(__hip_uint32_t size)
Construct grid thread group (through the API this_grid())
Definition amd_hip_cooperative_groups.h:192
__hip_uint32_t grid_rank()
Definition amd_hip_cooperative_groups.h:147
static constexpr unsigned int thread_rank()
Rank of the thread within this tile.
Definition amd_hip_cooperative_groups.h:841
bool is_tiled
Definition amd_hip_cooperative_groups.h:61
unsigned long long ballot(int pred) const
Ballot function on group level.
Definition amd_hip_cooperative_groups.h:595
void sync() const
Synchronizes the threads in the group.
Definition amd_hip_cooperative_groups.h:155
T shfl_up(T var, unsigned int lane_delta) const
Definition amd_hip_cooperative_groups.h:885
static __hip_uint32_t block_rank()
Rank of the block in calling thread within [0, num_threads() ).
Definition amd_hip_cooperative_groups.h:286
static dim3 group_index()
Returns 3-dimensional block index within the grid.
Definition amd_hip_cooperative_groups.h:278
unsigned long long groupMask(const TyGroup &)
Definition amd_hip_cooperative_groups.h:1459
unsigned int num_threads
Definition amd_hip_cooperative_groups.h:69
static void sync()
Synchronizes the threads in the group.
Definition amd_hip_cooperative_groups.h:298
friend coalesced_group binary_partition(const thread_block_tile< fsize, fparent > &tgrp, bool pred)
__hip_uint32_t thread_rank() const
Rank of the calling thread within [0, num_threads() ).
Definition amd_hip_cooperative_groups.h:149
bool is_valid() const
Returns true if the group has not violated any API constraints.
static unsigned int size()
Definition amd_hip_cooperative_groups.h:850
friend thread_group tiled_partition(const thread_group &parent, unsigned int tile_size)
User-exposed API to partition groups.
Definition amd_hip_cooperative_groups.h:1017
int any(int pred) const
Definition amd_hip_cooperative_groups.h:899
int all(int pred) const
Definition amd_hip_cooperative_groups.h:901
__hip_uint64_t _mask
Total number of threads in the thread_group.
Definition amd_hip_cooperative_groups.h:45
friend thread_group this_thread()
Definition amd_hip_cooperative_groups.h:1005
bool is_valid() const
Returns true if the group has not violated any API constraints.
Definition amd_hip_cooperative_groups.h:201
__hip_uint32_t _type
Definition amd_hip_cooperative_groups.h:43
unsigned long long match_any(T value) const
Definition amd_hip_cooperative_groups.h:903
unsigned int size() const
Total number of threads in the group (alias of num_threads())
Definition amd_hip_cooperative_groups.h:369
struct cooperative_groups::thread_group::_coalesced_info coalesced_info
lane_mask member_mask
Definition amd_hip_cooperative_groups.h:68
thread_block(__hip_uint32_t size)
Definition amd_hip_cooperative_groups.h:252
unsigned int meta_group_size
Definition amd_hip_cooperative_groups.h:64
multi_grid_group(__hip_uint32_t size)
Construct multi-grid thread group (through the API this_multi_grid())
Definition amd_hip_cooperative_groups.h:137
int any(int pred) const
Any function on group level.
Definition amd_hip_cooperative_groups.h:607
thread_group this_thread()
Definition amd_hip_cooperative_groups.h:1005
cluster_group this_cluster()
get cluster group
Definition amd_hip_cooperative_groups.h:1605
static unsigned int meta_group_rank()
Definition amd_hip_cooperative_groups.h:921
__hip_uint32_t num_threads() const
Definition amd_hip_cooperative_groups.h:82
struct _tiled_info tiled_info
Definition amd_hip_cooperative_groups.h:70
friend coalesced_group coalesced_threads()
User-exposed API to create coalesced groups.
Definition amd_hip_cooperative_groups.h:663
friend coalesced_group binary_partition(const coalesced_group &cgrp, bool pred)
Binary partition.
Definition amd_hip_cooperative_groups.h:1298
static dim3 thread_index()
Returns 3-dimensional thread index within the block.
Definition amd_hip_cooperative_groups.h:280
friend class thread_block
Definition amd_hip_cooperative_groups.h:76
coalesced_group(lane_mask member_mask)
Definition amd_hip_cooperative_groups.h:454
T shfl_down(T var, unsigned int lane_delta) const
Shuffle down operation on group level.
Definition amd_hip_cooperative_groups.h:527
static bool is_valid()
Returns true if the group has not violated any API constraints.
Definition amd_hip_cooperative_groups.h:296
dim3 group_dim()
Returns the group dimensions.
Definition amd_hip_cooperative_groups.h:300
thread_block_tile_type(unsigned int meta_group_rank, unsigned int meta_group_size)
Definition amd_hip_cooperative_groups.h:974
static __hip_uint32_t num_threads()
Definition amd_hip_cooperative_groups.h:290
unsigned long long ballot(int pred) const
Definition amd_hip_cooperative_groups.h:894
T shfl(T var, int srcRank) const
Shuffle operation on group level.
Definition amd_hip_cooperative_groups.h:502
arrival_token barrier_arrive() const
Arrive at a barrier.
Definition amd_hip_cooperative_groups.h:303
bool is_valid() const
Returns true if the group has not violated any API constraints.
Definition amd_hip_cooperative_groups.h:153
static __hip_uint32_t thread_rank()
Rank of the calling thread within [0, num_threads() ).
Definition amd_hip_cooperative_groups.h:282
friend grid_group this_grid()
User-exposed API interface to construct grid cooperative group type object - grid_group.
Definition amd_hip_cooperative_groups.h:230
T shfl_down(T var, unsigned int lane_delta) const
Definition amd_hip_cooperative_groups.h:881
T shfl_up(T var, unsigned int lane_delta) const
Shuffle up operation on group level.
Definition amd_hip_cooperative_groups.h:564
thread_block_tile_type(unsigned int meta_group_rank, unsigned int meta_group_size)
Definition amd_hip_cooperative_groups.h:950
__hip_uint32_t thread_rank() const
Rank of the calling thread within [0, num_threads() ).
Definition amd_hip_cooperative_groups.h:205
Definition amd_hip_cooperative_groups.h:301
Definition amd_hip_cooperative_groups.h:67
Definition amd_hip_cooperative_groups.h:60
void bPermute(T &, T, int from)
Definition amd_hip_cooperative_groups.h:1480
__hip_internal::is_same< typename __hip_internal::remove_cvref< T >, typename __hip_internal::remove_cvref< U > > is_param_type_same
Definition amd_hip_cooperative_groups.h:1385
Definition amd_hip_cooperative_groups.h:1249
Definition amd_hip_cooperative_groups.h:24
Definition amd_hip_cooperative_groups.h:1357
T operator()(T lhs, T rhs) const
Definition amd_hip_cooperative_groups.h:1358
Definition amd_hip_cooperative_groups.h:1373
T operator()(T lhs, T rhs) const
Definition amd_hip_cooperative_groups.h:1374
Definition amd_hip_cooperative_groups.h:1365
T operator()(T lhs, T rhs) const
Definition amd_hip_cooperative_groups.h:1366
Definition amd_hip_cooperative_groups.h:1349
T operator()(T lhs, T rhs) const
Definition amd_hip_cooperative_groups.h:1350
T operator()()
Definition amd_hip_cooperative_groups.h:1431
T operator()()
Definition amd_hip_cooperative_groups.h:1450
T operator()()
Definition amd_hip_cooperative_groups.h:1440
Definition amd_hip_cooperative_groups.h:1421
T operator()()
Definition amd_hip_cooperative_groups.h:1422
Definition amd_hip_cooperative_groups.h:1388
Definition amd_hip_cooperative_groups.h:1404
Definition amd_hip_cooperative_groups.h:1082
Definition amd_hip_cooperative_groups.h:1061
tiled_partition_internal(const thread_block &g)
Definition amd_hip_cooperative_groups.h:1253
tiled_partition_internal(const thread_block_tile< ParentSize, GrandParentCGTy > &g)
Definition amd_hip_cooperative_groups.h:1263
Definition amd_hip_cooperative_groups.h:1073
Definition amd_hip_cooperative_groups.h:1341
T operator()(T lhs, T rhs) const
Definition amd_hip_cooperative_groups.h:1342
Definition amd_hip_cooperative_groups.h:1333
T operator()(T lhs, T rhs) const
Definition amd_hip_cooperative_groups.h:1334
Definition hip_runtime_api.h:1375