2

据我了解, BLAS 3 级矩阵/矩阵例程采用参数ldaldb,允许传递“跨步”矩阵。例如,如果我有以下 2 x 2 列主矩阵:

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

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

如果步幅等于矩阵维数(即矩阵没有步幅),则使用向量复制过程(例如dcopy(m*n,A,1,B,1)执行此操作)是微不足道的。当矩阵元素不连续时有没有办法做到这一点,即 lda/stride != m

我能想到的一种方法是重复调用dcopy增加偏移量,同时保持incrx参数等于 m。似乎效率不高。或者dgemmB = I 和 C = 0。

4

1 回答 1

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 的实现

于 2019-04-29T18:33:41.347 回答