gpt4 book ai didi

multicore - Armadillo 线性系统求解器(带openblas)

转载 作者:行者123 更新时间:2023-12-02 00:12:49 31 4
gpt4 key购买 nike

我一直在测试用 C++ 求解线性方程组的各种开源代码。到目前为止,我发现最快的是 Armadillo ,它也使用 OPENblas 包。要解决一个密集的线性 NxN 系统,其中 N=5000 在我的系统上大约需要 8.3 秒,这真的非常快(没有安装 openblas,大约需要 30 秒)。

增加的一个原因是 armadillo+openblas 似乎启用了多线程。它在我的两个内核上运行,而没有 openblas 的 Armadillo 只使用 1 个。我有一个 i7 处理器,所以我想增加内核数量,并进一步测试它。我使用的是 ubuntu,所以根据 openblas 文档,我可以在终端中执行以下操作:

导出 OPENBLAS_NUM_THREADS=4

但是,再次运行代码似乎并没有增加使用的内核数量或速度。我做错了什么,还是 2 是使用 Armadillo 的“解决(A,b)”命令的最大数量?我无法在任何地方找到 Armadillo 的源代码来查看。

顺便说一句,有人知道 armadillo/openblas 用于求解 Ax=b 的方法(具有并行性的标准 LU 分解或其他方法)吗?谢谢!

编辑:实际上,在使用 synaptic 包管理器安装 openblas 时,内核数量停留在 2 似乎是一个错误 see here .从源代码重新安装允许它检测我实际拥有的内核数 (8)。现在我可以使用 export OPENBLAS_NUM_THREADS=4 等来管理它。

最佳答案

Armadillo不会阻止 OpenBlas从使用更多的核心。 OpenBlas 的当前实现可能只是为某些操作选择 2 个内核。

您可以直接在 downloadable 中查看 Armadillo 的源代码包(它是开源的),在文件夹“include”中。具体来说,查看文件“include/armadillo_bits/fn_solve.hpp”(其中包含用户可访问的 solve() 函数)和文件“include/armadillo_bits/auxlib_meat.hpp”(其中包含用于调用麻烦的 Blas 和 Lapack 函数的包装器和内务处理代码。

如果您的机器上已经安装了 Armadillo,请查看“/usr/include/armadillo_bits”或“/usr/local/include/armadillo_bits”。

关于multicore - Armadillo 线性系统求解器(带openblas),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14611533/

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