Skip to content

High-level languages

Software package version
R 4.5.0
Octave 10.1.0
Python 3.8.13, 3.10.15, 3.11.10, 3.12.9, 3.13.2
Perl 5.40.1
Bash 5.1.8
Git 2.43.5

Octave

https://octave.org/

GNU Octave is a high-level language primarily intended for numerical computations. It is typically used for such problems as solving linear and nonlinear equations, numerical linear algebra, statistical analysis, and for performing other numerical experiments. It may also be used as a batch-oriented language for automated data processing.

Documentation

License

Usage

module load octave
 module load octave-gui

Perl

https://www.perl.org/

Perl is a highly capable, feature-rich programming language with over 37 years of development. Perl runs on over 100 platforms from portables to mainframes and is suitable for both rapid prototyping and large scale development projects.

licensing terms and conditions

License

List available versions

module avail perl
module load perl

Python

https://www.python.org/

Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation. Python is dynamically type-checked and garbage-collected.

Licensing Terms and Conditions

License

List available versions

module avail python
module load python/3.13.2

R

R is a language and environment for statistical computing and graphics. It is similar to the S language and environment developed at Bell Laboratories (formerly AT&T, now Lucent Technologies). R provides a wide variety of statistical and graphical techniques and is highly extensible.

Usage

module load R

R version 4.5.0 (2025-04-11) -- "How About a Twenty-Six"
Copyright (C) 2025 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu

Parallel R

The R is not parallelized by itself. There are a lot of R packages that focus on High-Performance and Parallel Computing with R. Here is a list: https://cran.r-project.org/web/views/HighPerformanceComputing.html

Number of Cpus

If you are using the core function detectCores please notice that this function reports the number of CPU cores on the current running host and NOT the ALLOCATED SLURM cpus. e.g:

#!/usr/bin/env Rscript

library(parallel)
numCores <- detectCores()
numCores

n <- Sys.getenv("SLURM_CPUS_PER_TASK")
as.numeric(n)
#SBATCH --ntasks=1
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=4

srun numcores.R
### Output
[1] 128     #num of physical cores on compute node
[1] 4       #SLURM cpus per task

If you use the first method (i.e. 128 cores) your job will try to instantiate 128 threads on 4 CPU cores and your performance will suffer and your runtime and budget usage will take a hit. Please use the second method.