作者totolink (吐吐林克)
看板R_Language
标题Re: [问题] 关於平行运算
时间Thu Jul 30 08:51:09 2020
※ 引述《b10009047 (Nicklee)》之铭言:
: [问题叙述]:
: 大家好,最近接触到'snow'这个用於平行运算的package後觉得十分有趣,刚好目前在做
: 的事情十分需要加快计算速度,因此尝试使用parRapply, parSapply这些function
: 突然发现,若是我在parRapply当中在包一个apply,或是parRapply function都会产生
: 问题,例如 :
: library(snow)
: library(Rmpi)
: data <- matrix(1:6, ncol = 2)
: target <- 11:16
: cl <- makeCluster(2, type = 'MPI')
: parRapply(cl = cl, data, function(x) {
: x <- t(as.matrix(x))
: parRapply(cl = cl, x, function(x){
: target[x]
: })
: })
: stopCluster(cl)
: 会回报错误讯息:
: Error in checkForRemoteErrors(val) :
: 2 nodes produced errors; first error: 找不到物件 'cl'
: 唯一能想像的到的可能为,cl可能是在某个cpu下被定义的,但其他cpu并不知道cl的定义
: 因此产生以下错误讯息,此外也想不到其他可能的原因,想请教是否有人有碰过相同的
: 问题呢?
: 谢谢各位!
: [软体熟悉度]:
: 使用者(对R的基本使用还算熟悉)
大家好,最近也遇到相同的问题。
主要是想了解一个概念性的问题:平行运算究竟能否包两层以上。
我用的套件是parallel
函数也是parlapply
在实作时有一个四层回圈的程式
最内层用平行运算处理速度确实快很多。
但当我想将第二层(最内层算第一层最外层算第四层)也化成平行运算时就会遇到跟上面一样的问题。
尝试过各种方法
例如每一层的CPU重新定义(第一层指派为cl第二层指派为dl)
或是不同层用不同的套件执行平行运算。
但都会发生上述的错误讯息。
因此猜测平行运算本来就不能像回圈一样包好几层。
请问是否有高手熟悉这方面的实作呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.231.201.186 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1596070272.A.28B.html
2F:→ cywhale: plan(list(tweak(multiprocess,workers = mxcores),#外圈 07/30 14:23
3F:→ cywhale: tweak(multiprocess, workers = nxcores)))#和内圈使用的 07/30 14:24
4F:→ cywhale: worker必须要规划好 否则只会更慢..但future也可以规划 07/30 14:25
5F:→ cywhale: 不同node 所以若可以运用的资源愈多当然是可以nest.. 07/30 14:26