|
ViennaCL - The Vienna Computing Library
1.5.1
|
Implementation namespace for algebraic multigrid preconditioner. More...
Data Structures | |
| class | amg_tag |
| A tag for algebraic multigrid (AMG). Used to transport information from the user to the implementation. More... | |
| class | amg_nonzero_scalar |
| A class for a scalar that can be written to the sparse matrix or sparse vector datatypes. More... | |
| class | amg_sparsevector_iterator |
| Defines an iterator for the sparse vector type. More... | |
| class | amg_sparsevector |
| A class for the sparse vector type. More... | |
| class | amg_sparsematrix |
| A class for the sparse matrix type. Uses vector of maps as data structure for higher performance and lower memory usage. Uses similar interface as ublas::compressed_matrix. Can deal with transposed of matrix internally: Creation, Storage, Iterators, etc. More... | |
| class | amg_point |
| A class for the AMG points. Saves point index and influence measure Holds information whether point is undecided, C or F point. Holds lists of points that are influenced by or influencing this point. More... | |
| struct | classcomp |
| Comparison class for the sorted set of points in amg_pointvector. Set is sorted by influence measure from lower to higher with the point-index as tie-breaker. More... | |
| class | amg_pointvector |
| A class for the AMG points. Holds pointers of type amg_point in a vector that can be accessed using [point-index]. Additional list of pointers sorted by influence number and index to improve coarsening performance (see amg_coarse_classic_onepass() in amg_coarse.hpp) Constructs indices for C points on the coarse level, needed for interpolation. More... | |
| class | amg_slicing |
| A class for the matrix slicing for parallel coarsening schemes (RS0/RS3). More... | |
Functions | |
| template<typename SparseMatrixType > | |
| void | amg_mat_prod (SparseMatrixType &A, SparseMatrixType &B, SparseMatrixType &RES) |
| Sparse matrix product. Calculates RES = A*B. | |
| template<typename SparseMatrixType > | |
| void | amg_galerkin_prod (SparseMatrixType &A, SparseMatrixType &P, SparseMatrixType &RES) |
| Sparse Galerkin product: Calculates RES = trans(P)*A*P. | |
| template<typename SparseMatrixType > | |
| void | test_triplematprod (SparseMatrixType &A, SparseMatrixType &P, SparseMatrixType &A_i1) |
| Test triple-matrix product by comparing it to ublas functions. Very slow for large matrices! | |
| template<typename SparseMatrixType , typename PointVectorType > | |
| void | test_interpolation (SparseMatrixType &A, SparseMatrixType &P, PointVectorType &Pointvector) |
| Test if interpolation matrix makes sense. Only vanilla test though! Only checks if basic requirements are met! | |
| template<typename InternalType1 , typename InternalType2 , typename InternalType3 > | |
| void | amg_coarse (unsigned int level, InternalType1 &A, InternalType2 &Pointvector, InternalType3 &Slicing, amg_tag &tag) |
| Calls the right coarsening procedure. | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_influence (unsigned int level, InternalType1 const &A, InternalType2 &Pointvector, amg_tag &tag) |
| Determines strong influences in system matrix, classical approach (RS). Multithreaded! | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_coarse_classic_onepass (unsigned int level, InternalType1 &A, InternalType2 &Pointvector, amg_tag &tag) |
| Classical (RS) one-pass coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_CLASSIC_ONEPASS) | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_coarse_classic (unsigned int level, InternalType1 &A, InternalType2 &Pointvector, amg_tag &tag) |
| Classical (RS) two-pass coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_CLASSIC) | |
| template<typename InternalType1 , typename InternalType2 , typename InternalType3 > | |
| void | amg_coarse_rs0 (unsigned int level, InternalType1 &A, InternalType2 &Pointvector, InternalType3 &Slicing, amg_tag &tag) |
| Parallel classical RS0 coarsening. Multi-Threaded! (VIENNACL_AMG_COARSE_RS0 || VIENNACL_AMG_COARSE_RS3) | |
| template<typename InternalType1 , typename InternalType2 , typename InternalType3 > | |
| void | amg_coarse_rs3 (unsigned int level, InternalType1 &A, InternalType2 &Pointvector, InternalType3 &Slicing, amg_tag &tag) |
| RS3 coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_RS3) | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_coarse_ag (unsigned int level, InternalType1 &A, InternalType2 &Pointvector, amg_tag &tag) |
| AG (aggregation based) coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_SA) | |
| template<typename MatrixType > | |
| void | printmatrix (MatrixType &, int) |
| template<typename VectorType > | |
| void | printvector (VectorType const &) |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_interpol (unsigned int level, InternalType1 &A, InternalType1 &P, InternalType2 &Pointvector, amg_tag &tag) |
| Calls the right function to build interpolation matrix. | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_interpol_direct (unsigned int level, InternalType1 &A, InternalType1 &P, InternalType2 &Pointvector, amg_tag &tag) |
| Direct interpolation. Multi-threaded! (VIENNACL_AMG_INTERPOL_DIRECT) | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_interpol_classic (unsigned int level, InternalType1 &A, InternalType1 &P, InternalType2 &Pointvector, amg_tag &tag) |
| Classical interpolation. Don't use with onepass classical coarsening or RS0 (Yang, p.14)! Multi-threaded! (VIENNACL_AMG_INTERPOL_CLASSIC) | |
| template<typename SparseMatrixType > | |
| void | amg_truncate_row (SparseMatrixType &P, unsigned int row, amg_tag &tag) |
| Interpolation truncation (for VIENNACL_AMG_INTERPOL_DIRECT and VIENNACL_AMG_INTERPOL_CLASSIC) | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_interpol_ag (unsigned int level, InternalType1 &A, InternalType1 &P, InternalType2 &Pointvector, amg_tag) |
| AG (aggregation based) interpolation. Multi-Threaded! (VIENNACL_INTERPOL_SA) | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_interpol_sa (unsigned int level, InternalType1 &A, InternalType1 &P, InternalType2 &Pointvector, amg_tag &tag) |
| SA (smoothed aggregate) interpolation. Multi-Threaded! (VIENNACL_INTERPOL_SA) | |
Implementation namespace for algebraic multigrid preconditioner.
| void viennacl::linalg::detail::amg::amg_coarse | ( | unsigned int | level, |
| InternalType1 & | A, | ||
| InternalType2 & | Pointvector, | ||
| InternalType3 & | Slicing, | ||
| amg_tag & | tag | ||
| ) |
Calls the right coarsening procedure.
| level | Coarse level identifier |
| A | Operator matrix on all levels |
| Pointvector | Vector of points on all levels |
| Slicing | Partitioning of the system matrix to different processors (only used in RS0 and RS3) |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_coarse_ag | ( | unsigned int | level, |
| InternalType1 & | A, | ||
| InternalType2 & | Pointvector, | ||
| amg_tag & | tag | ||
| ) |
AG (aggregation based) coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_SA)
| level | Coarse level identifier |
| A | Operator matrix on all levels |
| Pointvector | Vector of points on all levels |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_coarse_classic | ( | unsigned int | level, |
| InternalType1 & | A, | ||
| InternalType2 & | Pointvector, | ||
| amg_tag & | tag | ||
| ) |
Classical (RS) two-pass coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_CLASSIC)
| level | Coarse level identifier |
| A | Operator matrix on all levels |
| Pointvector | Vector of points on all levels |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_coarse_classic_onepass | ( | unsigned int | level, |
| InternalType1 & | A, | ||
| InternalType2 & | Pointvector, | ||
| amg_tag & | tag | ||
| ) |
Classical (RS) one-pass coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_CLASSIC_ONEPASS)
| level | Course level identifier |
| A | Operator matrix on all levels |
| Pointvector | Vector of points on all levels |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_coarse_rs0 | ( | unsigned int | level, |
| InternalType1 & | A, | ||
| InternalType2 & | Pointvector, | ||
| InternalType3 & | Slicing, | ||
| amg_tag & | tag | ||
| ) |
Parallel classical RS0 coarsening. Multi-Threaded! (VIENNACL_AMG_COARSE_RS0 || VIENNACL_AMG_COARSE_RS3)
| level | Coarse level identifier |
| A | Operator matrix on all level |
| Pointvector | Vector of points on all levels |
| Slicing | Partitioning of the system matrix and the other data structures to different processors |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_coarse_rs3 | ( | unsigned int | level, |
| InternalType1 & | A, | ||
| InternalType2 & | Pointvector, | ||
| InternalType3 & | Slicing, | ||
| amg_tag & | tag | ||
| ) |
RS3 coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_RS3)
| level | Coarse level identifier |
| A | Operator matrix on all levels |
| Pointvector | Vector of points on all levels |
| Slicing | Partitioning of the system matrix and the other data structures to different processors |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_galerkin_prod | ( | SparseMatrixType & | A, |
| SparseMatrixType & | P, | ||
| SparseMatrixType & | RES | ||
| ) |
Sparse Galerkin product: Calculates RES = trans(P)*A*P.
| A | Operator matrix (quadratic) |
| P | Prolongation/Interpolation matrix |
| RES | Result Matrix (Galerkin operator) |
| void viennacl::linalg::detail::amg::amg_influence | ( | unsigned int | level, |
| InternalType1 const & | A, | ||
| InternalType2 & | Pointvector, | ||
| amg_tag & | tag | ||
| ) |
Determines strong influences in system matrix, classical approach (RS). Multithreaded!
| level | Coarse level identifier |
| A | Operator matrix on all levels |
| Pointvector | Vector of points on all levels |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_interpol | ( | unsigned int | level, |
| InternalType1 & | A, | ||
| InternalType1 & | P, | ||
| InternalType2 & | Pointvector, | ||
| amg_tag & | tag | ||
| ) |
Calls the right function to build interpolation matrix.
| level | Coarse level identifier |
| A | Operator matrix on all levels |
| P | Prolongation matrices. P[level] is constructed |
| Pointvector | Vector of points on all levels |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_interpol_ag | ( | unsigned int | level, |
| InternalType1 & | A, | ||
| InternalType1 & | P, | ||
| InternalType2 & | Pointvector, | ||
| amg_tag | |||
| ) |
AG (aggregation based) interpolation. Multi-Threaded! (VIENNACL_INTERPOL_SA)
| level | Coarse level identifier |
| A | Operator matrix on all levels |
| P | Prolongation matrices. P[level] is constructed |
| Pointvector | Vector of points on all levels |
| void viennacl::linalg::detail::amg::amg_interpol_classic | ( | unsigned int | level, |
| InternalType1 & | A, | ||
| InternalType1 & | P, | ||
| InternalType2 & | Pointvector, | ||
| amg_tag & | tag | ||
| ) |
Classical interpolation. Don't use with onepass classical coarsening or RS0 (Yang, p.14)! Multi-threaded! (VIENNACL_AMG_INTERPOL_CLASSIC)
| level | Coarse level identifier |
| A | Operator matrix on all levels |
| P | Prolongation matrices. P[level] is constructed |
| Pointvector | Vector of points on all levels |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_interpol_direct | ( | unsigned int | level, |
| InternalType1 & | A, | ||
| InternalType1 & | P, | ||
| InternalType2 & | Pointvector, | ||
| amg_tag & | tag | ||
| ) |
Direct interpolation. Multi-threaded! (VIENNACL_AMG_INTERPOL_DIRECT)
| level | Coarse level identifier |
| A | Operator matrix on all levels |
| P | Prolongation matrices. P[level] is constructed |
| Pointvector | Vector of points on all levels |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_interpol_sa | ( | unsigned int | level, |
| InternalType1 & | A, | ||
| InternalType1 & | P, | ||
| InternalType2 & | Pointvector, | ||
| amg_tag & | tag | ||
| ) |
SA (smoothed aggregate) interpolation. Multi-Threaded! (VIENNACL_INTERPOL_SA)
| level | Coarse level identifier |
| A | Operator matrix on all levels |
| P | Prolongation matrices. P[level] is constructed |
| Pointvector | Vector of points on all levels |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_mat_prod | ( | SparseMatrixType & | A, |
| SparseMatrixType & | B, | ||
| SparseMatrixType & | RES | ||
| ) |
Sparse matrix product. Calculates RES = A*B.
| A | Left Matrix |
| B | Right Matrix |
| RES | Result Matrix |
| void viennacl::linalg::detail::amg::amg_truncate_row | ( | SparseMatrixType & | P, |
| unsigned int | row, | ||
| amg_tag & | tag | ||
| ) |
Interpolation truncation (for VIENNACL_AMG_INTERPOL_DIRECT and VIENNACL_AMG_INTERPOL_CLASSIC)
| P | Interpolation matrix |
| row | Row which has to be truncated |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::printmatrix | ( | MatrixType & | , |
| int | |||
| ) |
| void viennacl::linalg::detail::amg::printvector | ( | VectorType const & | ) |
| void viennacl::linalg::detail::amg::test_interpolation | ( | SparseMatrixType & | A, |
| SparseMatrixType & | P, | ||
| PointVectorType & | Pointvector | ||
| ) |
Test if interpolation matrix makes sense. Only vanilla test though! Only checks if basic requirements are met!
| A | Operator matrix (quadratic) |
| P | Prolongation/Interpolation matrix |
| Pointvector | Vector of points |
| void viennacl::linalg::detail::amg::test_triplematprod | ( | SparseMatrixType & | A, |
| SparseMatrixType & | P, | ||
| SparseMatrixType & | A_i1 | ||
| ) |
Test triple-matrix product by comparing it to ublas functions. Very slow for large matrices!
| A | Operator matrix (quadratic) |
| P | Prolongation/Interpolation matrix |
| A_i1 | Result Matrix |
1.7.6.1