我正在尝试在 4 个节点上并行化代码(type = "SOCK")。这是我的代码。
library(itertools)
library(foreach)
library(doParallel)
library(parallel)
workers <- ip address of 4 nodes
cl = makePSOCKcluster(workers, master="ip address of master")
registerDoParallel(cl)
z <- read.csv("ProcessedData.csv", header=TRUE, as.is=TRUE)
z <- as.matrix(z)
system.time({
chunks <- getDoParWorkers()
b <- foreach (these = isplitIndices(nrow(z),
chunks=chunks),
.combine = c) %dopar% {
a <- rep(0, length(these))
for (i in 1:length(these)) {
a[i] <- mean(z[these[i],])
}
a
}
})
我收到此错误:
4个节点产生错误;第一个错误:找不到对象“.doSnowGlobals”。
如果我使用 doMC 即使用同一台机器的内核,此代码运行良好。但是当我尝试使用其他计算机进行并行计算时,我得到了上述错误。当我将其更改为 registerDoSNOW 时,错误仍然存在。
snow 和 DoSNOW 是否在集群中工作?我可以使用雪在本地主机上创建节点,但不能在集群上创建节点。有人在用雪吗?