Intel® Math Kernel Library 2018 Developer Reference - C

mkl_sparse_?_syrkd

Computes the product of sparse matrix with its transposed matrix 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, const 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, const MKL_INT ldc);

Include Files

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 Hermetian (complex case):

C := beta*C + alpha*A*op(A)
or
C := beta*C + alpha*op(A)*A
where op(*) is the transpose (real matrices) or conjugate transpose (complex matrices)

Note

This routine supports only the sorted CSR format for the input matrix. If data is unsorted, call the mkl_sparse_order routine before either mkl_sparse_syrk or mkl_sparse_?_syrkd.

Input Parameters

operation

Specifies the operation op() performed on the input matrix.

SPARSE_OPERATION_NON_TRANSPOSE, Non-transpose, C := beta*C + alpha*A*op(A) where op(*) is the transpose (real matrices) or conjugate transpose (complex matrices).

SPARSE_OPERATION_TRANSPOSE, Transpose,C := beta*C + alpha*AT*A for real matrix A.

SPARSE_OPERATION_CONJUGATE_TRANSPOSE Conjugate transpose,C := beta*C + alpha*AH*A for complex matrix A.

A

Handle containing a sparse matrix in internal data structure.

alpha

Scalar parameter alpha.

beta

Scalar parameter beta.

layout

Describes the storage scheme for the dense matrix.

layout = SPARSE_LAYOUT_COLUMN_MAJOR

Storage of elements uses column-major layout.

layout = SPARSE_LAYOUT_ROW_MAJOR

Storage of elements uses row-major layout.
ldc

Leading dimension of matrix C.

Note

Only the upper triangular part of matrix C is processed. Therefore, you must set real values of alpha and beta for complex matrices in order to obtain a Hermitian matrix.

Output Parameters

C

Resulting dense matrix. 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.