问题标签 [boost-ublas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6166 浏览

c++ - BOOST uBLAS 矩阵积极慢

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

我有两个矩阵 A,B 我想乘/添加/子/...

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

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

矩阵只是真正的双打。但我也需要正定、对称、矩形产品。

编辑:代码很简单

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

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

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

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

0 投票
0 回答
171 浏览

c++ - uBlas 非常慢

可能重复:
BOOST uBLAS 矩阵乘积极慢

我正在尝试使用 uBlas 库(在 boost 中)。

我为多个两个大型矩阵编写了一个简单的代码。结果太慢了,当我将性能与 Matlab 和 Octave 进行比较时,速度非常慢。你能帮我解决问题吗

0 投票
2 回答
1587 浏览

c++ - 如何将 boost 矩阵 prod() 函数作为乘法函数传递?

我正在尝试执行矩阵求幂,但我不想复制/粘贴我的求幂函数,而宁愿使用类模板。问题是对于 boost 矩阵,要乘以矩阵,您使用prod函数(而不是operator*)。

似乎 g++ 无法找出我想要使用的模板。我用下面的代码得到的错误是

这是代码:

有没有办法将 prod() 传递给 my_pow 以便模板解析?谢谢。

如果不清楚:b 是底数,e 是指数,my_pow 是计算 b^e

0 投票
1 回答
941 浏览

c++ - 使用 boost 求解(密集)线性系统 Ax=b

我有一个 Ax=b 类型的密集方程系统要在我的 C++ 程序中求解,我希望在 boost 中使用 UBLAS 来实现该解决方案。在其他一些问题中,我发现人们正在使用扩展 LAPACK,但不幸的是,它似乎不是我标准 boost 安装的一部分(至少在 Debian 中),并且我不允许添加更多依赖项。

有人可以粘贴不使用 LAPACK 或任何其他库的解决方案吗?

0 投票
2 回答
1366 浏览

c++ - Boost uBLAS 矩阵参考

我想知道是否可以获取 Boost uBLAS 矩阵的单个元素的地址?

那是

现在,第二行当然行不通……但我愿意。

有什么想法吗?

谢谢!

0 投票
3 回答
1724 浏览

c++ - GDB 不能显示 Boost uBLAS 矩阵?

我有一个使用 Boost 的 uBLAS 矩阵实现成功编译的程序。唉,使用 gdb 进行调试被证明是有问题的,因为在调试时我无法查看矩阵的内容。当我尝试查看矩阵 V 的元素(确实存在并且充满数据)时,我得到:

有没有解决的办法?

谢谢!

0 投票
2 回答
417 浏览

c++ - 提升,matrix_proxy,常量矩阵

给出这个:

错误:

如何unconst在函数参数中给出参考或使用哪种解决方法?我不确定是否简单的分配

不会有任何开销。

0 投票
1 回答
272 浏览

c++ - 使用 ublas::bounded_vector 警告类型转换的 g++ 编译器选项

考虑以下代码:

当我使用带有以下选项的 g++(4.6.1 版)编译它时:

我收到以下警告:

当我运行程序时,我得到:

编译器对标量的转换产生了警告,但对 ublas 转换没有警告,有没有办法让编译器在这种情况下编写警告?看起来-Wconversion或任何其他选项都没有这样做。

0 投票
3 回答
23071 浏览

c++ - 为什么 boosts 矩阵乘法比我的慢?

我已经实现了一个矩阵乘法boost::numeric::ublas::matrix(请参阅我的完整工作增强代码

另一个使用标准算法(参见完整的标准代码):

这就是我测试速度的方式:

两个程序都读取包含两个 2000 x 2000 矩阵的硬编码文本文件。这两个程序都是用这些标志编译的:

我的实现用了15 秒,而提升实现用了4 多分钟!

编辑:编译后

ikj 算法得到28.19 秒,Boost 得到60.99 秒。所以Boost仍然相当慢。

为什么 boost 比我的实现慢得多?

0 投票
1 回答
1418 浏览

c++ - 如何在 boost/c++ 中使用 zero_vector 进行初始化?

我正在查看以下答案之一: 填充 boost 向量或矩阵 ,但我认为我是 boost(和 xcode,就此而言)的新手,并且正试图将我的头绕在 boost zero_vector 周围。

我尝试了一个简单的程序,我认为它与其中一个答案大致相同:

它可以编译,但是当它运行时,我得到一个运行时错误(用“/PATH/TO”代替真实路径)。

在这里,我只是使用一个 main.cpp 作为测试区域。在我的真实程序中,我将声明拆分为一个 .h 文件,并将我的初始化放在我的对象的一个​​ .cpp 文件中。但是上面的代码和我的真实程序一样失败。(即为什么我将声明和初始化分为两个步骤)

另外,我知道调整大小已经初始化为零。也许我会做一个 scalar_vector 代替,或者我可能需要稍后重置数组或其他东西。我只是想隔离正在破坏的代码。