rocsparse_sddmm Interface Reference#
Sampled Dense-Dense Matrix Multiplication. More...
Public Member Functions | |
integer(kind(rocsparse_status_success)) function | rocsparse_sddmm_ (handle, opA, opB, alpha, A, B, beta, C, compute_type, alg, temp_buffer) |
Detailed Description
Sampled Dense-Dense Matrix Multiplication.
rocsparse_sddmm
multiplies the scalar \(\alpha\) with the dense \(m \times k\) matrix \(A\), the dense \(k \times n\) matrix \(B\), filtered by the sparsity pattern of the \(m \times n\) sparse matrix \(C\) and adds the result to \(C\) scaled by \(\beta\). The final result is stored in the sparse \(m \times n\) matrix \(C\), such that
\[ C := \alpha ( opA(A) \cdot opB(B) ) \cdot spy(C) + \beta C, \]
with
\[ op(A) = \left\{ \begin{array}{ll} A, & \text{if opA == rocsparse_operation_none} \newline A^T, & \text{if opA == rocsparse_operation_transpose} \newline \end{array} \right. \]
,
\[ op(B) = \left\{ \begin{array}{ll} B, & \text{if opB == rocsparse_operation_none} \newline B^T, & \text{if opB == rocsparse_operation_transpose} \newline \end{array} \right. \]
and
\[ spy(C)_ij = \left\{ \begin{array}{ll} 1 \text{if i == j}, & 0 \text{if i != j} \newline \end{array} \right. \]
- Note
opA
==rocsparse_operation_conjugate_transpose
is not supported.-
opB
==rocsparse_operation_conjugate_transpose
is not supported.
- Parameters
-
[in] handle handle to the rocsparse library context queue. [in] opA dense matrix \(A\) operation type. [in] opB dense matrix \(B\) operation type. [in] alpha scalar \(\alpha\). [in] A dense matrix \(A\) descriptor. [in] B dense matrix \(B\) descriptor. [in] beta scalar \(\beta\). [in,out] C sparse matrix \(C\) descriptor. [in] compute_type floating point precision for the SDDMM computation. [in] alg specification of the algorithm to use. [in] temp_buffer temporary storage buffer allocated by the user. The size must be greater or equal to the size obtained with rocsparse_sddmm_buffer_size
.
- Return values
-
rocsparse_status_success the operation completed successfully. rocsparse_status_invalid_value the value of trans_A
,trans_B
,compute_type
or alg is incorrect.rocsparse_status_invalid_handle the library context was not initialized. rocsparse_status_invalid_pointer alpha
andbeta
are invalid,A
,B
,D
,C
ortemp_buffer
pointer is invalid.rocsparse_status_not_implemented opA
==rocsparse_operation_conjugate_transpose
oropB
==rocsparse_operation_conjugate_transpose
.
Member Function/Subroutine Documentation
◆ rocsparse_sddmm_()
integer(kind(rocsparse_status_success)) function hipfort_rocsparse::rocsparse_sddmm::rocsparse_sddmm_ | ( | type(c_ptr), value | handle, |
integer(kind(rocsparse_operation_none)), value | opA, | ||
integer(kind(rocsparse_operation_none)), value | opB, | ||
type(c_ptr), value | alpha, | ||
type(c_ptr), value | A, | ||
type(c_ptr), value | B, | ||
type(c_ptr), value | beta, | ||
type(c_ptr), value | C, | ||
integer(kind(rocsparse_datatype_f32_r)), value | compute_type, | ||
integer(kind(rocsparse_sddmm_alg_default)), value | alg, | ||
type(c_ptr), value | temp_buffer | ||
) |
The documentation for this interface was generated from the following file: