Περιγραφή¶
R is a free software environment for statistical computing and graphics. It compiles and runs on a wide variety of UNIX platforms, Windows and MacOS.
R 3.6.1¶
Παράδειγμα χρήσης¶
Σε αυτό το παράδειγμα θα δούμε πώς υποβάλλουμε δοκιμαστικά μία εργασία R.
Δημιουργούμε ένα R script
, το οποίο τυπώνει ένα μέσο όρο από ένα δοκιμαστικό δείγμα της R, έστω R-case.r
:
R script
# Test R script
mean(mtcars$mpg)
Για την υποβολή της εργασίας, χρησιμοποιούμε το submission script, έστω R-4.4.0-case.sh
:
Submission Script
#!/bin/bash
#SBATCH -J R-4.4.0-case
#SBATCH -t 01:00
module -q load gcc/12 r
Rscript R-case.r
Υποβάλλουμε το παραπάνω script προς εκτέλεση με την εντολή:
$ sbatch R-4.4.0-case.sh
Παρακολουθούμε την πορεία της εργασίας με την εντολή squeue
.
Το αναμενόμενο αποτέλεσμα φαίνεται στο αρχείο slurm-*.out
:
Terminal output
[1] 20.09062
Χρήση κεντρικά εγκατεστημένων R πακέτων¶
Για να χρησιμοποιήσουμε κάποιο από τα κεντρικά εγκατεστημένα πακέτα της R, θα χρειαστεί να ενεργοποιήσουμε στο terminal ή στο script υποβολής το αντίστοιχο module:
$ module load gcc/12 r r-gglpot2
Εγκατάσταση R
πακέτων σε τοπικό φάκελο¶
Αν κάποια βιβλιοθήκη της R
δεν είναι διαθέσιμη στα κεντρικά εγκατεστημένα πακέτα μπορούμε να την εγκαταστήσουμε σε τοπικό φάκελο (δηλαδή εντός του home directory του χρήστη).
Κατά την εγκατάσταση πακέτων της R
σε τοπικό φάκελο προτείνεται η χρήση τελευταίας πάντα έκδοσης της gcc
και της R
που θα χρησιμοποιήσουμε. Για παράδειγμα:
$ module load gcc/12 r/4.4.0
Στην συνέχεια δημιουργούμε ένα directory όπου θα τοποθετήσουμε τα νέα πακέτα. Για παράδειγμα:
$ mkdir -p ~/.R/4.4.0
Info
Όπως φαίνεται και στο παράδειγμα καλό και χρήσιμο είναι να χρησιμοποιήσουμε στο όνομα του νέου φακέλου και την έκδοση της R που χρησιμοποιούμε ώστε αν στο μέλλον χρειαστεί να χρησιμοποιήσουμε άλλη έκδοση της R
να έχουμε ξεχωριστά τις βιβλιοθήκες της κάθε έκδοσης. Επίσης, o φάκελος που φτιάχνουμε θα πρέπει να βρίσκεται μέσα το $HOME (για αυτό το λόγο χρησιμοποιούμε το χαρακτήρα ~
στην παραπάνω εντολή δημιουργίας ου φακέλου.
Έπειτα ξεκινάμε την κονσόλα της R:
$ R
και εγκαθιστούμε το (ή τα) πακέτο(-α) που χρειαζόμαστε στο παραπάνω νέο path που φτιάξαμε. Για παράδειγμα για να εγκαταστήσουμε τη βιβλιοθήκη igraph
της R
εκτελούμε:
> install.packages('igraph', repos='https://ftp.cc.uoc.gr/mirrors/CRAN/', lib='~/.R/4.4.0')
Έλεγχος πορείας εγκατάστασης
Ελέγχουμε στην έξοδο αν η εγκατάσταση ολοκληρώθηκε επιτυχώς ή αν προέκυψε κάποιο πρόβλημα. Σε περίπτωση επιτυχούς εγκατάστασης αναμένουμε να δούμε κάτι τέτοιο στην έξοδο:
* DONE (igraph)
The downloaded source packages are in
‘/path/to/downloaded_packages’
Αντίστοιχα, σε περίπτωση αποτυχίας κάτι τέτοιο:
ERROR: compilation failed for package ‘igraph’
* removing ‘/path/to/igraph’
The downloaded source packages are in
‘/path/to/downloaded_packages’
Warning message:
In install.packages("igraph", repos = "http://cran.r-project.org", :
installation of package ‘igraph’ had non-zero exit status
Πρόβλημα με την επιλογή αποθετηρίων
Η r
αν δεν ορίσουμε αποθετήριο στην εντολή install(...)
θα μας επιστρέψει μία λίστα με πιθανές επιλογές. Καθώς όμως εντός ενός batch job που εκτελείται δεν έχουμε τη δυνατότητα διαδραστικά να δώσουμε input θα πρέπει εκ των προτέρων να καθορίζουμε το αποθετήριο όπως γίνεται και στα παραπάνω παραδείγματα.
Για να ελέγξουμε εάν μπορούμε να χρησιμοποιήσουμε το πακέτο που εγκαταστήσαμε, θα πρέπει μέσα στο περιβάλλον της R
να εκτελέσουμε την παρακάτω εντολή:
> .libPaths('~/.R/4.4.0')
Έπειτα ελέγχουμε ότι η βιβλιοθήκη είναι διαθέσιμη φορτώνοντάς την στο περιβάλλον, δηλαδή εκτελώντας την εντολή:
> library('igraph')
Χρήση τοπικού φακέλου μέσα από jobs
Για να χρησιμοποιηθεί η τοπική εγκατάσταση βιβλιοθηκών μέσα από jobs που στέλνουμε στη συστοιχία απαραίτητο είναι στο R script να συμπεριλάβουμε την εξής γραμμή:
.libPaths('~/.R/4.4.0')
Παραλληλισμός κώδικα στην R¶
Για τον παραλληλισμό κώδικα στη γλώσσα R, οι παρακάτω βιβλιοθήκες είναι πολύ χρήσιμες:
Για την εισαγωγή στον παράλληλο προγραμματισμό με R μπορείτε να βρείτε χρήσιμες πληροφορίες στους παρακάτω συνδέσμους:
- https://ljdursi.github.io/beyond-single-core-R/#/24
- https://nceas.github.io/oss-lessons/parallel-computing-in-r/parallel-computing-in-r.html
- https://blog.dominodatalab.com/multicore-data-science-r-python