[R] Installation of R Rmpi and snow on cluster running Platform MPI and PBS Pro

Segovia, Andrea Andrea.Segovia at ssc-spc.gc.ca
Mon Jan 18 19:51:59 CET 2016


Hello,

I am new to R support. I am trying to install R on a compute cluster running Platform MPI and PBS Pro.

I have installed R, Rmpi and snow - at first glance successfully.

When I try to run a simple Rmpi program, however, I get a Segmentation fault on mpi send. 

The error messages reads as follows:

segoviaa at c01 Rmpi_examples]$ mpirun -e PATH=/export/opt/R-3.2.2/bin:$PATH -hostfile myhostfile -np 8 R --no-save -q  <
mpi_test2.r

*** caught segfault ***
ddress 0x78, cause 'memory not mapped'

raceback:
1: .Call("mpi_send", .force.type(x, type), as.integer(type), as.integer(dest),     as.integer(tag), as.integer(comm), P
CKAGE = "Rmpi")
2: mpi.send(x = scmd.arg, type = 4, dest = i, tag = 50000 + i, comm = comm)
3: mpi.bcast.cmd(.mpi.worker.exec, tag = tag, ret = ret, simplify = simplify,     comm = comm)
4: mpi.remote.exec(mpi.get.processor.name(), comm = comm)
5: unlist(mpi.remote.exec(mpi.get.processor.name(), comm = comm))
6: slave.hostinfo(1)
borting ...
PI Application rank 0 killed before MPI_Finalize() with signal 11

The program I am running is:

[segoviaa at c01 Rmpi_examples]$ more Rmpi_test2.r
# The corresponding cluster of processes is already pre-constructed with mpirun.

# This where the main work happens
mpi.remote.exec(paste("Rank",mpi.comm.rank(),"on",Sys.info()[c("nodename")]))

# Shut down the cluster and clean up any remaining connections between machines.
mpi.close.Rslaves()
mpi.quit()

The Rprofile is located in the running directory, it is being run, and looks like this:

# This R profile can be used when a cluster does not allow spawning or a job
# scheduler is required to launch any parallel jobs. Saving this file as
# .Rprofile in the working directory or root directory. For unix platform, run
# mpirun -n [cpu numbers] R --no-save -q

# Another way is to modify R_home_dir/bin/R by adding the following line after
# R_HOME_DIR
# R_PROFILE=${R_HOME_DIR}/library/Rmpi/Rprofile; export R_PROFILE

# For windows platform with mpich2, use mpiexec wrapper and specify a working
# directory where .Rprofile is inside.

# Cannot be used as Rprofile.site because it will not work

# If no CPU consumptions of slaves while waiting are desirable, change
# nonblocak=FALSE to nonblock=TRUE and change sleep time accordingly

# Following system libraries are not loaded automatically. So manual loads are
# needed.
#
library(utils)
library(stats)
library(datasets)
library(grDevices)
library(graphics)
library(methods)

#Change to TRUE if you don't want any slave host info
quiet=FALSE

if (!invisible(library(Rmpi,logical.return = TRUE))){
    warning("Rmpi cannot be loaded")
    q(save = "no")
}

options(error=quote(assign(".mpi.err", FALSE, envir = .GlobalEnv)))

if (mpi.comm.size(0) > 1)
    invisible(mpi.comm.dup(0,1))

if (mpi.comm.rank(0) >0){
    #sys.load.image(".RData",TRUE)
    options(echo=FALSE)
    .comm <- 1
    mpi.barrier(0)
    repeat
                try(eval(mpi.bcast.cmd(rank=0,comm=.comm, nonblock=FALSE, sleep=0.1)),TRUE)
        if (is.loaded("mpi_comm_disconnect"))
        mpi.comm.disconnect(.comm)
    else mpi.comm.free(.comm)
    mpi.quit()
}

if (mpi.comm.rank(0)==0) {
    #options(echo=TRUE)
    mpi.barrier(0)
    if(mpi.comm.size(0) > 1 && !quiet)
        slave.hostinfo(1)
}

.Last <- function(){
    if (is.loaded("mpi_initialize")){
        if (mpi.comm.size(1) > 1){
            print("Please use mpi.close.Rslaves() to close slaves")
            mpi.close.Rslaves(comm=1)
        }
    }
    print("Please use mpi.quit() to quit R")
    mpi.quit()
}

I am not certain that the R installation was successful, either. I installed R as follows:

./configure --prefix=/export/opt/R-3.2.2
make
make check
make install
make install-pdf
make install-tests


I installed Rmpi as follows:

[root at c01 R-3.2.2]# R CMD INSTALL Rmpi_0.6-5.tar.gz "--configure-args=--with-Rmpi-include=/export/opt/platform_mpi/include/ --with-Rmpi-libpath=/export/opt/platform_mpi/lib/linux_amd64/ --with-Rmpi-type=OPENMPI"

I installed snow as follows:

[root at c01 R-3.2.2]# R CMD INSTALL snow -l /export/opt/R-3.2.2
* installing *source* package 'snow' ...
** package 'snow' successfully unpacked and MD5 sums checked
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (snow)

Any suggestions would be greatly appreciated.

Thank you,
Andrea

Andrea Segovia - Team Lead, HPC Services 
Science Portfolio/Portfolio de la Science 
Shared Services Canada/Services partagés Canada 



More information about the R-help mailing list