ViennaCL - The Vienna Computing Library  1.5.1
Namespaces | Functions
viennacl/linalg/cuda/direct_solve.hpp File Reference

Implementations of dense direct solvers using CUDA are found here. More...

#include "viennacl/forwards.h"
#include "viennacl/vector.hpp"
#include "viennacl/matrix.hpp"
#include "viennacl/linalg/cuda/common.hpp"

Go to the source code of this file.

Namespaces

namespace  viennacl
 

Main namespace in ViennaCL. Holds all the basic types such as vector, matrix, etc. and defines operations upon them.


namespace  viennacl::linalg
 

Provides all linear algebra operations which are not covered by operator overloads.


namespace  viennacl::linalg::cuda
 

Holds all CUDA compute kernels used by ViennaCL.


namespace  viennacl::linalg::cuda::detail
 

Helper functions for the CUDA linear algebra backend.


Functions

template<typename T >
__global__ void matrix_matrix_upper_solve_kernel (const T *A, unsigned int A_start1, unsigned int A_start2, unsigned int A_inc1, unsigned int A_inc2, unsigned int A_size1, unsigned int A_size2, unsigned int A_internal_size1, unsigned int A_internal_size2, bool row_major_A, bool transpose_A, T *B, unsigned int B_start1, unsigned int B_start2, unsigned int B_inc1, unsigned int B_inc2, unsigned int B_size1, unsigned int B_size2, unsigned int B_internal_size1, unsigned int B_internal_size2, bool row_major_B, bool transpose_B, bool unit_diagonal)
template<typename T >
__global__ void matrix_matrix_lower_solve_kernel (const T *A, unsigned int A_start1, unsigned int A_start2, unsigned int A_inc1, unsigned int A_inc2, unsigned int A_size1, unsigned int A_size2, unsigned int A_internal_size1, unsigned int A_internal_size2, bool row_major_A, bool transpose_A, T *B, unsigned int B_start1, unsigned int B_start2, unsigned int B_inc1, unsigned int B_inc2, unsigned int B_size1, unsigned int B_size2, unsigned int B_internal_size1, unsigned int B_internal_size2, bool row_major_B, bool transpose_B, bool unit_diagonal)
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)
template<typename NumericT , typename F1 , typename F2 , typename SOLVERTAG >
void inplace_solve (const matrix_base< NumericT, F1 > &A, matrix_base< NumericT, F2 > &B, SOLVERTAG tag)
 Direct inplace solver for triangular systems with multiple right hand sides, i.e. A \ B (MATLAB notation)
template<typename NumericT , typename F1 , typename F2 , typename SOLVERTAG >
void inplace_solve (const matrix_base< NumericT, F1 > &A, matrix_expression< const matrix_base< NumericT, F2 >, const matrix_base< NumericT, F2 >, op_trans > proxy_B, SOLVERTAG tag)
 Direct inplace solver for triangular systems with multiple transposed right hand sides, i.e. A \ B^T (MATLAB notation)
template<typename NumericT , typename F1 , typename F2 , typename SOLVERTAG >
void inplace_solve (const matrix_expression< const matrix_base< NumericT, F1 >, const matrix_base< NumericT, F1 >, op_trans > &proxy_A, matrix_base< NumericT, F2 > &B, SOLVERTAG tag)
 Direct inplace solver for transposed triangular systems with multiple right hand sides, i.e. A^T \ B (MATLAB notation)
template<typename NumericT , typename F1 , typename F2 , typename SOLVERTAG >
void inplace_solve (const matrix_expression< const matrix_base< NumericT, F1 >, const matrix_base< NumericT, F1 >, op_trans > &proxy_A, matrix_expression< const matrix_base< NumericT, F2 >, const matrix_base< NumericT, F2 >, op_trans > proxy_B, SOLVERTAG tag)
 Direct inplace solver for transposed triangular systems with multiple transposed right hand sides, i.e. A^T \ B^T (MATLAB notation)
template<typename T >
__global__ void triangular_substitute_inplace_row_kernel (T const *A, unsigned int A_start1, unsigned int A_start2, unsigned int A_inc1, unsigned int A_inc2, unsigned int A_size1, unsigned int A_size2, unsigned int A_internal_size1, unsigned int A_internal_size2, T *v, unsigned int v_start, unsigned int v_inc, unsigned int v_size, unsigned int options)
template<typename T >
__global__ void triangular_substitute_inplace_col_kernel (T const *A, unsigned int A_start1, unsigned int A_start2, unsigned int A_inc1, unsigned int A_inc2, unsigned int A_size1, unsigned int A_size2, unsigned int A_internal_size1, unsigned int A_internal_size2, T *v, unsigned int v_start, unsigned int v_inc, unsigned int v_size, unsigned int options)
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 NumericT , typename F , typename SOLVERTAG >
void inplace_solve (const matrix_base< NumericT, F > &mat, vector_base< NumericT > &vec, SOLVERTAG)
 Direct inplace solver for dense triangular systems (non-transposed version)
template<typename NumericT , typename F , typename SOLVERTAG >
void inplace_solve (const matrix_expression< const matrix_base< NumericT, F >, const matrix_base< NumericT, F >, op_trans > &proxy, vector_base< NumericT > &vec, SOLVERTAG)
 Direct inplace solver for dense triangular systems (transposed version)

Detailed Description

Implementations of dense direct solvers using CUDA are found here.