我一直在尝试优化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库。