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

Implementations of specialized routines for the Chow-Patel parallel ILU preconditioner using CUDA. 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::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.