R

Overview

  • R: is a programming language and free software environment for statistical computing and graphics supported by the R Foundation for Statistical Computing. The R language is widely used among statisticians and data miners for developing statistical software and data analysis. Below are links to pages that are related to R. R is a free software environment for statistical computing and graphics. It compiles and runs on a wide variety of UNIX platforms, Windows and macOS.

Using

Use the module name r to discover versions available and to load the application.

Pre-Installed Libraries:

Some versions of r have had common libraries pre-installed. To check, you can either try loading the library, or you can list all the libraries installed using:

> packinfo <- installed.packages(fields = c("Package", "Version")) > packinfo[, "Version", drop=F]

Multicore

Typically, using parallel::detectCores() to detect the number of available cores on a cluster node is a slight red herring. This returns the entire total number of cores of the node your job is allocated and not the actual number of cores you requested/allocated. For example, if you're sbatch script defines the following,

#SBATCH --nodes=1 #SBATCH --cpus-per-task=8

and you're allocated a standard Teton node that have 32 cores, parallel::detectCores() will return a value of 32 and not 8 which is what you requested!
This will probably lead to unexpected results/failures when you try and run a function expecting 32 cores when only 8 are actually available.
To remove this problem you can use, and need to pass into your R script, the value of the $SLURM_JOB_CPUS_PER_NODE slurm environment variable.

Example

Batch Script: (fragments of what your script might look like):

#!/bin/bash ... #SBATCH --nodes=1 #SBATCH --cpus-per-task=8 ... echo "SLURM_JOB_CPUS_PER_NODE:" $SLURM_JOB_CPUS_PER_NODE ... module load swset/2018.05 gcc/7.3.0 r/3.6.1 ... Rscript multiple_cpu_test.R $SLURM_JOB_CPUS_PER_NODE ...

R Script: multiple_cpu_test.R

Slurm Output: