[R-sig-hpc] Error in makeMPIcluster(spec, ...): how to get a minimal example for parallel computing with doSNOW to run?

Marius Hofert m_hofert at web.de
Thu Dec 16 23:09:13 CET 2010


Dear expeRts,

I try to get a minimal example for parallel computing via "foreach" + "doSNOW" to run on a computer cluster (Brutus from ETH Zurich). The minimal example is given below. It runs perfectly fine on my MacBook but when I submit it as a batch job via ...
bsub -n 3 -R "select[model==Opteron8380]" mpirun R --no-save -q -f doSNOW_minimal.R
... it does not work. The output is also given below. The error is "Error in makeMPIcluster(spec, ...) : a cluster already exists 1". The only similar thing I found on the web is http://www.mail-archive.com/r-help@stat.math.ethz.ch/msg35501.html
but unfortunately, it was not answered. 
I also contacted the maintainers of the cluster, however, they couldn't really help me since they were no "expeRts". 

Cheers,

Marius

Ps: As you an expeRt probably sees right away, I am a newby when it comes to parallel computing, so please check all the details (does the mpirun command makes sense? and the bsubs command [the batch system is "LSF"]?) and let me know if you need further. 

## ==== minimal example ==== 

library(doSNOW) # loads foreach
library(Rmpi) # for default in makeCluster()
cl <- makeCluster(3) # create cluster object with the given number of slaves 
registerDoSNOW(cl) # register the cluster object with foreach
x <- foreach(i = 1:3) %dopar% { # simple test
   sqrt(i)
}
x 
stopCluster(cl) # properly shut down the cluster 

## ==== minimal example ====

## ==== output ====

Sender: LSF System <lsfadmin at a6218>
Subject: Job 921476: <mpirun R --no-save -q -f doSNOW_minimal.R> Done

Job <mpirun R --no-save -q -f doSNOW_minimal.R> was submitted from host <brutus2> by user <hofertj> in cluster <brutus>.
Job was executed on host(s) <3*a6218>, in queue <pub.1h>, as user <hofertj> in cluster <brutus>.
</cluster/home/math/hofertj> was used as the home directory.
</cluster/home/math/hofertj> was used as the working directory.
Started at Thu Dec 16 22:16:31 2010
Results reported at Thu Dec 16 22:16:43 2010

Your job looked like:

------------------------------------------------------------
# LSBATCH: User input
mpirun R --no-save -q -f doSNOW_minimal.R
------------------------------------------------------------

Successfully completed.

Resource usage summary:

    CPU time   :      6.96 sec.
    Max Memory :         3 MB
    Max Swap   :        29 MB

    Max Processes  :         1
    Max Threads    :         1

The output (if any) follows:

master (rank 0, comm 1) of size 3 is running on: a6218 
slave1 (rank 1, comm 1) of size 3 is running on: a6218 
slave2 (rank 2, comm 1) of size 3 is running on: a6218 
> library(doSNOW) # loads foreach
Loading required package: foreach
Loading required package: iterators
Loading required package: codetools
Loading required package: snow
> library(Rmpi) # for default in makeCluster()
> cl <- makeCluster(3) # create cluster object with the given number of slaves 
Error in makeMPIcluster(spec, ...) : a cluster already exists 1
Calls: makeCluster -> makeMPIcluster
> registerDoSNOW(cl) # register the cluster object with foreach
Error in assign("data", data, pos = .foreachGlobals, inherits = FALSE) : 
  object 'cl' not found
Calls: registerDoSNOW -> setDoPar -> assign
> x <- foreach(i = 1:3) %dopar% { # simple test
+    sqrt(i)
+ }
Error in checkCluster(cl) : not a valid cluster
Calls: %dopar% -> <Anonymous> -> clusterCall -> checkCluster
> x 
Error: object 'x' not found
> stopCluster(cl) # properly shut down the cluster 
Error in stopCluster(cl) : object 'cl' not found
> 
> 
[1] "Please use mpi.close.Rslaves() to close slaves"
[1] "Please use mpi.quit() to quit R"

## ==== output ====


More information about the R-sig-hpc mailing list