找出每个节点的名称或ID

Sha*_*bho 5 parallel-processing foreach r

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

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

像这样的东西:

foreach(i = 1:12, .combine=c) %dopar% {node.name()}
Run Code Online (Sandbox Code Playgroud)

这将有助于处理文件.

Ste*_*ton 9

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

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

要创建唯一的worker id,可以将节点名称与worker的进程ID组合:

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


Sha*_*bho 4

经过大量的试验和错误,我发现以下方法可行:

foreach(i = 1:12, .combine=c) %dopar% {
  Sys.getpid()
}
Run Code Online (Sandbox Code Playgroud)

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