找出每个节点的名称或ID

时间:2014-07-09 01:02:25

标签: r foreach parallel-processing

我正在12节点集群上运行并行进程。

并且想知道在foreach通话期间是否有办法获取node-id或node-number或node-name?

这样的事情:

foreach(i = 1:12, .combine=c) %dopar% {node.name()}

这将有助于处理文件。

2 个答案:

答案 0 :(得分:8)

foreach包不提供对节点ID或节点名称的任何支持,但R具有“sys.info”功能,因此您可以使用:

foreach(i = 1:12, .combine=c) %dopar% {
  Sys.info()[['nodename']]
}

要创建唯一的工作人员ID,您可以将节点名称与工作人员的进程ID相结合:

foreach(i = 1:12, .combine=c) %dopar% {
  paste(Sys.info()[['nodename']], Sys.getpid(), sep='-')
}

答案 1 :(得分:2)

经过大量的反复试验后,我发现以下情况有效:

foreach(i = 1:12, .combine=c) %dopar% {
  Sys.getpid()
}

这为每个节点提供了唯一的进程ID,可以将其用作节点ID。