Try   HackMD

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Περιγραφή και βασικές οδηγίες χρήσης υποδομής “Αριστοτέλης” του ΑΠΘ

Ηigh Performance Computing (HPC)

  • Με τον όρο HPC αναφερόμαστε σε υπολογιστικές υποδομές αιχμής που μπορούν να επιτελέσουν πολλές αριθμητικές πράξεις στη μονάδα του χρόνου με σκοπό:
    • είτε να επιλυθούν υφιστάμενα προβλήματα πιο γρήγορα (π.χ. πρόγνωση καιρού)
    • είτε να επιλυθούν μεγαλύτερα προβλήματα (π.χ. κλιματική αλλαγή)
  • Το πλήθος των υπολογισμών στη μονάδα του χρόνου εξαρτάται κυρίως από την ταχύτητα του επεξεργαστή και το εύρος διαμεταγωγής δεδομένων από και προς τη μνήμη RAM
  • Μετριέται σε FLOPs (Floating Point Operations per second) και συνήθως μας ενδιαφέρει το πλήθος πράξεων με double precision floating points

Συστοιχίες HPC

  • Φτιάχνοντας συστοιχίες υπολογιστών/εξυπηρετητών (servers) και διασυνδέοντάς τους πετυχαίνουμε υψηλότερες τιμές FLOPs
  • Επιπέον τα τελευταία ~20 χρόνια έχει βρει έδαφος η χρήση Co-processors όπως GPUs (π.χ. CUDA, OpenACC κ.α.) ή/και FPGAs (programmable chips) για την επιτάχυνση των υπολογισμών (επίτευξη περισσότερων FLOPs)
  • Επιπλέον, για να είναι αποδοτική η παραλληλία συνήθως απαιτείται η διασύνδεση των Η/Υ να γίνεται με δικτύωση χαμηλής απόκρισης (~μs) και υψηλού εύρους (>10Gpbs)

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Υποδομές που διαθέτουν τα παραπάνω χαρακτηριστικά αναφέρονται γενικώς ως συστοιχίες υπολογιστών. Επίσης χρησιμοποιούνται οι όροι HPC (High Performance Computing) ή Supercomputer (υπερυπολογιστής) όταν αναφερόμαστε σε συστοιχίες υπολογιστών.
Οι σημερινοί (Απρίλιος 2024) υπερυπολογιστές "σπάνε" το φράγμα του HFlop δηλαδή 10^18 υπολογισμών ανά δευτερόλεπτο. Η ταξινόμησή τους βασίζεται στο Linpack benchmark και η λίστα των κορυφαίων υπερυπολογιστών ενημερώνεται δύο φορές ετησίως στο top500.org.

Υφιστάμενη υποδομή "Αριστοτέλης"

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Η/Υ (server) ίδιων χαρακτηριστικών ομαδοποιούνται σε partitions (ή ουρές)

Partition Name Number of nodes Number of CPU Cores per node Memory per node CPU Type GPU Type
login nodes 3 64 64GB AMD Epyc Rome -
batch 20 20 128GB Intel Broadwell -
gpu 2 20 128GB Intel Broadwell P100
rome 17 128 256GB/1TB AMD EPYC Rome -
ampere 1 128 1TB AMD EPYC Rome A100 (x8)
ondemand 12 12 48GB Intel Cascade Lake RTX 6000 (vGPU)

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Πιο λεπτομερής καταγραφή: https://hpc.it.auth.gr/nodes-summary/


Πρόσβαση στον "Αριστοτέλη"

  • Πρόσβαση δικαιούνται όλα τα μέλη του ΑΠΘ.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Φόρμα αίτησης για λογαριασμό: https://eforms.auth.gr/it/scientific_account/

  • Μέσω γραμμής εντολών (Windows Powershell, MacOS Terminal, Linux Terminal)
# ssh {{ username }}@aristotle.it.auth.gr

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Οδηγίες πρόσβασης με γραμμή εντολών: https://hpc.it.auth.gr/intro/
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Οδηγίες πρόσβασης μέσω browser: https://hpc.it.auth.gr/web-portal/


Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Εισαγωγή στη γραμμή εντολών του Linux: https://hackmd.io/@pkoro/H1bqSpwXp

  • Το nano είναι καλή επιλογή για "αρχάριους"

    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
    Εφόσον ανοίξουμε ένα αρχείο με nano μπορούμε να κάνουμε απευθείας edit και να κάνουμε αλλαγές. Στις 2 κάτω γραμμές στο παράθυρο του nano μας δίνονται ως επιλογές οι συνδυασμοί πλήκτρων για να σώσουμε τις αλλαγές μας (επιλογή WriteOut με Crtl+O) και να βγούμε από το περιβάλλον του editor (επιλογή Exit με Crtl+X)

  • Το vim έχει πιο απότομο learning curve

    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
    To vim έχει δύο modes, το command mode και το insert (edit) mode. Όταν ανοίγουμε ένα αρχείο βρισκόμαστε σε command mode. Για να κάνουμε αλλαγές πρέπει να γυρίσουμε τον editor σε insert mode κάτι που γίνεται πατώντας i στο πληκτρολόγιό μας. Αφότου κάνουμε τις αλλαγές για να τις σώσουμε και να βγούμε από το περιβάλλον του editor πρέπει να επιστρέψουμε σε command mode, κάτι που γίνεται πατώντας το πλήκτρο Esc στο πληκτρολόγιό μας. Οι εντολές δίνονται επιλέγοντας "άνω κάτω" τελεία στο πληκτρολόγιο (:). Η εντολή για να σωθούν οι αλλαγές είναι :w και η εντολή για να βγούμε από τον editor είναι :q. Συνήθως τις δίνουμε μαζί ως :wq (προσοχή στη σειρά των εντολών, το w πρέπει να προηγείται του q).


Διαθέσιμα λογισμικά

  • Στη συστοιχία "Αριστοτέλης" υπάρχει διαθέσιμη μία πλειάδα λογισμικών. Από βασικές υπολογιστικές βιβλιοθήκες (π.χ. fftw, openblas), μεταγλωτιστές (π.χ. gcc, intel), interpreters (π.χ. python, mathematica, matlab, R), βιβλιοθήκες παράλληλου προγραμματισμού (π.χ. openmpi, julia), διεπαφές χρηστών (π.χ. Jyputer, RStudio, PyCharm) εώς και ολοκληρωμένα πακέτα εφαρμογών (π.χ. ANSYS, OpenFOAM, OpenCARP, Einstein Toolkit).

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Ενημερωμένες λίστες: https://hpc.it.auth.gr/software/avail/

  • Καθώς ένα πακέτο λογισμικού μπορεί να είναι (και συνήθως είναι) εγκατεστημένο σε πολλαπλές εκδόσεις χρησιμοποιούνται modulefiles για τη διαχείριση λογισμικών. Δηλαδή π.χ. για να "φορτώσουμε" την εντολή R στο περιβάλλον χρήσης είναι απαραίτητο να έχουμε φορτώσει πρώτα το σχετικό modulefile.
  • Παράδειγμα χρήσης R (έκδοση 4.3.0)
# R
-bash: R: command not found
# module load gcc/12.2.0-fhg4pj2 r/4.3.0-hybzfui
# R

R version 4.3.0 (2023-04-21) -- "Already Tomorrow"
Copyright (C) 2023 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

During startup - Warning message:
Setting LC_CTYPE failed, using "C" 
> 

Δομή modulefiles

Η δομή των modulefiles είναι ιεραρχική, έτσι οι βιβλιοθήκες ή εφαρμογές που έχουν γίνει compile με ένα συγκεκριμένο compiler γίνονται διαθέσιμες μόνο εφόσον έχουμε φορτώσει στο περιβάλλον το δεδομένο compiler.

  • Στο πρώτο επίπεδο της ιεραρχίας βρίσκονται οι compilers.
  • Στο δεύτερο επίπεδο βρίσκονται οι περισσότερες εφαρμογές. Έτσι θα πρέπει πρώτα να φορτώσουμε ένα compiler (π.χ. gcc).
  • Κάποιες εφαρμογές που είναι παράλληλες (αξιοποιούν τη χρήση μίας mpi βιβλιοθήκης) βρίσκονται σε τρίτο επίπεδο. Έτσι θα πρέπει πρώτα να φορτώσουμε μία MPI βιβλιοθήκη (π.χ. openmpi)

Χρήση spider

Για να δούμε ποιά modulefiles θα χρειαστεί πρώτα να φορτώσουμε προκειμένου να κάνουμε μία εφαρμογή διαθέσιμη στο περιβάλλον χρήσης μπορούμε να χρησιμοποιούμε την module spider. Π.χ. για να δούμε ποιές επιλογές έχουμε διαθέσιμες για να "φορτώσουμε" την βιβλιοθήκη fftw (Fastest Fourier Transform in the West) μπορούμε να εκτελέσουμε την εξής εντολή:

# module spider fftw/3.3.8

-------------------------------------------------------------------------------------------
fftw: fftw/3.3.8
-------------------------------------------------------------------------------------------
    
You will need to load all module(s) on any one of the lines below before the "fftw/3.3.8" m
odule is available to load.
    
    gcc/6.4.0  openmpi/3.1.3
    gcc/7.3.0  openmpi/3.1.3
    gcc/8.2.0  openmpi/3.1.3
    gcc/9.2.0  openmpi/3.1.4
    
Help:
    FFTW is a C subroutine library for computing the discrete Fourier
    transform (DFT) in one or more dimensions, of arbitrary input size, and
    of both real and complex data (as well as of even/odd data, i.e. the
    discrete cosine/sine transforms or DCT/DST). We believe that FFTW, which
    is free software, should become the FFT library of choice for most
    applications.

Βλέπουμε ότι η συγκερκιμένη βιβλιοθήκη (fftw/3.3.8) υπάρχει τέσσερις φορές εγκατεστημένη και για να την φέρουμε στο περιβάλλον χρήσης θα πρέπει να φορτώσουμε πρώτα ένα συνδυασμό του gcc και του openmpi, π.χ.:

# module load gcc/9.2.0 openmpi/3.1.4 fftw/3.3.8

Slurm scheduler

Προκειμένου οι χρήστες να μην χρησιμοποιούν ταυτόχρονα τους ίδιους πόρους "μπροστά" από τα partitions βρίσκεται ένας χρονοδρομολογητής (scheduler) εργασιών που αποφασίζει ποιά εργασία ποιού/-ας χρήστη θα τρέξει σε ποιό (ή ποιά) μηχανήματα.

  • Ο χρήστης καθορίζει τις απαιτήσεις του εκάστοτε job με κατάλληλες ντιρεκτίβες που ο slurm scheduler αντιλαμβάνεται. Με βάση αυτές κάνει το matchmaking χρηστών, εργασιών και διαθέσιμων πόρων. Στόχος του scheduler είναι να χρησιμοποιούνται οι πόροι στο maximum.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Αναλυτική τεκμηρίωση slurm directives: https://hpc.it.auth.gr/jobs/slurm/


  • Μερικά παραδείγματα:
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Παράδειγμα εργασίας που θέλουμε να εκτελεστεί παράλληλα (με MPI) σε 4 μηχανήματα του batch partition
#!/bin/bash
#SBATCH --job-name=MPI_example
#SBATCH --partition=batch
#SBATCH --time=10:00:00       # (10 ώρες)
#SBATCH --nodes=4             # 4 nodes required
#SBATCH --ntasks-per-node=20  # Δέσμευση όλων των CPU Cores ανά node

module load ....
srun ....
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Παράδειγμα εργασίας που θέλουμε να εκτελεστεί παράλληλα (με OpenMP) σε "μισό" μηχάνημα του rome partition
#!/bin/bash
#SBATCH --job-name=OPENMP_example
#SBATCH --partition=rome
#SBATCH --time=1-00:00:00     # (1 ημέρα)
#SBATCH --nodes=1             # 1 node required
#SBATCH --ntasks=64           # Δέσμευση των μισών CPU Cores

export OMP_NUM_THREADS=$SLURM_NTASKS
module load ....
./openmp.exe....
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Παράδειγμα εργασίας που θέλουμε να αξιοποιήσει δύο A100 GPUs στο ampere partition
#!/bin/bash
#SBATCH --job-name=GPU_example
#SBATCH --partition=ampere
#SBATCH --time=10:00          # (10 λεπτά)
#SBATCH --gres=gpu:2          # Δέσμευση δύο GPUs

module load ....
srun ....

Έλεγχος κατάστασης ενός partition

Για να δούμε την καταληψιμότητα ενός partition μπορούμε να χρησιμοποιήσουμε την εντολή sinfo, π.χ. ως εξής:

# sinfo -p ondemand
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
ondemand     up 2-00:00:00      4    mix cn[88,91-92,98] # μερικώς κατηλειμμένα
ondemand     up 2-00:00:00      7  alloc cn[89,93-97,99] # πλήρως κατηλειμμένα
ondemand     up 2-00:00:00      1   idle cn90            # άδεια (αδρανή) nodes

Υποβολή εργασιών

  • Εφόσον έχουμε ετοιμάσει ένα script (έστω run.sh) η υποβολή γίνεται με την εντολή sbatch, π.χ.
# sbatch run.sh

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Στην έξοδό της η sbatch επιστρέφει ένα ID (auto increment integer) που είναι μοναδικό για κάθε εργασία (job) που υποβάλλουμε με sbatch.

  • Για να δούμε την κατάσταση της εργασίας χρησιμοποιούμε την squeue, π.χ.
# squeue -u {{ username }}
  • Όσο εκτελείται μία εργασία μπορούμε να παρακολουθούμε την έξοδό της από το login node
# tail -f slurm-{{ ID }}.out
  • Αν θέλουμε να σταματήσουμε την εκτέλεση μίας εργασίας την κάνουμε cancel με την εντολή scancel
# scancel {{ ID }}

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Εκτίμηση χρόνου εκκίνησης εργασίας

Μπορούμε να έχουμε μιά εκτίμηση του πότε θα ξεκινήσει να εκτελείται μία εργασία χρησιμοποιώντας την παράμετρο --test-only στην sbatch, ως εξής:

​​​​$ sbatch --test-only run.sh 
​​​​sbatch: Job 1708173 to start at 2046-10-11T11:13:44 using 8 processors on nodes cn42 in partition rome

Με την παράμετρο --test-only το job δεν θα υποβληθεί. Για να μπει στην ουρά το job θα πρέπει να ξανατρέξουμε την εντολή χωρίς την παράμετρο --test-only.


Έλεγχος απόδοσης μιάς ολοκληρωμένης εργασίας

Για να δούμε μία εργασία που έχει ολοκληρωθεί πόσους πόρους αξιοποίησε πραγματικά (σε σχέση με όσους δεσμεύτηκαν) και αν τελικά ήταν αποδοτική μπορούμε να χρησιμοποιήσουμε την εντολή seff, π.χ. ως εξής:

# seff {{ ID }}

Έλεγχος accounting records

  • Για να δούμε τι εργασίες έχουμε τρέξει σε ένα βάθος χρόνου μπορούμε να χρησιμοποιήσουμε την εντολή sacct, π.χ. ως εξής:
# sacct -S now-5days  # Εργασίες που έτρεξαν τις τελευταίες 5 ημέρες

Υποστήριξη χρηστών "Αριστοτέλη"

Κανάλια επικοινωνίας διαχειριστικής ομάδας με χρήστες "Αριστοτέλη"


Ερωτήσεις/Απαντήσεις

  • Ερώτηση
    • Απάντηση