[R-sig-hpc] R parallel package <-> stopCluster method needed for mpi cluster

Paul Johnson pauljohn32 at gmail.com
Wed Jan 11 05:21:30 CET 2012


hi, everybody in r-sig-hpc land.  hopefully this year is bringing you
good news.

I'm trying to digest the fact that R now has a parallel package.  I'm
pretty sure I've run into something that is on the TODO list. Briefly,
the stopCluster method from R parallel doesn't lead back to the
stopCluster methods from snow to shut down  an MPI cluster.

Now, the long version:

We have an OpenMPI based cluster, I've been working up examples that
use Rmpi, snow, snowft, and now R parallel.  Here's my parallel
effort.

http://winstat.quant.ku.edu/svn/hpcexample/trunk/Ex65-R-parallel

Its just a submission script and an example cluster usage.

I'm stuck on (at least) one detail.  If you examine

http://winstat.quant.ku.edu/svn/hpcexample/trunk/Ex65-R-parallel/parallel-hello.R

you see the cluster is created like so

library(parallel)
## Causes the snow package's MPI support to be invoked,
cl <- makeCluster(10, type="MPI")

That actually seems to be fine. the parallel makeCluster method refers
the work to snow::makeCluster. Works fine.

After that, how to close the thing down?   When I run

stopCluster(cl)

processing crashes, and the error output has this:

Loading required package: Rmpi
Error in UseMethod("stopCluster") :
  no applicable method for 'stopCluster' applied to an object of class
"c('spawnedMPIcluster', 'MPIcluster', 'cluster')"
Calls: <Anonymous>
Execution halted
--------------------------------------------------------------------------
orterun has exited due to process rank 0 with PID 28684 on
node compute-2-11.local exiting without calling "finalize". This may
have caused other processes in the application to be
terminated by signals sent by orterun (as reported here).
--------------------------------------------------------------------------



I *think* I need to call the stopCluster method from snow.  It seems
like this should have worked:

snow::stopCluster(cl)

or this:

snow::stopCluster.MPIcluster(cl)

but it gives the same error.

But if I load the snow package, all is good.

library(snow)
stopCluster(cl)
mpi.quit()

The error log has a warning, but otherwise it appears OK.

Attaching package: 'snow'

The following object(s) are masked from 'package:parallel':

    clusterApply, clusterApplyLB, clusterCall, clusterEvalQ,
    clusterExport, clusterMap, clusterSplit, makeCluster, parApply,
    parCapply, parLapply, parRapply, parSapply, splitIndices,
    stopCluster

What do you think.  This is a known issue?  Should I bother somebody
about it? I mean somebody besides  you, of course.

-- 
Paul E. Johnson
Professor, Political Science
1541 Lilac Lane, Room 504
University of Kansas



More information about the R-sig-hpc mailing list