Developer Reference for Intel® oneAPI Math Kernel Library for C
mkl_sparse_?_syrkd
Computes the product of sparse matrix with its transpose (or conjugate transpose) and stores the result as a dense matrix.
Syntax
sparse_status_t mkl_sparse_s_syrkd ( sparse_operation_t operation,
const sparse_matrix_t A,
float alpha,
float beta,
float *C,
sparse_layout_t layout,
MKL_INT ldc );
sparse_status_t mkl_sparse_d_syrkd ( sparse_operation_t operation,
const sparse_matrix_t A,
double alpha,
double beta,
double *C,
sparse_layout_t layout,
MKL_INT ldc );
sparse_status_t mkl_sparse_c_syrkd ( sparse_operation_t operation,
const sparse_matrix_t A,
MKL_Complex8 alpha,
MKL_Complex8 beta,
MKL_Complex8 *C,
sparse_layout_t layout,
MKL_INT ldc );
sparse_status_t mkl_sparse_z_syrkd ( sparse_operation_t operation,
const sparse_matrix_t A,
MKL_Complex16 alpha,
MKL_Complex16 beta,
MKL_Complex16 *C,
sparse_layout_t layout,
MKL_INT ldc );
Include Files
mkl_spblas.h
Description
The mkl_sparse_?_syrkd routine performs a sparse matrix-matrix operation which results in a dense matrix C that is either symmetric (real case) or Hermitian (complex case):
\[C \leftarrow \beta C + \alpha A \cdot op(A)\]
where \(op()\) is the transpose for real matrices and conjugate transpose for complex matrices OR
\[C \leftarrow \beta C + \alpha op(A) \cdot A\]
depending on the matrix modifier \(op()\) which can be the transpose for real matrices or conjugate transpose for complex matrices. Here, \(A\) is a sparse matrix and \(C\) is a dense matrix.
Input Parameters
operation
Specifies operation op() on input matrix:
operation |
Description |
|---|---|
SPARSE_OPERATION_NON_TRANSPOSE |
\(C \leftarrow \beta\cdot C + \alpha\cdot A\cdot A^{T}\) for real matrices and \(C \leftarrow \beta\cdot C + \alpha\cdot A\cdot A^{H}\) for complex matrices. |
SPARSE_OPERATION_TRANSPOSE |
\(C \leftarrow \beta\cdot C + \alpha\cdot A^{T}\cdot A\) for real matrix \(A\). |
SPARSE_OPERATION_CONJUGATE_TRANSPOSE |
\(C \leftarrow \beta\cdot C + \alpha\cdot A^{H}\cdot A\) for complex matrix \(A\). |
A
Handle which contains the sparse matrix \(A\) . The matrix must be in sorted CSR or sorted BSR format. See mkl_sparse_order for more details on sorting the data.
alpha
Specifies the scalar, \(\alpha\).
beta
Specifies the scalar, \(\beta\).
layout
Structure that describes the storage scheme for the dense matrix \(C\).
SPARSE_LAYOUT_COLUMN_MAJOR |
Store elements in a column-major layout. |
SPARSE_LAYOUT_ROW_MAJOR |
Store elements in a row-major layout. |
ldc
Leading dimension of matrix \(C\).
Output Parameters
C
Handle which contains the resulting dense matrix \(C\). Only the upper-triangular part of the matrix is computed.
Return Values
The function returns a 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. |