gpt4 book ai didi

r - 我可以嵌套 parallel:::parLapply() 吗?

转载 作者:行者123 更新时间:2023-12-04 11:13:32 25 4
gpt4 key购买 nike

假设我想在 R 中做一些通常(在一个进程/线程中)看起来像这样的事情:

for(i in 1:2) {
for(j in 1:2) {
#Do some stuff here
}
}

在四核机器上使用 R 的新包并行,我可以执行以下操作吗?
cluster<-makeCluster(4)

innerLoop<-function() {
#Do some stuff here
}

outerLoop<-function() {
result<-do.call(, parLapply(cluster, c(1:2), innerLoop))
}

final.result<-do.call(, parLapply(cluster, c(1:2), outerLoop))

R-2.14.0 附带的并行包是否可以实现这一点?

最佳答案

是的,你可以这样做。对于第一级并行化,您必须使用分布式内存技术(如 snow 包中的 makeCluster()),而在第二级并行化中,您必须使用共享内存技术(多核包,mclapply())。

下面是一个简单的代码示例:

library(parallel)

cl <- makeCluster(2)

inner <- function(x){
pid <- Sys.getpid()
name <- Sys.info()["nodename"]
str <- paste("This is R running on", name, "with PID", pid, "!")
return(str)
}

outer <- function(x, cores, funceval){
require(parallel)
mclapply(1:cores, funceval)
}

parLapply(cl, 1:length(cl), outer, 2, inner)

在输出中,您应该看到不同的机器名称和不同的 PID!

关于r - 我可以嵌套 parallel:::parLapply() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8413188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com