|
| integer(kind(rocsparse_status_success)) function | rocsparse_scsrsm_analysis_ (handle, trans_a, trans_b, m, nrhs, nnz, alpha, descr, csr_val, csr_row_ptr, csr_col_ind, b, ldb, myinfo, analysis, solve, temp_buffer) |
| |
| integer(kind(rocsparse_status_success)) function | rocsparse_scsrsm_analysis_rank_0 (handle, trans_a, trans_b, m, nrhs, nnz, alpha, descr, csr_val, csr_row_ptr, csr_col_ind, b, ldb, myinfo, analysis, solve, temp_buffer) |
| |
| integer(kind(rocsparse_status_success)) function | rocsparse_scsrsm_analysis_rank_1 (handle, trans_a, trans_b, m, nrhs, nnz, alpha, descr, csr_val, csr_row_ptr, csr_col_ind, b, ldb, myinfo, analysis, solve, temp_buffer) |
| |
| integer(kind(rocsparse_status_success)) function | rocsparse_scsrsm_analysis_full_rank (handle, trans_a, trans_b, m, nrhs, nnz, alpha, descr, csr_val, csr_row_ptr, csr_col_ind, b, ldb, myinfo, analysis, solve, temp_buffer) |
| |
rocsparse_csrsm_analysis performs the analysis step for rocsparse_Xcsrsm_solve(). It is expected that this function will be executed only once for a given matrix and particular operation type. The analysis metadata can be cleared by rocsparse_csrsm_clear().
rocsparse_csrsm_analysis can share its meta data with rocsparse_Xcsrilu0_analysis(), rocsparse_Xcsric0_analysis(), and rocsparse_Xcsrsv_analysis(). Selecting rocsparse_analysis_policy_reuse policy can greatly improve computation performance of the metadata. However, the user needs to ensure that the sparsity pattern remains unchanged. If this cannot be assured, rocsparse_analysis_policy_force has to be used.
- Note
- If the matrix sparsity pattern changes, the gathered information will become invalid.
-
This function is blocking with respect to the host.
-
This routine does not support execution in a hipGraph context.
- Parameters
-
| [in] | handle | - handle to the rocSPARSE library context queue. |
| [in] | trans_A | - matrix A operation type. |
| [in] | trans_B | - matrix B operation type. |
| [in] | m | - number of rows of the sparse CSR matrix A. |
| [in] | nrhs | - number of columns of the column-oriented dense matrix op(B). |
| [in] | nnz | - number of non-zero entries of the sparse CSR matrix A. |
| [in] | alpha | - scalar \(\alpha\). |
| [in] | descr | - descriptor of the sparse CSR matrix A. |
| [in] | csr_val | - array of nnz elements of the sparse CSR matrix A. |
| [in] | csr_row_ptr | - array of m+1 elements that point to the start of every row of the sparse CSR matrix A. |
| [in] | csr_col_ind | - array of nnz elements containing the column indices of the sparse CSR matrix A. |
| [in] | B | - column-oriented dense matrix of dimension m \(\times\) nrhs elements of the rhs matrix B. |
| [in] | ldb | - leading dimension of rhs matrix B. |
| [out] | myInfo | - structure that holds the information collected during the analysis step. |
| [in] | analysis | - rocsparse_analysis_policy_reuse or rocsparse_analysis_policy_force. |
| [in] | solve | - rocsparse_solve_policy_auto. |
| [in] | temp_buffer | - temporary storage buffer allocated by the user. |
- Return values
-
| rocsparse_status_success | the operation completed successfully. |
| rocsparse_status_invalid_handle | the library context was not initialized. |
| rocsparse_status_invalid_size | m, nrhs, or nnz is invalid. |
| rocsparse_status_invalid_pointer | alpha, descr, csr_val, csr_row_ptr, csr_col_ind, B, info, or temp_buffer pointer is invalid. |
| rocsparse_status_internal_error | an internal error occurred. |
| rocsparse_status_not_implemented | trans_A == rocsparse_operation_conjugate_transpose, trans_B == rocsparse_operation_conjugate_transpose, or rocsparse_matrix_type != rocsparse_matrix_type_general. |