mclapply() использует только 2 ядра в 32-ядерной системе

Я пытаюсь сократить время вычислений, связанное с несоответствием раупа и крика, как рассчитано Chase et al. 2011. Для этого я пытаюсь использовать параллельные вычисления на 32-ядерной машине на базе Ubuntu, на которой работает сервер Rstudio.

Это код, который я использую, чтобы попытаться запустить вычисления параллельно. Rstudio использует два ядра для обработки вычислений (определяемых через htop), предполагая, что я достиг некоторого уровня параллельных вычислений. Однако я бы хотел, чтобы Rstudio использовала больше ядер, так как в ее распоряжении до 32 ядер.

f <- function(i) {
rc.shedding.otu <- raup_crick(df.shedding.otu, classic_metric = TRUE, plot_names_in_col1 = FALSE, reps = 999)
}

mclapply(1:100, f)

Применение mclapply() для параллельных вычислений для меня относительно новое. Однако я надеялся, что другие, более опытные в этой области, смогут определить, является ли это результатом ошибки в моем коде или ограничения, основанного на функции, которую я пытаюсь выполнить. Любое понимание или совет очень ценится!


person Alex Romer    schedule 07.08.2020    source источник
comment
Попробуйте mclapply(1:100, f, mc.cores = 16L) или что-то подобное. Возможно, вы захотите провести сравнительный анализ с меньшим образцом, и в этот момент добавление большего количества ядер не улучшит (намного) вашу машину.   -  person user12728748    schedule 07.08.2020
comment
Спасибо за совет! Я пропустил этот аргумент, когда смотрел документацию по mclapply(). Я обязательно попробую.   -  person Alex Romer    schedule 08.08.2020


Ответы (1)


Как предложил пользователь 12728748, исправление этой проблемы заключалось в выдаче значения для аргумента mc.cores = #L

person Alex Romer    schedule 11.08.2020