Thanks for the note.
Could you give me more info on the "small failures on stopping cluster"?
I don't currently have a windows system I can test this on so I can't
fold it into the snow release yet. But hopefully I can in the next
month or so. I may get back in touch at that point.
Meanwhile I have been working with a modified shell script that can be
used with mpirun under lam on unix. I've attached the current
version. It may turn out that this approach is a little more
maitainable on the Windows side as well. The way this gets used is
mpirun -np 5 RMPISNOW
to run a master and 4 workers, and then in the master
cl <- getMPIcluster()
instead of using makeCluster or makeMPIcluster. I have not yet found
the MICH2 analog of the LAMRANK environment variable but suspect
something similar does exist.
Best,
luke
On Mon, 3 Sep 2007, Markus Schmidberger wrote:
Hello,
the package snow is not working on a windows cluster with MPICH2 and Rmpi.
There is an error in makeCluster:
launch failed: CreateProcess(/usr/bin/env
"RPROG="C:\Programme\R\R-2.5.1\bin\R" "OUT=/dev/null" "R_LIBS="
C:/Programme/R/R-2.5.1/library/snow/RMPInode.sh) on 'cl1' failed, error 3 -
Das System kann den angegbenen Pfad nicht finden.
I looked into makeMPIcluster. It could not work, mpi.comm.spawn gets the
shell command for unix to start the slaves. A simple solution is to use the
windows-code from mpi.spawn.rslaves, then it looks like this. And is working
on our windows-cluster. (small failures on stopping cluster)
# Fro windows
if (.Platform$OS=="windows"){
workdrive <- unlist(strsplit(getwd(),":"))[1]
tmpdrive <- unlist(strsplit(tempdir(),":"))[1]
worktmp <- as.logical(toupper(workdrive)==toupper(tmpdrive))
tmpdir <- unlist(strsplit(tempdir(),"/Rtmp"))[1]
localhost <- Sys.getenv("COMPUTERNAME")
networkdrive <-.Call("RegQuery",
as.integer(2),paste("NETWORK\\",workdrive,sep=""),
PACKAGE="Rmpi")
remotepath <-networkdrive[which(networkdrive=="RemotePath")+1]
mapdrive=TRUE
mapdrive <- as.logical(mapdrive && !is.null(remotepath))
Rscript=system.file("slaveload.R", package="snow")
arg <- c(Rscript, R.home(), workdrive, getwd(),worktmp, tmpdir,
localhost, mapdrive, remotepath)
#Rscript,R_HOME,WDrive,WDir,WorkTmp,TmpDir,Master,MapDrive,RemotePath
print("super")
count<-mpi.comm.spawn(
slave=system.file("Rslaves.bat", package="Rmpi"),
slavearg=arg,
nslaves=count)
} else{ # for unix
count <- mpi.comm.spawn(slave = "/usr/bin/env",
slavearg = args,
nslaves = count,
intercomm = intercomm)
}
Doing some work, there should be a better and nicer solution with directly
using mpi.spawn.Rslaves.
Best
Markus
--
Luke Tierney
Chair, Statistics and Actuarial Science
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa Phone: 319-335-3386
Department of Statistics and Fax: 319-335-3017
Actuarial Science
241 Schaeffer Hall email: [EMAIL PROTECTED]
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
#! /bin/sh
# if definded, prepend R_SNOW_LIB to $_LIBS
if test ! -z "${R_SNOW_LIB}" ; then
R_LIBS=${R_SNOW_LIB}:${R_LIBS}; export R_LIBS
fi
# find the library containing the snow package; should eventually use Rscript
snowdir=`echo 'invisible(cat(tryCatch(dirname(.find.package("snow")), error =
function(e) ""),"\n",sep=""))' | R --slave`
# for now this hijack the R_PROFILE mechanism to start up the R
# sessions and load snow and Rmpi into them
R_PROFILE=${snowdir}/snow/RMPISNOWprofile; export R_PROFILE
if test -z "${LAMRANK}" ; then
echo "not using LAM-MPI; currently only LAM-MPI is supported"
exit 1
else
# use the LAMRANK environment variable set by LAM-MPI's mpirun to
# run R with appropriate arguments for master and workers.
if test "${LAMRANK}" == "0" ; then
exec R $*
else
exec R --slave > /dev/null 2>&1
fi
fi
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel