Я использую R 2.14.0 64 бит в Linux. Я пошел дальше и использовал пример, описанный here. Затем я запускаю пример:multicore on Linux не использует несколько процессоров
library(doMC)
registerDoMC()
system.time({
r <- foreach(icount(trials), .combine=cbind) %dopar% {
ind <- sample(100, 100, replace=TRUE)
result1 <- glm(x[ind,2]~x[ind,1], family=binomial(logit))
coefficients(result1)
} })
Однако я вижу, что он использует только одно ядро ЦП. Чтобы доказать это по-другому, если бы я проверить процесс, который использует все ядра, я вижу -
[email protected]: ~/R$ ps -p 5369 -L -o pid,tid,psr,pcpu
PID TID PSR %CPU
5369 5369 0 0.1
5369 5371 1 0.0
5369 5372 2 0.0
5369 5373 3 0.0
5369 5374 4 0.0
5369 5375 5 0.0
5369 5376 6 0.0
5369 5377 7 0.0
Но в этом случае, я вижу, -
[email protected]: ~/R$ ps -p 7988 -L -o pid,tid,psr,pcpu
PID TID PSR %CPU
7988 7988 0 19.9
[email protected]: ~/R$ ps -p 7991 -L -o pid,tid,psr,pcpu
PID TID PSR %CPU
7991 7991 0 19.9
Как я могу получить его, чтобы использовать несколько ядер ? Я использую multicore вместо doSMP или что-то еще, потому что я не хочу иметь копии своих данных для каждого процесса.
Что с использованием 1 ядро? Оригинальная сессия R? Ищите дополнительные экземпляры 'rsession' вместо этого. На первой странице связанного документа «... многоядерная функциональность запускает своих работников с использованием fork без последующего exec ...». 'fork' создает новый процесс, а не новый поток в существующем процессе. –
Это возможный дубликат http://stackoverflow.com/questions/12924698/parallel-processing-in-r-limited – cbeleites
@cbeleites: Я согласен. Фактически, я отметил это как дублирующее несколько дней назад. –