如何在BLAS中复制大步矩阵?

时间:2019-04-27 16:00:20

标签: matrix memcpy blas cblas

BLAS 3级矩阵/矩阵例程采用参数ldaldb等,据我所知,它们可以传递“条纹”矩阵。例如,如果我有以下2 x 2列主矩阵:

|1 2|
|3 4|
|x x|

其中x是我要忽略的数据,我可以使用参数m = 2, n = 2, lda=3(对于列主要矩阵)来表示。 我的问题是,可以使用BLAS例程复制此类矩阵吗?

如果步幅等于矩阵维数(即矩阵未跨越),则使用 vector copy 过程很简单,例如dcopy(m*n,A,1,B,1)为此。 当矩阵元素不连续时(例如lda / stride!= m

),有没有办法做到这一点?

我可以想到的一种方法是,以不断增加的偏移量反复调用dcopy,同时使incrx参数等于m。看来效率不高。另外,dgemm的B = I,C = 0。

1 个答案:

答案 0 :(得分:1)

请查看此文档:

http://www.netlib.org/lapack/explore-3.1.1-html/slacpy.f.html

SLACPY( UPLO, M, N, A, LDA, B, LDB )

例如,对于从A的全部或部分到B的单精度实数矩阵,上面的方法可以满足您的要求。它的使用相当困难。当然,您会找到所有风味D,C,Z的实现