All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
matrix_operations.hpp File Reference

Implementations of dense matrix related operations, including matrix-vector products, using CUDA. More...

`#include "viennacl/forwards.h"`
`#include "viennacl/scalar.hpp"`
`#include "viennacl/vector.hpp"`
`#include "viennacl/vector_proxy.hpp"`
`#include "viennacl/tools/tools.hpp"`
`#include "viennacl/meta/enable_if.hpp"`
`#include "viennacl/meta/predicate.hpp"`
`#include "viennacl/meta/result_of.hpp"`
`#include "viennacl/traits/size.hpp"`
`#include "viennacl/traits/start.hpp"`
`#include "viennacl/traits/handle.hpp"`
`#include "viennacl/traits/stride.hpp"`
`#include "viennacl/linalg/cuda/common.hpp"`
`#include "viennacl/linalg/cuda/vector_operations.hpp"`
`#include "viennacl/linalg/cuda/matrix_operations_row.hpp"`
`#include "viennacl/linalg/cuda/matrix_operations_col.hpp"`
`#include "viennacl/linalg/cuda/matrix_operations_prod.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 DestNumericT , typename SrcNumericT >
void | viennacl::linalg::cuda::convert (matrix_base< DestNumericT > &mat1, matrix_base< SrcNumericT > const &mat2)
template<typename NumericT , typename SizeT , typename DistanceT >
void | viennacl::linalg::cuda::trans (matrix_expression< const matrix_base< NumericT, SizeT, DistanceT >, const matrix_base< NumericT, SizeT, DistanceT >, op_trans > const &proxy, matrix_base< NumericT > &temp_trans)
template<typename NumericT , typename ScalarT >
void | viennacl::linalg::cuda::am (matrix_base< NumericT > &mat1, matrix_base< NumericT > const &mat2, ScalarT const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha)
template<typename NumericT , typename ScalarT1 , typename ScalarT2 >
void | viennacl::linalg::cuda::ambm (matrix_base< NumericT > &mat1, matrix_base< NumericT > const &mat2, ScalarT1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha, matrix_base< NumericT > const &mat3, ScalarT2 const &beta, vcl_size_t len_beta, bool reciprocal_beta, bool flip_sign_beta)
template<typename NumericT , typename ScalarT1 , typename ScalarT2 >
void | viennacl::linalg::cuda::ambm_m (matrix_base< NumericT > &mat1, matrix_base< NumericT > const &mat2, ScalarT1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha, matrix_base< NumericT > const &mat3, ScalarT2 const &beta, vcl_size_t len_beta, bool reciprocal_beta, bool flip_sign_beta)
template<typename NumericT >
void | viennacl::linalg::cuda::matrix_assign (matrix_base< NumericT > &mat, NumericT s, bool clear=false)
template<typename NumericT >
void | viennacl::linalg::cuda::matrix_diagonal_assign (matrix_base< NumericT > &mat, NumericT s)
template<typename NumericT >
void | viennacl::linalg::cuda::matrix_diag_from_vector (const vector_base< NumericT > &vec, int k, matrix_base< NumericT > &mat)
template<typename NumericT >
void | viennacl::linalg::cuda::matrix_diag_to_vector (matrix_base< NumericT > const &mat, int k, vector_base< NumericT > &vec)
template<typename NumericT >
void | viennacl::linalg::cuda::matrix_row (matrix_base< NumericT > const &mat, unsigned int i, vector_base< NumericT > &vec)
template<typename NumericT >
void | viennacl::linalg::cuda::matrix_column (const matrix_base< NumericT > &mat, unsigned int j, vector_base< NumericT > &vec)
template<typename NumericT , typename SizeT , typename OpT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT, SizeT > &A, matrix_expression< const matrix_base< NumericT, SizeT >, const matrix_base< NumericT, SizeT >, op_element_binary< OpT > > const &proxy)
template<typename SizeT , typename OpT >
void | viennacl::linalg::cuda::element_op (matrix_base< float, SizeT > &A, matrix_expression< const matrix_base< float, SizeT >, const matrix_base< float, SizeT >, op_element_binary< OpT > > const &proxy)
template<typename SizeT , typename OpT >
void | viennacl::linalg::cuda::element_op (matrix_base< double, SizeT > &A, matrix_expression< const matrix_base< double, SizeT >, const matrix_base< double, SizeT >, op_element_binary< OpT > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_abs > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_acos > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_asin > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_atan > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_ceil > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_cos > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_cosh > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_exp > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_fabs > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_floor > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_log > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_log10 > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_sin > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_sinh > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_sqrt > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_tan > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::element_op (matrix_base< NumericT > &A, matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_element_unary< op_tanh > > const &proxy)
template<typename NumericT >
void | viennacl::linalg::cuda::prod_impl (const matrix_base< NumericT > &mat, bool mat_transpose, const vector_base< NumericT > &vec, vector_base< NumericT > &result)
| Carries out matrix-vector multiplication. More...
template<typename MatrixT1 , typename MatrixT2 , typename MatrixT3 , typename ScalarT >
void | viennacl::linalg::cuda::detail::prod_slow_kernel (const MatrixT1 &A, bool transposed_A, const MatrixT2 &B, bool transposed_B, MatrixT3 &C, ScalarT alpha, ScalarT beta)
template<typename MatrixT1 , typename MatrixT2 , typename MatrixT3 , typename ScalarT >
void | viennacl::linalg::cuda::detail::prod (const MatrixT1 &A, bool transposed_A, const MatrixT2 &B, bool transposed_B, MatrixT3 &C, ScalarT alpha, ScalarT beta)
template<typename NumericT , typename ScalarT >
void | viennacl::linalg::cuda::prod_impl (const matrix_base< NumericT > &A, bool trans_A, const matrix_base< NumericT > &B, bool trans_B, matrix_base< NumericT > &C, ScalarT alpha, ScalarT beta)
| Carries out matrix-matrix multiplication. More...
template<typename NumericT , typename ScalarT >
void | viennacl::linalg::cuda::scaled_rank_1_update (matrix_base< NumericT > &mat1, ScalarT const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha, const vector_base< NumericT > &vec1, const vector_base< NumericT > &vec2)
| The implementation of the operation mat += alpha * vec1 * vec2^T, i.e. a scaled rank 1 update. More...
template<typename NumericT , typename VectorType >
void | viennacl::linalg::cuda::bidiag_pack (matrix_base< NumericT > &A, VectorType &dh, VectorType &sh)
| This function stores the diagonal and the superdiagonal of a matrix in two vectors. More...
template<typename NumericT >
void | viennacl::linalg::cuda::copy_vec (matrix_base< NumericT > &A, vector_base< NumericT > &V, vcl_size_t row_start, vcl_size_t col_start, bool copy_col)
| This function copies a row or a column from a matrix to a vector. More...
template<typename NumericT >
void | viennacl::linalg::cuda::house_update_A_left (matrix_base< NumericT > &A, vector_base< NumericT > &D, vcl_size_t start)
| This function applies a householder transformation to a matrix. A <- P * A with a householder reflection P. More...
template<typename NumericT >
void | viennacl::linalg::cuda::house_update_A_right (matrix_base< NumericT > &A, vector_base< NumericT > &D)
| This function applies a householder transformation to a matrix: A <- A * P with a householder reflection P. More...
template<typename NumericT >
void | viennacl::linalg::cuda::house_update_QL (matrix_base< NumericT > &Q, vector_base< NumericT > &D, vcl_size_t A_size1)
| This function updates the matrix Q, which is needed for the computation of the eigenvectors. More...
template<typename NumericT >
void | viennacl::linalg::cuda::givens_next (matrix_base< NumericT > &Q, vector_base< NumericT > &tmp1, vector_base< NumericT > &tmp2, int l, int m)
| This function updates the matrix Q. It is part of the tql2 algorithm. More...

## Detailed Description

Implementations of dense matrix related operations, including matrix-vector products, using CUDA.

Definition in file matrix_operations.hpp.