[R-sig-hpc] foreach + doMC not fully parallel?

Brian D Peyser PhD bpeyser at jhmi.edu
Fri Aug 27 17:37:46 CEST 2010

On Thu, 2010-08-26 at 18:35 -0400, Sean Davis wrote: 
> Assuming there is nothing else running on the system? 
> In any case, it appears that you are reading text files and writing to
> disk.  Only one core can use the IO at a time, so that may explain
> this.  Try running something entirely computational and see if you can
> get close to 100% on all four cores.  
> Sean

I hadn't thought about IO, but the fact that the processes always add up
to almost 100% of 1/2/3 cores makes me think that something is
preventing them from computing on all the cores rather than just waiting
for I/O. The I/O is actually very minor, but I took out all of it and
still had the same result.

So next I decided to stop my other resource hogs, such as Firefox and
Evolution. that had no impact. I also ran from the terminal instead of
from Emacs, with the same result.

What's strange is the usage will vary over time. With preschedule=FALSE,
each iteration will spawn a new process, and that seems to be when
changes in resource utilization tend to occur. I am thinking that there
may be some trouble with my kernel, since %dopar% is spawning 4
additional R processes as it should--my kernel just isn't handling it
properly. In fact, I did:
> registerDoMC(cores=3)
and got only 2 cores maxed, never 3. For some reason 2 (or more) of the
processes are always on the same core. Although when I registered 3
cores and only had 2 iterations left, both remaining processes used
100%. And of course the last remaining process used 100% until it
finished as well. Just weird. To be thorough, I tried:
> registerDoMC(cores=2)
and never saw 2 cores used.

Last, and interestingly, when I did:
> registerDoMC(cores=5)
(on my 4-core machine) I sometimes maxed all 4 cores. I also saw only 1,
2, or 3 cores used during the computation. Running 5 processes on 1 core
certainly doesn't help, though! Frustrating....

Anyone else using Ubuntu 10.04? Maybe it's my kernel screwing this up.

$ uname -srvmo
Linux 2.6.32-24-generic #38 SMP Mon Jul 26 15:08:51 EDT 2010 x86_64


More information about the R-sig-hpc mailing list