ViennaCL - The Vienna Computing Library  1.7.0
Free open-source GPU-accelerated linear algebra and solver library.
sparse_matrix_operations.hpp File Reference

Implementations of operations using sparse matrices on the CPU using a single thread or OpenMP. 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::host_based
 Holds all compute kernels with conventional host-based execution (buffers in CPU RAM).
 
 viennacl::linalg::host_based::detail
 Helper functions for the host-based linear algebra backend.
 

Functions

template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::detail::row_info (compressed_matrix< NumericT, AlignmentV > const &mat, vector_base< NumericT > &vec, viennacl::linalg::detail::row_info_types info_selector)
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::prod_impl (const viennacl::compressed_matrix< NumericT, AlignmentV > &mat, const viennacl::vector_base< NumericT > &vec, viennacl::vector_base< NumericT > &result)
 Carries out matrix-vector multiplication with a compressed_matrix. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::prod_impl (const viennacl::compressed_matrix< NumericT, AlignmentV > &sp_mat, const viennacl::matrix_base< NumericT > &d_mat, viennacl::matrix_base< NumericT > &result)
 Carries out sparse_matrix-matrix multiplication first matrix being compressed. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::prod_impl (const viennacl::compressed_matrix< NumericT, AlignmentV > &sp_mat, const viennacl::matrix_expression< const viennacl::matrix_base< NumericT >, const viennacl::matrix_base< NumericT >, viennacl::op_trans > &d_mat, viennacl::matrix_base< NumericT > &result)
 Carries out matrix-trans(matrix) multiplication first matrix being compressed and the second transposed. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::prod_impl (viennacl::compressed_matrix< NumericT, AlignmentV > const &A, viennacl::compressed_matrix< NumericT, AlignmentV > const &B, viennacl::compressed_matrix< NumericT, AlignmentV > &C)
 Carries out sparse_matrix-sparse_matrix multiplication for CSR matrices. More...
 
template<typename NumericT , typename ConstScalarArrayT , typename ScalarArrayT , typename IndexArrayT >
void viennacl::linalg::host_based::detail::csr_inplace_solve (IndexArrayT const &row_buffer, IndexArrayT const &col_buffer, ConstScalarArrayT const &element_buffer, ScalarArrayT &vec_buffer, vcl_size_t num_cols, viennacl::linalg::unit_lower_tag)
 
template<typename NumericT , typename ConstScalarArrayT , typename ScalarArrayT , typename IndexArrayT >
void viennacl::linalg::host_based::detail::csr_inplace_solve (IndexArrayT const &row_buffer, IndexArrayT const &col_buffer, ConstScalarArrayT const &element_buffer, ScalarArrayT &vec_buffer, vcl_size_t num_cols, viennacl::linalg::lower_tag)
 
template<typename NumericT , typename ConstScalarArrayT , typename ScalarArrayT , typename IndexArrayT >
void viennacl::linalg::host_based::detail::csr_inplace_solve (IndexArrayT const &row_buffer, IndexArrayT const &col_buffer, ConstScalarArrayT const &element_buffer, ScalarArrayT &vec_buffer, vcl_size_t num_cols, viennacl::linalg::unit_upper_tag)
 
template<typename NumericT , typename ConstScalarArrayT , typename ScalarArrayT , typename IndexArrayT >
void viennacl::linalg::host_based::detail::csr_inplace_solve (IndexArrayT const &row_buffer, IndexArrayT const &col_buffer, ConstScalarArrayT const &element_buffer, ScalarArrayT &vec_buffer, vcl_size_t num_cols, viennacl::linalg::upper_tag)
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::inplace_solve (compressed_matrix< NumericT, AlignmentV > const &L, vector_base< NumericT > &vec, viennacl::linalg::unit_lower_tag tag)
 Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU substitutions. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::inplace_solve (compressed_matrix< NumericT, AlignmentV > const &L, vector_base< NumericT > &vec, viennacl::linalg::lower_tag tag)
 Inplace solution of a lower triangular compressed_matrix. Typically used for LU substitutions. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::inplace_solve (compressed_matrix< NumericT, AlignmentV > const &U, vector_base< NumericT > &vec, viennacl::linalg::unit_upper_tag tag)
 Inplace solution of a upper triangular compressed_matrix with unit diagonal. Typically used for LU substitutions. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::inplace_solve (compressed_matrix< NumericT, AlignmentV > const &U, vector_base< NumericT > &vec, viennacl::linalg::upper_tag tag)
 Inplace solution of a upper triangular compressed_matrix. Typically used for LU substitutions. More...
 
template<typename NumericT , typename ConstScalarArrayT , typename ScalarArrayT , typename IndexArrayT >
void viennacl::linalg::host_based::detail::csr_trans_inplace_solve (IndexArrayT const &row_buffer, IndexArrayT const &col_buffer, ConstScalarArrayT const &element_buffer, ScalarArrayT &vec_buffer, vcl_size_t num_cols, viennacl::linalg::unit_lower_tag)
 
template<typename NumericT , typename ConstScalarArrayT , typename ScalarArrayT , typename IndexArrayT >
void viennacl::linalg::host_based::detail::csr_trans_inplace_solve (IndexArrayT const &row_buffer, IndexArrayT const &col_buffer, ConstScalarArrayT const &element_buffer, ScalarArrayT &vec_buffer, vcl_size_t num_cols, viennacl::linalg::lower_tag)
 
template<typename NumericT , typename ConstScalarArrayT , typename ScalarArrayT , typename IndexArrayT >
void viennacl::linalg::host_based::detail::csr_trans_inplace_solve (IndexArrayT const &row_buffer, IndexArrayT const &col_buffer, ConstScalarArrayT const &element_buffer, ScalarArrayT &vec_buffer, vcl_size_t num_cols, viennacl::linalg::unit_upper_tag)
 
template<typename NumericT , typename ConstScalarArrayT , typename ScalarArrayT , typename IndexArrayT >
void viennacl::linalg::host_based::detail::csr_trans_inplace_solve (IndexArrayT const &row_buffer, IndexArrayT const &col_buffer, ConstScalarArrayT const &element_buffer, ScalarArrayT &vec_buffer, vcl_size_t num_cols, viennacl::linalg::upper_tag)
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::detail::block_inplace_solve (const matrix_expression< const compressed_matrix< NumericT, AlignmentV >, const compressed_matrix< NumericT, AlignmentV >, op_trans > &L, viennacl::backend::mem_handle const &, vcl_size_t, vector_base< NumericT > const &, vector_base< NumericT > &vec, viennacl::linalg::unit_lower_tag)
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::detail::block_inplace_solve (const matrix_expression< const compressed_matrix< NumericT, AlignmentV >, const compressed_matrix< NumericT, AlignmentV >, op_trans > &L, viennacl::backend::mem_handle const &, vcl_size_t, vector_base< NumericT > const &L_diagonal, vector_base< NumericT > &vec, viennacl::linalg::lower_tag)
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::detail::block_inplace_solve (const matrix_expression< const compressed_matrix< NumericT, AlignmentV >, const compressed_matrix< NumericT, AlignmentV >, op_trans > &U, viennacl::backend::mem_handle const &, vcl_size_t, vector_base< NumericT > const &, vector_base< NumericT > &vec, viennacl::linalg::unit_upper_tag)
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::detail::block_inplace_solve (const matrix_expression< const compressed_matrix< NumericT, AlignmentV >, const compressed_matrix< NumericT, AlignmentV >, op_trans > &U, viennacl::backend::mem_handle const &, vcl_size_t, vector_base< NumericT > const &U_diagonal, vector_base< NumericT > &vec, viennacl::linalg::upper_tag)
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::inplace_solve (matrix_expression< const compressed_matrix< NumericT, AlignmentV >, const compressed_matrix< NumericT, AlignmentV >, op_trans > const &proxy, vector_base< NumericT > &vec, viennacl::linalg::unit_lower_tag tag)
 Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU substitutions. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::inplace_solve (matrix_expression< const compressed_matrix< NumericT, AlignmentV >, const compressed_matrix< NumericT, AlignmentV >, op_trans > const &proxy, vector_base< NumericT > &vec, viennacl::linalg::lower_tag tag)
 Inplace solution of a lower triangular compressed_matrix. Typically used for LU substitutions. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::inplace_solve (matrix_expression< const compressed_matrix< NumericT, AlignmentV >, const compressed_matrix< NumericT, AlignmentV >, op_trans > const &proxy, vector_base< NumericT > &vec, viennacl::linalg::unit_upper_tag tag)
 Inplace solution of a upper triangular compressed_matrix with unit diagonal. Typically used for LU substitutions. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::inplace_solve (matrix_expression< const compressed_matrix< NumericT, AlignmentV >, const compressed_matrix< NumericT, AlignmentV >, op_trans > const &proxy, vector_base< NumericT > &vec, viennacl::linalg::upper_tag tag)
 Inplace solution of a upper triangular compressed_matrix with unit diagonal. Typically used for LU substitutions. More...
 
template<typename NumericT >
void viennacl::linalg::host_based::prod_impl (const viennacl::compressed_compressed_matrix< NumericT > &mat, const viennacl::vector_base< NumericT > &vec, viennacl::vector_base< NumericT > &result)
 Carries out matrix-vector multiplication with a compressed_matrix. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::detail::row_info (coordinate_matrix< NumericT, AlignmentV > const &mat, vector_base< NumericT > &vec, viennacl::linalg::detail::row_info_types info_selector)
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::prod_impl (const viennacl::coordinate_matrix< NumericT, AlignmentV > &mat, const viennacl::vector_base< NumericT > &vec, viennacl::vector_base< NumericT > &result)
 Carries out matrix-vector multiplication with a coordinate_matrix. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::prod_impl (const viennacl::coordinate_matrix< NumericT, AlignmentV > &sp_mat, const viennacl::matrix_base< NumericT > &d_mat, viennacl::matrix_base< NumericT > &result)
 Carries out Compressed Matrix(COO)-Dense Matrix multiplication. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::prod_impl (const viennacl::coordinate_matrix< NumericT, AlignmentV > &sp_mat, const viennacl::matrix_expression< const viennacl::matrix_base< NumericT >, const viennacl::matrix_base< NumericT >, viennacl::op_trans > &d_mat, viennacl::matrix_base< NumericT > &result)
 Carries out Compressed Matrix(COO)-Dense Transposed Matrix multiplication. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::prod_impl (const viennacl::ell_matrix< NumericT, AlignmentV > &mat, const viennacl::vector_base< NumericT > &vec, viennacl::vector_base< NumericT > &result)
 Carries out matrix-vector multiplication with a ell_matrix. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::prod_impl (const viennacl::ell_matrix< NumericT, AlignmentV > &sp_mat, const viennacl::matrix_base< NumericT > &d_mat, viennacl::matrix_base< NumericT > &result)
 Carries out ell_matrix-d_matrix multiplication. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::prod_impl (const viennacl::ell_matrix< NumericT, AlignmentV > &sp_mat, const viennacl::matrix_expression< const viennacl::matrix_base< NumericT >, const viennacl::matrix_base< NumericT >, viennacl::op_trans > &d_mat, viennacl::matrix_base< NumericT > &result)
 Carries out matrix-trans(matrix) multiplication first matrix being sparse ell and the second dense transposed. More...
 
template<typename NumericT , typename IndexT >
void viennacl::linalg::host_based::prod_impl (const viennacl::sliced_ell_matrix< NumericT, IndexT > &mat, const viennacl::vector_base< NumericT > &vec, viennacl::vector_base< NumericT > &result)
 Carries out matrix-vector multiplication with a sliced_ell_matrix. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::prod_impl (const viennacl::hyb_matrix< NumericT, AlignmentV > &mat, const viennacl::vector_base< NumericT > &vec, viennacl::vector_base< NumericT > &result)
 Carries out matrix-vector multiplication with a hyb_matrix. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::prod_impl (const viennacl::hyb_matrix< NumericT, AlignmentV > &mat, const viennacl::matrix_base< NumericT > &d_mat, viennacl::matrix_base< NumericT > &result)
 Carries out sparse-matrix-dense-matrix multiplication with a hyb_matrix. More...
 
template<typename NumericT , unsigned int AlignmentV>
void viennacl::linalg::host_based::prod_impl (const viennacl::hyb_matrix< NumericT, AlignmentV > &mat, const viennacl::matrix_expression< const viennacl::matrix_base< NumericT >, const viennacl::matrix_base< NumericT >, viennacl::op_trans > &d_mat, viennacl::matrix_base< NumericT > &result)
 Carries out sparse-matrix-transposed-dense-matrix multiplication with a hyb_matrix. More...
 

Detailed Description

Implementations of operations using sparse matrices on the CPU using a single thread or OpenMP.

Definition in file sparse_matrix_operations.hpp.