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
iterative_operations.hpp File Reference

Implementations of specialized kernels for fast iterative solvers using OpenMP on the CPU. 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.
 

Macros

#define VIENNACL_OPENMP_VECTOR_MIN_SIZE   5000
 

Functions

template<typename NumericT >
void viennacl::linalg::host_based::detail::pipelined_prod_impl (compressed_matrix< NumericT > const &A, vector_base< NumericT > const &p, vector_base< NumericT > &Ap, NumericT const *r0star, vector_base< NumericT > &inner_prod_buffer, vcl_size_t buffer_chunk_size, vcl_size_t buffer_chunk_offset)
 Implementation of a fused matrix-vector product with a compressed_matrix for an efficient pipelined CG algorithm. More...
 
template<typename NumericT >
void viennacl::linalg::host_based::detail::pipelined_prod_impl (coordinate_matrix< NumericT > const &A, vector_base< NumericT > const &p, vector_base< NumericT > &Ap, NumericT const *r0star, vector_base< NumericT > &inner_prod_buffer, vcl_size_t buffer_chunk_size, vcl_size_t buffer_chunk_offset)
 Implementation of a fused matrix-vector product with a coordinate_matrix for an efficient pipelined CG algorithm. More...
 
template<typename NumericT >
void viennacl::linalg::host_based::detail::pipelined_prod_impl (ell_matrix< NumericT > const &A, vector_base< NumericT > const &p, vector_base< NumericT > &Ap, NumericT const *r0star, vector_base< NumericT > &inner_prod_buffer, vcl_size_t buffer_chunk_size, vcl_size_t buffer_chunk_offset)
 Implementation of a fused matrix-vector product with an ell_matrix for an efficient pipelined CG algorithm. More...
 
template<typename NumericT , typename IndexT >
void viennacl::linalg::host_based::detail::pipelined_prod_impl (sliced_ell_matrix< NumericT, IndexT > const &A, vector_base< NumericT > const &p, vector_base< NumericT > &Ap, NumericT const *r0star, vector_base< NumericT > &inner_prod_buffer, vcl_size_t buffer_chunk_size, vcl_size_t buffer_chunk_offset)
 Implementation of a fused matrix-vector product with an sliced_ell_matrix for an efficient pipelined CG algorithm. More...
 
template<typename NumericT >
void viennacl::linalg::host_based::detail::pipelined_prod_impl (hyb_matrix< NumericT > const &A, vector_base< NumericT > const &p, vector_base< NumericT > &Ap, NumericT const *r0star, vector_base< NumericT > &inner_prod_buffer, vcl_size_t buffer_chunk_size, vcl_size_t buffer_chunk_offset)
 Implementation of a fused matrix-vector product with an hyb_matrix for an efficient pipelined CG algorithm. More...
 
template<typename NumericT >
void viennacl::linalg::host_based::pipelined_cg_vector_update (vector_base< NumericT > &result, NumericT alpha, vector_base< NumericT > &p, vector_base< NumericT > &r, vector_base< NumericT > const &Ap, NumericT beta, vector_base< NumericT > &inner_prod_buffer)
 Performs a joint vector update operation needed for an efficient pipelined CG algorithm. More...
 
template<typename NumericT >
void viennacl::linalg::host_based::pipelined_cg_prod (compressed_matrix< NumericT > const &A, vector_base< NumericT > const &p, vector_base< NumericT > &Ap, vector_base< NumericT > &inner_prod_buffer)
 Performs a fused matrix-vector product with a compressed_matrix for an efficient pipelined CG algorithm. More...
 
template<typename NumericT >
void viennacl::linalg::host_based::pipelined_cg_prod (coordinate_matrix< NumericT > const &A, vector_base< NumericT > const &p, vector_base< NumericT > &Ap, vector_base< NumericT > &inner_prod_buffer)
 Performs a fused matrix-vector product with a coordinate_matrix for an efficient pipelined CG algorithm. More...
 
template<typename NumericT >
void viennacl::linalg::host_based::pipelined_cg_prod (ell_matrix< NumericT > const &A, vector_base< NumericT > const &p, vector_base< NumericT > &Ap, vector_base< NumericT > &inner_prod_buffer)
 Performs a fused matrix-vector product with an ell_matrix for an efficient pipelined CG algorithm. More...
 
template<typename NumericT , typename IndexT >
void viennacl::linalg::host_based::pipelined_cg_prod (sliced_ell_matrix< NumericT, IndexT > const &A, vector_base< NumericT > const &p, vector_base< NumericT > &Ap, vector_base< NumericT > &inner_prod_buffer)
 Performs a fused matrix-vector product with an sliced_ell_matrix for an efficient pipelined CG algorithm. More...
 
template<typename NumericT >
void viennacl::linalg::host_based::pipelined_cg_prod (hyb_matrix< NumericT > const &A, vector_base< NumericT > const &p, vector_base< NumericT > &Ap, vector_base< NumericT > &inner_prod_buffer)
 Performs a fused matrix-vector product with an hyb_matrix for an efficient pipelined CG algorithm. More...
 
template<typename NumericT >
void viennacl::linalg::host_based::pipelined_bicgstab_update_s (vector_base< NumericT > &s, vector_base< NumericT > &r, vector_base< NumericT > const &Ap, vector_base< NumericT > &inner_prod_buffer, vcl_size_t buffer_chunk_size, vcl_size_t buffer_chunk_offset)
 Performs a joint vector update operation needed for an efficient pipelined BiCGStab algorithm. More...
 
template<typename NumericT >
void viennacl::linalg::host_based::pipelined_bicgstab_vector_update (vector_base< NumericT > &result, NumericT alpha, vector_base< NumericT > &p, NumericT omega, vector_base< NumericT > const &s, vector_base< NumericT > &residual, vector_base< NumericT > const &As, NumericT beta, vector_base< NumericT > const &Ap, vector_base< NumericT > const &r0star, vector_base< NumericT > &inner_prod_buffer, vcl_size_t buffer_chunk_size)
 Performs a joint vector update operation needed for an efficient pipelined BiCGStab algorithm. More...
 
template<typename NumericT >
void viennacl::linalg::host_based::pipelined_bicgstab_prod (compressed_matrix< NumericT > const &A, vector_base< NumericT > const &p, vector_base< NumericT > &Ap, vector_base< NumericT > const &r0star, vector_base< NumericT > &inner_prod_buffer, vcl_size_t buffer_chunk_size, vcl_size_t buffer_chunk_offset)
 Performs a fused matrix-vector product with a compressed_matrix for an efficient pipelined BiCGStab algorithm. More...
 
template<typename NumericT >
void viennacl::linalg::host_based::pipelined_bicgstab_prod (coordinate_matrix< NumericT > const &A, vector_base< NumericT > const &p, vector_base< NumericT > &Ap, vector_base< NumericT > const &r0star, vector_base< NumericT > &inner_prod_buffer, vcl_size_t buffer_chunk_size, vcl_size_t buffer_chunk_offset)
 Performs a fused matrix-vector product with a coordinate_matrix for an efficient pipelined BiCGStab algorithm. More...
 
template<typename NumericT >
void viennacl::linalg::host_based::pipelined_bicgstab_prod (ell_matrix< NumericT > const &A, vector_base< NumericT > const &p, vector_base< NumericT > &Ap, vector_base< NumericT > const &r0star, vector_base< NumericT > &inner_prod_buffer, vcl_size_t buffer_chunk_size, vcl_size_t buffer_chunk_offset)
 Performs a fused matrix-vector product with an ell_matrix for an efficient pipelined BiCGStab algorithm. More...
 
template<typename NumericT , typename IndexT >
void viennacl::linalg::host_based::pipelined_bicgstab_prod (sliced_ell_matrix< NumericT, IndexT > const &A, vector_base< NumericT > const &p, vector_base< NumericT > &Ap, vector_base< NumericT > const &r0star, vector_base< NumericT > &inner_prod_buffer, vcl_size_t buffer_chunk_size, vcl_size_t buffer_chunk_offset)
 Performs a fused matrix-vector product with a sliced_ell_matrix for an efficient pipelined BiCGStab algorithm. More...
 
template<typename NumericT >
void viennacl::linalg::host_based::pipelined_bicgstab_prod (hyb_matrix< NumericT > const &A, vector_base< NumericT > const &p, vector_base< NumericT > &Ap, vector_base< NumericT > const &r0star, vector_base< NumericT > &inner_prod_buffer, vcl_size_t buffer_chunk_size, vcl_size_t buffer_chunk_offset)
 Performs a fused matrix-vector product with a hyb_matrix for an efficient pipelined BiCGStab algorithm. More...
 
template<typename T >
void viennacl::linalg::host_based::pipelined_gmres_normalize_vk (vector_base< T > &v_k, vector_base< T > const &residual, vector_base< T > &R_buffer, vcl_size_t offset_in_R, vector_base< T > const &inner_prod_buffer, vector_base< T > &r_dot_vk_buffer, vcl_size_t buffer_chunk_size, vcl_size_t buffer_chunk_offset)
 Performs a vector normalization needed for an efficient pipelined GMRES algorithm. More...
 
template<typename T >
void viennacl::linalg::host_based::pipelined_gmres_gram_schmidt_stage1 (vector_base< T > const &device_krylov_basis, vcl_size_t v_k_size, vcl_size_t v_k_internal_size, vcl_size_t k, vector_base< T > &vi_in_vk_buffer, vcl_size_t buffer_chunk_size)
 Computes first reduction stage for multiple inner products <v_i, v_k>, i=0..k-1. More...
 
template<typename T >
void viennacl::linalg::host_based::pipelined_gmres_gram_schmidt_stage2 (vector_base< T > &device_krylov_basis, vcl_size_t v_k_size, vcl_size_t v_k_internal_size, vcl_size_t k, vector_base< T > const &vi_in_vk_buffer, vector_base< T > &R_buffer, vcl_size_t krylov_dim, vector_base< T > &inner_prod_buffer, vcl_size_t buffer_chunk_size)
 Computes the second reduction stage for multiple inner products <v_i, v_k>, i=0..k-1, then updates v_k -= <v_i, v_k> v_i and computes the first reduction stage for ||v_k||. More...
 
template<typename T >
void viennacl::linalg::host_based::pipelined_gmres_update_result (vector_base< T > &result, vector_base< T > const &residual, vector_base< T > const &krylov_basis, vcl_size_t v_k_size, vcl_size_t v_k_internal_size, vector_base< T > const &coefficients, vcl_size_t k)
 Computes x += eta_0 r + sum_{i=1}^{k-1} eta_i v_{i-1}. More...
 
template<typename MatrixType , typename T >
void viennacl::linalg::host_based::pipelined_gmres_prod (MatrixType const &A, vector_base< T > const &p, vector_base< T > &Ap, vector_base< T > &inner_prod_buffer)
 

Detailed Description

Implementations of specialized kernels for fast iterative solvers using OpenMP on the CPU.

Definition in file iterative_operations.hpp.

Macro Definition Documentation

#define VIENNACL_OPENMP_VECTOR_MIN_SIZE   5000

Definition at line 42 of file iterative_operations.hpp.