Intel® oneAPI Math Kernel Library Developer Reference - Fortran
Computes the product of two sparse matrices. The result is stored in a newly allocated sparse matrix.
stat = mkl_sparse_sp2m (opA, descrA, A, opB, descrB, B, request, C)
The mkl_sparse_sp2m routine performs a matrix-matrix operation:
C := opA(A) *opB(B)
where A,B, and C are sparse matrices, opA and opB are matrix modifiers for matrices A and B, respectively.
The column indices of the output matrix (if in CSR format) can appear unsorted due to the algorithm chosen internally. To ensure sorted column indices (if that is important), call mkl_sparse_order().
C_INT.
Specifies operation on input matrix.
SPARSE_OPERATION_NON_TRANSPOSE | Non-transpose, op(A)=A |
SPARSE_OPERATION_TRANSPOSE | Transpose, op(A)=AT |
SPARSE_OPERATION_CONJUGATE_TRANSPOSE | Conjugate transpose, op(A)=AH |
C_INT.
Specifies operation on input matrix.
SPARSE_OPERATION_NON_TRANSPOSE | Non-transpose, op(B)=B |
SPARSE_OPERATION_TRANSPOSE | Transpose, op(B)=BT |
SPARSE_OPERATION_CONJUGATE_TRANSPOSE | Conjugate transpose, op(B)=BH |
MATRIX_DESCR.
Structure that specifies sparse matrix properties.
sparse_matrix_type_ttype specifies the type of sparse matrix.
SPARSE_MATRIX_TYPE_GENERAL | The matrix is processed as is. |
SPARSE_MATRIX_TYPE_SYMMETRIC | The matrix is symmetric (only the requested triangle is processed). |
SPARSE_MATRIX_TYPE_HERMITIAN | The matrix is Hermitian (only the requested triangle is processed). |
SPARSE_MATRIX_TYPE_TRIANGULAR | The matrix is triangular (only the requested triangle is processed). |
SPARSE_MATRIX_TYPE_DIAGONAL | The matrix is diagonal (only diagonal elements are processed). |
SPARSE_MATRIX_TYPE_BLOCK_TRIANGULAR | The matrix is block-triangular (only the requested triangle is processed). This applies to BSR format only. |
SPARSE_MATRIX_TYPE_BLOCK_DIAGONAL | The matrix is block-diagonal (only the requested triangle is processed). This applies to BSR format only. |
sparse_fill_mode_tmode specifies the triangular matrix portion for symmetric, Hermitian, triangular, and block-triangular matrices.
SPARSE_FILL_MODE_LOWER | The lower triangular matrix is processed. |
SPARSE_FILL_MODE_UPPER | The upper triangular matrix is processed. |
sparse_diag_type_tdiag specifies the type of diagonal for non-general matrices.
SPARSE_DIAG_NON_UNIT | Diagonal elements must not be equal to 1. |
SPARSE_DIAG_UNIT | Diagonal elements are equal to 1. |
C_INT.
Structure that specifies sparse matrix properties.
sparse_matrix_type_ttype specifies the type of sparse matrix.
SPARSE_MATRIX_TYPE_GENERAL | The matrix is processed as is. |
SPARSE_MATRIX_TYPE_SYMMETRIC | The matrix is symmetric (only the requested triangle is processed). |
SPARSE_MATRIX_TYPE_HERMITIAN | The matrix is Hermitian (only the requested triangle is processed). |
SPARSE_MATRIX_TYPE_TRIANGULAR | The matrix is triangular (only the requested triangle is processed). |
SPARSE_MATRIX_TYPE_DIAGONAL | The matrix is diagonal (only diagonal elements are processed). |
SPARSE_MATRIX_TYPE_BLOCK_TRIANGULAR | The matrix is block-triangular (only the requested triangle is processed). This applies to BSR format only. |
SPARSE_MATRIX_TYPE_BLOCK_DIAGONAL | The matrix is block-diagonal (only the requested triangle is processed). This applies to BSR format only. |
sparse_fill_mode_tmode specifies the triangular matrix portion for symmetric, Hermitian, triangular, and block-triangular matrices.
SPARSE_FILL_MODE_LOWER | The lower triangular matrix is processed. |
SPARSE_FILL_MODE_UPPER | The upper triangular matrix is processed. |
sparse_diag_type_tdiag specifies the type of diagonal for non-general matrices.
SPARSE_DIAG_NON_UNIT | Diagonal elements must not be equal to 1. |
SPARSE_DIAG_UNIT | Diagonal elements are equal to 1. |
SPARSE_MATRIX_T.
Handle which contains the sparse matrix A.
SPARSE_MATRIX_T.
Handle which contains the sparse matrix B.
C_INT.
Specifies whether the full computations are performed at once or using the two-stage algorithm. See Two-stage Algorithm for Inspector-executor Sparse BLAS Routines.
SPARSE_STAGE_NNZ_COUNT | Only rowIndex (BSR/CSR format) or colIndex (CSC format) array of the matrix is computed internally. The computation can be extracted to measure the memory required for full operation. |
SPARSE_STAGE_FINALIZE_MULT_NO_VAL | Finalize computations of the matrix structure (values will not be computed). Use only after the call with SPARSE_STAGE_NNZ_COUNT parameter. |
SPARSE_STAGE_FINALIZE_MULT | Finalize computation. Can also be used when the matrix structure remains unchanged and only values of the resulting matrix C need to be recomputed. |
SPARSE_STAGE_FULL_MULT_NO_VAL | Perform computations of the matrix structure. |
SPARSE_STAGE_FULL_MULT | Perform the entire computation in a single step. |
SPARSE_MATRIX_T.
Handle which contains the resulting sparse matrix.
INTEGER.
Value indicating whether the operation was successful or not, and why:
SPARSE_STATUS_SUCCESS | The operation was successful. |
SPARSE_STATUS_NOT_INITIALIZED | The routine encountered an empty handle or matrix array. |
SPARSE_STATUS_ALLOC_FAILED | Internal memory allocation failed. |
SPARSE_STATUS_INVALID_VALUE | The input parameters contain an invalid value. |
SPARSE_STATUS_EXECUTION_FAILED | Execution failed. |
SPARSE_STATUS_INTERNAL_ERROR | An error in algorithm implementation occurred. |
SPARSE_STATUS_NOT_SUPPORTED | The requested operation is not supported. |