在R中利用服务器多核linux服务器进行计算

在R中利用服务器多核linux服务器进行计算,r,cluster-computing,sparkr,dompi,R,Cluster Computing,Sparkr,Dompi,我有四台32核的linux服务器(CentOS 7),我想在R 到目前为止,我只使用doMC包和registerDoMC(cores=32)来利用单个服务器的多核功能。我想将其扩展到所有四台服务器(即128=32x4,如果可能的话) 我在网上做了一些搜索,似乎有很多选择:PSOCK、MPI、SNOW、SparkR等等。尽管如此,我无法在网上找到任何建议 我知道有一些先决条件,以下是我迄今为止所做的: 1) 所有服务器都已“连接”,即可以通过SSH相互连接,无需密码登录 2) NFS已安装,因此所

我有四台32核的linux服务器(CentOS 7),我想在R

到目前为止,我只使用doMC包和registerDoMC(cores=32)来利用单个服务器的多核功能。我想将其扩展到所有四台服务器(即128=32x4,如果可能的话)

我在网上做了一些搜索,似乎有很多选择:PSOCK、MPI、SNOW、SparkR等等。尽管如此,我无法在网上找到任何建议

我知道有一些先决条件,以下是我迄今为止所做的: 1) 所有服务器都已“连接”,即可以通过SSH相互连接,无需密码登录 2) NFS已安装,因此所有服务器都可以访问(读、写和执行访问) 3) 所有服务器都在相同的R二进制文件上运行(在anaconda构建的共享位置下,所有服务器都可以执行) 4) 安装了openmpi、Rmpi、snow、doSNOW、Spark、SparkR(尽管我不知道如何使用它)

另一个人能告诉我下一步该做什么吗

非常感谢

看看这个软件包(我是作者)。它提供了一个将各种并行后端封装在统一API中的生态系统。在您已经获得SSH“批处理”访问权的四台多32核计算机的特定情况下,您可以将您的4*32工作者指定为:

library("future")

## Set up 4 * 32 workers on four machines
machines <- c("node1", "node2", "node3", "node4")
workers <- rep(machines, each = 32L)
plan(cluster, workers = workers)
库(“未来”)
##在四台机器上设置4*32名工人

可以从ApacheSpark的R端查看机器,但需要将服务器设置为分布式计算集群。我能给你的最好建议是向在高性能计算(HPC)方面有经验的人寻求帮助,这对正确设置来说不是一件小事。我想我的问题正是“如何为分布式计算设置本地集群”见我的链接,这里有一个教程,听起来这些正是我需要的库。我会尝试一下,让你知道。我还有两个后续问题:1)你为什么不把future/dofFuture/future放在同一个包中,而不是用3个。2) 当它在内存中的4M行数据上运行foreach时,它将如何在后端运行:1M行是否会复制到每台机器中的一个R会话,用并行内核处理数据,然后将其发送回?或者,它将创建32个R会话,在每个R会话中复制1/32M行,并在不并行的情况下对其进行处理并将其发回?或者我需要在每台机器上手动启动R会话。。。。。
library("doFuture")
registerDoFuture()

y <- foreach(i = 1:100) %dopar% {
  ...
  value
}
library("future.apply")

y <- future_lapply(1:100, FUN = function(i) {
  ...
  value
})