OpenCV  2.4.13.7
Open Source Computer Vision
cv::gpu::device::reduce_detail Namespace Reference

Classes

struct  Dispatcher
 
struct  For
 
struct  For< N, N >
 
struct  Generic
 
struct  GenericOptimized32
 
struct  GetType
 
struct  GetType< T & >
 
struct  GetType< T * >
 
struct  GetType< volatile T * >
 
struct  IsPowerOf2
 
struct  StaticIf
 
struct  StaticIf< false, T1, T2 >
 
struct  StaticIf< true, T1, T2 >
 
struct  Unroll
 
struct  Unroll< 0, Pointer, Reference, Op >
 
struct  WarpOptimized
 

Functions

template<typename T >
__device__ __forceinline__ void loadToSmem (volatile T *smem, T &val, unsigned int tid)
 
template<typename T >
__device__ __forceinline__ void loadFromSmem (volatile T *smem, T &val, unsigned int tid)
 
template<typename P0 , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 , typename P7 , typename P8 , typename P9 , typename R0 , typename R1 , typename R2 , typename R3 , typename R4 , typename R5 , typename R6 , typename R7 , typename R8 , typename R9 >
__device__ __forceinline__ void loadToSmem (const thrust::tuple< P0, P1, P2, P3, P4, P5, P6, P7, P8, P9 > &smem, const thrust::tuple< R0, R1, R2, R3, R4, R5, R6, R7, R8, R9 > &val, unsigned int tid)
 
template<typename P0 , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 , typename P7 , typename P8 , typename P9 , typename R0 , typename R1 , typename R2 , typename R3 , typename R4 , typename R5 , typename R6 , typename R7 , typename R8 , typename R9 >
__device__ __forceinline__ void loadFromSmem (const thrust::tuple< P0, P1, P2, P3, P4, P5, P6, P7, P8, P9 > &smem, const thrust::tuple< R0, R1, R2, R3, R4, R5, R6, R7, R8, R9 > &val, unsigned int tid)
 
template<typename T , class Op >
__device__ __forceinline__ void merge (volatile T *smem, T &val, unsigned int tid, unsigned int delta, const Op &op)
 
template<typename T , class Op >
__device__ __forceinline__ void mergeShfl (T &val, unsigned int delta, unsigned int width, const Op &op)
 
template<typename P0 , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 , typename P7 , typename P8 , typename P9 , typename R0 , typename R1 , typename R2 , typename R3 , typename R4 , typename R5 , typename R6 , typename R7 , typename R8 , typename R9 , class Op0 , class Op1 , class Op2 , class Op3 , class Op4 , class Op5 , class Op6 , class Op7 , class Op8 , class Op9 >
__device__ __forceinline__ void merge (const thrust::tuple< P0, P1, P2, P3, P4, P5, P6, P7, P8, P9 > &smem, const thrust::tuple< R0, R1, R2, R3, R4, R5, R6, R7, R8, R9 > &val, unsigned int tid, unsigned int delta, const thrust::tuple< Op0, Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8, Op9 > &op)
 
template<typename R0 , typename R1 , typename R2 , typename R3 , typename R4 , typename R5 , typename R6 , typename R7 , typename R8 , typename R9 , class Op0 , class Op1 , class Op2 , class Op3 , class Op4 , class Op5 , class Op6 , class Op7 , class Op8 , class Op9 >
__device__ __forceinline__ void mergeShfl (const thrust::tuple< R0, R1, R2, R3, R4, R5, R6, R7, R8, R9 > &val, unsigned int delta, unsigned int width, const thrust::tuple< Op0, Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8, Op9 > &op)
 

Function Documentation

§ loadFromSmem() [1/2]

template<typename T >
__device__ __forceinline__ void cv::gpu::device::reduce_detail::loadFromSmem ( volatile T *  smem,
T &  val,
unsigned int  tid 
)

§ loadFromSmem() [2/2]

template<typename P0 , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 , typename P7 , typename P8 , typename P9 , typename R0 , typename R1 , typename R2 , typename R3 , typename R4 , typename R5 , typename R6 , typename R7 , typename R8 , typename R9 >
__device__ __forceinline__ void cv::gpu::device::reduce_detail::loadFromSmem ( const thrust::tuple< P0, P1, P2, P3, P4, P5, P6, P7, P8, P9 > &  smem,
const thrust::tuple< R0, R1, R2, R3, R4, R5, R6, R7, R8, R9 > &  val,
unsigned int  tid 
)

§ loadToSmem() [1/2]

template<typename T >
__device__ __forceinline__ void cv::gpu::device::reduce_detail::loadToSmem ( volatile T *  smem,
T &  val,
unsigned int  tid 
)

§ loadToSmem() [2/2]

template<typename P0 , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 , typename P7 , typename P8 , typename P9 , typename R0 , typename R1 , typename R2 , typename R3 , typename R4 , typename R5 , typename R6 , typename R7 , typename R8 , typename R9 >
__device__ __forceinline__ void cv::gpu::device::reduce_detail::loadToSmem ( const thrust::tuple< P0, P1, P2, P3, P4, P5, P6, P7, P8, P9 > &  smem,
const thrust::tuple< R0, R1, R2, R3, R4, R5, R6, R7, R8, R9 > &  val,
unsigned int  tid 
)

§ merge() [1/2]

template<typename T , class Op >
__device__ __forceinline__ void cv::gpu::device::reduce_detail::merge ( volatile T *  smem,
T &  val,
unsigned int  tid,
unsigned int  delta,
const Op &  op 
)

§ merge() [2/2]

template<typename P0 , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 , typename P7 , typename P8 , typename P9 , typename R0 , typename R1 , typename R2 , typename R3 , typename R4 , typename R5 , typename R6 , typename R7 , typename R8 , typename R9 , class Op0 , class Op1 , class Op2 , class Op3 , class Op4 , class Op5 , class Op6 , class Op7 , class Op8 , class Op9 >
__device__ __forceinline__ void cv::gpu::device::reduce_detail::merge ( const thrust::tuple< P0, P1, P2, P3, P4, P5, P6, P7, P8, P9 > &  smem,
const thrust::tuple< R0, R1, R2, R3, R4, R5, R6, R7, R8, R9 > &  val,
unsigned int  tid,
unsigned int  delta,
const thrust::tuple< Op0, Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8, Op9 > &  op 
)

§ mergeShfl() [1/2]

template<typename T , class Op >
__device__ __forceinline__ void cv::gpu::device::reduce_detail::mergeShfl ( T &  val,
unsigned int  delta,
unsigned int  width,
const Op &  op 
)

§ mergeShfl() [2/2]

template<typename R0 , typename R1 , typename R2 , typename R3 , typename R4 , typename R5 , typename R6 , typename R7 , typename R8 , typename R9 , class Op0 , class Op1 , class Op2 , class Op3 , class Op4 , class Op5 , class Op6 , class Op7 , class Op8 , class Op9 >
__device__ __forceinline__ void cv::gpu::device::reduce_detail::mergeShfl ( const thrust::tuple< R0, R1, R2, R3, R4, R5, R6, R7, R8, R9 > &  val,
unsigned int  delta,
unsigned int  width,
const thrust::tuple< Op0, Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8, Op9 > &  op 
)