OpenFPM_pdata  4.1.0
Project that contain the implementation of distributed structures
cub::ScanTileState< T, true > Struct Template Reference

Detailed Description

template<typename T>
struct cub::ScanTileState< T, true >

Tile status interface 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 129 of file single_pass_scan_operators.cuh.

Data Structures

struct  TileDescriptor
 

Public Types

enum  { TILE_STATUS_PADDING = CUB_PTX_WARP_THREADS }
 
typedef If<(sizeof(T)==8), long long, typename If<(sizeof(T)==4), int, typename If<(sizeof(T)==2), short, char >::Type >::Type >::Type StatusWord
 
typedef If<(sizeof(T)==8), longlong2, typename If<(sizeof(T)==4), int2, typename If<(sizeof(T)==2), int, uchar2 >::Type >::Type >::Type TxnWord
 

Public Member Functions

__host__ __device__ __forceinline__ ScanTileState ()
 Constructor.
 
__host__ __device__ __forceinline__ cudaError_t Init (int, void *d_temp_storage, size_t)
 Initializer. More...
 
__device__ __forceinline__ void InitializeStatus (int num_tiles)
 
__device__ __forceinline__ void SetInclusive (int tile_idx, T tile_inclusive)
 
__device__ __forceinline__ void SetPartial (int tile_idx, T tile_partial)
 
__device__ __forceinline__ void WaitForValid (int tile_idx, StatusWord &status, T &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
 

Member Function Documentation

◆ AllocationSize()

template<typename T >
__host__ __device__ static __forceinline__ cudaError_t cub::ScanTileState< T, true >::AllocationSize ( int  num_tiles,
size_t &  temp_storage_bytes 
)
inlinestatic

Compute device memory needed for tile status

Parameters
[in]num_tilesNumber of tiles
[out]temp_storage_bytesSize in bytes of \t d_temp_storage allocation

Definition at line 193 of file single_pass_scan_operators.cuh.

◆ Init()

template<typename T >
__host__ __device__ __forceinline__ cudaError_t cub::ScanTileState< T, true >::Init ( int  ,
void *  d_temp_storage,
size_t   
)
inline

Initializer.

Parameters
[in]d_temp_storageDevice-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 179 of file single_pass_scan_operators.cuh.

◆ InitializeStatus()

template<typename T >
__device__ __forceinline__ void cub::ScanTileState< T, true >::InitializeStatus ( int  num_tiles)
inline

Initialize (from device)

Definition at line 205 of file single_pass_scan_operators.cuh.

◆ SetInclusive()

template<typename T >
__device__ __forceinline__ void cub::ScanTileState< T, true >::SetInclusive ( int  tile_idx,
tile_inclusive 
)
inline

Update the specified tile's inclusive value and corresponding status

Definition at line 231 of file single_pass_scan_operators.cuh.

◆ SetPartial()

template<typename T >
__device__ __forceinline__ void cub::ScanTileState< T, true >::SetPartial ( int  tile_idx,
tile_partial 
)
inline

Update the specified tile's partial value and corresponding status

Definition at line 246 of file single_pass_scan_operators.cuh.

◆ WaitForValid()

template<typename T >
__device__ __forceinline__ void cub::ScanTileState< T, true >::WaitForValid ( int  tile_idx,
StatusWord &  status,
T &  value 
)
inline

Wait for the corresponding tile to become non-invalid

Definition at line 260 of file single_pass_scan_operators.cuh.


The documentation for this struct was generated from the following file: