Snow R:获取当前正在运行的节点信息



假设我们在R中通过SNOW有一个由4个CPU组成的集群。

如何查找正在运行的节点?

我想做这样的逻辑:

IF(节点1)THEN logic1IF(节点2)THEN logic2IF(节点3)THEN logic3如果(节点4),则逻辑4

如何实现IF条件?

谢谢!

如果您想要集群中每个工作进程的ID,可以使用"clusterApply"初始化每个工作进程上的全局变量:

library(snow)
cl <- makeSOCKcluster(4)
clusterApply(cl, seq_along(cl), function(i) workerID <<- i)

然后,您的"节点检查"逻辑可以写成:

fun <- function(task) {
  if (workerID == 1)
    sqrt(task)
  else if (workerID == 2)
    log(task)
  else if (workerID == 3)
    log10(task)
  else if (workerID == 4)
    exp(task)
  else
    -1
}
clusterApplyLB(cl, 1:10, fun)

如果在MPI集群中使用snow,则可以使用"MPI.comm.bank"函数,但它会将工作线程从0编号为n-1

人们经常使用paste(Sys.info()[['nodename']], Sys.getpid(), sep='-')这样的表达式作为唯一的员工ID,但对于这个例子来说,这有点尴尬。

相关内容

  • 没有找到相关文章

最新更新