1 #ifndef VIENNACL_LINALG_AMG_OPERATIONS_HPP_ 
    2 #define VIENNACL_LINALG_AMG_OPERATIONS_HPP_ 
   33 #ifdef VIENNACL_WITH_OPENCL 
   37 #ifdef VIENNACL_WITH_CUDA 
   50 template<
typename NumericT, 
typename AMGContextT>
 
   58 #ifdef VIENNACL_WITH_OPENCL 
   63 #ifdef VIENNACL_WITH_CUDA 
   76 template<
typename NumericT, 
typename AMGContextT>
 
   84 #ifdef VIENNACL_WITH_OPENCL 
   89 #ifdef VIENNACL_WITH_CUDA 
  102 template<
typename NumericT, 
typename AMGContextT>
 
  105                   AMGContextT & amg_context,
 
  113 #ifdef VIENNACL_WITH_OPENCL 
  118 #ifdef VIENNACL_WITH_CUDA 
  131 template<
typename NumericT>
 
  145 #ifdef VIENNACL_WITH_OPENCL 
  154 #ifdef VIENNACL_WITH_CUDA 
  172 template<
typename SparseMatrixType, 
typename NumericT>
 
  177   assert( (A.size1() == B.
size1()) && 
bool(
"Size check failed for assignment to dense matrix: size1(A) != size1(B)"));
 
  178   assert( (A.size2() == B.
size1()) && 
bool(
"Size check failed for assignment to dense matrix: size2(A) != size2(B)"));
 
  185 #ifdef VIENNACL_WITH_OPENCL 
  190 #ifdef VIENNACL_WITH_CUDA 
  202 template<
typename NumericT>
 
  215 #ifdef VIENNACL_WITH_OPENCL 
  220 #ifdef VIENNACL_WITH_CUDA 
Simple enable-if variant that uses the SFINAE pattern. 
void amg_influence(compressed_matrix< NumericT > const &A, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag)
Dispatcher for influence processing. 
Exception class in case of memory errors. 
void amg_interpol(compressed_matrix< NumericT > const &A, compressed_matrix< NumericT > &P, AMGContextT &amg_context, amg_tag &tag)
Implementations of routines for AMG in OpenCL. 
Implementation of the dense matrix class. 
void switch_memory_context(viennacl::context new_ctx)
Switches the memory context of the matrix. 
void amg_influence(compressed_matrix< NumericT > const &A, AMGContextT &amg_context, amg_tag &tag)
This file provides the forward declarations for the main types used within ViennaCL. 
Implementations of routines for AMG using the CPU on the host (with OpenMP if enabled). 
void amg_coarse(InternalT1 &A, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag)
Calls the right coarsening procedure. 
void amg_coarse(compressed_matrix< NumericT > const &A, AMGContextT &amg_context, amg_tag &tag)
Represents a generic 'context' similar to an OpenCL context, but is backend-agnostic and thus also su...
void amg_interpol(MatrixT const &A, MatrixT &P, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag)
Dispatcher for building the interpolation matrix. 
void assign_to_dense(viennacl::compressed_matrix< NumericT, AlignmentV > const &A, viennacl::matrix_base< NumericT > &B)
viennacl::enable_if< viennacl::is_any_sparse_matrix< SparseMatrixType >::value >::type assign_to_dense(SparseMatrixType const &A, viennacl::matrix_base< NumericT > &B)
void amg_transpose(compressed_matrix< NumericT > const &A, compressed_matrix< NumericT > &B)
Computes B = trans(A). 
void smooth_jacobi(unsigned int iterations, compressed_matrix< NumericT > const &A, vector< NumericT > &x, vector< NumericT > &x_backup, vector< NumericT > const &rhs_smooth, NumericT weight)
void amg_interpol(MatrixT const &A, MatrixT &P, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag)
Dispatcher for building the interpolation matrix. 
void assign_to_dense(viennacl::compressed_matrix< NumericT, AlignmentV > const &A, viennacl::matrix_base< NumericT > &B)
void assign_to_dense(viennacl::compressed_matrix< NumericT, AlignmentV > const &A, viennacl::matrix_base< NumericT > &B)
Implementations of routines for AMG in OpenCL. 
void smooth_jacobi(unsigned int iterations, compressed_matrix< NumericT > const &A, vector< NumericT > &x, vector< NumericT > &x_backup, vector< NumericT > const &rhs_smooth, NumericT weight)
Damped Jacobi Smoother (CUDA version) 
void amg_transpose(compressed_matrix< NumericT > &A, compressed_matrix< NumericT > &B)
size_type size1() const 
Returns the number of rows. 
void smooth_jacobi(unsigned int iterations, compressed_matrix< NumericT > const &A, vector< NumericT > &x, vector< NumericT > &x_backup, vector< NumericT > const &rhs_smooth, NumericT weight)
Damped Jacobi Smoother (CUDA version) 
A tag for algebraic multigrid (AMG). Used to transport information from the user to the implementatio...
void amg_influence(compressed_matrix< NumericT > const &A, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag)
Dispatcher for influence processing. 
void smooth_jacobi(unsigned int iterations, compressed_matrix< NumericT > const &A, vector< NumericT > &x, vector< NumericT > &x_backup, vector< NumericT > const &rhs_smooth, NumericT weight)
Jacobi Smoother (OpenCL version) 
viennacl::context context(T const &t)
Returns an ID for the currently active memory domain of an object. 
The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...
void amg_coarse(MatrixT &A, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag)
Entry point and dispatcher for coarsening procedures. 
void amg_coarse(InternalT1 &A, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag)
Calls the right coarsening procedure. 
Helper classes and functions for the AMG preconditioner. Experimental. 
void amg_interpol(MatrixT const &A, MatrixT &P, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag)
Dispatcher for building the interpolation matrix. 
viennacl::backend::mem_handle & handle(T &obj)
Returns the generic memory handle of an object. Non-const version. 
Implementation of the ViennaCL scalar class. 
memory_types get_active_handle_id() const 
Returns an ID for the currently active memory buffer. Other memory buffers might contain old or no da...
void amg_influence(compressed_matrix< NumericT > const &A, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag)
Dispatcher for influence processing.