rocsparse_sbsric0 Interface Reference

rocsparse_sbsric0 Interface Reference#

HIPFORT API Reference: hipfort_rocsparse::rocsparse_sbsric0 Interface Reference
hipfort_rocsparse::rocsparse_sbsric0 Interface Reference

Incomplete Cholesky factorization with 0 fill-ins and no pivoting using the BSR storage format. More...

Public Member Functions

integer(kind(rocsparse_status_success)) function rocsparse_sbsric0_ (handle, dir, mb, nnzb, descr, bsr_val, bsr_row_ptr, bsr_col_ind, block_dim, myinfo, policy, temp_buffer)
 
integer(kind(rocsparse_status_success)) function rocsparse_sbsric0_rank_0 (handle, dir, mb, nnzb, descr, bsr_val, bsr_row_ptr, bsr_col_ind, block_dim, myinfo, policy, temp_buffer)
 
integer(kind(rocsparse_status_success)) function rocsparse_sbsric0_rank_1 (handle, dir, mb, nnzb, descr, bsr_val, bsr_row_ptr, bsr_col_ind, block_dim, myinfo, policy, temp_buffer)
 

Detailed Description

Incomplete Cholesky factorization with 0 fill-ins and no pivoting using the BSR storage format.

rocsparse_bsric0 computes the incomplete Cholesky factorization with 0 fill-ins and no pivoting of a sparse \(mb \times mb\) BSR matrix \(A\), such that

\[ A \approx LL^T \]

Computing the above incomplete Cholesky factorization requires three steps to complete. First, determine the size of the required temporary storage buffer by calling rocsparse_sbsric0_buffer_size, rocsparse_dbsric0_buffer_size, rocsparse_cbsric0_buffer_size, or rocsparse_zbsric0_buffer_size. After this buffer size has been determined, allocate the buffer and pass it to rocsparse_sbsric0_analysis, rocsparse_dbsric0_analysis, rocsparse_cbsric0_analysis, or rocsparse_zbsric0_analysis. This will perform analysis on the sparsity pattern of the matrix. Finally, call rocsparse_sbsric0, rocsparse_dbsric0, rocsparse_cbsric0, or rocsparse_zbsric0 to perform the actual factorization. The calculation of the buffer size and the analysis of the sparse matrix only need to be performed once for a given sparsity pattern, while the factorization can be repeatedly applied to multiple matrices having the same sparsity pattern. After all calls to rocsparse_Xbsric0() are complete, the temporary buffer can be deallocated.

rocsparse_bsric0 reports the first zero pivot (either numerical or structural zero). The zero pivot status can be obtained by calling rocsparse_bsric0_zero_pivot().

Note
This function is non-blocking and executed asynchronously with respect to the host. It can return before the actual computation has finished.
This routine supports execution in a hipGraph context.
Parameters
[in]handle- handle to the rocSPARSE library context queue.
[in]dir- direction that specified whether to count non-zero elements by rocsparse_direction_row or by rocsparse_direction_column.
[in]mb- number of block rows in the sparse BSR matrix.
[in]nnzb- number of non-zero block entries of the sparse BSR matrix.
[in]descr- descriptor of the sparse BSR matrix.
[in,out]bsr_val- array of length nnzb*block_dim*block_dim containing the values of the sparse BSR matrix.
[in]bsr_row_ptr- array of mb+1 elements that point to the start of every block row of the sparse BSR matrix.
[in]bsr_col_ind- array of nnzb elements containing the block column indices of the sparse BSR matrix.
[in]block_dim- the block dimension of the BSR matrix. Between 1 and m, where m=mb*block_dim.
[in]myInfo- structure that holds the information collected during the analysis step.
[in]policy- rocsparse_solve_policy_auto.
[in]temp_buffer- temporary storage buffer allocated by the user.
Return values
rocsparse_status_successthe operation completed successfully.
rocsparse_status_invalid_handlethe library context was not initialized.
rocsparse_status_invalid_sizemb, nnzb, or block_dim is invalid.
rocsparse_status_invalid_pointerdescr, bsr_val, bsr_row_ptr, or bsr_col_ind pointer is invalid.
rocsparse_status_arch_mismatchthe device is not supported.
rocsparse_status_internal_erroran internal error occurred.
rocsparse_status_not_implementedrocsparse_matrix_type != rocsparse_matrix_type_general.
Example
Consider the sparse \(m \times m\) matrix \(A\), stored in BSR storage format. The following example computes the incomplete Cholesky factorization \(M \approx LL^T\) and solves the preconditioned system \(My = x\).

Member Function/Subroutine Documentation

◆ rocsparse_sbsric0_()

integer(kind(rocsparse_status_success)) function hipfort_rocsparse::rocsparse_sbsric0::rocsparse_sbsric0_ ( type(c_ptr), value  handle,
integer(kind(rocsparse_direction_row)), value  dir,
integer(c_int), value  mb,
integer(c_int), value  nnzb,
type(c_ptr), value  descr,
type(c_ptr), value  bsr_val,
type(c_ptr), value  bsr_row_ptr,
type(c_ptr), value  bsr_col_ind,
integer(c_int), value  block_dim,
type(c_ptr), value  myinfo,
integer(kind(rocsparse_solve_policy_auto)), value  policy,
type(c_ptr), value  temp_buffer 
)

◆ rocsparse_sbsric0_rank_0()

integer(kind(rocsparse_status_success)) function hipfort_rocsparse::rocsparse_sbsric0::rocsparse_sbsric0_rank_0 ( type(c_ptr)  handle,
integer(kind(rocsparse_direction_row))  dir,
integer(c_int)  mb,
integer(c_int)  nnzb,
type(c_ptr)  descr,
real(c_float), target  bsr_val,
integer(c_int), target  bsr_row_ptr,
integer(c_int), target  bsr_col_ind,
integer(c_int)  block_dim,
type(c_ptr)  myinfo,
integer(kind(rocsparse_solve_policy_auto))  policy,
type(c_ptr)  temp_buffer 
)

◆ rocsparse_sbsric0_rank_1()

integer(kind(rocsparse_status_success)) function hipfort_rocsparse::rocsparse_sbsric0::rocsparse_sbsric0_rank_1 ( type(c_ptr)  handle,
integer(kind(rocsparse_direction_row))  dir,
integer(c_int)  mb,
integer(c_int)  nnzb,
type(c_ptr)  descr,
real(c_float), dimension(:), target  bsr_val,
integer(c_int), dimension(:), target  bsr_row_ptr,
integer(c_int), dimension(:), target  bsr_col_ind,
integer(c_int)  block_dim,
type(c_ptr)  myinfo,
integer(kind(rocsparse_solve_policy_auto))  policy,
type(c_ptr)  temp_buffer 
)

The documentation for this interface was generated from the following file: