Я пытаюсь обрабатывать кучу файлов csv и возвращать кадры данных в R, параллельно используя mclapply()
. У меня 64-ядерная машина, и я не могу больше получить, что 1 ядро используется в данный момент, используя mclapply()
. На самом деле, немного быстрее запустить lapply()
, а не mclapply()
. Вот пример, который показывает, что mclapply() не используя больше ядра доступны:mclapply не использует несколько ядер
library(parallel)
test <- lapply(1:100,function(x) rnorm(10000))
system.time(x <- lapply(test,function(x) loess.smooth(x,x)))
system.time(x <- mclapply(test,function(x) loess.smooth(x,x), mc.cores=32))
user system elapsed
0.000 0.000 7.234
user system elapsed
0.000 0.000 8.612
Есть ли какой-нибудь трюк, чтобы получить эту работу? Мне пришлось скомпилировать R из источника на этом компьютере (v3.0.1), есть ли какие-то компилируемые флаги, которые я пропустил, чтобы разрешить разметку? detectCores()
говорит мне, что у меня действительно есть 64 ядра, чтобы играть с ... Любые советы оценили!
Какая ОС вы используете? Это не похоже на ваше дело, но стоит отметить, что 'mclapply' в Windows является просто оболочкой для' lapply'. – Frank
Linux. Редхат, если быть точным. – reptilicus
Если кто-то может проверить, что приведенный выше пример действительно ускоряет работу с mclapply(), который также поможет. – reptilicus