在BLAS中转置还是先自己做?

4
我正在使用Fortran 77编写一些科学代码,现在有一个关于加速的讨论。基本上,我有一个MxN矩阵,我们称之为A。其中M大于N。在代码后面,我需要将转置(A)与一堆向量相乘。
我的问题是,是自己转置A并存储它更快,还是当我调用BLAS时,只需给它转置标志即可?
谢谢! -Patrick

你能否将这些向量合成矩阵,而不是逐个相乘? - Anycorn
这取决于具体情况。基本上,这是一个压缩矩阵的算法。一旦压缩完成,就可以快速地将其应用于向量,而在此过程中A'会被乘以。不管怎样,这将取决于用户给出的向量数量。 - Patrick
1个回答

6

我的直觉告诉我要使用转置标志。 在这种情况下,您会使用步幅为一的大量点积。

实际上,如果没有运行代码,很难确定。 现代 BLAS 使用缓存阻塞技术,使简单分析最多也很困难。


谢谢!我就感觉这个问题不会有简单直接的答案。测试一下应该不太难,可能取决于A的大小和我对A'进行多少次乘法... - Patrick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接