- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在测试用 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/
我正在研究多核处理器。特别是我正在寻找为多核处理器编写代码,以及为多核处理器编译代码。 我对该领域的主要问题感到好奇,这些问题目前将阻止编程技术和实践的广泛采用,以充分利用多核体系结构的功能。 我知道
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一个用 Delphi 101 Berlin 编写的 COM。我编写了一个脚本来调用它的 API(只有一个 API,单线程,每个需要大约 1 分钟才能完成)。 我使用 cscript.exe(64
我可以理解如何编写一个使用多个进程或线程的程序:fork()一个新进程并使用IPC,或者创建多个线程并使用这些类型的通信机制。 我也理解上下文切换。也就是说,操作系统只用一个CPU,为每个进程调度时间
我在 Fedora 上使用 qemu,我发现 qemu 不支持多核。当我使用参数 smp< 并设置 cores=2 时,它会告诉我: mu-system-riscv:请求的 SMP CPU 数量
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 去年关闭。 Improve th
想问一下在SW级支持Lock-step(锁步,lock-step)处理器 据我所知,在 AUTOSAR-ASILD 中,锁步处理器用于容错系统如下场景。 一个处理器的输入信号被复制到另一个处理器(它的
请注意:“纯”功能不是指“纯虚拟” 我指的是this 如果函数“读取”某些全局状态,是否会自动使其变得不纯?还是取决于其他因素? 如果它自动使它变得不纯,请解释原因。 如果取决于其他因素,请解释它们是
作为一名主要处理高级编程语言的软件开发人员,我不确定我能做些什么来适本地关注即将到来的多核计算机的无处不在。我主要编写普通和非要求的应用程序,但我认为了解我是否需要改变任何编程范式甚至语言来掌握 fu
.NET 4.5 的新性能增强之一是引入了“MultiCode JIT”。 见 here更多细节。 我已经尝试过了,但它似乎对我的应用程序没有影响。 我感兴趣的原因是我的应用程序(IronScheme
谁能向我解释多 CPU、多核和超线程之间的区别?我总是对这些差异以及每种架构在不同场景中的优缺点感到困惑。 这是我在网上学习并从其他人的评论中学习后的当前理解。 我认为超线程是其中最差的技术,但价格便
我有几个并发执行的线程并检查它们自己的对象中的字段值。该字段由启动线程设置,如下所示: for (i = 0; i < ThreadCount; i++) { ThreadContext[i]
我是正在为多核处理器优化 GCC 的学生。我尝试查看源代码,但由于我需要向后端添加一些代码,因此很难理解它。任何人都可以建议一些很好的资源来解释不同阶段的代码流。 还建议一些调试GCC的开发环境,主要
Ocaml 进程只能使用一个核心,为了使用多个核心,我必须运行多个进程。 是否有任何 Ocaml 框架可用于并行化 Monte Carlo 模拟? 最佳答案 使用以下 invoke组合器将函数应用于另
很长一段时间以来,我一直将 LLVM 视为我目前正在实现的语言的新后端。它似乎具有良好的性能,相当高级的生成 API,足够的低级支持来优化奇特的优化。此外,虽然我自己没有检查过,但苹果似乎已经成功地演
当您想在 Haskell 中使用多个核心时,我试图了解真正发生了什么。 This给出了一个很好的介绍,但恕我直言,它不是很关键,并且留下了许多 Unresolved 问题。 当我在我的代码中使用 pa
我一直在测试用 C++ 求解线性方程组的各种开源代码。到目前为止,我发现最快的是 Armadillo ,它也使用 OPENblas 包。要解决一个密集的线性 NxN 系统,其中 N=5000 在我的系
我正在我的 VirtualBoxed Ubuntu 11.4 上测试这段 Go 代码 package main import ("fmt";"time";"big") var c chan *big.
我正在我的 VirtualBoxed Ubuntu 11.4 上测试这段 Go 代码 package main import ("fmt";"time";"big") var c chan *big.
我听到很多人谈论由于多核处理器和并行性而在编程中即将到来的革命,但我无法摆脱对我们大多数人来说,CPU 周期不是瓶颈的感觉。很长一段时间以来,我几乎所有的程序都以一种或另一种方式(数据库、文件系统、网
我是一名优秀的程序员,十分优秀!