2013-05-09 110 views
3

我正在尝试在3个不同的主机上建立一个包含120个进程的雪群。这些AMD服务器每个都有48个核心。建设约第90个奴隶后,我得到这个错误:R snow可以创建的奴隶数量是否有限制?

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 

是否有流程雪的数量限制可以创建?

回答

3

是的,但仅限于R可创建的连接总数(当前为128)。这不仅仅包括套接字连接,所以这就是为什么你只能得到约90个工作节点。

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

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

+1

使用多核不允许他使用3台主机。但他可以使用带有雪的MPI群集。 – 2013-05-09 12:51:36

+0

@SteveWeston:好点。我没有注意到多个主机... – 2013-05-09 12:53:30

+0

另一种选择是每个节点使用一个工人与雪,然后在每个工人上使用多核。这是更多的工作,但规模好得多。 – 2013-05-09 12:56:11

相关问题