Skip to main content

cusparseZcsrilu02_analysis

Function cusparseZcsrilu02_analysis 

Source
pub unsafe extern "C" fn cusparseZcsrilu02_analysis(
    handle: cusparseHandle_t,
    m: c_int,
    nnz: c_int,
    descrA: cusparseMatDescr_t,
    csrSortedValA: *const cuDoubleComplex,
    csrSortedRowPtrA: *const c_int,
    csrSortedColIndA: *const c_int,
    info: csrilu02Info_t,
    policy: cusparseSolvePolicy_t,
    pBuffer: *mut c_void,
) -> cusparseStatus_t
Expand description

This function performs the analysis phase of the incomplete-LU factorization with $0$ fill-in and no pivoting:

A is an $m \times m$ sparse matrix that is defined in CSR storage format by the three arrays csrValA, csrRowPtrA, and csrColIndA.

This function requires the buffer size returned by csrilu02_bufferSize(). The address of pBuffer must be a multiple of 128 bytes. If not, cusparseStatus_t::CUSPARSE_STATUS_INVALID_VALUE is returned.

Function csrilu02_analysis() reports a structural zero and computes level information stored in the opaque structure info. The level information can extract more parallelism during incomplete LU factorization; however csrilu02() can be done without level information. To disable level information, the user must specify the policy of csrilu02() as cusparseSolvePolicy_t::CUSPARSE_SOLVE_POLICY_NO_LEVEL.

It is the user’s choice whether to call csrilu02() if csrilu02_analysis() reports a structural zero. In this case, the user can still call csrilu02(), which will return a numerical zero at the same position as the structural zero. However, the result is meaningless.

  • This function requires temporary extra storage that is allocated internally.
  • The routine supports asynchronous execution if the Stream Ordered Memory Allocator is available.
  • The routine supports CUDA graph capture if the Stream Ordered Memory Allocator is available.