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

问题描述 投票:1回答:1

根据我的理解,BLAS 3级矩阵/矩阵例程采用ldaldb等参数,允许人们通过'strided'矩阵。例如,如果我有以下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。它看起来效率不高。或者dgemm,其中B = 1且C = 0。

matrix memcpy blas cblas
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的实现

© www.soinside.com 2019 - 2024. All rights reserved.