R允许的连接数量增加

时间:2014-08-19 14:20:23

标签: linux r

我一直在努力建立一个5节点,200个CPU集群,主要是因为R显然将NCONNECTIONS设置为将最大值限制为128.根据我读过的here,我需要更改parm和重建R(可能在每个节点上?),但我找不到上面指定的目录或文件。

如何更改NCONNECTIONS并重建R?

我正在运行Linux版本2.6.32-279.el6.x86_64

2 个答案:

答案 0 :(得分:2)

从你提供链接的帖子中,我们读到“在src / main / connections.c中增加NCONNECTIONS之后你必须重建R”。我想这是R源代码树中的一个文件,所以你首先必须下载该源代码树,例如在任何基于Debian的发行版下:

$ apt-get source r-base

然后进行更改并编译(./configure ; make ; make install目录中已创建的r-base-3.1.1目录。

答案 1 :(得分:0)

这是一个简短的功能

FUN <- function(i) { Sys.sleep(1); paste("job", i) }

加载snow库并生成与群集中每台计算机的连接

library(snow)
cl <- makeSOCKcluster(5)

然后为每台机器使用parallel :: mclapply,使用所有可用的核心进行工作。

parLapply(cl, seq_along(cl), function(i, FUN, n, ...) {
    parallel::mclapply(seq_len(n), FUN, ...)
}, FUN, 8, mc.cores=parallel::detectCores())

完成后清理

stopCluster(cl)

这是相同的策略,更加隐秘,并使用snow::splitList(或splitIndicies)将任务划分为雪群集的每个成员完成的任务。

library(snow)
library(parallel)

tasks <- splitList(1:40, length(cl))
parLapply(cl, tasks, mclapply, FUN, mc.cores=detectCores())

遗憾的是,没有默认的方法可以做到这一点; BiocParallel包允许

library(BiocParallel)

register(MulticoreParam())  ## 'inner' worker
register(SnowParam(4))      ## outer worker; 'register' is a stack

bplapply(1:4, function(i, FUN, n) {
    result <- BiocParallel::bplapply(seq_len(n), FUN)
    sprintf("%d:%d", i, unlist(result))
}, FUN, 8)