我正在12节点集群上运行并行进程。
并且想知道在foreach
通话期间是否有办法获取node-id或node-number或node-name?
这样的事情:
foreach(i = 1:12, .combine=c) %dopar% {node.name()}
这将有助于处理文件。
答案 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。