ViennaCL - The Vienna Computing Library  1.5.2
Functions
viennacl::linalg::cuda::detail Namespace Reference

Helper functions for the CUDA linear algebra backend. More...

Functions

unsigned int make_options (vcl_size_t length, bool reciprocal, bool flip_sign)
void cuda_last_error_check (const char *message, const char *file, const int line)
template<typename T , typename U >
T * cuda_arg (vector_base< U > &obj)
template<typename T , typename U >
const T * cuda_arg (vector_base< U > const &obj)
template<typename NumericT , typename F >
NumericT * cuda_arg (matrix_base< NumericT, F > &obj)
template<typename NumericT , typename F >
const NumericT * cuda_arg (matrix_base< NumericT, F > const &obj)
template<typename ScalarType , typename T >
viennacl::enable_if
< viennacl::is_scalar< T >
::value, ScalarType * >::type 
cuda_arg (T &obj)
template<typename ScalarType , typename T >
viennacl::enable_if
< viennacl::is_scalar< T >
::value, const ScalarType * >
::type 
cuda_arg (T const &obj)
template<typename ScalarType >
ScalarType * cuda_arg (viennacl::backend::mem_handle::cuda_handle_type &h)
template<typename ScalarType >
ScalarType const * cuda_arg (viennacl::backend::mem_handle::cuda_handle_type const &h)
unsigned int cuda_arg (unsigned int val)
template<typename T >
char cuda_arg (char val)
template<typename T >
unsigned char cuda_arg (unsigned char val)
template<typename T >
short cuda_arg (short val)
template<typename T >
unsigned short cuda_arg (unsigned short val)
template<typename T >
int cuda_arg (int val)
template<typename T >
long cuda_arg (long val)
template<typename T >
unsigned long cuda_arg (unsigned long val)
template<typename T >
float cuda_arg (float val)
template<typename T >
double cuda_arg (double val)
template<typename T , typename U >
viennacl::backend::mem_handle::cuda_handle_typearg_reference (viennacl::scalar< T > &s, U)
template<typename T , typename U >
viennacl::backend::mem_handle::cuda_handle_type
const & 
arg_reference (viennacl::scalar< T > const &s, U)
template<typename T >
viennacl::enable_if
< viennacl::is_cpu_scalar< T >
::value, char const & >::type 
arg_reference (T, char const &val)
template<typename T >
viennacl::enable_if
< viennacl::is_cpu_scalar< T >
::value, unsigned char const & >
::type 
arg_reference (T, unsigned char const &val)
template<typename T >
viennacl::enable_if
< viennacl::is_cpu_scalar< T >
::value, short const & >::type 
arg_reference (T, short const &val)
template<typename T >
viennacl::enable_if
< viennacl::is_cpu_scalar< T >
::value, unsigned short const & >
::type 
arg_reference (T, unsigned short const &val)
template<typename T >
viennacl::enable_if
< viennacl::is_cpu_scalar< T >
::value, int const & >::type 
arg_reference (T, int const &val)
template<typename T >
viennacl::enable_if
< viennacl::is_cpu_scalar< T >
::value, unsigned int const & >
::type 
arg_reference (T, unsigned int const &val)
template<typename T >
viennacl::enable_if
< viennacl::is_cpu_scalar< T >
::value, long const & >::type 
arg_reference (T, long const &val)
template<typename T >
viennacl::enable_if
< viennacl::is_cpu_scalar< T >
::value, unsigned long const & >
::type 
arg_reference (T, unsigned long const &val)
template<typename T >
viennacl::enable_if
< viennacl::is_cpu_scalar< T >
::value, float const & >::type 
arg_reference (T, float const &val)
template<typename T >
viennacl::enable_if
< viennacl::is_cpu_scalar< T >
::value, double const & >
::type 
arg_reference (T, double const &val)
template<typename T >
bool is_unit_solve (T const &tag)
bool is_unit_solve (viennacl::linalg::unit_lower_tag)
bool is_unit_solve (viennacl::linalg::unit_upper_tag)
template<typename T >
bool is_upper_solve (T const &tag)
bool is_upper_solve (viennacl::linalg::upper_tag)
bool is_upper_solve (viennacl::linalg::unit_upper_tag)
template<typename M1 , typename M2 , typename SolverTag >
void inplace_solve_impl (M1 const &A, bool transpose_A, M2 &B, bool transpose_B, SolverTag const &tag)
unsigned int get_option_for_solver_tag (viennacl::linalg::upper_tag)
unsigned int get_option_for_solver_tag (viennacl::linalg::unit_upper_tag)
unsigned int get_option_for_solver_tag (viennacl::linalg::lower_tag)
unsigned int get_option_for_solver_tag (viennacl::linalg::unit_lower_tag)
template<typename MatrixType , typename VectorType >
void inplace_solve_vector_impl (MatrixType const &mat, VectorType &vec, unsigned int options)
template<typename T1 , typename T2 , typename T3 , typename ScalarType >
void prod_slow_kernel (const T1 &A, bool transposed_A, const T2 &B, bool transposed_B, T3 &C, ScalarType alpha, ScalarType beta)
template<typename T1 , typename T2 , typename T3 , typename ScalarType >
void prod_fast_kernel (const T1 &A, const T2 &B, T3 &C, ScalarType alpha, ScalarType beta, std::string kernel_name)
template<typename T1 , typename T2 , typename T3 , typename ScalarType >
void prod (const T1 &A, bool transposed_A, const T2 &B, bool transposed_B, T3 &C, ScalarType alpha, ScalarType beta)
template<typename T >
__global__ void level_scheduling_substitute_kernel (const unsigned int *row_index_array, const unsigned int *row_indices, const unsigned int *column_indices, const T *elements, T *vec, unsigned int size)
template<typename ScalarType >
void level_scheduling_substitute (vector< ScalarType > &vec, viennacl::backend::mem_handle const &row_index_array, viennacl::backend::mem_handle const &row_buffer, viennacl::backend::mem_handle const &col_buffer, viennacl::backend::mem_handle const &element_buffer, vcl_size_t num_rows)
template<typename T >
__global__ void csr_row_info_extractor_kernel (const unsigned int *row_indices, const unsigned int *column_indices, const T *elements, T *result, unsigned int size, unsigned int option)
template<typename ScalarType , unsigned int MAT_ALIGNMENT>
void row_info (compressed_matrix< ScalarType, MAT_ALIGNMENT > const &mat, vector_base< ScalarType > &vec, viennacl::linalg::detail::row_info_types info_selector)
template<typename ScalarType , unsigned int MAT_ALIGNMENT>
void block_inplace_solve (const matrix_expression< const compressed_matrix< ScalarType, MAT_ALIGNMENT >, const compressed_matrix< ScalarType, MAT_ALIGNMENT >, op_trans > &L, viennacl::backend::mem_handle const &block_indices, vcl_size_t num_blocks, vector_base< ScalarType > const &, vector_base< ScalarType > &vec, viennacl::linalg::unit_lower_tag)
template<typename ScalarType , unsigned int MAT_ALIGNMENT>
void block_inplace_solve (const matrix_expression< const compressed_matrix< ScalarType, MAT_ALIGNMENT >, const compressed_matrix< ScalarType, MAT_ALIGNMENT >, op_trans > &U, viennacl::backend::mem_handle const &block_indices, vcl_size_t num_blocks, vector_base< ScalarType > const &U_diagonal, vector_base< ScalarType > &vec, viennacl::linalg::upper_tag)
template<typename T >
__global__ void coo_row_info_extractor (const unsigned int *coords, const T *elements, const unsigned int *group_boundaries, T *result, unsigned int option)
template<typename ScalarType , unsigned int MAT_ALIGNMENT>
void row_info (coordinate_matrix< ScalarType, MAT_ALIGNMENT > const &mat, vector_base< ScalarType > &vec, viennacl::linalg::detail::row_info_types info_selector)

Detailed Description

Helper functions for the CUDA linear algebra backend.


Function Documentation

viennacl::enable_if< viennacl::is_cpu_scalar<T>::value, char const &>::type viennacl::linalg::cuda::detail::arg_reference ( ,
char const &  val 
)
viennacl::enable_if< viennacl::is_cpu_scalar<T>::value, unsigned char const &>::type viennacl::linalg::cuda::detail::arg_reference ( ,
unsigned char const &  val 
)
viennacl::enable_if< viennacl::is_cpu_scalar<T>::value, short const &>::type viennacl::linalg::cuda::detail::arg_reference ( ,
short const &  val 
)
viennacl::enable_if< viennacl::is_cpu_scalar<T>::value, unsigned short const &>::type viennacl::linalg::cuda::detail::arg_reference ( ,
unsigned short const &  val 
)
viennacl::enable_if< viennacl::is_cpu_scalar<T>::value, int const &>::type viennacl::linalg::cuda::detail::arg_reference ( ,
int const &  val 
)
viennacl::enable_if< viennacl::is_cpu_scalar<T>::value, unsigned int const &>::type viennacl::linalg::cuda::detail::arg_reference ( ,
unsigned int const &  val 
)
viennacl::enable_if< viennacl::is_cpu_scalar<T>::value, long const &>::type viennacl::linalg::cuda::detail::arg_reference ( ,
long const &  val 
)
viennacl::enable_if< viennacl::is_cpu_scalar<T>::value, unsigned long const &>::type viennacl::linalg::cuda::detail::arg_reference ( ,
unsigned long const &  val 
)
viennacl::enable_if< viennacl::is_cpu_scalar<T>::value, float const &>::type viennacl::linalg::cuda::detail::arg_reference ( ,
float const &  val 
)
viennacl::enable_if< viennacl::is_cpu_scalar<T>::value, double const &>::type viennacl::linalg::cuda::detail::arg_reference ( ,
double const &  val 
)
void viennacl::linalg::cuda::detail::block_inplace_solve ( const matrix_expression< const compressed_matrix< ScalarType, MAT_ALIGNMENT >, const compressed_matrix< ScalarType, MAT_ALIGNMENT >, op_trans > &  L,
viennacl::backend::mem_handle const &  block_indices,
vcl_size_t  num_blocks,
vector_base< ScalarType > const &  ,
vector_base< ScalarType > &  vec,
viennacl::linalg::unit_lower_tag   
)
void viennacl::linalg::cuda::detail::block_inplace_solve ( const matrix_expression< const compressed_matrix< ScalarType, MAT_ALIGNMENT >, const compressed_matrix< ScalarType, MAT_ALIGNMENT >, op_trans > &  U,
viennacl::backend::mem_handle const &  block_indices,
vcl_size_t  num_blocks,
vector_base< ScalarType > const &  U_diagonal,
vector_base< ScalarType > &  vec,
viennacl::linalg::upper_tag   
)
__global__ void viennacl::linalg::cuda::detail::coo_row_info_extractor ( const unsigned int *  coords,
const T *  elements,
const unsigned int *  group_boundaries,
T *  result,
unsigned int  option 
)
__global__ void viennacl::linalg::cuda::detail::csr_row_info_extractor_kernel ( const unsigned int *  row_indices,
const unsigned int *  column_indices,
const T *  elements,
T *  result,
unsigned int  size,
unsigned int  option 
)
T* viennacl::linalg::cuda::detail::cuda_arg ( vector_base< U > &  obj)
const T* viennacl::linalg::cuda::detail::cuda_arg ( vector_base< U > const &  obj)
NumericT* viennacl::linalg::cuda::detail::cuda_arg ( matrix_base< NumericT, F > &  obj)
const NumericT* viennacl::linalg::cuda::detail::cuda_arg ( matrix_base< NumericT, F > const &  obj)
viennacl::enable_if< viennacl::is_scalar<T>::value, const ScalarType *>::type viennacl::linalg::cuda::detail::cuda_arg ( T const &  obj)
unsigned int cuda_arg ( unsigned int  val) [inline]
unsigned char viennacl::linalg::cuda::detail::cuda_arg ( unsigned char  val)
unsigned short viennacl::linalg::cuda::detail::cuda_arg ( unsigned short  val)
unsigned long viennacl::linalg::cuda::detail::cuda_arg ( unsigned long  val)
void viennacl::linalg::cuda::detail::cuda_last_error_check ( const char *  message,
const char *  file,
const int  line 
) [inline]
void viennacl::linalg::cuda::detail::inplace_solve_impl ( M1 const &  A,
bool  transpose_A,
M2 &  B,
bool  transpose_B,
SolverTag const &  tag 
)
void viennacl::linalg::cuda::detail::inplace_solve_vector_impl ( MatrixType const &  mat,
VectorType &  vec,
unsigned int  options 
)
void viennacl::linalg::cuda::detail::level_scheduling_substitute ( vector< ScalarType > &  vec,
viennacl::backend::mem_handle const &  row_index_array,
viennacl::backend::mem_handle const &  row_buffer,
viennacl::backend::mem_handle const &  col_buffer,
viennacl::backend::mem_handle const &  element_buffer,
vcl_size_t  num_rows 
)
__global__ void viennacl::linalg::cuda::detail::level_scheduling_substitute_kernel ( const unsigned int *  row_index_array,
const unsigned int *  row_indices,
const unsigned int *  column_indices,
const T *  elements,
T *  vec,
unsigned int  size 
)
unsigned int viennacl::linalg::cuda::detail::make_options ( vcl_size_t  length,
bool  reciprocal,
bool  flip_sign 
) [inline]
void viennacl::linalg::cuda::detail::prod ( const T1 &  A,
bool  transposed_A,
const T2 &  B,
bool  transposed_B,
T3 &  C,
ScalarType  alpha,
ScalarType  beta 
)
void viennacl::linalg::cuda::detail::prod_fast_kernel ( const T1 &  A,
const T2 &  B,
T3 &  C,
ScalarType  alpha,
ScalarType  beta,
std::string  kernel_name 
)
void viennacl::linalg::cuda::detail::prod_slow_kernel ( const T1 &  A,
bool  transposed_A,
const T2 &  B,
bool  transposed_B,
T3 &  C,
ScalarType  alpha,
ScalarType  beta 
)
void viennacl::linalg::cuda::detail::row_info ( compressed_matrix< ScalarType, MAT_ALIGNMENT > const &  mat,
vector_base< ScalarType > &  vec,
viennacl::linalg::detail::row_info_types  info_selector 
)
void viennacl::linalg::cuda::detail::row_info ( coordinate_matrix< ScalarType, MAT_ALIGNMENT > const &  mat,
vector_base< ScalarType > &  vec,
viennacl::linalg::detail::row_info_types  info_selector 
)