R 斯诺能创造的奴隶数量有限制吗?

R 斯诺能创造的奴隶数量有限制吗?,r,parallel-processing,snow,R,Parallel Processing,Snow,我正在尝试在3台不同的主机上构建一个包含大约120个进程的snow集群。这些是AMD服务器,每个服务器有48个核心。在构建大约前90个从机后,我得到以下错误: cl = makeSOCKcluster(c(rep("localhost", 44), rep("host2", 46), rep("host3", 45))) Error in socketConnection(port = port, server = TRUE, blocking = TRUE, : all connect

我正在尝试在3台不同的主机上构建一个包含大约120个进程的snow集群。这些是AMD服务器,每个服务器有48个核心。在构建大约前90个从机后,我得到以下错误:

cl = makeSOCKcluster(c(rep("localhost", 44), rep("host2", 46), rep("host3", 45)))
Error in socketConnection(port = port, server = TRUE, blocking = TRUE,  : 
  all connections are in use
> traceback()
3: socketConnection(port = port, server = TRUE, blocking = TRUE, 
       open = "a+b")
2: newSOCKnode(names[[i]], options = options, rank = i)
1: makeSOCKcluster(c(rep("localhost", 44), rep("host2", 46), 
       rep("host3", 45)))
我检查了我的系统限制,没有发现任何问题:

# cat /proc/sys/fs/file-max
12897622
# grep "#define __FD_SETSIZE" /usr/include/*.h /usr/include/*/*.h
/usr/include/linux/posix_types.h:#define __FD_SETSIZE   1024
# ulimit -a |grep open
open files                      (-n) 65536

snow可以创建的进程数量是否有限制?

是的,但这只是因为R可以创建的连接总数有限制(目前为128个)。这不仅仅包括套接字连接,这就是为什么您只能访问约90个工作节点的原因

> grep "define NCONNECTIONS" *
connections.c:#define NCONNECTIONS 128 /* snow needs one per slave node */

由于您使用的是GNU/Linux,我建议使用多核而不是snow。

使用多核不允许他使用3台主机。但他可以将MPI集群与snow一起使用,另一种选择是在snow中每个节点使用一个worker,然后在每个worker上使用多核。这需要更多的工作,但扩展性更好。@SteveWeston不需要为每个MPI工作者打开一个连接吗?或者它只与MPI主进程通信?@RobertKubrick:snow使用Rmpi创建MPI集群,Rmpi使用MPI发行版,如Open MPI,因此不受R连接的限制。MPI已经被成千上万的工人使用了。@SteveWeston好的,听起来是一条路要走。现在,当我尝试安装Rpmi时,我通过美国(OH)CRAN mirror获得的“包”Rmpi“不可用(适用于R版本2.15.1)”。