在foreach%dopar%循环中挂起%*%

在foreach%dopar%循环中挂起%*%,r,parallel-foreach,R,Parallel Foreach,试图在这里给出的细节数量上取得适当的平衡,因为我无法创建mwe。我的FURACH循环挂在一些矩阵计算的中间。奇怪的是,它挂在我的imac上,但不挂在我的更大(即内存更多)的linux机器上。如果我使用%dopar%,它将挂起,但使用%do%则可以。它总是挂在内部for循环的第七次迭代上。它总是挂起“colSums”步骤,但我使用矩阵代数计算colSums,而不是colSums。如果我使用colSums,我可以让它工作。这并不是因为我的矩阵尺寸不正确——我已经检查了它们,没有收到错误。会发生什么事

试图在这里给出的细节数量上取得适当的平衡,因为我无法创建
mwe
。我的FURACH循环挂在一些矩阵计算的中间。奇怪的是,它挂在我的imac上,但不挂在我的更大(即内存更多)的linux机器上。如果我使用
%dopar%
,它将挂起,但使用
%do%
则可以。它总是挂在内部for循环的第七次迭代上。它总是挂起“colSums”步骤,但我使用矩阵代数计算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)
}

for
循环中的
helper
j=1:7
错误。使用1:7的
j检查mac上的内存使用情况。它可能开始交换。