предупреждения о маклаппли: запланированные ядра … не дали результатов, будут затронуты все значения заданий

#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=... при отправке задания.