[R] Parallel computing on Windows (foreach)

Cedrick W. Johnson cedrick at cedrickjohnson.com
Wed Jun 16 14:55:51 CEST 2010


Here's what I do to get processors on my Windows machine (it should work 
for dual cores as well) fully engaged in a calculation (wow I like that)

require(snow)
require(doSNOW)
require(foreach)

#change the 8 to however many cores/phys processors you have on your machine
cl.tmp = makeCluster(rep("localhost",8), type="SOCK")
registerDoSNOW(cl.tmp)

foreach(dat=x) %dopar% someFunction(dat)


HTH

-c

On 6/16/2010 8:51 AM, Mario Valle wrote:
>
>
> On 15-Jun-10 17:07, Sergey Goriatchev wrote:
>> Hello,
>>
>> I am reading "Using The foreach Package" document and I have tried the
>> following:
>>
>> ---------------------------------------------------------------------
>>
>>> sessionInfo()
>> R version 2.10.1 (2009-12-14)
>> i386-pc-mingw32
>>
>> locale:
>> [1] LC_COLLATE=German_Switzerland.1252
>> LC_CTYPE=German_Switzerland.1252
>> LC_MONETARY=German_Switzerland.1252 LC_NUMERIC=C
>> LC_TIME=German_Switzerland.1252
>>
>> attached base packages:
>> [1] stats graphics grDevices utils datasets methods base
>>
>> other attached packages:
>> [1] foreach_1.3.0 codetools_0.2-2 iterators_1.0.3
>>
>>
>>> x<- numeric(10000)
>>> system.time(for(i in 1:10000) x[i]<- sqrt(i))
>> user system elapsed
>> 0.03 0.00 0.03
>>>
>>> system.time(system.time(x<- foreach(i=1:10000, .combine="c") %do%
>>> sqrt(i)))
>> user system elapsed
>> 7.14 0.00 7.14
>>>
>>> system.time(system.time(x<- foreach(i=1:10000, .combine="c") %dopar%
>>> sqrt(i)))
>> user system elapsed
>> 7.19 0.00 7.19
>> Warning message:
>> executing %dopar% sequentially: no parallel backend registered
>>
>> ------------------------------------------------------------------------
>>
>> Not only is the sequential foreach much slower than the simple
>> for-loop (as least in this particular instance), but I am not quite
>> sure how to make foreach run parallel. Where would I get this parallel
>> backend?
>
> Use doMPI and run R through mpirun (for example run on 8 cores):
>
> mpirun -np 8 R --slave -f your-script.r
>
> Hope it helps
> mario
>
>
>
> I looked at doMC and doRedis, but these do not run on
>> Windows, as far as I understand. And doSNOW is something to use when
>> you have a cluster, while I have a simple dual-core PC.
>>
>> It is not really clear for how to make parallel computing work.
>> Please, help.
>>
>> Regards,
>> Sergey
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list