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

Συχνές Ερωτήσεις

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. Μπορώ να έχω μία εκτίμηση σχετικά με το πότε θα ξεκινήσει η εργασία μου;

Για μία εκτίμηση του χρόνου εκκίνησης μίας εργασίας που βρίσκεται στην ουρά, μπορείτε να χρησιμοποιήσετε τα flags --start --job=<jobid> στην εντολή squeue.

Για παράδειγμα για μία εργασία με job ID 1864564:

$ squeue --start --job=1864564 JOBID PARTITION NAME USER ST START_TIME NODES SCHEDNODES NODELIST(REASON) 1864564 gpu test alcharal PD 2024-12-13T05:17:00 1 cn21 (Resources)

Γενικά, μπορείτε να έχετε μία αίσθηση του εκτιμώμενου 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.