Συχνές Ερωτήσεις¶
1. Το μέγεθος της μνήμης που μπορεί να χρησιμοποιήσει μία εργασία καθορίζεται από τον αριθμό των επεξεργαστών που δεσμεύονται μέσω της παραμέτρου --ntasks
;
Ναι. Στο batch
partition αντιστοιχούν περίπου 6GB RAM/CPU core.
Το μέγεθος αυτό προκύπτει από την διαίρεση της συνολικής μνήμης με τον αριθμό των επεξεργαστών (CPU cores).
Για μία γενική εικόνα της αντιστοιχίας μνήμης ανά επεξεργαστή, μπορείτε να ανατρέξετε στις πληροφορίες για τους διαθέσιμους πόρους.
Προσθέτοντας στην sbatch
την παράμετρο --mem είναι δυνατόν να οριστεί συγκεκριμένο μέγεθος μνήμης για μία εργασία, ανεξάρτητα από τον αριθμό των επεξεργαστών που δεσμεύονται.
Για παράδειγμα, χρησιμοποιώντας το εξής directive:
#SBATCH --mem=120G
ή απευθείας κατά την υποβολή της εργασίας:
$ sbatch --mem 120G submission_file.sh
2. Υπάρχει κάποια εντολή με την οποία μπορώ να βλέπω τους διαθέσιμους πυρήνες στο σύστημα;
Ναι. Για να δείτε γενικές πληροφορίες όσον αφορά την διαθεσιμότητα των πόρων της συστοιχίας, μπορείτε να χρησιμοποιήσετε την εντολή:
$ sinfo
Η συγκεκριμένη εντολή δίνει πληροφορία σχετικά με το πόσα nodes
σε κάθε partition
είναι:
allocated
(δηλαδή έχουν πλήρως δεσμευμένους τους πόρους τους)mixed
(δηλαδή είναι allocated μόνο ένα μέρος των πόρων τους)idle
(δηλαδή οι πόροι τους είναι πλήρως διαθέσιμοι)
Με την παρακάτω εντολή μπορούμε να δούμε τον συνολικό αριθμό διαθέσιμων CPUs για ένα partition:
$ sinfo -p partition_name -o %C
Όπου partition_name
θέτουμε μία από τις εξής επιλογές: batch
, gpu
, htc
, ondemand
, testing
.
Η συγκεκριμένη εντολή δίνει ως αποτέλεσμα τους αριθμούς που αντιστοιχούν στο header: CPUS(A/I/O/T)
. Κατά σειρά, τα αρχικά στην παρένθεση αντιστοιχούν σε allocated/idle/other/total
.
3. Σε τι αναφέρεται η τελευταία στήλη στην εντολή squeue
με τον τίτλο NODELIST(REASON)
;
Στην στήλη NODELIST
, στο αποτέλεσμα της εντολής squeue
, εμφανίζεται το node στο οποίο τρέχει μία εργασία.
Εάν η εργασία δεν βρίσκεται σε εκτέλεση, αλλά παραμένει στην ουρά, στην παρένθεση (REASON)
αναφέρεται ο λόγος για τον οποίο η εργασία δεν έχει ξεκινήσει να τρέχει.
4. Πώς μπορώ να γνωρίζω εάν το λογισμικό ή μία βιβλιοθήκη που θα χρειαστώ για τις εργασίες μου έχει εγκατασταθεί στην υπολογιστική συστοιχία;
Για να διαπιστώσετε εάν κάποιο συγκεκριμένο πακέτο λογισμικού είναι διαθέσιμο στην υπολογιστική συστοιχία, μπορείτε να συνδεθείτε στο login node και να χρησιμοποιήσετε την παρακάτω εντολή, η οποία εμφανίζει τα διαθέσιμα modules:
$ module avail
Για να αναζητήσετε κάποιο συγκεκριμένο πακέτο λογισμικού, μπορείτε να χρησιμοποιήσετε την εντολή:
$ module spider package_name
Όπου package_name
θέτουμε το όνομα του πακέτου λογισμικού που μας ενδιαφέρει, όπως για παράδειγμα: matlab
, netcdf
, r
, ggplot
ή numpy
.
Επιπλέον, στην τεκμηρίωση της υπολογιστικής συστοιχίας του ΑΠΘ μπορείτε να βρείτε μία αναλυτική λίστα του διαθέσιμου λογισμικού
5. Το μέγεθος των δεδομένων εισόδου ή των δεδομένων εξόδου που προκύπτουν από τις εργασίες μου ξεπερνάει την τάξη των 100άδων GB. Θα μπορούσα να χρησιμοποιήσω για τα δεδομένα αυτά το διαμοιραζόμενο volume scratch_a
;
Σχετικά με το θέμα αυτό μπορείτε να δείτε τις πληροφορίες σχετικά με τους αποθηκευτικούς και υπολογιστικούς πόρους για ερευνητικές ομάδες.
6. Παρόλο που κάνω module load openblas
, όταν πάω να κάνω compile τον κώδικα μου εμφανίζεται σφάλμα cblas.h not found και το compile τερματίζεται ανεπιτυχώς. Τι μπορώ να κάνω;
θα χρειαστεί να είναι φορτωμένα τα modulefiles της gcc και της openblas και επιπλέον να καθορίζεται στον compiler που να βρει τα header files της βιβλιοθήκης (π.χ. cblas.h). Αν το compilation γίνεται από γραμμή εντολών π.χ. αντί για:
# gcc code.c
θα χρειαστεί να δώσουμε:
# gcc -Ι$OPENBLAS_ROOT/include code.c
Αν χρησιμοποιείται κάποιο Makefile θα πρέπει να γίνουν οι αντίστοιχες τροποποιήσεις εκεί μέσα.
7. Μπορώ να έχω μία εκτίμηση σχετικά με το πότε θα ξεκινήσει η εργασία μου;
Γενικά, μπορείτε να έχετε μία αίσθηση του εκτιμώμενου queueing time χρησιμοποιώντας το flag --test-only
στην sbatch
.
Π.χ. αν το job file έχει όνομα job.sh
η εντολή είναι η εξής:
$ sbatch --test-only job.sh
Η παραπάνω εντολή δεν θα υποβάλει το job αλλά θα επιστρέψει μία εκτίμηση του χρόνου κατά τον οποίο θα ξεκινήσει το job.
Επιπλέον, για να έχετε μία γενικότερη εικόνα της κατάστασης στις διάφορες ουρές (π.χ. τα pending jobs ή τα idle/αδρανή CPUs και nodes) μπορείτε να παρακολουθείτε τα γραφήματα που αφορούν την χρήση της συστοιχίας. Τα γραφήματα ενημερώνονται ωριαία.
8. Πως μπορώ να βλέπω μόνο τις δικές μου εργασίες στο οutput της squeue
;
Μπορείτε να προσθέσετε στην εντολή squeue
το flag -u <username>
. Έστω ότι το username
σας είναι gkochyli
, η εντολή είναι η εξής:
$ squeue -u gkochyli
JOBID PARTITION NAME USER TIME TIME_LIMIT ST NODES CPUS NODELIST(REASON)
549316 testing sleepJob gkochyli 0:04 10:00 R 1 1 cn117
9. Πως μπορώ να βλέπω το CPU Time
και τον πραγματικό
χρόνο που ολοκληρώθηκε η εργασία μου;
Για πληροφορίες σχετικά με εργασίες που έχουν υποβληθεί στη συστοιχία, μπορείτε να χρησιμοποιείτε την εντολή sacct
.
Για να δείτε τις ζητούμενες πληροφορίες, CPU Time
και πραγματικό
χρόνο εκτέλεσης των εργασιών σας και έστω το username
σας είναι gkochyli
, η εντολή είναι η εξής:
$ sacct -u gkochyli
JobID JobName Submit Start Elapsed CPUTime End State Partit NodeLis User NN NCPU MaxVMSize MaxRSS
------------ -------------------- ------------------- ------------------- ---------- -------------- ------------------- ---------- ------ ------- --------- -- ---- ---------- ----------
78542_61 sleepJob 2019-10-02T17:03:50 2019-10-02T17:03:51 00:00:31 00:00:31 2019-10-02T17:04:22 COMPLETED htc cn109 gkochyli 1 1
78542_61.ba+ batch 2019-10-02T17:03:51 2019-10-02T17:03:51 00:00:31 00:00:31 2019-10-02T17:04:22 COMPLETED cn109 1 1 221148K 1872K
78542_62 sleepJob 2019-10-02T17:03:50 2019-10-02T17:03:51 00:00:31 00:00:31 2019-10-02T17:04:22 COMPLETED htc cn109 gkochyli 1 1
78542_62.ba+ batch 2019-10-02T17:03:51 2019-10-02T17:03:51 00:00:31 00:00:31 2019-10-02T17:04:22 COMPLETED cn109 1 1 221152K 1876K
Οι ζητούμενες τιμές φαίνονται στις στήλες CPUTime
και Elapsed
.
Παρατηρήσεις
- H παραπάνω εντολή δείχνει εργασίες έως μία ημέρα πριν.
Για να ορίσετε το χρονικό διάστημα για το οποίο θέλετε να δείτε πληροφορίες, μπορείτε να χρησιμοποιήσετε τα flags για αρχή χρονικού διαστήματος, -S <time>
ή --starttime=<time>
και τελικού χρονικού διαστήματος, -E <time>
ή --endtime=<time>
, ως εξής:
$ sacct -S 2020-01-01 -E 2020-10-10 -u gkochyli
JobID JobName Submit Start Elapsed CPUTime End State Partit NodeLis User NN NCPU MaxVMSize MaxRSS
------------ -------------------- ------------------- ------------------- ---------- -------------- ------------------- ---------- ------ ------- --------- -- ---- ---------- ----------
548625 sleepJob 2020-02-03T12:17:21 2020-02-03T12:17:22 00:02:10 00:02:10 2020-02-03T12:19:32 CANCELLED+ batch cn123 gkochyli 1 1
548625.batch batch 2020-02-03T12:17:22 2020-02-03T12:17:22 00:02:10 00:02:10 2020-02-03T12:19:32 CANCELLED cn123 1 1 22426320K 543588K
Για να δείτε πληροφορίες, ενώ γνωρίζετε το JobID
μιας εργασίας, π.χ. jobID 78542
, η εντολή είναι η εξής:
$ sacct -j 78542
JobID JobName Submit Start Elapsed CPUTime End State Partit NodeLis User NN NCPU MaxVMSize MaxRSS
------------ -------------------- ------------------- ------------------- ---------- -------------- ------------------- ---------- ------ ------- --------- -- ---- ---------- ----------
78542 sleepJob 2019-10-02T17:03:50 2019-10-02T17:03:51 00:00:30 00:00:30 2019-10-02T17:04:21 COMPLETED htc cn112 gkochyli 1 1
78542.bat+ batch 2019-10-02T17:03:51 2019-10-02T17:03:51 00:00:30 00:00:30 2019-10-02T17:04:21 COMPLETED cn112 1 1 221136K 2148K
10. Για ποιόν λόγο παρατηρώ καθυστερήσεις στην δρομολόγηση των εργασιών μου;
Η προτεραιότητα δρομολόγησης ρυθμίζεται έτσι ώστε να συνυπολογίζεται η χρήση των πόρων που γίνεται από το κάθε account ή εργασία.
Για να ελέγξετε τους παράγοντες που καθορίζουν την προτεταιότητα μίας εργασίας και την κατάταξή της σε σχέση με τις υπόλοιπες που βρίσκονται στην ουρά δρομολόγησης (για παράδειγμα στο batch
partition), μπορείτε να χρησιμοποιείτε την εντολή:
$ sprio -l -p batch
Είναι επίσης σημαντικό να προσέχετε το TimeLimit
των εργασιών που υποβάλετε, καθώς όσο μικρότερο είναι, τόσο ταχύτερα θα δρομολογηθεί μία εργασία.
Εάν πρόκειται για κάποια δοκιμαστική εργασία, παρακαλούμε ακολουθήστε τις σχετικές οδηγίες.
Ο χρόνος αναμονής των εργασιών, εξαρτάται επιπλέον από το πόσο πλήρεις είναι οι πόροι της συστοιχίας. Δηλαδή, εάν υποβάλετε μία εργασία κάποια στιγμή που οι απαιτούμενοι πόροι δεν υπάρχουν διάθεσιμοι, ακόμη και εάν η εργασία είναι η πρώτη στην ουρά δρομολόγησης, το πότε θα δρομολογηθεί εξαρτάται από το πότε θα αποδεσμευθούν πόροι από άλλες εργασίες.
Για να έχετε μία εικόνα της πληρότητας των πόρων ανά πάσα στιγμή, μπορείτε να βλέπετε τα γραφήματα που αφορούν την χρήση της συστοιχίας.
Είναι πιθανόν ότι λογαριασμοί που υποβάλουν μεγαλύτερο αριθμό εργασιών, θα χρησιμοποιούν κάποια δεδομένη στιγμή περισσότερους πόρους. Αυτό συμβαίνει διότι όταν οι πόροι της συστοιχίας απελευθερώνονται, οι εργασίες που βρίσκονται σε αναμονή στην ουρά, δρομολογούνται στους διαθέσιμους πόρους (ακόμη και εάν έχουν χαμηλό συντελεστή fairshare
), εφόσον δεν υπάρχουν άλλες εργασίες σε αναμονή. Αυτό είναι θεμιτό, καθώς συντελεί στο να χρησιμοποιούνται σε υψηλό ποσοτό οι πόροι της συστοιχίας και να μην παραμένουν αδρανείς.
Παρόλα αυτά, διατηρούμε ορισμένους περιορισμούς όσον αφορά τους πόρους που μπορεί να χρησιμοποιεί ταυτόχρονα ο κάθε λογαριασμός.
Εάν, παρά τις παραπάνω οδηγίες και μέτρα που έχουν ληφθεί για την βέλτιστη δρομολόγηση των εργασιών στην συστοιχία, αντιμετωπίζετε προβλήματα στην δρομολόγηση των εργασιών σας ή εάν έχετε κάποια πρόταση όσον αφορά τις συγκεκριμένες ρυθμίσεις, παρακαλούμε επικοινωνήστε μαζί μας στο hpc-support@auth.gr.
11. Θα μπορούσα να προσθέσω ορισμένες python βιβλιοθήκες που είναι απαραίτητες για τις εργασίες μου;
Θα μπορούσατε να εγκαταστήσετε τις απαραίτητες βιβλιοθήκες σε ένα conda environment.
Εναλλακτικά, θα μπορούσατε να προχωρήσετε σε εγκατάσταση των βιβλιοθηκών σε ένα python virtual environment, το οποίο μπορείτε να δημιουργήσετε και να ενεργοποιήσετε ως εξής:
$ module load gcc python
$ python -m venv myenv
$ source myenv/bin/activate
Σε περίπτωση που δεν είναι δυνατή η εγκατάσταση των βιβλιοθηκών στον δικό σας λογαριασμό με κάποιον από τους προτεινόμενους τρόπους, θα μπορούσατε να υποβάλετε την φόρμα αίτησης λογισμικού.
12. Πώς να διαχειριστώ το σφάλμα sbatch: error: Batch script contains DOS line breaks (\r\n)
;
Θα χρειαστεί στο login node να χρησιμοποιήσετε το utility dos2unix
ώστε να αντικαταστήσετε τα line breaks από τη Windows τυποποίηση (\r\n
) σε αυτή του GNU/Linux (\n
). Έτσι αν για παράδειγμα το όνομα του script αρχείου που προσπαθείτε να υποβάλλετε προς εκτέλεση είναι mybatch.sh
θα χρειαστεί να εκτελέσετε:
# dos2unix mybatch.sh
και μετά να δοκιμάσετε ξανά την υποβολή του script με:
# sbatch mybatch.sh
Γενικά, η χρήση του dos2unix
προτείνεται όποτε μεταφέρετε text αρχείο(-α) από λειτουργικό σύστημα Windows προς τα nodes της συστοιχίας καθώς ενδέχεται και άλλα command line utilities ή εφαρμογές (πέρα από την sbatch
) να συμπεριφέρονται αλλόκοτα.
13. Μπορώ να ελέγχω τις διεργασίες που ξεκινάει η εργασία μου η οποία έχει υποβληθεί στην συστοιχία;
Για να δούμε την κατάσταση των διεργασιών που έχουν ξεκινήσει από μία εργασία που έχουμε υποβάλει σε batch mode στην συστοιχία, θα μπορούσαμε να προσθέσουμε τις παρακάτω γραμμές μετά τα SBATCH directives
στο script υποβολής:
top -b -d 300 -u $USER > top.log &
function terminate_monitor_status()
{
top_pid=$(pgrep -u $USER top)
kill $top_pid
}
trap 'terminate_monitor_status' KILL TERM EXIT
Η έξοδος παράγεται ανά 5 λεπτά στο αρχείο top.log
το οποίο μπορούμε να ελέγξουμε για παράδειγμα με την εντολή:
# tail top.log
14. Μπορώ να ελέγχω το status της GPU στην οποία εκτελείται η εργασία μου που έχει υποβληθεί στο gpu partition της συστοιχίας;
Για να δούμε το status της GPU στην οποία τρέχει η εργασία μας, θα μπορούσαμε χρησιμοποιήσουμε το nvidia-smi
utility προσθέτοντας τις παρακάτω γραμμές μετά τα SBATCH directives
στο script υποβολής:
nvidia-smi --loop=300 > nvidia-smi.log &
function terminate_monitor_gpu_status()
{
nvidia_smi_pid=$(pgrep -u $USER nvidia-smi)
kill $nvidia_smi_pid
}
trap 'terminate_monitor_gpu_status' KILL TERM EXIT
Στην συνέχεια μπορούμε να ελέγξουμε το log file nvidia-smi.log
που παράγεται ανά 5 λεπτά. Μπορούμε να δούμε τα περιεχόμενα του αρχείου για παράδειγμα με την εντολή:
# cat nvidia-smi.log
15. Μπορώ να γνωρίζω εάν έχει εξαντληθεί ο διαθέσιμος αποθηκευτικός χώρος του λογαριασμού μου;
Για να ελέγξουμε τον διαθέσιμο χώρο του λογαριασμού μας μπορούμε να χρησιμοποιήσουμε την παρακάτω εντολή:
# df -h $HOME
Επιπλέον πληροφορίες σχετικά με τον αποθηκευτικό χώρο στην υπολογιστική συστοιχία είναι διαθέσιμες στην ενότητα για τους αποθηκευτικούς πόρους ανά λογαριασμό.
16. Γιατί δεν μπορώ να χρησιμοποιήσω μεγάλο αριθμό πυρήνων στο Web Portal;
Το Web Portal χρησιμοποιεί πόρους του partition ondemand. Στο ondemand partition, όπου τρέχουν τα γραφικά περιβάλλοντα, μπορείτε να χρησιμοποιήσετε ως και 4 πυρήνες (κάποιες εφαρμογές επιτρέπουν κατ'εξαίρεση μέχρι 8 ή μέχρι 12). Εάν χρειάζεστε περισσότερους, θα πρέπει να εκτελέσετε το αντίστοιχο batch mode του προγράμματος που χρησιμοποιείτε, σε κάποιο άλλο partition. Ο περιορισμός υπάρχει γιατί το ondemand (το οποίο αποτελείται από nodes που διαθέτουν 12 CPU cores και μία virtual GPU κάρτα αρχιτεκτονικής Nvidia Quadro RTX 6000) προορίζεται για εκπαιδευτική χρήση και για development, και όχι για υπολογιστικά απαιτητικές εργασίες.
17. Υπάρχει η δυνατότητα να τρέξει μία εργασία που απαιτεί μεγάλο μέγεθος μνήμης RAM
;
Στο rome partition του Αριστοτέλη υπάρχουν διαθέσιμα 2 fat nodes
με μνήμη περίπου 1TB
, τα οποία είναι κατάλληλα εργασίες που απαιτούν μεγάλο μέγεθος μνήμης RAM
.
Για να υποβάλουμε εργασίες στα fat nodes
μπορούν να χρησιμοποιηθούν τα παρακάτω directives επιλέγοντας το μέγεθος της μνήμης που θα χρειαστούμε. Για παράδειγμα:
#SBATCH --partition=rome
#SBATCH --nodes=1
#SBATCH --ntasks=8
#SBATCH --mem=500G
Για εφαρμογές με γραφικό περιβάλλον, οι οποίες έχουν υψηλές απαιτήσεις σε RAM
ή σε μνήμη κάρτας γραφικών VRAM
μπορούμε να εκκινήσουμε ένα Desktop session στο partition a40000
.
18. Ποια έκδοση της Python
μπορώ να χρησιμοποιήσω;
Για το θέμα αυτό υπάρχουν πληροφορίες στην ενότητα που αφορά τις διαθέσιμες εκδόσεις Python
.