ViennaCL - The Vienna Computing Library  1.7.1
Free open-source GPU-accelerated linear algebra and solver library.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
direct_solve.hpp File Reference

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

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::detail
 Namespace holding implementation details for linear algebra routines. Usually not of interest for a library user.
 

Macros

#define VIENNACL_DIRECT_SOLVE_BLOCKSIZE   128
 

Functions

template<typename NumericT , typename SolverTagT >
void viennacl::linalg::detail::inplace_solve_kernel (const matrix_base< NumericT > &A, const matrix_base< NumericT > &B, SolverTagT)
 Direct inplace solver for dense triangular systems using a single kernel launch. Matlab notation: A \ B. More...
 
template<typename NumericT , typename SolverTagT >
void viennacl::linalg::detail::inplace_solve_vec_kernel (const matrix_base< NumericT > &mat, const vector_base< NumericT > &vec, SolverTagT)
 
template<typename MatrixT1 , typename MatrixT2 , typename SolverTagT >
void viennacl::linalg::detail::inplace_solve_lower_impl (MatrixT1 const &A, MatrixT2 &B, SolverTagT)
 
template<typename MatrixT1 , typename MatrixT2 >
void viennacl::linalg::detail::inplace_solve_impl (MatrixT1 const &A, MatrixT2 &B, viennacl::linalg::lower_tag)
 
template<typename MatrixT1 , typename MatrixT2 >
void viennacl::linalg::detail::inplace_solve_impl (MatrixT1 const &A, MatrixT2 &B, viennacl::linalg::unit_lower_tag)
 
template<typename MatrixT1 , typename MatrixT2 , typename SolverTagT >
void viennacl::linalg::detail::inplace_solve_upper_impl (MatrixT1 const &A, MatrixT2 &B, SolverTagT)
 
template<typename MatrixT1 , typename MatrixT2 >
void viennacl::linalg::detail::inplace_solve_impl (MatrixT1 const &A, MatrixT2 &B, viennacl::linalg::upper_tag)
 
template<typename MatrixT1 , typename MatrixT2 >
void viennacl::linalg::detail::inplace_solve_impl (MatrixT1 const &A, MatrixT2 &B, viennacl::linalg::unit_upper_tag)
 
template<typename NumericT , typename SolverTagT >
void viennacl::linalg::inplace_solve (const matrix_base< NumericT > &A, matrix_base< NumericT > &B, SolverTagT)
 Direct inplace solver for triangular systems with multiple right hand sides, i.e. A \ B (MATLAB notation) More...
 
template<typename NumericT , typename SolverTagT >
void viennacl::linalg::inplace_solve (const matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_trans > proxy_B, SolverTagT)
 Direct inplace solver for triangular systems with multiple transposed right hand sides, i.e. A \ B^T (MATLAB notation) More...
 
template<typename NumericT , typename SolverTagT >
void viennacl::linalg::inplace_solve (const matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_trans > &proxy_A, matrix_base< NumericT > &B, SolverTagT)
 Direct inplace solver for transposed triangular systems with multiple right hand sides, i.e. A^T \ B (MATLAB notation) More...
 
template<typename NumericT , typename SolverTagT >
void viennacl::linalg::inplace_solve (matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_trans > const &proxy_A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_trans > proxy_B, SolverTagT)
 Direct inplace solver for transposed triangular systems with multiple transposed right hand sides, i.e. A^T \ B^T (MATLAB notation) More...
 
template<typename NumericT , typename SolverTagT >
matrix_base< NumericTviennacl::linalg::solve (const matrix_base< NumericT > &A, const matrix_base< NumericT > &B, SolverTagT tag)
 Convenience functions for C = solve(A, B, some_tag()); Creates a temporary result matrix and forwards the request to inplace_solve() More...
 
template<typename NumericT , typename SolverTagT >
matrix_base< NumericTviennacl::linalg::solve (const matrix_base< NumericT > &A, const matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_trans > &proxy, SolverTagT tag)
 Convenience functions for C = solve(A, B^T, some_tag()); Creates a temporary result matrix and forwards the request to inplace_solve() More...
 
template<typename NumericT , typename SolverTagT >
matrix_base< NumericTviennacl::linalg::solve (const matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_trans > &proxy, const matrix_base< NumericT > &B, SolverTagT tag)
 Convenience functions for result = solve(trans(mat), B, some_tag()); Creates a temporary result matrix and forwards the request to inplace_solve() More...
 
template<typename NumericT , typename SolverTagT >
matrix_base< NumericTviennacl::linalg::solve (const matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_trans > &proxy_A, const matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_trans > &proxy_B, SolverTagT tag)
 Convenience functions for result = solve(trans(mat), vec, some_tag()); Creates a temporary result vector and forwards the request to inplace_solve() More...
 
template<typename MatrixT1 , typename VectorT , typename SolverTagT >
void viennacl::linalg::detail::inplace_solve_lower_vec_impl (MatrixT1 const &A, VectorT &b, SolverTagT)
 
template<typename MatrixT1 , typename VectorT >
void viennacl::linalg::detail::inplace_solve_vec_impl (MatrixT1 const &A, VectorT &B, viennacl::linalg::lower_tag)
 
template<typename MatrixT1 , typename VectorT >
void viennacl::linalg::detail::inplace_solve_vec_impl (MatrixT1 const &A, VectorT &B, viennacl::linalg::unit_lower_tag)
 
template<typename MatrixT1 , typename VectorT , typename SolverTagT >
void viennacl::linalg::detail::inplace_solve_upper_vec_impl (MatrixT1 const &A, VectorT &b, SolverTagT)
 
template<typename MatrixT1 , typename VectorT >
void viennacl::linalg::detail::inplace_solve_vec_impl (MatrixT1 const &A, VectorT &b, viennacl::linalg::upper_tag)
 
template<typename MatrixT1 , typename VectorT >
void viennacl::linalg::detail::inplace_solve_vec_impl (MatrixT1 const &A, VectorT &b, viennacl::linalg::unit_upper_tag)
 
template<typename NumericT , typename SolverTagT >
void viennacl::linalg::inplace_solve (const matrix_base< NumericT > &mat, vector_base< NumericT > &vec, SolverTagT const &tag)
 Inplace solution of a triangular system. Matlab notation A \ b. More...
 
template<typename NumericT , typename SolverTagT >
void viennacl::linalg::inplace_solve (matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_trans > const &proxy, vector_base< NumericT > &vec, SolverTagT const &tag)
 Inplace solution of a triangular system with transposed system matrix.. Matlab notation A' \ b. More...
 
template<typename NumericT >
vector< NumericTviennacl::linalg::solve (const matrix_base< NumericT > &mat, const vector_base< NumericT > &vec, viennacl::linalg::upper_tag const &tag)
 Convenience function for result = solve(mat, vec, upper_tag()); for an upper triangular solve. More...
 
template<typename NumericT >
vector< NumericTviennacl::linalg::solve (const matrix_base< NumericT > &mat, const vector_base< NumericT > &vec, viennacl::linalg::unit_upper_tag const &tag)
 Convenience function for result = solve(mat, vec, upper_tag()); for an upper triangular solve with unit diagonal. More...
 
template<typename NumericT >
vector< NumericTviennacl::linalg::solve (const matrix_base< NumericT > &mat, const vector_base< NumericT > &vec, viennacl::linalg::lower_tag const &tag)
 Convenience function for result = solve(mat, vec, upper_tag()); for a lower triangular solve. More...
 
template<typename NumericT >
vector< NumericTviennacl::linalg::solve (const matrix_base< NumericT > &mat, const vector_base< NumericT > &vec, viennacl::linalg::unit_lower_tag const &tag)
 Convenience function for result = solve(mat, vec, upper_tag()); for a lower triangular solve with unit diagonal. More...
 
template<typename NumericT , typename SolverTagT >
vector< NumericTviennacl::linalg::solve (const matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_trans > &proxy, const vector_base< NumericT > &vec, SolverTagT const &tag)
 Convenience functions for result = solve(trans(mat), vec, some_tag()); Creates a temporary result vector and forwards the request to inplace_solve() More...
 

Detailed Description

Implementations of dense direct solvers are found here.

Definition in file direct_solve.hpp.

Macro Definition Documentation

#define VIENNACL_DIRECT_SOLVE_BLOCKSIZE   128

Definition at line 42 of file direct_solve.hpp.