3

我需要在 Intel i7(8 核)上进行并行处理,并将 Ubuntu 12.04(64 位)与 R2.15.0(来自 RStudio)一起使用。我已经成功完成了几个星期,但是从昨天开始,任何并行 R 处理的尝试都会减慢处理速度,因此它几乎是死的。计算机本身和以往一样快(网页浏览等),但 R 只是等待和等待。我通常每天更新 Ubuntu(更新管理器),但不确定这是否相关。

此代码阻止我的 R 工作。请不要运行它,除非您对崩溃 R 没问题,并且知道如何使用“KILL -9”...

library(parallel)
library(gsubfn)

doSomething <- function(xx) {
  test <- 16
  return(test)
}

in.list <- list(1, 2, 3)

out.list.1 <- lapply(in.list, doSomething)                # Works well (< 1s)
out.list.2 <- mclapply(in.list, doSomething)              # Takes tens of minutes
out.list.3 <- mclapply(in.list, doSomething, mc.cores=1)  # Works well (< 1s)
out.list.4 <- mclapply(in.list, doSomething, mc.cores=2)  # Takes tens of minutes

经过大量测试和“kill -9”后,我认为我已将问题隔离到“library(gsubfn)”。它会自动加载“加载所需的包:proto 加载所需的命名空间:tcltk 加载 Tcl/Tk 接口......完成”

我需要 gsubfn-package,所以不能排除它。有什么办法可以避免这个问题吗?

感谢所有为 R-tag 做出贡献的人!

/克里斯

4

2 回答 2

4

尝试使用:

options(gsubfn.engine = "R")

这将阻止 gsubfn 加载 tcl,这可能会导致 mclapply 函数出现问题。请参阅: 如何防止 R 加载包?

并且: https ://stat.ethz.ch/pipermail/r-sig-hpc/2009-August/000324.html

于 2012-06-23T02:03:42.567 回答
1

这段代码对我来说都是完美而即时的。我正在使用比您的旧机器在 Fedora 20 下运行 R 3.0.2。也许您应该更新您的 R 安装并重试。

正如前面的评论所建议的,总是从终端 R 运行并行代码。我做了很多 mclapply 工作,它很少或从不在 RStudio 中工作。

于 2014-02-06T20:22:50.813 回答