Μετάβαση στο περιεχόμενο

Περιγραφή

MATLAB is a high-level programming language and interactive environment for numerical computation, visualization and programming.

MATLAB R2022b

Η έκδοση R2022b του Matlab μπορεί να χρησιμοποιηθεί στην συστοιχία ακολουθώντας τις οδηγίες που εμφανίζονται παρακάτω, ενεργοποιώντας το αντίστοιχο module:

# module load matlab/R2022b

All toolboxes are available

Στην συγκεκριμένη έκδοση, με τη νέα Campus-Wide άδεια, μπορούν να χρησιμοποιηθούν όλα τα διαθέσιμα toolboxes του Matlab.

MATLAB R2021a

Παράδειγμα χρήσης

Για το παράδειγμα αυτό χρησιμοποιούμε τα εξής M-files:

  • myfact.m: function για τον υπολογισμό του παραγοντικού που δίνεται ως argument.
  • average.m: script για τον υπολογισμό του μέσου όρου των τιμών ενός συγκεκριμένου vector.

Στο $HOME μας στο login node, δημιουργούμε ένα νέο φάκελο όπου τοποθετούμε τα αρχεία εισόδου και το script υποβολής της εργασίας, έστω matlab-R2021a-case.sh.

# mkdir matlab-R2021a-case
# cd matlab-R2021a-case

Το script υποβολής της εργασίας θα έχει την ακόλουθη μορφή:

SLURM submission script

#!/bin/bash
#SBATCH -J Matlab-Job
#SBATCH -p batch
#SBATCH -t 15:00

#### load module ####
module load matlab/R2021a

#### RUN MATLAB JOB ####
echo "Starting Matlab"
matlab -nodisplay << EOF &> matlab.out
a = 15;
disp(a)
disp("Calculating factorial:")
myfact(a)
disp("Calculating average:")
average
exit
EOF

EOF - Here document

Όλες οι εντολές που περιλαμβάνονται μεταξύ των δύο παρακάτω γραμμών θα τρέξουν στο Matlab:

matlab -nodisplay << EOF &> matlab.out
    #
    # Matlab code here...
    #
EOF

Η σύνταξη αυτή είναι γνωστή ως here document και χρησιμοποιείται συνήθως όταν θέλουμε να τρέξουμε πολλές εντολές χωρίς να τις αποθηκεύσουμε σε κάποιο αρχείο. Συγκεκριμένα, δίνουμε εντολή εκκίνησης της κονσόλας του Matlab και ως ορίσματα της δίνουμε όλες τις γραμμές μέχρι το limitstring, EOF. Τα αποτελέσματα των εντολών θα αποθηκευτούν στο αρχείο matlab.out.

Η υποβολή της εργασίας γίνεται με την εντολή sbatch <filename.sh> ως εξής:

# sbatch matlab-R2021a-case.sh

Παρακολουθούμε με την εντολή squeue την εξέλιξη της εργασίας.

Eφόσον η εργασία έχει εκκινήσει μπορούμε να ελέγχουμε την πρόοδο της επίλυσης μέσω των αρχείων εξόδου. Π.χ.:

# tail -f *.out

Yποβολή παραμετρικών σειριακών εργασιών

Tο παρακάτω χρησιμοποιείται για να να τρέξουμε τη συνάρτηση myfact 4 φορές με ορίσματα 1, 2, 3 και 4.

Δημιουργούμε ενα νέο φάκελο με όνομα matlabdir και σε αυτόν μεταφέρουμε τo αρχείο myfact.m που δημιουργήσαμε και το script για την υποβολή, έστω matlab-R2021a-parametric-case.sh:

SLURM submission script
#!/bin/bash
#SBATCH -J Matlab-ParamJob
#SBATCH -a 1-4

#### load module ###
module load matlab/R2021a

#### RUN MATLAB JOB ####
echo "Starting Matlab"
matlab -nodisplay << EOF &>> matlab.out

MyParameter = $SLURM_ARRAY_TASK_ID
disp("Execute function with parameter: " + MyParameter)

myfact(MyParameter)
save('myworkspace')

exit
EOF

Με την εντολή MyParameter = $SLURM_ARRAY_TASK_ID περνάμε την τιμή του $SLURM_ARRAY_TASK_ID στη μεταβλητή MyParameter του MATLAB την οποία μπορούμε να επεξεργαστούμε όπως θέλουμε.

Παραλληλισμός Διεργασιών

Για τη δημιουργία διεργασιών που απαιτούν παράλληλους υπολογισμούς, απαιτείται η χρήση του Parallel Computing Toolbox. Οι εξειδικευμένες εντολές για αυτή τη χρήση, καθώς επίσης και σχετικές πληροφορίες μπορούν να βρεθούν στην επίσημη σελίδα της Mathworks για τη χρήση του πακέτου. Αξίζει να αναφέρουμε πως πολλές διεργασίες, όπως ο πολλαπλασιασμός μητρώων, η Matlab τις παραλληλίζει αυτόματα στη βάση των διαθέσιμων CPU.

Εναλλακτική σύνταξη και παραμετρικές εργασίες

Ένας εναλλακτικός τρόπος με τον οποίο μπορούμε να εκτελέσουμε ρουτίνες στη matlab, είναι η δημιουργία εκτελέσιμων αρχείων της μορφής .m και στη συνέχεια να τα υποβάλλουμε με την εντολή :

matlab -nodisplay -nosplash -r "run('job.m'); exit" 
Η σύνταξη αυτή επιτρέπει την αποστολή παραμετρικών εργασιών και δυνατότητα χρήσης του εκτελέσιμου μέσω γραφικού περιβάλλοντος.

Γραφικό Περιβάλλον

Μπορούμε να ξεκινήσουμε το γραφικό περβάλλον του Matlab στην υπολογιστική συστοιχία από το web portal της υπολογιστικής συστοιχίας, ακολουθώντας τα βήματα που περιγράφονται στις οδηγίες για την εκκίνηση του γραφικού περιβάλλοντος του Matlab.