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¶
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.
Usage¶
module load octave
module load octave-gui
Perl¶
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
List available versions
module avail perl
module load perl
Python¶
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
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.