ViennaCL - The Vienna Computing Library  1.7.0
Free open-source GPU-accelerated linear algebra and solver library.
bisect_util.hpp File Reference

Go to the source code of this file.

Namespaces

 viennacl
 Main namespace in ViennaCL. Holds all the basic types such as vector, matrix, etc. and defines operations upon them.
 
 viennacl::linalg
 Provides all linear algebra operations which are not covered by operator overloads.
 
 viennacl::linalg::cuda
 Holds all CUDA compute kernels used by ViennaCL.
 

Functions

__device__ int viennacl::linalg::cuda::floorPow2 (int n)
 
__device__ int viennacl::linalg::cuda::ceilPow2 (int n)
 
template<typename NumericT >
__device__ NumericT viennacl::linalg::cuda::computeMidpoint (const NumericT left, const NumericT right)
 
template<class S , class T , class NumericT >
__device__ void viennacl::linalg::cuda::storeInterval (unsigned int addr, NumericT *s_left, NumericT *s_right, T *s_left_count, T *s_right_count, NumericT left, NumericT right, S left_count, S right_count, NumericT precision)
 
template<typename NumericT >
__device__ unsigned int viennacl::linalg::cuda::computeNumSmallerEigenvals (const NumericT *g_d, const NumericT *g_s, const unsigned int n, const NumericT x, const unsigned int tid, const unsigned int num_intervals_active, NumericT *s_d, NumericT *s_s, unsigned int converged)
 
template<typename NumericT >
__device__ unsigned int viennacl::linalg::cuda::computeNumSmallerEigenvalsLarge (const NumericT *g_d, const NumericT *g_s, const unsigned int n, const NumericT x, const unsigned int tid, const unsigned int num_intervals_active, NumericT *s_d, NumericT *s_s, unsigned int converged)
 
template<class S , class T , class NumericT >
__device__ void viennacl::linalg::cuda::storeNonEmptyIntervals (unsigned int addr, const unsigned int num_threads_active, NumericT *s_left, NumericT *s_right, T *s_left_count, T *s_right_count, NumericT left, NumericT mid, NumericT right, const S left_count, const S mid_count, const S right_count, NumericT precision, unsigned int &compact_second_chunk, T *s_compaction_list_exc, unsigned int &is_active_second)
 Store all non-empty intervals resulting from the subdivision of the interval currently processed by the thread. More...
 
template<class T >
__device__ void viennacl::linalg::cuda::createIndicesCompaction (T *s_compaction_list_exc, unsigned int num_threads_compaction)
 
template<class T , class NumericT >
__device__ void viennacl::linalg::cuda::compactIntervals (NumericT *s_left, NumericT *s_right, T *s_left_count, T *s_right_count, NumericT mid, NumericT right, unsigned int mid_count, unsigned int right_count, T *s_compaction_list, unsigned int num_threads_active, unsigned int is_active_second)
 Perform stream compaction for second child intervals. More...
 
template<class T , class S , class NumericT >
__device__ void viennacl::linalg::cuda::storeIntervalConverged (NumericT *s_left, NumericT *s_right, T *s_left_count, T *s_right_count, NumericT &left, NumericT &mid, NumericT &right, S &left_count, S &mid_count, S &right_count, T *s_compaction_list_exc, unsigned int &compact_second_chunk, const unsigned int num_threads_active, unsigned int &is_active_second)
 
template<class T , class NumericT >
__device__ void viennacl::linalg::cuda::subdivideActiveIntervalMulti (const unsigned int tid, NumericT *s_left, NumericT *s_right, T *s_left_count, T *s_right_count, const unsigned int num_threads_active, NumericT &left, NumericT &right, unsigned int &left_count, unsigned int &right_count, NumericT &mid, unsigned int &all_threads_converged)
 Subdivide interval if active and not already converged. More...
 
template<class T , class NumericT >
__device__ void viennacl::linalg::cuda::subdivideActiveInterval (const unsigned int tid, NumericT *s_left, NumericT *s_right, T *s_left_count, T *s_right_count, const unsigned int num_threads_active, NumericT &left, NumericT &right, unsigned int &left_count, unsigned int &right_count, NumericT &mid, unsigned int &all_threads_converged)
 Subdivide interval if active and not already converged. More...