Параллельная обработка перестала работать с ошибкой: объект 'mcinteractive' не найден - PullRequest
2 голосов
/ 17 апреля 2019

Долгое время я успешно запускал программу, которая использует параллельную обработку.пару дней назад чтобы код перестал работать с сообщением об ошибке:

    "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()

1 Ответ

0 голосов
/ 14 июня 2019

Эта проблема возникает из-за того, что pbmclapply был обновлен и теперь работает только с R> 3.5, обновление R решило мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...