gpt4 book ai didi

c++ - BOOST uBLAS 矩阵乘积极慢

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:36 28 4
gpt4 key购买 nike

有没有办法 boost boost ublas 产品的性能?

我有两个矩阵 A,B,我想对其进行多重/添加/子/...

在 MATLAB 与 C++ 中,对于 2000x2000 矩阵运算,我得到以下时间 [s]

OPERATION | MATLAB | C++ (MSVC10)
A + B | 0.04 | 0.04
A - B | 0.04 | 0.04
AB | 1.0 | 62.66
A'B' | 1.0 | 54.35

为什么这里会有这么大的性能损失?

矩阵只是真正的 double 。但我还需要正定、对称、矩形积。

编辑:代码很简单

matrix<double> A( 2000 , 2000 );
// Fill Matrix A
matrix<double> B = A;

C = A + B;
D = A - B;
E = prod(A,B);
F = prod(trans(A),trans(B));

编辑 2:结果是 10 次尝试的平均值。 stddev 小于 0.005

我希望可能有 2-3 个因子,但不是 50 (!)

编辑 3:一切都在发布 (NDEBUG/MOVE_SEMANTICS/..) 模式下进行。

编辑 4:产品结果的预分配矩阵不影响运行时间。

最佳答案

发布您的 C+ 代码以获得任何可能的优化建议。

但是您应该知道,Matlab 对其设计的任务高度特化,您不太可能使用 Boost 来匹配它。另一方面 - Boost 是免费的,而 Matlab 显然不是。

我相信通过将 uBlas 代码绑定(bind)到底层的 LAPACK 实现,可以获得最佳的 Boost 性能。

关于c++ - BOOST uBLAS 矩阵乘积极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7798285/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com