[R] Parallel computing with the snow package: external file I/O possible?

Waichler, Scott R Scott.Waichler at pnl.gov
Tue Mar 14 00:50:13 CET 2006


 
Hello,

I am trying to do model autocalibration using the snow and rgenoud
packages.  The function I want to run in task-parallel fashion across
multiple machines is one that pre- and post-processes data and runs an
external model code.  My problem is that external file I/O is happening
only in the master node and not in the slaves.  I have followed Jasjeet
Sekhon's suggestion to test the cluster setup, and that is fine:

> library(snow)
> 
> #pick two machines
> cl <- makeCluster(c("moab","escalante"))
> 
> clusterCall(cl, sin, 2)
 
> The output should be:
> > clusterCall(cl, sin, 2)
> [[1]]
> [1] 0.9092974
> 
> [[2]]
> [1] 0.9092974
> 

I do indeed get the above result, so I presume the network setup is ok.
Next I tested a function that creates a file.  Here is the code that I
sourced from the master ("moab"):

# begin script
library(snow)

setDefaultClusterOptions(outfile="/tmp/cluster1")
setDefaultClusterOptions(master="moab")
cl <- makeCluster(c("moab", "escalante"), type="SOCK")

# Define base pathname for output from my.test() 
base.dir <- "./test"

# Define a function that includes some file I/O 
my.test <- function(base.dir) {
  this.host <- as.character(system("hostname")) # to tag the node that
makes the file
  this.rnd <- sample(1:1e6, 1)  # to be 'sure' the files have different
names
  test.file <- paste(sep="", base.dir, "_", this.host, "_", this.rnd)
  file.create(test.file)
}  # end my.test()

g <- clusterCall(cl, my.test, base.dir)
print(g)
stopCluster(cl)
#  end script  


The output (g) was as follows:
 
[[1]]
[1] TRUE

[[2]]
[1] TRUE

But there was only one file created, which I suspect is by the master
node.  A second file was not created by the process on the slave.  Also,
system("hostname") returns the number 0 for moab instead of the name.
Any ideas as to what might be wrong?  

Thanks,
Scott Waichler
scott.waichler _at_ pnl.gov




More information about the R-help mailing list