Implementations of routines for AMG in OpenCL. More...
#include <cstdlib>#include <cmath>#include "viennacl/linalg/detail/amg/amg_base.hpp"#include <map>#include <set>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::amg | |
| Functions | |
| __global__ void | viennacl::linalg::cuda::amg::amg_influence_trivial_kernel (const unsigned int *row_indices, const unsigned int *column_indices, unsigned int size1, unsigned int nnz, unsigned int *influences_row, unsigned int *influences_id, unsigned int *influences_values) | 
| template<typename NumericT > | |
| void | viennacl::linalg::cuda::amg::amg_influence_trivial (compressed_matrix< NumericT > const &A, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag) | 
| Routine for taking all connections in the matrix as strong.  More... | |
| template<typename NumericT > | |
| void | viennacl::linalg::cuda::amg::amg_influence_advanced (compressed_matrix< NumericT > const &A, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag) | 
| Routine for extracting strongly connected points considering a user-provided threshold value.  More... | |
| template<typename NumericT > | |
| void | viennacl::linalg::cuda::amg::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.  More... | |
| void | viennacl::linalg::cuda::amg::enumerate_coarse_points (viennacl::linalg::detail::amg::amg_level_context &amg_context) | 
| Assign IDs to coarse points.  More... | |
| template<typename IndexT > | |
| __global__ void | viennacl::linalg::cuda::amg::amg_pmis2_init_workdata (IndexT *work_state, IndexT *work_random, IndexT *work_index, IndexT const *point_types, IndexT const *random_weights, unsigned int size) | 
| CUDA kernel initializing the work vectors at each PMIS iteration.  More... | |
| template<typename IndexT > | |
| __global__ void | viennacl::linalg::cuda::amg::amg_pmis2_max_neighborhood (IndexT const *work_state, IndexT const *work_random, IndexT const *work_index, IndexT *work_state2, IndexT *work_random2, IndexT *work_index2, IndexT const *influences_row, IndexT const *influences_id, unsigned int size) | 
| CUDA kernel propagating the state triple (status, weight, nodeID) to neighbors using a max()-operation.  More... | |
| template<typename IndexT > | |
| __global__ void | viennacl::linalg::cuda::amg::amg_pmis2_mark_mis_nodes (IndexT const *work_state, IndexT const *work_index, IndexT *point_types, IndexT *undecided_buffer, unsigned int size) | 
| CUDA kernel for marking MIS and non-MIS nodes.  More... | |
| __global__ void | viennacl::linalg::cuda::amg::amg_pmis2_reset_state (unsigned int *point_types, unsigned int size) | 
| CUDA kernel for resetting non-MIS (i.e. coarse) points to undecided so that subsequent kernels work.  More... | |
| template<typename NumericT > | |
| void | viennacl::linalg::cuda::amg::amg_coarse_ag_stage1_mis2 (compressed_matrix< NumericT > const &A, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag) | 
| AG (aggregation based) coarsening, single-threaded version of stage 1.  More... | |
| template<typename IndexT > | |
| __global__ void | viennacl::linalg::cuda::amg::amg_agg_propagate_coarse_indices (IndexT *point_types, IndexT *coarse_ids, IndexT const *influences_row, IndexT const *influences_id, unsigned int size) | 
| template<typename IndexT > | |
| __global__ void | viennacl::linalg::cuda::amg::amg_agg_merge_undecided (IndexT *point_types, IndexT *coarse_ids, IndexT const *influences_row, IndexT const *influences_id, unsigned int size) | 
| __global__ void | viennacl::linalg::cuda::amg::amg_agg_merge_undecided_2 (unsigned int *point_types, unsigned int size) | 
| template<typename NumericT > | |
| void | viennacl::linalg::cuda::amg::amg_coarse_ag (compressed_matrix< NumericT > const &A, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag) | 
| AG (aggregation based) coarsening. Partially single-threaded version (VIENNACL_AMG_COARSE_AG)  More... | |
| template<typename InternalT1 > | |
| void | viennacl::linalg::cuda::amg::amg_coarse (InternalT1 &A, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag) | 
| Calls the right coarsening procedure.  More... | |
| template<typename NumericT > | |
| __global__ void | viennacl::linalg::cuda::amg::amg_interpol_ag_kernel (unsigned int *P_row_buffer, unsigned int *P_col_buffer, NumericT *P_elements, unsigned int *coarse_ids, unsigned int size) | 
| template<typename NumericT > | |
| void | viennacl::linalg::cuda::amg::amg_interpol_ag (compressed_matrix< NumericT > const &A, compressed_matrix< NumericT > &P, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag) | 
| AG (aggregation based) interpolation. Multi-Threaded! (VIENNACL_INTERPOL_SA)  More... | |
| template<typename NumericT > | |
| __global__ void | viennacl::linalg::cuda::amg::amg_interpol_sa_kernel (const unsigned int *A_row_indices, const unsigned int *A_col_indices, const NumericT *A_elements, unsigned int A_size1, unsigned int A_nnz, unsigned int *Jacobi_row_indices, unsigned int *Jacobi_col_indices, NumericT *Jacobi_elements, NumericT omega) | 
| template<typename NumericT > | |
| void | viennacl::linalg::cuda::amg::amg_interpol_sa (compressed_matrix< NumericT > const &A, compressed_matrix< NumericT > &P, viennacl::linalg::detail::amg::amg_level_context &amg_context, viennacl::linalg::amg_tag &tag) | 
| Smoothed aggregation interpolation. (VIENNACL_INTERPOL_SA)  More... | |
| template<typename MatrixT > | |
| void | viennacl::linalg::cuda::amg::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.  More... | |
| template<typename NumericT > | |
| __global__ void | viennacl::linalg::cuda::amg::compressed_matrix_assign_to_dense (const unsigned int *row_indices, const unsigned int *column_indices, const NumericT *elements, NumericT *B, unsigned int B_row_start, unsigned int B_col_start, unsigned int B_row_inc, unsigned int B_col_inc, unsigned int B_row_size, unsigned int B_col_size, unsigned int B_internal_rows, unsigned int B_internal_cols) | 
| template<typename NumericT , unsigned int AlignmentV> | |
| void | viennacl::linalg::cuda::amg::assign_to_dense (viennacl::compressed_matrix< NumericT, AlignmentV > const &A, viennacl::matrix_base< NumericT > &B) | 
| template<typename NumericT > | |
| __global__ void | viennacl::linalg::cuda::amg::compressed_matrix_smooth_jacobi_kernel (const unsigned int *row_indices, const unsigned int *column_indices, const NumericT *elements, NumericT weight, const NumericT *x_old, NumericT *x_new, const NumericT *rhs, unsigned int size) | 
| template<typename NumericT > | |
| void | viennacl::linalg::cuda::amg::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)  More... | |
Implementations of routines for AMG in OpenCL.
Definition in file amg_operations.hpp.