2

我运行 (k)Ubuntu 12.04.2 和 R 3.0.1

我写了一堆过去并行运行的代码,但现在不再并行了。甚至这不再并行运行:

library(doMC)
registerDoMC(4)
Results = foreach (i = 1:1e6, .combine = "c") %dopar% {
  sqrt(i)
}

这绝对应该。我认为破坏它的是 R 3.0.1 更新或-dev, -devel我安装的 BLAS 包。(我认为是openBLAS)

我已经system(sprintf("taskset -p 0xffffffff %d", Sys.getpid()))按照其他地方的建议进行了尝试,并得到了这个结果:

pid 2415's current affinity mask: 1
pid 2415's new affinity mask: f

我还尝试使用以下命令运行 R:

taskset 0xffff R

然而,在运行这些步骤中的任何一个之后,循环仍然只使用一个内核。

我想要并行处理!我怎么才能得到它?

4

1 回答 1

2

我找到了解决方案!具有讽刺意味的是,为了恢复并行处理,我必须同时执行我在 Q 中提到的两个步骤

所以,从 R 开始

taskset 0xffff R

然后运行

system(sprintf("taskset -p 0xffffffff %d", Sys.getpid()))

R内。

瞧,并行处理返回

于 2013-05-28T14:20:08.340 回答