foreach внутри функции пакета: не работает при первом вызове - PullRequest
1 голос
/ 15 июля 2011

Я пытаюсь добавить опцию параллельных вычислений в пакет R (netresponse) на основе doMC и многоядерности.Сценарий работает нормально, но только на втором испытании.

Чтобы воспроизвести ошибку, запустите R и запустите скрипт ниже.Он застревает на последней строчке.После прерывания с помощью ctrl-c я получаю несколько сообщений «select: Interrupted system call».Затем повторный запуск этого же сценария даст ожидаемый результат без проблем.

Требуется ли дополнительная инициализация, чтобы правильно выполнить эту работу уже при первом запуске?Или любые другие советы?

спасибо за вашу поддержку, - L


require(netresponse)
require(multicore)
require(doMC)   
registerDoMC(3)
print(getDoParWorkers())
res <- foreach(i = 1:100, .combine = cbind, 
        .packages = "netresponse") %dopar% netresponse::vdp.mixt(matrix(rnorm(1000), 100, 10))

Ответы [ 2 ]

1 голос
/ 16 июля 2011

Вот список зависимостей со страницы справки для пакета netresponse: «Зависит: методы, igraph, graph, minet».Я подозреваю, что вы не получаете все их работникам, просто перечисляя «netresponse» в аргументе .packages.

0 голосов
/ 21 августа 2017

Быстрое решение проблемы с foreach% dopar% состоит в переустановке этих пакетов:

install.packages("doSNOW")

install.packages("doParallel") 

install.packages("doMPI")

Как упоминалось в различных потоках в StackOverflow, они отвечают за параллелизм в R.эти пакеты теперь удалены.Я должен отметить, что это, скорее всего, поможет, даже если вы не используете эти пакеты в своем проекте / пакете.

...