Я пытался оптимизировать пакет Bioconductor для параллельной обработки.При этом я столкнулся с двумя битами кода, которые работают последовательно в последовательном режиме, но при использовании mclapply
процессы останавливаются (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, которые являются многопоточными.