Skip to content

Περιγραφή

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

MATLAB R2018b

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

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

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

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

# mkdir matlab-R2018b-case
# cd matlab-R2018b-case

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

SLURM submission script

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

#### load module ####
module load gcc matlab

#### 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-R2018b-case.sh

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

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

# tail -f *.out

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

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

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

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

#### load module ###
module load gcc matlab

#### 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 την οποία μπορούμε να επεξεργαστούμε όπως θέλουμε.