Υποβολή εργασιών R στην Υπολογιστική Συστοιχία του ΑΠΘ

Σε αυτό το εγχειρίδιο, μπορείτε να βρείτε οδηγίες σχετικά με την χρήση PBS commands για την υποβολή εργασιών R στην Υπολογιστική Συστοιχία του ΑΠΘ.
Ενεργοποίηση της δυνατότητας χρήσης της Υπολογιστικής Συστοιχίας του ΑΠΘ
  • Για να αποκτήσετε πρόσβαση στην Ιδρυματική συστοιχία μπορείτε να υποβάλετε την online αίτηση εδώ.
  • Μόλις ενεργοποιηθεί ο λογαριασμός σας, μπορείτε να συνδεθείτε στο UI μέσω SSH.
    Μπορείτε να βρείτε σχετικές οδηγίες για Linux ή για Mac OS X εδώ και για Windows εδώ.

Για την μεταφορά αρχείων από και προς τον server ακολουθούμε τις οδηγίες για Linux ή για Mac OS X εδώ και για Windows εδώ.

Εναλλακτικά μπορείτε να χρησιμοποιήσετε τον client MobaXterm για να συνδεθείτε μέσω SSH στο User Interface και να μεταφέρετε αρχεία μέσω sftp.

Πληροφορίες για το Login Node της Ιδρυματικής συστοιχίας και την πρόσβασή σας στο $HOME και στο scratch storage volume, μπορείτε να βρείτε εδώ.

R στο User Interface

Μπορούμε να ξεκινήσουμε την κονσόλα της R στο User Interface, εκτελώντας την εντολή:

$ R

Εάν θέλουμε να τρέξουμε κάποιο R script στο User Ιnterface, για παράδειγμα το r_script.R, μπορούμε να χρησιμοποιήσουμε την παρακάτω εντολή:
$ Rscript r_script.R

 

Δημιουργία ενός απλού script για την υποβολή μίας εργασίας
Για να υποβάλουμε μία εργασία στην Ιδρυματική συστοιχία, θα πρέπει να μεταφερθούμε στο $SCRATCHDIR χρησιμοποιώντας την εντολή:

$ cd  $SCRATCHDIR

Έπειτα, δημιουργούμε ένα καινούργιο φάκελο R-job για την εργασία που θέλουμε να υποβάλουμε  και μεταφερόμαστε στο directory εκτελώντας τις παρακάτω εντολές στο User Interface :


$ mkdir R-job
$ cd R-job

Εδώ μεταφέρουμε τα αρχεία της εργασίας  και το script που φτιάξαμε.

Για την μεταφορά αρχείων από και προς τον server ακολουθούμε τις οδηγίες για Linux ή για Mac OS X εδώ και για Windows εδώ.
Εναλλακτικά μπορείτε να χρησιμοποιήσετε τον client MobaXterm για να συνδεθείτε μέσω SSH στο User Interface και να μεταφέρετε αρχεία μέσω sftp.

Παράδειγμα

Έστω πως θέλουμε να τρέξουμε το r_script.R που εμφανίζεται στην δεξιά στήλη. Για να τρέξουμε το script στην συστοιχία θα πρέπει να δημιουργήσουμε το script υποβολής run_R.sh

Περιεχόμενα αρχείου run_R.sh:

#PBS -q see
#PBS -N R-job
#PBS -j oe
#PBS -l nodes=1:ppn=1
cd $PBS_O_WORKDIR
Rscript r_script.R &> R-job-output  

Περιεχόμενα αρχείου r_script.R:

A = c(65, 70, 75)
ls()
print(object.size(A),units="Kb")
save.image()
save(A, file = "A.RData")

Αφού μεταφέρουμε τα αρχεία run_R.sh και r_script.R στο $HOME directory, μπορούμε να μεταφέρουμε τα αρχεία στο directory από όπου θα τρέξει η εργασία, εκτελώντας στο User Interface την παρακάτω εντολή:
$ cp run_R.sh r_script.R $SCRATCHDIR/R-job

 

Υποβολή εργασίας
Για να υποβάλουμε την εργασία στην υπολογιστική συστοιχία, μπορούμε να συνδεθούμε στο User Interface και να μεταφερθούμε στο directory R-job:

$ cd $SCRATCHDIR/R-job

Στην συνέχεια, μπορούμε να προχωρήσουμε σε υποβολή της εργασίας στην συστοιχία:

$ qsub run_R.sh

Mπορούμε να ελέγχουμε το status της εργασίας με την εντολή:

$ qstat

Μπορούμε να δούμε τα αρχεία εξόδου που παράγονται στο directory από όπου έγινε η υποβολή της εργασίας με την εντολή:

$ ls

Για να ελέγξουμε τις τελευταίες γραμμές των output logs, όσο ακόμη η εργασία βρίσκεται σε εκτέλεση, μπορούμε να χρησιμοποιούμε την εντολή:
$ tail R-job*

Αναλυτικές πληροφορίες για την υποβολή εργασιών στην Ιδρυματική συστοιχία είναι διαθέσιμες εδώ

Παράλληλη υποβολή σειριακών εργασιών

Χρησιμοποιούμε το script R-param.sh για την υποβολή του R script r_param.R για παραμέτρους από 1 έως 5.

Τα αντίστοιχα scripts βρίσκονται εδώ.

Οι εργασίες για τις πέντε διαφορετικές παραμέτρους (1 έως και 5) θα εκτελεστούν παράλληλα.

Με το παρακάτω PBS directive στο script υποβολής ορίζουμε ένα array παραμέτρων:

#PBS -t 1-5


Με την εντολή: 

$ qsub R-param.sh

θα υποβληθούν ταυτόχρονα 5 εργασίες στην συστοιχία. Κάθε εργασία θα λαμβάνει στη μεταβλητή $PBS_ARRAYID μία τιμή από το array (1 έως και 5).

 

Περιεχόμενα αρχείου R-param.sh:

 

#PBS -q see
#PBS -N R-param-job
#PBS -j oe
#PBS -l nodes=1:ppn=1
#PBS -t 1-5

##### Change to current working directory

cd $PBS_O_WORKDIR

##### Obtain Parameters from input.txt file using $PBS_ARRAY_INDEX as the line number #####
parameters=`sed -n "${PBS_ARRAYID} p" input.txt`
parameterArray=($parameters)

x=${parameterArray[0]}
y=${parameterArray[1]}
z=${parameterArray[2]}

##### Execute R script #####
printf "Values used are %d %f %d\n" $x $y $z
Rscript r_param.R $x $y $z &> output_${PBS_ARRAYID}.log

 
Με εικόνες