R:makeCluster(多核)中的错误:无法打开连接

时间:2017-05-10 18:54:40

标签: r parallel-processing cluster-computing

我有以下问题。

为什么在标准节点上提交作业(最大核心数56)一切运行正常,但是当我向big_memory节点(最大核心128)提交相同的作业/代码时,我收到错误?

- R中的并行化代码:

  

no_cores< - detectCores() - 1

     

cl< - makeCluster(no_cores,outfile = paste0('。/ info_parallel.log'))

- 错误 ...

socketConnection出错(master,port = port,blocking = TRUE,open =“a + b”,:

无法打开连接

通话:... doTryCatch - > recvData - > makeSOCKmaster - > SocketConnection处

另外:警告信息:

在socketConnection中(master,port = port,blocking = TRUE,open =“a + b”,:

localhost:11232无法打开

执行暂停

unserialize(节点$ con)出错:从连接读取错误

通话:... doTryCatch - > recvData - > recvData.SOCKnode - >反序列化

执行暂停

unserialize(节点$ con)出错:从连接读取错误

通话:... doTryCatch - > recvData - > recvData.SOCKnode - >反序列化

执行暂停

正如我所说,R代码在标准节点上运行良好,所以我认为它是large_memory节点的问题。那可能是什么?

谢谢,

1 个答案:

答案 0 :(得分:6)

最后,我解决了这个问题。

错误是由R中的连接的默认限制引起的。连接的默认值是128。 这里,“连接”表示每个节点的核心数,这些核心在代码中使用。

虽然在代码中,错误发生在“cl< - makeCluster ........”的这一行

  

no_cores< - detectCores() - 1

     

cl< - makeCluster(no_cores,outfile = paste0('。/ info_parallel.log'))

这里,detectCores()将获得节点上的最大内核数。

在集群的标准节点中,每个节点的核心数小于128,这就是R代码在标准节点上运行良好的原因;而在我的情况下,large_memory分区中每个节点的核心数是128。它默认达到核心数限制。所以错误显示为:

  

无法打开连接

我尝试将large_memory节点上运行作业的核心数设置为120(最大核心数= 128)。没有错误。代码效果很好。

  

cl< - makeCluster( 120 ,outfile = paste0('。/ info_parallel.log'))

谢谢!