Tile status interface for reduction by key, specialized for scan status and value types that can be combined into one machine word that can be read/written coherently in a single access.
Definition at line 478 of file single_pass_scan_operators.cuh.
Data Structures | |
struct | TileDescriptorBigStatus |
struct | TileDescriptorLittleStatus |
Public Types | |
enum | { PAIR_SIZE = sizeof(ValueT) + sizeof(KeyT) , TXN_WORD_SIZE = 1 << Log2<PAIR_SIZE + 1>::VALUE , STATUS_WORD_SIZE = TXN_WORD_SIZE - PAIR_SIZE , TILE_STATUS_PADDING = CUB_PTX_WARP_THREADS } |
typedef KeyValuePair< KeyT, ValueT > | KeyValuePairT |
typedef If<(STATUS_WORD_SIZE==8), longlong, typenameIf<(STATUS_WORD_SIZE==4), int, typenameIf<(STATUS_WORD_SIZE==2), short, char >::Type >::Type >::Type | StatusWord |
typedef If<(TXN_WORD_SIZE==16), longlong2, typenameIf<(TXN_WORD_SIZE==8), longlong, int >::Type >::Type | TxnWord |
typedef If<(sizeof(ValueT)==sizeof(KeyT)), TileDescriptorBigStatus, TileDescriptorLittleStatus >::Type | TileDescriptor |
Public Member Functions | |
__host__ __device__ __forceinline__ | ReduceByKeyScanTileState () |
Constructor. | |
__host__ __device__ __forceinline__ cudaError_t | Init (int, void *d_temp_storage, size_t) |
Initializer. | |
__device__ __forceinline__ void | InitializeStatus (int num_tiles) |
__device__ __forceinline__ void | SetInclusive (int tile_idx, KeyValuePairT tile_inclusive) |
__device__ __forceinline__ void | SetPartial (int tile_idx, KeyValuePairT tile_partial) |
__device__ __forceinline__ void | WaitForValid (int tile_idx, StatusWord &status, KeyValuePairT &value) |
Static Public Member Functions | |
__host__ __device__ static __forceinline__ cudaError_t | AllocationSize (int num_tiles, size_t &temp_storage_bytes) |
Data Fields | |
TxnWord * | d_tile_descriptors |
typedef KeyValuePair<KeyT, ValueT> cub::ReduceByKeyScanTileState< ValueT, KeyT, true >::KeyValuePairT |
Definition at line 480 of file single_pass_scan_operators.cuh.
typedef If<(STATUS_WORD_SIZE==8),longlong,typenameIf<(STATUS_WORD_SIZE==4),int,typenameIf<(STATUS_WORD_SIZE==2),short,char>::Type>::Type>::Type cub::ReduceByKeyScanTileState< ValueT, KeyT, true >::StatusWord |
Definition at line 499 of file single_pass_scan_operators.cuh.
typedef If<(sizeof(ValueT)==sizeof(KeyT)),TileDescriptorBigStatus,TileDescriptorLittleStatus>::Type cub::ReduceByKeyScanTileState< ValueT, KeyT, true >::TileDescriptor |
Definition at line 529 of file single_pass_scan_operators.cuh.
typedef If<(TXN_WORD_SIZE==16),longlong2,typenameIf<(TXN_WORD_SIZE==8),longlong,int>::Type>::Type cub::ReduceByKeyScanTileState< ValueT, KeyT, true >::TxnWord |
Definition at line 506 of file single_pass_scan_operators.cuh.
anonymous enum |
Definition at line 483 of file single_pass_scan_operators.cuh.
|
inline |
Constructor.
Definition at line 538 of file single_pass_scan_operators.cuh.
|
inlinestatic |
Compute device memory needed for tile status
[in] | num_tiles | Number of tiles |
[out] | temp_storage_bytes | Size in bytes of \t d_temp_storage allocation |
Definition at line 560 of file single_pass_scan_operators.cuh.
|
inline |
Initializer.
[in] | d_temp_storage | Device-accessible allocation of temporary storage. When NULL, the required allocation size is written to temp_storage_bytes and no work is done. |
Definition at line 546 of file single_pass_scan_operators.cuh.
|
inline |
Initialize (from device)
Definition at line 572 of file single_pass_scan_operators.cuh.
|
inline |
Update the specified tile's inclusive value and corresponding status
Definition at line 597 of file single_pass_scan_operators.cuh.
|
inline |
Update the specified tile's partial value and corresponding status
Definition at line 613 of file single_pass_scan_operators.cuh.
|
inline |
Wait for the corresponding tile to become non-invalid
Definition at line 628 of file single_pass_scan_operators.cuh.
TxnWord* cub::ReduceByKeyScanTileState< ValueT, KeyT, true >::d_tile_descriptors |
Definition at line 533 of file single_pass_scan_operators.cuh.