Долгое время я успешно запускал программу, которая использует параллельную обработку.пару дней назад чтобы код перестал работать с сообщением об ошибке:
"Error in get("mcinteractive", pkg) : object 'mcinteractive' not
found
traceback()
8: get("mcinteractive", pkg)
7: .customized_mcparallel({
result <- mclapply(X, function(...) {
res <- FUN(...)
writeBin(1L, progressFifo)
return(res)
}, ..., mc.cores = mc.cores, mc.preschedule = mc.preschedule,
mc.set.seed = mc.set.seed, mc.cleanup = mc.cleanup,
mc.allow.recursive = mc.allow.recursive)
if ("try-error" %in% sapply(result, class)) {
writeBin(-1L, progressFifo)
}
close(progressFifo)
result
})
6: pbmclapply(1:N, FUN = function(i) {
max_score = max(scores[i, ])
topLabels = names(scores[i, scores[i, ] >= max_score -
fine.tune.thres])
if (length(topLabels) == 0) {
return(names(which.max(scores[i, ])))
}
(у меня есть более traceback, если вам интересно, но я думаю, что он в основном относится к «окружающему» коду и не так интересенза ошибку как таковую. Скажите мне, если вам это нужно, и я сделаю правку!)
Я ничего не знаю о параллельной обработке, и я не смог понять проблему, копаясь вкод.Из того, что я понял, parallel :: mcparallel - это функция, содержащая аргумент mcinteractive, для которого вы можете выбрать TRUE или FALSE.Ранее я получил совет по уменьшению количества ядер, используемых при обработке.До этого я использовал 16 ядер без проблем.После того, как ошибка начала возникать, я попытался установить число ядер на 8 и 1 с тем же результатом.Если это какая-то проблема с памятью, я думаю, что я не на том форуме, извините извините !!Но у меня возникают проблемы только при использовании RStudio, поэтому я пишу здесь.Единственное, о чем я могу думать, это может быть связано с тем, что моя обработка (через RStudio) иногда зависает, и единственное, что я обнаружил, это то, что оперативная память заполнена, и я должен перезагрузить компьютер.Затем обработка снова работает как обычно.Тем не менее, это не помогает с новой ошибкой при использовании параллельных вычислений.
Кто-нибудь распознает эту проблему и ведет ли она к тому, что может быть причиной?Это код, пакет, studioR или мой компьютер?Какие-нибудь проверки я могу выполнить?:)
Редактировать:
Включая краткую версию ошибки при поиске кода после изменения pbmclapply на mclapply.
> packageVersion("parallel")
[1] ‘3.4.4’
> labels = parallel::pbmclapply(1:N, FUN = function(i) {
. . .
+ }, mc.cores = numCores)
Error: 'pbmclapply' is not an exported object from 'namespace:parallel'
> labels = pbmcapply::pbmclapply(1:N, FUN = function(i) {
. . .
+ }, mc.cores = numCores)
Error in get("mcinteractive", pkg) : object 'mcinteractive' not found
> labels = parallel::mclapply(1:N, FUN = function(i) {
. . .
+ }, mc.cores = numCores)
Warning message:
In parallel::mclapply(1:N, FUN = function(i) { :
all scheduled cores encountered errors in user code
#inside mclapply
> job.res <- lapply(seq_len(cores), inner.do)
Error in mcfork() : could not find function "mcfork"
#inside inner.do
> f <- parallel::mcfork()
Error: 'mcfork' is not an exported object from 'namespace:parallel'
Редактировать 2: немного дальшемоя ошибка поиска.
Мне пришлось добавить тройное двоеточие перед множеством функций для параллели, что означает, что я присоединяю внутреннюю функцию (?), что, в свою очередь, должно означать, что paralell больше не является частьюмой путь поиска (?)
parallel:::mcfork()
parallel:::mc.advance.stream()
parallel:::selectChildren()
parallel:::isChild()
#Had to change .check_ncores(cores) to
parallel::detectCores()