Einfaches R Skript

Brutus muss nicht zwingend mit parallelisiertem Code (OpenMP, MPI) verwendet werden; man kann darauf auch "normale", serielle R-Skripte laufen lassen. Das folgende Beispiel zeigt anhand eines äusserst simplen "Hello Brutus"-Skripts, wie das geht. Das Beispielskript befindet sich unter /u/sfs/R/BrutusEx/helloBrutus.R Bash-Kommandos, die auf SfS-Computern ausgeführt werden müssen, stehen in einer Zeile mit sfs$ am Anfang; Bash-Kommandos, die auf der Login-Node von Brutus ausgeführt werden müssen, stehen in einer Zeile mit brutus$ am Anfang.
  1. Auf Brutus ein Verzeichnis erzeugen, in dem Skript und Resultat-Dateien zu liegen kommen:
    brutus$ mkdir ~/test
  2. Skript auf Brutus kopieren:
    sfs$ scp /u/sfs/R/BrutusEx/helloBrutus.R brutus:~/test/
    scp ist sicher die einfachste Möglichkeit, Daten zwischen dem SfS und Brutus hin und her zu kopieren. Allerdings überschreibt scp ungefragt vorhandene Dateien gleichen Namens, so dass die Gefahr besteht, noch benötigte Dateien zu überschreiben. Sicherer ist die Verwendung von Subversion, Git oder Unison.
  3. Auf Brutus einloggen:
    sfs$ ssh brutus
  4. R-Modul starten:
    brutus$ module load r
    bzw. (vgl. Hinweis hier)
    brutus$ module load goto2 r
  5. Skript ans Batch-System von Brutus senden:
    brutus$ cd test
    brutus$ bsub -W 01:00 R CMD BATCH --no-save helloBrutus.R
    Der Parameter -W spezifiziert die maximale Laufzeit des Skripts. Nach dieser Laufzeit wird das Skript einfach abgebrochen, nicht-gespeicherte Daten gehen dabei verloren! Daher ist es wichtig,
    1. die Laufzeit richtig anzugeben,
    2. in grösseren Skripten Zwischenergebnisse zu speichern, damit im Notfall nicht die ganze Berechnung verloren geht.
  6. Job-Status überprüfen:
    brutus$ bjobs
  7. Sobald das Skript fertig abgearbeitet wurde, steht der R-Output in der Datei helloBrutus.Rout; das Beispielskript produziert ferner eine Datei helloBrutus.RData mit einer Variablen drin. Um den R-Output sowie diese Datei am SfS weiter zu verarbeiten bzw. auszuwerten, müssen die Dateien ans SfS zurückkopiert werden:
    sfs$ scp brutus:~/test/helloBrutus.Rout .
    sfs$ scp brutus:~/test/helloBrutus.RData .

Detaillierte Informationen dazu findet man im Brutus wiki.

Page URL: https://wiki.math.ethz.ch/bin/view/SfSInfo/RechnenBrutusErsteSchritteEinfachesRSkript
2024-05-02
© 2024 Eidgenössische Technische Hochschule Zürich