@@ -398,6 +398,32 @@ for prec in double float; do
398398done
399399echo " /**@}*/"
400400
401+ echo "
402+ /**
403+ * \defgroup matvec_dense monolish::blas::matvec (Dense)
404+ * @brief Dense matrix and vector multiplication: y = aAx + by
405+ * @{
406+ */
407+ /**
408+ * @brief Dense matrix and vector multiplication: y = aAx + by
409+ * @param A Dense matrix (size M x N)
410+ * @param x monolish vector (size M)
411+ * @param y monolish vector (size M)
412+ * @note
413+ * - # of computation: MN
414+ * - Multi-threading: true
415+ * - GPU acceleration: true
416+ * - # of data transfer: 0
417+ */ "
418+ for prec in double float; do
419+ for arg1 in vector\< $prec \> view1D\< vector\< $prec \> ,$prec \> view1D\< matrix::Dense\< $prec \> ,$prec \> view1D\< tensor::tensor_Dense\< $prec \> ,$prec \> ; do
420+ for arg2 in vector\< $prec \> view1D\< vector\< $prec \> ,$prec \> view1D\< matrix::Dense\< $prec \> ,$prec \> view1D\< tensor::tensor_Dense\< $prec \> ,$prec \> ; do
421+ echo " void matvec(const $prec &a, const matrix::Dense<$prec > &A, const $arg1 &x, const $prec &b, $arg2 &y);"
422+ done
423+ done
424+ done
425+ echo " /**@}*/"
426+
401427# # matvec_* Dense
402428for trans in N T; do
403429 echo "
@@ -427,6 +453,34 @@ for trans in N T; do
427453echo " /**@}*/"
428454done
429455
456+ for trans in N T; do
457+ echo "
458+ /**
459+ * \defgroup matvec_dense_$trans monolish::blas::matvec_$trans (Dense)
460+ * @brief Dense matrix and vector multiplication: y = aA^$trans x + by
461+ * @{
462+ */
463+ /**
464+ * @brief Dense matrix and vector multiplication: y = aA^$trans x + by
465+ * @param A Dense matrix (size M x N)
466+ * @param x monolish vector (size M)
467+ * @param y monolish vector (size M)
468+ * @note
469+ * - # of computation: MN
470+ * - Multi-threading: true
471+ * - GPU acceleration: true
472+ * - # of data transfer: 0
473+ */ "
474+ for prec in double float; do
475+ for arg1 in vector\< $prec \> view1D\< vector\< $prec \> ,$prec \> view1D\< matrix::Dense\< $prec \> ,$prec \> view1D\< tensor::tensor_Dense\< $prec \> ,$prec \> ; do
476+ for arg2 in vector\< $prec \> view1D\< vector\< $prec \> ,$prec \> view1D\< matrix::Dense\< $prec \> ,$prec \> view1D\< tensor::tensor_Dense\< $prec \> ,$prec \> ; do
477+ echo " void matvec_$trans (const $prec &a, const matrix::Dense<$prec > &A, const $arg1 &x, const $prec &b, $arg2 &y);"
478+ done
479+ done
480+ done
481+ echo " /**@}*/"
482+ done
483+
430484# # matvec CRS
431485echo "
432486/**
@@ -454,6 +508,32 @@ for prec in double float; do
454508done
455509echo " /**@}*/"
456510
511+ echo "
512+ /**
513+ * \defgroup matvec_crs monolish::blas::matvec (CRS)
514+ * @brief CRS format sparse matrix and vector multiplication: y = aAx + by
515+ * @{
516+ */
517+ /**
518+ * @brief CRS format sparse matrix and vector multiplication: y = aAx + by
519+ * @param A CRS matrix (size M x N)
520+ * @param x monolish vector (size M)
521+ * @param y monolish vector (size M)
522+ * @note
523+ * - # of computation: 2nnz
524+ * - Multi-threading: true
525+ * - GPU acceleration: true
526+ * - # of data transfer: 0
527+ */ "
528+ for prec in double float; do
529+ for arg1 in vector\< $prec \> view1D\< vector\< $prec \> ,$prec \> view1D\< matrix::Dense\< $prec \> ,$prec \> view1D\< tensor::tensor_Dense\< $prec \> ,$prec \> ; do
530+ for arg2 in vector\< $prec \> view1D\< vector\< $prec \> ,$prec \> view1D\< matrix::Dense\< $prec \> ,$prec \> view1D\< tensor::tensor_Dense\< $prec \> ,$prec \> ; do
531+ echo " void matvec(const $prec &a, const matrix::CRS<$prec > &A, const $arg1 &x, const $prec &b, $arg2 &y);"
532+ done
533+ done
534+ done
535+ echo " /**@}*/"
536+
457537# # matvec_* CRS
458538for trans in N T; do
459539 echo "
@@ -483,6 +563,34 @@ for trans in N T; do
483563echo " /**@}*/"
484564done
485565
566+ for trans in N T; do
567+ echo "
568+ /**
569+ * \defgroup matvec_crs_$trans monolish::blas::matvec_$trans (CRS)
570+ * @brief CRS format sparse matrix and vector multiplication: y = aA^$trans x + by
571+ * @{
572+ */
573+ /**
574+ * @brief CRS format sparse matrix and vector multiplication: y = aA^$trans x + by
575+ * @param A CRS matrix (size M x N)
576+ * @param x monolish vector (size M)
577+ * @param y monolish vector (size M)
578+ * @note
579+ * - # of computation: 2nnz
580+ * - Multi-threading: true
581+ * - GPU acceleration: true
582+ * - # of data transfer: 0
583+ */ "
584+ for prec in double float; do
585+ for arg1 in vector\< $prec \> view1D\< vector\< $prec \> ,$prec \> view1D\< matrix::Dense\< $prec \> ,$prec \> view1D\< tensor::tensor_Dense\< $prec \> ,$prec \> ; do
586+ for arg2 in vector\< $prec \> view1D\< vector\< $prec \> ,$prec \> view1D\< matrix::Dense\< $prec \> ,$prec \> view1D\< tensor::tensor_Dense\< $prec \> ,$prec \> ; do
587+ echo " void matvec_$trans (const $prec &a, const matrix::CRS<$prec > &A, const $arg1 &x, const $prec &b, $arg2 &y);"
588+ done
589+ done
590+ done
591+ echo " /**@}*/"
592+ done
593+
486594
487595# # matvec LinearOperator
488596echo "
0 commit comments