首页 > 解决方案 > 在 foreach %dopar% 循环中挂起 %*%

问题描述

尝试在此处给出的详细信息量之间取得适当的平衡,因为我无法创建mwe. 我的 foreach 循环挂在一些矩阵计算的中间。奇怪的是,它挂在我的 imac 上,但不在我更大(即更多内存)的 linux 机器上。如果我使用它%dopar%会挂起,但对%do%. 它总是挂在内部 for 循环的第七次迭代上。它总是挂在“colSums”步骤上,但我使用矩阵代数而不是colSums. 如果我使用colSums,我可以让它工作。并不是我的矩阵尺寸不正确 - 我已经检查过它们并且没有收到错误。会发生什么?

helper <- function(mat){
    vec <- rep(0, dim(mat)[1])
    for(j in 1:7){
        mat <- mat^(j*0.1)
        vec <- vec + (rep(1, dim(mat)[1]) %*% mat)               # ----- hangs here
    }
    return(vec)
}

foreach(ind = 1:10, .packages = 'Matrix') %dopar% {
     helper(mat = mat)
}

标签: rparallel-foreach

解决方案


推荐阅读