我在 Linux 上使用 R 2.14.0 64 位。我继续使用此处描述的示例。然后我运行这个例子 -
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)
} })
但是,我在顶部看到它只使用一个 CPU 内核。以另一种方式证明这一点,如果我检查一个使用所有内核的进程,我会看到 -
ignorant@mybox: ~/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
但在这种情况下,我看到 -
ignorant@mybox: ~/R$ ps -p 7988 -L -o pid,tid,psr,pcpu
PID TID PSR %CPU
7988 7988 0 19.9
ignorant@mybox: ~/R$ ps -p 7991 -L -o pid,tid,psr,pcpu
PID TID PSR %CPU
7991 7991 0 19.9
我怎样才能让它使用多个核心?我正在使用多核而不是 doSMP 或其他东西,因为我不想为每个进程都拥有我的数据副本。