All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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

| 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.
| viennacl::linalg::cuda::detail
| Helper functions for the CUDA linear algebra backend.

## Functions

template<typename NumericT >

__global__ void

viennacl::linalg::cuda::matrix_matrix_upper_solve_kernel (const NumericT *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, NumericT *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 unit_diagonal)

template<typename NumericT >

__global__ void

viennacl::linalg::cuda::matrix_matrix_lower_solve_kernel (const NumericT *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, NumericT *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 unit_diagonal)

template<typename TagT >
bool | viennacl::linalg::cuda::detail::is_unit_solve (TagT const &tag)
bool | viennacl::linalg::cuda::detail::is_unit_solve (viennacl::linalg::unit_lower_tag)
bool | viennacl::linalg::cuda::detail::is_unit_solve (viennacl::linalg::unit_upper_tag)
template<typename TagT >
bool | viennacl::linalg::cuda::detail::is_upper_solve (TagT const &tag)
bool | viennacl::linalg::cuda::detail::is_upper_solve (viennacl::linalg::upper_tag)
bool | viennacl::linalg::cuda::detail::is_upper_solve (viennacl::linalg::unit_upper_tag)
template<typename Matrix1T , typename Matrix2T , typename SolverTagT >
void | viennacl::linalg::cuda::detail::inplace_solve_impl (Matrix1T const &A, Matrix2T &B, SolverTagT const &tag)
template<typename NumericT , typename SolverTagT >
void | viennacl::linalg::cuda::inplace_solve (matrix_base< NumericT > const &A, matrix_base< NumericT > &B, SolverTagT tag)
| Direct inplace solver for triangular systems with multiple right hand sides, i.e. A \ B (MATLAB notation). More...
template<typename NumericT >
__global__ void | viennacl::linalg::cuda::triangular_substitute_inplace_row_kernel (NumericT 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, NumericT *v, unsigned int v_start, unsigned int v_inc, unsigned int v_size, unsigned int options)
template<typename NumericT >
__global__ void | viennacl::linalg::cuda::triangular_substitute_inplace_col_kernel (NumericT 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, NumericT *v, unsigned int v_start, unsigned int v_inc, unsigned int v_size, unsigned int options)
unsigned int | viennacl::linalg::cuda::detail::get_option_for_solver_tag (viennacl::linalg::upper_tag)
unsigned int | viennacl::linalg::cuda::detail::get_option_for_solver_tag (viennacl::linalg::unit_upper_tag)
unsigned int | viennacl::linalg::cuda::detail::get_option_for_solver_tag (viennacl::linalg::lower_tag)
unsigned int | viennacl::linalg::cuda::detail::get_option_for_solver_tag (viennacl::linalg::unit_lower_tag)
template<typename MatrixT , typename VectorT >
void | viennacl::linalg::cuda::detail::inplace_solve_vector_impl (MatrixT const &mat, VectorT &vec, unsigned int options)
template<typename NumericT , typename SolverTagT >
void | viennacl::linalg::cuda::inplace_solve (matrix_base< NumericT > const &mat, vector_base< NumericT > &vec, SolverTagT)
| Direct inplace solver for dense triangular systems (non-transposed version) More...

## Detailed Description

Implementations of dense direct solvers using CUDA are found here.

Definition in file direct_solve.hpp.