为什么MRO有时在并行应用程序中“停顿”?

时间:2019-02-08 11:45:32

标签: r parallel-processing

我一直在尝试优化Bioconductor封装以进行并行处理。这样做时,我遇到了两个可以在串行上正常运行的代码,但是使用mclapply时,进程停顿了(CPU和磁盘使用率为0%),但从未真正失败或出错。

一个是arma / armadillo矩阵和一个向量的乘积,对此我尚无法获得最低限度的工作要求。我在下面包括了其他的代表(采用矩阵的特征值/向量)。有趣的是,使用doParallel运行代码似乎可以正常工作。

library("parallel")
library("foreach")
library("doParallel")

m <- diag(100)
eigen(m)
lapply(1:10, function(i) eigen(m))
mclapply(1:10, function(i) eigen(m))

cl <- makeCluster(2)
registerDoParallel(cl)
foreach(i = 1:10) %dopar% eigen(m)

这是由于MRO使用了多线程的BLAS库。

0 个答案:

没有答案