R 不再并行运行

标签 r parallel-processing blas domc

我运行 (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/

相关文章:

r - 计算给定数据框中连续不大于阈值但分组的数量

java - java 8何时将并行流组合在一起?

java - 使用 testNG 并行化测试时,类中的测试不会在同一线程中执行

matlab - 向量上的 BLAS1 类型运算

c - 在汇编中实现矩阵 vector 乘法

r - 在 ggplot2 中标记图例,在 R 中标记 ggfortify

r - 带有 ggplot2 的轮廓文本

r - ggplot 中从值到颜色的一致映射

windows - 为什么 CUDA 内核无法在带有 CUDA 9.0 的 VS 2013 中启动