R
R ist eine Programmiersprache und Softwareumgebung für statistiche Rechnungen und Graphiken.
Batch-Jobs starten
Soroban
Das Programm kann direkt aufgerufen werden, ohne das ein Modul vorher geladen werden muss. Es gibt allerdings eine weitere Version, die gegen die optimierten mathematischen Routinen von Intels Math Kernel Library oder MKL kompiliert wurde und die für bestimmte Operationen wesentlich schneller sein soll. Um die MKL-fähige Version zu verwenden, benutzt man
module load r
Ein einfaches Beispiel-Skript, das an Slurm geschickt werden kann, könnte folgendermaßen aussehen:
#!/bin/bash #SBATCH --job-name=my_R_job
#SBATCH --mem=2048
#SBATCH --time=1-12:00:00
module load r Rscript script.r arg1 arg2
Mit dem R-Paket Rmpi
können parallele Jobs gestartet werden. In diesem Fall muss die Anzahl der Tasks durch den Slurm-Parameter --ntasks
angegeben werden. Allerdings sollte die Anzahl der zu startenden Prozesse, die an mpirun
mit der Option -np
lediglich 1
sein:
#!/bin/bash #SBATCH --job-name=my_Rmpi_job
#SBATCH --mem=2048
#SBATCH --ntasks=8
module add r openmpi/intel mpirun -np 1 R --no-save < mpi_job.r
Pakete installieren
Nutzer*innen können Pakete selbst installieren, indem sie R
starten und dann folgendes Kommando eingeben:
install.packages("somepackage")
Nutzer*innen, die eigene Paket bauen möchten und dabei die MKLverwenden wollen, müssen die entsprechenden Module laden:
module load intel/compiler intel/mkl
und dann in der Datei Makevars
die Definition von PKG_LIBS
um die passende Umgebungsvariable ergänzen:
PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"` -l$(BLASLIB)
Andere mathematischen Bibliotheken verwenden
Die Version von R, die ohne module
zur Verfügen steht, wird regelmäßig aktualisiert und entspricht normalerweise die neueste Version, die verfügbar ist. Standardmäßig ist diese Version dynamisch gegen OpenBLAS gelinkt. In manchen Fällen kann es aber sinnvoll sein, für Operationen der linearen Algebra eine andere Bibliothek zu verwenden.
Dies kann erreicht werden, indem die gewünschte Bibliothek vor allen anderen geladen wird. Dazu kann man die Umgebungsvariable LD_PRELOAD
verwenden, z.B.:
module add intel/compiler/64/16.0
export LD_PRELOAD=${MKLROOT}/lib/intel64/libmkl_rt.so
Rscript myscript.r