Developer Reference

  • 0.9
  • 09/09/2020
  • Public Content
Contents

mkl_sparse_?_dotmv

Computes a sparse matrix-vector product followed by a dot product.

Syntax

sparse_status_t
mkl_sparse_s_dotmv
(
const sparse_operation_t
operation
,
const float
alpha
,
const
sparse_matrix_t
A
,
const struct
matrix_descr
descr
,
const
float
*x
,
const float
beta
,
float
*y
,
float
*d
);
sparse_status_t
mkl_sparse_d_dotmv
(
const sparse_operation_t
operation
,
const double
alpha
,
const
sparse_matrix_t
A
,
const struct
matrix_descr
descr
,
const
double
*x
,
const double
beta
,
double
*y
,
double
*d
);
sparse_status_t
mkl_sparse_c_dotmv
(
const sparse_operation_t
operation
,
const MKL_Complex8
alpha
,
const
sparse_matrix_t
A
,
const struct
matrix_descr
descr
,
const
MKL_Complex8
*x
,
const MKL_Complex8
beta
,
MKL_Complex8
*y
,
MKL_Complex8
*d
);
sparse_status_t
mkl_sparse_z_dotmv
(
const sparse_operation_t
operation
,
const MKL_Complex16
alpha
,
const
sparse_matrix_t
A
,
const struct
matrix_descr
descr
,
const
MKL_Complex16
*x
,
const MKL_Complex16
beta
,
MKL_Complex16
*y
,
MKL_Complex16
*d
);
Include Files
  • mkl_spblas.h
Description
The
mkl_sparse_?_dotmv
routine computes a sparse matrix-vector product and dot product:
y := alpha*op(A)*x + beta*y d := ∑
i
x
i
*y
i
(real case) d := ∑
i
conj(x
i
)*y
i
(complex case)
where
  • alpha
    and
    beta
    are scalars.
  • x
    and
    y
    are vectors.
  • A
    is an
    m
    -by-
    k
    matrix.
  • conj
    represents complex conjugation.
  • op(
    A
    )
    is a matrix modifier.
Available options for
op
(
A
) are
A
,
A
T
, or
A
H
.
For sparse matrices in the BSR format, the supported combinations of (
indexing
,
block_layout
) are:
  • (
    SPARSE_INDEX_BASE_ZERO
    ,
    SPARSE_LAYOUT_ROW_MAJOR
    )
  • (
    SPARSE_INDEX_BASE_ONE
    ,
    SPARSE_LAYOUT_COLUMN_MAJOR
    )
Input Parameters
operation
Specifies the operation performed on matrix
A
.
If
operation
=
SPARSE_OPERATION_NON_TRANSPOSE
,
op(
A
) =
A
.
If
operation
=
SPARSE_OPERATION_TRANSPOSE
,
op(
A
) =
A
T
.
If
operation
=
SPARSE_OPERATION_CONJUGATE_TRANSPOSE
,
op(
A
) =
A
H
.
alpha
Specifies the scalar
alpha
.
A
Handle which contains the sparse matrix
A
.
descr
Structure
specifying sparse matrix properties.
sparse_matrix_type_t
type
- Specifies the type of a 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 requested triangle is processed). Applies to BSR format only.
SPARSE_MATRIX_TYPE_BLOCK_DIAGONAL
The matrix is block-diagonal (only diagonal blocks are processed). Applies to BSR format only.
sparse_fill_mode_t
mode
- Specifies the triangular matrix part for symmetric, Hermitian, triangular, and block-triangular matrices:
SPARSE_FILL_MODE_LOWER
The lower triangular matrix part is processed.
SPARSE_FILL_MODE_UPPER
The upper triangular matrix part is processed.
sparse_diag_type_t
diag
- Specifies diagonal type for non-general matrices:
SPARSE_DIAG_NON_UNIT
Diagonal elements might not be equal to one.
SPARSE_DIAG_UNIT
Diagonal elements are equal to one.
x
If
operation
=
SPARSE_OPERATION_NON_TRANSPOSE
, array of size at least
k
, where
k
is the number of columns of matrix
A
.
Otherwise, array of size at least
m
, where
m
is the number of rows of matrix
A
.
On entry, the array
x
must contain the vector
x
.
beta
Specifies the scalar
beta
.
y
If
operation
=
SPARSE_OPERATION_NON_TRANSPOSE
, array of size at least
m
, where
k
is the number of rows of matrix
A
.
Otherwise, array of size at least
k
, where
k
is the number of columns of matrix
A
.
On entry, the array
y
must contain the vector
y
.
Output Parameters
y
Overwritten by the updated vector
y
.
d
Overwritten by the dot product of
x
and
y
.
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.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804