Intel® Math Kernel Library 2018 Developer Reference - C
Computes the symmetric product of three sparse matrices and stores the result as a sparse matrix.
sparse_status_t mkl_sparse_sypr (sparse_operation_t operation , const sparse_matrix_t A, const sparse_matrix_t B, struct matrix_descr B, sparse_matrix_t *C, , sparse_request_trequest);
The mkl_sparse_sypr routine performs a multiplication of three sparse matrices that results in a symmetric or Hermitian matrix, C.
C:=A*B*opA(A)or
C:=opA(A)*B*Adepending on the input operation variable.
A, B, and C are sparse matrices. A has a general structure while B and C are symmetric or Hermitian matrices. opA(*) is the transpose (real precision) or conjugate transpose (complex precision) operator.
This routine supports only the sorted CSR format for the input matrix. If the data is unsorted, call the mkl_sparse_order routine before either mkl_sparse_sypr or mkl_sparse_?_syprd.
operation |
Specifies operation on the input sparse matrices.
|
|||||||||||||
A |
Handle containing a sparse matrix in the internal data structure. |
|||||||||||||
B |
Handle containing a sparse matrix in the internal data structure. |
|||||||||||||
descrB |
Structure specifying properties of the sparse matrix. |
sparse_matrix_type_t type specifies the type of a sparse matrix
|
sparse_fill_mode_t mode specifies the triangular matrix part.
|
sparse_diag_type_t diag specifies the type of diagonal.
NoteThis routine also supports C=AAT,H with these parameters: descrB.type=SPARSE_MATRIX_TYPE_DIAGONAL descrB.diag=SPARSE_DIAG_UNIT In this case, you do not need to allocate structure B. Use the routine as a 2-stage version of mkl_sparse_syrk. |
||||||||||
sparse_request_t request |
Use this routine to specify if the computations should be performed in a single step or using the two-stage algorithm. See Two-stage Algorithm for Inspector-executor Sparse BLAS Routines for more information.
|
C |
Handle containing the resulting sparse matrix in the internal data structure. Only the upper-triangular part of the matrix is computed. |
The function returns a value indicating whether the operation was successful, or the reason why it failed.
SPARSE_STATUS_SUCCESS |
The operation was successful. |
SPARSE_STATUS_NOT_INITIALIZED |
The routine encountered an empty handle or matrix array. |
SPARSE_STATUS_ALLOC_FAILED |
The internal memory allocation failed. |
SPARSE_STATUS_INVALID_VALUE |
The input parameters contain an invalid value. |
SPARSE_STATUS_EXECUTION_FAILED |
The execution failed. |
SPARSE_STATUS_INTERNAL_ERROR |
An error occurred in the implementation of the algorithm. |
SPARSE_STATUS_NOT_SUPPORTED |
The requested operation is not supported. |