gpt4 book ai didi

r - R 中的并行处理受限

转载 作者:太空宇宙 更新时间:2023-11-03 16:45:15 25 4
gpt4 key购买 nike

我正在使用 parallel 和 doParallel 包运行 ubuntu 12.04 和 R 2.15.1。当我并行运行任何东西时,我被限制在一个核心的 100%,而我应该有 800%,因为我用 8 个核心运行它。系统监视器上显示的是每个子进程只获得 12%。

是什么限制了我的执行速度?

最佳答案

问题可能是 R 进程仅限于一个核心(并且子进程继承了它)。

试试这个:

> system(sprintf("taskset -p 0xffffffff %d", Sys.getpid()))
pid 3064's current affinity mask: fff
pid 3064's new affinity mask: fff

现在,如果在您的机器上,当前亲和掩码报告为 1,那么这就是问题所在。上面的行应该解决它(即第二行应该报告 fff (或类似的)。

Simon Urbanek 编写了一个函数 mcaffinity,允许对多核进行这种控制。据我所知,它仍在 R-devel 中。

有关详细信息,请参见例如这个discussion on R-sig-hpc .

更新和补充 Xin Guo 的回答:

如果您同时使用通过 openblas 的隐式并行化和显式并行化(通过 parallel/snow/multicore),您可能需要根据您是否在显式并行部分中来更改 openblas 使用的线程数。
这是可能的(使用 Linux 下的 openblas,我不知道任何其他提供线程数函数的常用优化 BLAS),参见 Simon Fuller's blog post了解详情。

关于r - R 中的并行处理受限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12924698/

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