@@ -34,7 +34,7 @@ extern "C" {
3434#endif
3535
3636/*! \ingroup level2_module
37- * \brief Single precision sparse matrix vector multiplication using CSR storage format
37+ * \brief Single & Double precision sparse matrix vector multiplication using CSR storage format
3838 *
3939 * \details
4040 * \p aoclsparse_csrmv multiplies the scalar \f$\alpha\f$ with a sparse \f$m \times n\f$
@@ -69,6 +69,8 @@ extern "C" {
6969 *
7070 * \note
7171 * Currently, only \p trans == \ref aoclsparse_operation_none is supported.
72+ * Currently, for \ref aoclsparse_matrix_type == \ref aoclsparse_matrix_type_symmetric,
73+ * only lower triangular matrices are supported.
7274 *
7375 * @param[in]
7476 * trans matrix operation type.
@@ -88,8 +90,10 @@ extern "C" {
8890 * @param[in]
8991 * csr_row_ptr array of \p m+1 elements that point to the start
9092 * of every row of the sparse CSR matrix.
93+ * @param[in]
9194 * descr descriptor of the sparse CSR matrix. Currently, only
92- * \ref aoclsparse_matrix_type_general is supported.
95+ * \ref aoclsparse_matrix_type_general and
96+ * \ref aoclsparse_matrix_type_symmetric is supported.
9397 * @param[in]
9498 * x array of \p n elements (\f$op(A) == A\f$) or \p m elements
9599 * (\f$op(A) == A^T\f$ or \f$op(A) == A^H\f$).
@@ -107,6 +111,7 @@ extern "C" {
107111 * \retval aoclsparse_status_not_implemented
108112 * \p trans != \ref aoclsparse_operation_none or
109113 * \ref aoclsparse_matrix_type != \ref aoclsparse_matrix_type_general.
114+ * \ref aoclsparse_matrix_type != \ref aoclsparse_matrix_type_symmetric.
110115 *
111116 * \par Example
112117 * This example performs a sparse matrix vector multiplication in CSR format
@@ -145,107 +150,7 @@ aoclsparse_status aoclsparse_scsrmv(aoclsparse_operation trans,
145150 const float * x ,
146151 const float * beta ,
147152 float * y );
148- /**@}*/
149153
150- /*! \ingroup level2_module
151- * \brief Double precision sparse matrix vector multiplication using CSR storage format
152- *
153- * \details
154- * \p aoclsparse_csrmv multiplies the scalar \f$\alpha\f$ with a sparse \f$m \times n\f$
155- * matrix, defined in CSR storage format, and the dense vector \f$x\f$ and adds the
156- * result to the dense vector \f$y\f$ that is multiplied by the scalar \f$\beta\f$,
157- * such that
158- * \f[
159- * y := \alpha \cdot op(A) \cdot x + \beta \cdot y,
160- * \f]
161- * with
162- * \f[
163- * op(A) = \left\{
164- * \begin{array}{ll}
165- * A, & \text{if trans == aoclsparse_operation_none} \\
166- * A^T, & \text{if trans == aoclsparse_operation_transpose} \\
167- * A^H, & \text{if trans == aoclsparse_operation_conjugate_transpose}
168- * \end{array}
169- * \right.
170- * \f]
171- *
172- * \code{.c}
173- * for(i = 0; i < m; ++i)
174- * {
175- * y[i] = beta * y[i];
176- *
177- * for(j = csr_row_ptr[i]; j < csr_row_ptr[i + 1]; ++j)
178- * {
179- * y[i] = y[i] + alpha * csr_val[j] * x[csr_col_ind[j]];
180- * }
181- * }
182- * \endcode
183- *
184- * \note
185- * Currently, only \p trans == \ref aoclsparse_operation_none is supported.
186- *
187- * @param[in]
188- * trans matrix operation type.
189- * @param[in]
190- * alpha scalar \f$\alpha\f$.
191- * @param[in]
192- * m number of rows of the sparse CSR matrix.
193- * @param[in]
194- * n number of columns of the sparse CSR matrix.
195- * @param[in]
196- * nnz number of non-zero entries of the sparse CSR matrix.
197- * @param[in]
198- * csr_val array of \p nnz elements of the sparse CSR matrix.
199- * @param[in]
200- * csr_col_ind array of \p nnz elements containing the column indices of the sparse
201- * CSR matrix.
202- * @param[in]
203- * csr_row_ptr array of \p m+1 elements that point to the start
204- * of every row of the sparse CSR matrix.
205- * descr descriptor of the sparse CSR matrix. Currently, only
206- * \ref aoclsparse_matrix_type_general is supported.
207- * @param[in]
208- * x array of \p n elements (\f$op(A) == A\f$) or \p m elements
209- * (\f$op(A) == A^T\f$ or \f$op(A) == A^H\f$).
210- * @param[in]
211- * beta scalar \f$\beta\f$.
212- * @param[inout]
213- * y array of \p m elements (\f$op(A) == A\f$) or \p n elements
214- * (\f$op(A) == A^T\f$ or \f$op(A) == A^H\f$).
215- *
216- * \retval aoclsparse_status_success the operation completed successfully.
217- * \retval aoclsparse_status_invalid_size \p m, \p n or \p nnz is invalid.
218- * \retval aoclsparse_status_invalid_pointer \p descr, \p alpha, \p csr_val,
219- * \p csr_row_ptr, \p csr_col_ind, \p x, \p beta or \p y pointer is
220- * invalid.
221- * \retval aoclsparse_status_not_implemented
222- * \p trans != \ref aoclsparse_operation_none or
223- * \ref aoclsparse_matrix_type != \ref aoclsparse_matrix_type_general.
224- *
225- * \par Example
226- * This example performs a sparse matrix vector multiplication in CSR format
227- * using additional meta data to improve performance.
228- * \code{.c}
229- * // Compute y = Ax
230- * aoclsparse_scsrmv(aoclsparse_operation_none,
231- * &alpha,
232- * m,
233- * n,
234- * nnz,
235- * csr_val,
236- * csr_col_ind,
237- * csr_row_ptr,
238- * descr,
239- * x,
240- * &beta,
241- * y);
242- *
243- * // Do more work
244- * // ...
245- *
246- * \endcode
247- */
248- /**@{*/
249154__attribute__((__visibility__ ("default" )))
250155aoclsparse_status aoclsparse_dcsrmv (aoclsparse_operation trans ,
251156 const double * alpha ,
@@ -262,7 +167,7 @@ aoclsparse_status aoclsparse_dcsrmv(aoclsparse_operation trans,
262167/**@}*/
263168
264169/*! \ingroup level2_module
265- * \brief Single precision sparse matrix vector multiplication using ELL storage format
170+ * \brief Single & Double precision sparse matrix vector multiplication using ELL storage format
266171 *
267172 * \details
268173 * \p aoclsparse_ellmv multiplies the scalar \f$\alpha\f$ with a sparse \f$m \times n\f$
@@ -355,89 +260,7 @@ aoclsparse_status aoclsparse_sellmv(aoclsparse_operation trans,
355260 const float * x ,
356261 const float * beta ,
357262 float * y );
358- /**@}*/
359263
360- /*! \ingroup level2_module
361- * \brief Double precision sparse matrix vector multiplication using ELL storage format
362- *
363- * \details
364- * \p aoclsparse_ellmv multiplies the scalar \f$\alpha\f$ with a sparse \f$m \times n\f$
365- * matrix, defined in ELL storage format, and the dense vector \f$x\f$ and adds the
366- * result to the dense vector \f$y\f$ that is multiplied by the scalar \f$\beta\f$,
367- * such that
368- * \f[
369- * y := \alpha \cdot op(A) \cdot x + \beta \cdot y,
370- * \f]
371- * with
372- * \f[
373- * op(A) = \left\{
374- * \begin{array}{ll}
375- * A, & \text{if trans == aoclsparse_operation_none} \\
376- * A^T, & \text{if trans == aoclsparse_operation_transpose} \\
377- * A^H, & \text{if trans == aoclsparse_operation_conjugate_transpose}
378- * \end{array}
379- * \right.
380- * \f]
381- *
382- * \code{.c}
383- * for(i = 0; i < m; ++i)
384- * {
385- * y[i] = beta * y[i];
386- *
387- * for(p = 0; p < ell_width; ++p)
388- * {
389- * idx = p * m + i;
390- *
391- * if((ell_col_ind[idx] >= 0) && (ell_col_ind[idx] < n))
392- * {
393- * y[i] = y[i] + alpha * ell_val[idx] * x[ell_col_ind[idx]];
394- * }
395- * }
396- * }
397- * \endcode
398- *
399- * \note
400- * Currently, only \p trans == \ref aoclsparse_operation_none is supported.
401- *
402- * @param[in]
403- * trans matrix operation type.
404- * @param[in]
405- * alpha scalar \f$\alpha\f$.
406- * @param[in]
407- * m number of rows of the sparse ELL matrix.
408- * @param[in]
409- * n number of columns of the sparse ELL matrix.
410- * @param[in]
411- * nnz number of non-zero entries of the sparse ELL matrix.
412- * @param[in]
413- * descr descriptor of the sparse ELL matrix. Currently, only
414- * \ref aoclsparse_matrix_type_general is supported.
415- * @param[in]
416- * ell_val array that contains the elements of the sparse ELL matrix. Padded
417- * elements should be zero.
418- * @param[in]
419- * ell_col_ind array that contains the column indices of the sparse ELL matrix.
420- * Padded column indices should be -1.
421- * @param[in]
422- * ell_width number of non-zero elements per row of the sparse ELL matrix.
423- * @param[in]
424- * x array of \p n elements (\f$op(A) == A\f$) or \p m elements
425- * (\f$op(A) == A^T\f$ or \f$op(A) == A^H\f$).
426- * @param[in]
427- * beta scalar \f$\beta\f$.
428- * @param[inout]
429- * y array of \p m elements (\f$op(A) == A\f$) or \p n elements
430- * (\f$op(A) == A^T\f$ or \f$op(A) == A^H\f$).
431- *
432- * \retval aoclsparse_status_success the operation completed successfully.
433- * \retval aoclsparse_status_invalid_size \p m, \p n or \p ell_width is invalid.
434- * \retval aoclsparse_status_invalid_pointer \p descr, \p alpha, \p ell_val,
435- * \p ell_col_ind, \p x, \p beta or \p y pointer is invalid.
436- * \retval aoclsparse_status_not_implemented
437- * \p trans != \ref aoclsparse_operation_none or
438- * \ref aoclsparse_matrix_type != \ref aoclsparse_matrix_type_general.
439- */
440- /**@{*/
441264__attribute__((__visibility__ ("default" )))
442265aoclsparse_status aoclsparse_dellmv (aoclsparse_operation trans ,
443266 const double * alpha ,
@@ -580,8 +403,6 @@ aoclsparse_status aoclsparse_ddiamv(aoclsparse_operation trans,
580403* @param[in]
581404* nb number of block columns of the sparse BSR matrix.
582405* @param[in]
583- * nnzb number of non-zero blocks of the sparse BSR matrix.
584- * @param[in]
585406* alpha scalar \f$\alpha\f$.
586407* @param[in]
587408* descr descriptor of the sparse BSR matrix. Currently, only
0 commit comments