Implementations of dense direct solvers are found here. More...
#include "viennacl/forwards.h"
#include "viennacl/meta/enable_if.hpp"
#include "viennacl/vector.hpp"
#include "viennacl/vector_proxy.hpp"
#include "viennacl/matrix.hpp"
#include "viennacl/matrix_proxy.hpp"
#include "viennacl/linalg/prod.hpp"
#include "viennacl/linalg/host_based/direct_solve.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::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< NumericT > | viennacl::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< NumericT > | viennacl::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< NumericT > | viennacl::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< NumericT > | viennacl::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< NumericT > | viennacl::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< NumericT > | viennacl::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< NumericT > | viennacl::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< NumericT > | viennacl::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< NumericT > | viennacl::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... | |
Implementations of dense direct solvers are found here.
Definition in file direct_solve.hpp.
#define VIENNACL_DIRECT_SOLVE_BLOCKSIZE 128 |
Definition at line 42 of file direct_solve.hpp.