All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ilu_operations.hpp File Reference

Implementations of specialized routines for the Chow-Patel parallel ILU preconditioner using CUDA. More...

`#include <cmath>`
`#include <algorithm>`
`#include "viennacl/forwards.h"`
`#include "viennacl/scalar.hpp"`
`#include "viennacl/tools/tools.hpp"`
`#include "viennacl/meta/predicate.hpp"`
`#include "viennacl/meta/enable_if.hpp"`
`#include "viennacl/traits/size.hpp"`
`#include "viennacl/traits/start.hpp"`
`#include "viennacl/linalg/vector_operations.hpp"`
`#include "viennacl/traits/stride.hpp"`

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.

## Functions

template<typename IndexT >
__global__ void | viennacl::linalg::cuda::extract_L_kernel_1 (const IndexT *A_row_indices, const IndexT *A_col_indices, unsigned int A_size1, unsigned int *L_row_indices)
template<typename NumericT >
__global__ void | viennacl::linalg::cuda::extract_L_kernel_2 (unsigned int const *A_row_indices, unsigned int const *A_col_indices, NumericT const *A_elements, unsigned int A_size1, unsigned int const *L_row_indices, unsigned int *L_col_indices, NumericT *L_elements)
template<typename NumericT >
void | viennacl::linalg::cuda::extract_L (compressed_matrix< NumericT > const &A, compressed_matrix< NumericT > &L)
template<typename NumericT >
__global__ void | viennacl::linalg::cuda::ilu_scale_kernel_1 (unsigned int const *A_row_indices, unsigned int const *A_col_indices, NumericT const *A_elements, unsigned int A_size1, NumericT *D_elements)
template<typename NumericT >
__global__ void | viennacl::linalg::cuda::ilu_scale_kernel_2 (unsigned int const *R_row_indices, unsigned int const *R_col_indices, NumericT *R_elements, unsigned int R_size1, NumericT *D_elements)
| Scales values in a matrix such that output = D * input * D, where D is a diagonal matrix (only the diagonal is provided) More...
template<typename NumericT >
void | viennacl::linalg::cuda::icc_scale (compressed_matrix< NumericT > const &A, compressed_matrix< NumericT > &L)
| Scales the values extracted from A such that A' = DAD has unit diagonal. Updates values from A in L and U accordingly. More...
template<typename NumericT >
__global__ void | viennacl::linalg::cuda::icc_chow_patel_sweep_kernel (unsigned int const *L_row_indices, unsigned int const *L_col_indices, NumericT *L_elements, NumericT const *L_backup, unsigned int L_size1, NumericT const *aij_L)
| CUDA kernel for one Chow-Patel-ICC sweep. More...
template<typename NumericT >
void | viennacl::linalg::cuda::icc_chow_patel_sweep (compressed_matrix< NumericT > &L, vector< NumericT > const &aij_L)
| Performs one nonlinear relaxation step in the Chow-Patel-ILU using OpenMP (cf. Algorithm 2 in paper) More...
template<typename IndexT >
__global__ void | viennacl::linalg::cuda::extract_LU_kernel_1 (const IndexT *A_row_indices, const IndexT *A_col_indices, unsigned int A_size1, unsigned int *L_row_indices, unsigned int *U_row_indices)
template<typename NumericT >
__global__ void | viennacl::linalg::cuda::extract_LU_kernel_2 (unsigned int const *A_row_indices, unsigned int const *A_col_indices, NumericT const *A_elements, unsigned int A_size1, unsigned int const *L_row_indices, unsigned int *L_col_indices, NumericT *L_elements, unsigned int const *U_row_indices, unsigned int *U_col_indices, NumericT *U_elements)
template<typename NumericT >
void | viennacl::linalg::cuda::extract_LU (compressed_matrix< NumericT > const &A, compressed_matrix< NumericT > &L, compressed_matrix< NumericT > &U)
template<typename NumericT >
void | viennacl::linalg::cuda::ilu_scale (compressed_matrix< NumericT > const &A, compressed_matrix< NumericT > &L, compressed_matrix< NumericT > &U)
| Scales the values extracted from A such that A' = DAD has unit diagonal. Updates values from A in L and U accordingly. More...
template<typename NumericT >

__global__ void

viennacl::linalg::cuda::ilu_chow_patel_sweep_kernel (unsigned int const *L_row_indices, unsigned int const *L_col_indices, NumericT *L_elements, NumericT const *L_backup, unsigned int L_size1, NumericT const *aij_L, unsigned int const *U_trans_row_indices, unsigned int const *U_trans_col_indices, NumericT *U_trans_elements, NumericT const *U_trans_backup, NumericT const *aij_U_trans)

| CUDA kernel for one Chow-Patel-ILU sweep. More...
template<typename NumericT >
void | viennacl::linalg::cuda::ilu_chow_patel_sweep (compressed_matrix< NumericT > &L, vector< NumericT > const &aij_L, compressed_matrix< NumericT > &U_trans, vector< NumericT > const &aij_U_trans)
| Performs one nonlinear relaxation step in the Chow-Patel-ILU using OpenMP (cf. Algorithm 2 in paper) More...
template<typename NumericT >
__global__ void | viennacl::linalg::cuda::ilu_form_neumann_matrix_kernel (unsigned int const *R_row_indices, unsigned int const *R_col_indices, NumericT *R_elements, unsigned int R_size1, NumericT *D_elements)
template<typename NumericT >
void | viennacl::linalg::cuda::ilu_form_neumann_matrix (compressed_matrix< NumericT > &R, vector< NumericT > &diag_R)

## Detailed Description

Implementations of specialized routines for the Chow-Patel parallel ILU preconditioner using CUDA.

Definition in file ilu_operations.hpp.