#r #optimization #parallel-processing #parallel.foreach #doparallel
Вопрос:
Я пытаюсь оптимизировать свой код R с помощью пакетов «foreach» и «doParallel». Мой код выполняется в серийной версии без каких-либо предупреждений и ошибок, но я получаю эту ошибку при использовании %dopar%: В mclapply(argsList, FUN, mc.precedule = precedule, mc.set.seed = set.seed,:запланированные ядра … не дали результатов, будут затронуты все значения заданий. Не могли бы вы, пожалуйста, сообщить мне, если у вас есть какие-либо предложения по решению этой проблемы?
registerDoParallel(cores=40)
registerDoRNG(123)
foreach(i = 1:1000,.combine=' ') %dopar% {
f(...)
} -> pf
Комментарии:
1. Прежде всего, пожалуйста, ознакомьтесь с
?registerDoParallel
использованием. Сообщение вызывает удивление, поскольку mclapply является многоядерным, а %dopar% — многосессионный инструмент. Трудно отлаживать без определения функции и спецификации вашей системы (Mac или Windows). Возможно, проблема в странном набореregisterDoParallel
.2. @polkas я изменил его на no_of_cores = detectCores() no_of_cores cl = makeCluster(no_of_cores) registerDoParallel(cl)! Я не получил предыдущую ошибку, но на этот раз я получил эту ошибку:»slurmstepd: ошибка: Обнаружено 1 событие(ы) уничтожения oom на шаге 506736.пакетная группа. Некоторые из ваших процессов, возможно, были уничтожены обработчиком нехватки памяти cgroup.» что связано с удаленным кластером, над которым я работаю! Я запускаю свой код в кластере computecanada (Linux).
3. Привет, не могли бы вы привести пример задач, которые вы выполняете? Для меня это похоже на проблемы с оперативной памятью — недавно я столкнулся с этой проблемой с нашим СЧЕТОМ 2.0, работающим на 250 Гб оперативной памяти.
mclapply
Ошибки обычно предсказуемы.4. «Обнаружено 1 событие(ы) уничтожения oom на шаге 506736.пакетная группа» означает, что планировщик Slurm завершил вашу работу, поскольку она потребляла больше памяти, чем вы просили. Итак, укажите большую сумму через
--mem=...
при отправке задания.