HP MLIB User's Guide Vol. 1 7th Ed.

Chapter 4 Sparse BLAS Operations 469
Block sparse row matrix-matrix multiply SBSRMM/DBSRMM/CBSRMM/ZBSRMM
Name SBSRMM/DBSRMM/CBSRMM/ZBSRMM
Block sparse row matrix-matrix multiply
Purpose Block sparse row matrix-matrix multiply. These subprograms compute the
matrix-matrix product AB, where A is a m-by-k sparse matrix, and B is a k-by-n
matrix with m=mb x lb and k=kb x lb. Optionally, A may be replaced by A
T
or
A*, where A
T
or A* is a k-by-m matrix, and B is a m-by-n matrix. Here A
T
is the
transpose and A* is the conjugate-transpose of A. The product may be stored in
the result matrix C or optionally may be added to or subtracted from it. This is
handled in a convenient, but general way by two scalar arguments, α and β,
which are used as multipliers of the matrix product and the result matrix.
Specifically, these subprograms compute matrix products of the form
Usage VECLIB:
SUBROUTINE SBSRMM
INTEGER*4 transa, mb, n, kb, lb, ldb, ldc, lwork
INTEGER*4 descra(*), bindx(*), bpntrb(*), bpntre(*)
REAL*4 alpha, beta
REAL*4 val(*), b(ldb,*), c(ldc,*), work(*)
CALL SBSRMM (transa, mb, n, kb, alpha, descra, val, bindx, bpntrb,
bpntre, lb, b, ldb, beta, c, ldc, work, lwork)
SUBROUTINE DBSRMM
INTEGER*4 transa, mb, n, kb, lb, ldb, ldc, lwork
INTEGER*4 descra(*), bindx(*), bpntrb(*), bpntre(*)
REAL*8 alpha, beta
REAL*8 val(*), b(ldb,*), c(ldc,*), work(*)
CALL DBSRMM (transa, mb, n, kb, alpha, descra, val, bindx, bpntrb,
bpntre, lb, b, ldb, beta, c, ldc, work, lwork)
SUBROUTINE CBSRMM
INTEGER*4 transa, mb, n, kb, lb, ldb, ldc, lwork
INTEGER*4 descra(*), bindx(*), bpntrb(*), bpntre(*)
COMPLEX*8 alpha, beta
COMPLEX*8 val(*), b(ldb,*), c(ldc,*), work(*)
CALL CBSRMM (transa, mb, n, kb, alpha, descra, val, bindx, bpntrb,
bpntre, lb, b, ldb, beta, c, ldc, work, lwork)
C ←αAB C
C ←αA
T
B C
C ←αA
B C