# rocsparse_sddmm Interface Reference#

HIPFORT API Reference: hipfort_rocsparse::rocsparse_sddmm Interface Reference
hipfort_rocsparse::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 and beta are invalid, A, B, D, C or temp_buffer pointer is invalid. rocsparse_status_not_implemented opA == rocsparse_operation_conjugate_transpose or opB == rocsparse_operation_conjugate_transpose.

## ◆ 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: