Parallel R example
#!/bin/bash
#SBATCH --time=00:20:00
#SBATCH --cpus-per-task=4
#SBATCH --mem=2G
#SBATCH --output=r_parallel.out
# Set the number of OpenMP-threads to 1,
# as we're using parallel for parallelization
export OMP_NUM_THREADS=1
# Load the version of R you want to use
module load r
# Run your R script
srun Rscript r_parallel.R
library(pracma)
library(parallel)
invertRandom <- function(index) {
A<-matrix(runif(2000*2000),ncol=2000,nrow=2000);
A<-A + t(A);
B<-pinv(A);
return(max(B %*% A));
}
ptm<-proc.time()
mclapply(1:16,invertRandom, mc.cores=Sys.getenv('SLURM_CPUS_PER_TASK'))
proc.time()-ptm
When constrained to opt-architecture, run times for different core numbers were
ncores |
1 |
2 |
4 |
8 |
---|---|---|---|---|
runtime |
380.757 |
182.185 |
125.526 |
84.230 |