我运行(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
然而,在执行这些循环之后,仍然只使用一个核心。
我想要并行处理!我怎么能得到它?
答案 0 :(得分:2)
我找到了解决方案!具有讽刺意味的是,为了得到并行处理,我必须同时执行我在Q 中提到的两个步骤
所以,用
开始R.taskset 0xffff R
然后运行
system(sprintf("taskset -p 0xffffffff %d", Sys.getpid()))
在R.内。
Voila,并行处理返回