R has been installed in /apps/chpc/bio/R/?
and is compiled using openmpi and the GNU compilers. R modules have been created so simply adding:
module add chpc/R/3.2.3-gcc5.1.0
to your scripts will set up the appropriate paths to R, the compilers (if you want to add your own R packages) and the mpi libraries. Note that there may be several versions of R installed and can be seen by running the:
module avail 2>&1 | grep "R"
command.
The Rmpi
, doMPI
and other packages are already installed to allow R to use MPI to distribute its work across multiple nodes of the cluster. Please submit a request to helpdesk should you need any other packages installed.
Once you've created your R script file, called myScRipt.r
, you will need to create a job script file to submit to the PBSPro scheduler.
Example job script file:
#!/bin/bash #PBS -l select=2:ncpus=24:mpiprocs=24 #PBS -P SHORTNAME #PBS -q normal #PBS -l walltime=4:00:00 #PBS -o /mnt/lustre/users/USERNAME/my_R_data/stdout.txt #PBS -e /mnt/lustre/users/USERNAME/my_R_data/stderr.txt #PBS -N RJob #PBS -M myemailaddress@someplace.com #PBS -m abe # Add R module (includes appropriate openMPI and gcc modules) module add chpc/R/3.2.3-gcc5.1.0 # explicitly calculate number of processes. nproc=`cat $PBS_NODEFILE | wc -l` # make sure we're in the correct working directory. cd /mnt/lustre/users/USERNAME/my_R_data mpirun -np $nproc -machinefile $PBS_NODEFILE R --slave -f myScRipt.r
Notes:
USERNAME
with your user name.SHORTNAME
with your research programme's short name.myemailaddress@someplace.com
with your email address.my_R_data
with your program's working directory (which must be under /mnt/lustre/users/USERNAME/
).myScRipt.r
to be your script file name.Submit to the scheduler
qsub my_R_job.qsub
Check the list of current jobs in the queue
qstat -w
Here is a more complete example
#PBS -l select=2:ncpus=24:mpiprocs=24:place=excl #PBS -l walltime=00:01:00 #PBS -q normal #PBS -P SHORTNAME #PBS -M YOUREMAILADDRESS #PBS -m be #PBS -e /mnt/luster/users/USERNAME/pbdR_test/std_err.txt #PBS -o /mnt/lustre/users/USERNAME/pbdR_test/std_out.txt #PBS -N PBDR_TEST #PBS -mb module add chpc/R/3.2.3-gcc5.1.0 NP=`cat ${PBS_NODEFILE} | wc -l` cd /mnt/lustre/users/USERNAME/pbdR_test/ mpirun -np ${NP} -machinefile ${PBS_NODEFILE} Rscript test_script.R
Note: USERNAME should contain your actual user name!
library(pbdMPI, quiet=TRUE) init() my.rank <- comm.rank() comm.print(my.rank, all.rank=TRUE) finalize()
Finally submit your job using:
user@login01:~ $ qsub pbdtest.qsub