BLAS/LAPACK 子程序添加两个具有不同偏移量和前导维度的矩阵

计算科学 线性代数 拉帕克 布拉斯
2021-11-27 20:14:21

我目前正在从 BLAS 或 LAPACK 中搜索实现以下操作的子程序

A = alpha*A + beta * B

其中 A 和 B 具有不同的前导维度,即 A 存储为

 REAL*8 A(N,N)

和 B 存储为

 REAL*B B(LDB,N)

LDB > N。

有没有办法使用现有的 BLAS 或 LAPACK 操作来计算这个,或者我必须为这类问题创建一个自己的子程序?

2个回答

只需编写循环代码,然后在这里忘记 BLAS。添加两个矩阵受到带宽限制,在这种情况下,编译器可能会像 BLAS 实现一样出色

您能做的最好的事情是AXPY在每一列上使用 BLAS,但这并不能让您应用beta. 您真的不妨自己编写,因为这基本上是 1 级或 2 级 BLAS 操作,对于大型矩阵来说,内存带宽是有限的。