对于一般和对称情况(MKL实现的链接),存在带状矩阵向量乘积的BLAS Level 2中的例程。BLAS 2级频带矩阵 - 向量乘积多个向量
有没有办法使用多个向量(不使用for循环外),最大限度地在这种情况下的表现?
对于一般和对称情况(MKL实现的链接),存在带状矩阵向量乘积的BLAS Level 2中的例程。BLAS 2级频带矩阵 - 向量乘积多个向量
有没有办法使用多个向量(不使用for循环外),最大限度地在这种情况下的表现?
我认为Spike library应该有这样一个例程的对称情况。尽管如此,我恐怕不能再有任何帮助,因为我从来没有用过它。
Spike(用于系统求解)的算法和实现概述于[Polizzi & Sameh, Comp. Fluids (36), 2007]。
我只是因为你提供了一个有效的替代方案,才将你的答案标记为Picaud Vincent的正确答案。但是,我确实认为这是BLAS实现中应该提供的。 – fcdimitr
AFAIK答案是否定的。
3级BLAS子程序的完整列表可以在这里找到
http://www.netlib.org/blas/#_level_3
并没有带状矩阵子程序。
的额外信息:如果您正在使用BLAS/LAPACK & C++有设计一个C++接口,一个最新举措:
http://www.netlib.org/na-digest-html/17/v17n21.html#1
(cblas和lapacke都更加注重了C用法)
当你有一个密集的完整矩阵(多个向量)时,没有办法利用其中一个的带状结构来获得速度。 – percusse
@percusse我不认为你的陈述成立。也许你误解了我的问题。我想要多个右侧向量,即y = A * x,其中A是稀疏带状的,x是N-D。你可以利用x中的每个向量,因为它们的结果是独立的(y的每一列) – fcdimitr
是的,这就是为什么BLAS3没有它们,因为它只是遍历y的每一列,因此BLAS2函数。 BLAS3使用块而不是RHS的列。 – percusse