[R] %dopar% parallel processing experiment

ivo welch ivowel at gmail.com
Sat Jul 2 19:32:35 CEST 2011

dear R experts---

I am experimenting with multicore processing, so far with pretty
disappointing results.  Here is my simple example:

A <- 100000
randvalues <- abs(rnorm(A))
minfn <- function( x, i ) { log(abs(x))+x^3+i/A+randvalues[i] }  ## an
arbitrary function

ARGV <- commandArgs(trailingOnly=TRUE)

if (ARGV[1] == "do-onecore") {
   discard <- foreach(i = 1:A) %do% uniroot( minfn, c(1e-20,9e20), i ) } else
if (ARGV[1] == "do-multicore") {
   cat("You have", getDoParWorkers(), "cores\n")
   discard <- foreach(i = 1:A) %dopar% uniroot( minfn, c(1e-20,9e20), i ) } else
if (ARGV[1] == "plain")
   for (i in 1:A) discard <- uniroot( minfn, c(1e-20,9e20), i ) else
cat("sorry, but argument", ARGV[1], "is not plain|do-onecore|do-multicore\n")

on my Mac Pro 3,1 (2 quad-cores), R 2.12.0, which reports 8 cores,

  "plain" takes about 68 seconds (real and user, using the unix timing
  "do-onecore" takes about 300 seconds.
  "do-multicore" takes about 210 seconds real, (300 seconds user).

this seems pretty disappointing.  the cores are not used for the most
part, either.  feedback appreciated.


Ivo Welch (ivo.welch at gmail.com)

More information about the R-help mailing list