pub unsafe extern "C" fn cusparseScsrilu02_analysis(
handle: cusparseHandle_t,
m: c_int,
nnz: c_int,
descrA: cusparseMatDescr_t,
csrSortedValA: *const f32,
csrSortedRowPtrA: *const c_int,
csrSortedColIndA: *const c_int,
info: csrilu02Info_t,
policy: cusparseSolvePolicy_t,
pBuffer: *mut c_void,
) -> cusparseStatus_tExpand 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.