我运行 (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
但是,在执行上述任一步骤后,运行循环仍然仅使用一个核心。
我想要并行处理回来!我怎样才能得到它?
最佳答案
我找到了解决办法!讽刺的是,为了恢复并行处理,我必须同时执行我在问题中提到的两个步骤
所以,从 R 开始
taskset 0xffff R
然后运行
system(sprintf("taskset -p 0xffffffff %d", Sys.getpid()))
R 内。
瞧,并行处理返回
关于R 不再并行运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16789931/