问题标签 [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.
c++ - BOOST uBLAS 矩阵积极慢
有没有办法提高boost ublas产品的性能?
我有两个矩阵 A,B 我想乘/添加/子/...
在 MATLAB 与 C++ 中,对于 2000x2000 矩阵运算,我得到以下时间 [s]
为什么这里会有如此巨大的性能损失?
矩阵只是真正的双打。但我也需要正定、对称、矩形产品。
编辑:代码很简单
编辑 2:结果是 10 次尝试的平均值。标准差小于 0.005
我希望一个因素可能是 2-3,但不是 50(!)
编辑 3:一切都在发布( NDEBUG/MOVE_SEMANTICS/.. )模式下进行。
编辑 4:产品结果的预分配矩阵不影响运行时间。
c++ - uBlas 非常慢
可能重复:
BOOST uBLAS 矩阵乘积极慢
我正在尝试使用 uBlas 库(在 boost 中)。
我为多个两个大型矩阵编写了一个简单的代码。结果太慢了,当我将性能与 Matlab 和 Octave 进行比较时,速度非常慢。你能帮我解决问题吗
c++ - 如何将 boost 矩阵 prod() 函数作为乘法函数传递?
我正在尝试执行矩阵求幂,但我不想复制/粘贴我的求幂函数,而宁愿使用类模板。问题是对于 boost 矩阵,要乘以矩阵,您使用prod
函数(而不是operator*
)。
似乎 g++ 无法找出我想要使用的模板。我用下面的代码得到的错误是
这是代码:
有没有办法将 prod() 传递给 my_pow 以便模板解析?谢谢。
如果不清楚:b 是底数,e 是指数,my_pow 是计算 b^e
c++ - 使用 boost 求解(密集)线性系统 Ax=b
我有一个 Ax=b 类型的密集方程系统要在我的 C++ 程序中求解,我希望在 boost 中使用 UBLAS 来实现该解决方案。在其他一些问题中,我发现人们正在使用扩展 LAPACK,但不幸的是,它似乎不是我标准 boost 安装的一部分(至少在 Debian 中),并且我不允许添加更多依赖项。
有人可以粘贴不使用 LAPACK 或任何其他库的解决方案吗?
c++ - Boost uBLAS 矩阵参考
我想知道是否可以获取 Boost uBLAS 矩阵的单个元素的地址?
那是
现在,第二行当然行不通……但我愿意。
有什么想法吗?
谢谢!
c++ - GDB 不能显示 Boost uBLAS 矩阵?
我有一个使用 Boost 的 uBLAS 矩阵实现成功编译的程序。唉,使用 gdb 进行调试被证明是有问题的,因为在调试时我无法查看矩阵的内容。当我尝试查看矩阵 V 的元素(确实存在并且充满数据)时,我得到:
有没有解决的办法?
谢谢!
c++ - 提升,matrix_proxy,常量矩阵
给出这个:
错误:
如何unconst
在函数参数中给出参考或使用哪种解决方法?我不确定是否简单的分配
不会有任何开销。
c++ - 使用 ublas::bounded_vector 警告类型转换的 g++ 编译器选项
考虑以下代码:
当我使用带有以下选项的 g++(4.6.1 版)编译它时:
我收到以下警告:
当我运行程序时,我得到:
编译器对标量的转换产生了警告,但对 ublas 转换没有警告,有没有办法让编译器在这种情况下编写警告?看起来-Wconversion
或任何其他选项都没有这样做。
c++ - 为什么 boosts 矩阵乘法比我的慢?
我已经实现了一个矩阵乘法boost::numeric::ublas::matrix
(请参阅我的完整工作增强代码)
另一个使用标准算法(参见完整的标准代码):
这就是我测试速度的方式:
两个程序都读取包含两个 2000 x 2000 矩阵的硬编码文本文件。这两个程序都是用这些标志编译的:
我的实现用了15 秒,而提升实现用了4 多分钟!
编辑:编译后
ikj 算法得到28.19 秒,Boost 得到60.99 秒。所以Boost仍然相当慢。
为什么 boost 比我的实现慢得多?
c++ - 如何在 boost/c++ 中使用 zero_vector 进行初始化?
我正在查看以下答案之一: 填充 boost 向量或矩阵 ,但我认为我是 boost(和 xcode,就此而言)的新手,并且正试图将我的头绕在 boost zero_vector 周围。
我尝试了一个简单的程序,我认为它与其中一个答案大致相同:
它可以编译,但是当它运行时,我得到一个运行时错误(用“/PATH/TO”代替真实路径)。
在这里,我只是使用一个 main.cpp 作为测试区域。在我的真实程序中,我将声明拆分为一个 .h 文件,并将我的初始化放在我的对象的一个 .cpp 文件中。但是上面的代码和我的真实程序一样失败。(即为什么我将声明和初始化分为两个步骤)
另外,我知道调整大小已经初始化为零。也许我会做一个 scalar_vector 代替,或者我可能需要稍后重置数组或其他东西。我只是想隔离正在破坏的代码。