Nodes (κόμβοι) | Διασύνδεση κόμβων |
---|---|
![]() |
![]() |
Επεξεργαστής | Σχηματική αναπαράσταση |
---|---|
![]() |
![]() |
Partition Name | Number of nodes | # Sockets per node | # Cores per socket | Memory per node | CPU Type | GPU Type |
---|---|---|---|---|---|---|
login nodes | 3 | 2 | 32 | 64GB | AMD Epyc Rome | - |
batch |
20 | 2 | 10 | 128GB | Intel Broadwell | - |
gpu |
2 | 2 | 10 | 128GB | Intel Broadwell | NVIDIA P100(x1) |
rome |
17 | 2 | 64 | 256GB/1TB | AMD EPYC Rome | - |
ampere |
1 | 2 | 64 | 1TB | AMD EPYC Rome | NVIDIA A100 (x8) |
ondemand |
12 | 1 | 12 | 48GB | Intel Cascade Lake | NVIDIA RTX 6000 (vGPU) |
… | … | … | … | … |
Πιο αναλυτική καταγραφή: https://hpc.it.auth.gr/nodes-summary/
Η/Υ (server) ίδιων χαρακτηριστικών ομαδοποιούνται σε partitions (ή ουρές)
Φόρμα αίτησης για λογαριασμό: https://eforms.auth.gr/it/scientific_account/
Μέσω γραμμής εντολών (Windows Powershell, MacOS Terminal, Linux Terminal)
# ssh {{ username }}@aristotle.it.auth.gr
Μέσω browser: https://hpc.auth.gr
Οδηγίες πρόσβασης με browser: https://hpc.it.auth.gr/web-portal/
gcc
, intel
)python
, mathematica
, matlab
, R
),openmpi
, julia
)fftw
, openblas
)Jyputer
, RStudio
, PyCharm
)ANSYS
, OpenFOAM
, ANSA
). Ενημερωμένες λίστες: https://hpc.it.auth.gr/software/avail/
R
στο περιβάλλον χρήσης είναι απαραίτητο να έχουμε φορτώσει πρώτα το σχετικό modulefile.R
(έκδοση 4.4.0
)[pkoro@aristotle4 ~]$ R --version
-bash: R: command not found
[pkoro@aristotle4 ~]$ module load gcc/13.2.0-iqpfkya r/4.4.0-7fr4ot4
[pkoro@aristotle4 ~]$ R --version
R version 4.4.0 (2024-04-24) -- "Puppy Cup"
Copyright (C) 2024 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
https://www.gnu.org/licenses/.
Η δομή των modulefiles είναι ιεραρχική, έτσι οι βιβλιοθήκες ή εφαρμογές που έχουν γίνει compile με ένα συγκεκριμένο compiler γίνονται διαθέσιμες μόνο εφόσον έχουμε φορτώσει στο περιβάλλον το δεδομένο compiler.
gcc
).openmpi
)module spider
Για να δούμε ποιά modulefiles θα χρειαστεί να φορτώσουμε προκειμένου να φορτώσουμε ένα λογισμικό μπορούμε να χρησιμοποιούμε την module spider
:
$ 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" module is available t
o load.
gcc/10.2.0 mvapich2/2.3.4
gcc/10.2.0 openmpi/3.1.6
gcc/10.2.0 openmpi/4.0.4
gcc/7.3.0 openmpi/3.1.3
gcc/7.3.0 openmpi/3.1.4
gcc/7.3.0 openmpi/3.1.6
gcc/8.2.0 mvapich2/2.3.4
gcc/8.2.0 openmpi/3.1.3
gcc/8.2.0 openmpi/3.1.6
gcc/9.2.0 mvapich2/2.3.1
gcc/9.2.0 mvapich2/2.3.2
gcc/9.2.0 mvapich2/2.3.3
gcc/9.2.0 mvapich2/2.3.4
gcc/9.2.0 openmpi/3.1.4
gcc/9.2.0 openmpi/3.1.6
gcc/9.2.0 openmpi/4.0.3
gcc/9.2.0 openmpi/4.0.4
gcc/9.2.0 openmpi/4.0.5
intel/19.0.5 intel-mpi/2019.8.254
intel/19.0.5 openmpi/3.1.6
intel/20.0.2 intel-mpi/2019.8.254
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
Βλέπουμε ότι η συγκερκιμένη βιβλιοθήκη (fftw/3.3.8
) υπάρχει πολλές φορές εγκατεστημένη και για να την φέρουμε στο περιβάλλον χρήσης θα πρέπει να φορτώσουμε πρώτα ένα συνδυασμό του gcc και του openmpi, π.χ.:
# module load gcc/9.2.0 openmpi/3.1.4 fftw/3.3.8
Προκειμένου οι χρήστες να μην χρησιμοποιούν ταυτόχρονα τους ίδιους πόρους "μπροστά" από τη συστοιχία βρίσκεται ένας χρονοδρομολογητής (scheduler) εργασιών που αποφασίζει ποιά εργασία, ποιού/-ας χρήστη θα τρέξει επόμενη και σε ποιό (ή ποιά) μηχανήματα.
Ο χρήστης καθορίζει τις απαιτήσεις του εκάστοτε job με κατάλληλες μακροεντολές. Με βάση αυτές γίνεται το matchmaking χρηστών, εργασιών και διαθέσιμων πόρων. Στόχος του scheduler είναι να αξιοποιούνται πλήρως οι πόροι.
Ο χρονοπρογραμματισμός (scheduling) γίνεται ανά partition (ουρά).
Αναλυτική τεκμηρίωση μακροεντολών: https://hpc.it.auth.gr/jobs/slurm/
Παράδειγμα σειριακής εργασίας στο
batch
partition
#!/bin/bash
#SBATCH --job-name=Serial_example
#SBATCH --partition=batch
#SBATCH --time=10:00:00 # (10 ώρες)
#SBATCH --ntasks=1 # Δέσμευση ενός CPU Core
module load ....
....
Παράδειγμα εργασίας που θέλουμε να εκτελεστεί παράλληλα (με 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 ....
Παράδειγμα εργασίας που θέλουμε να αξιοποιήσει δύο 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 ....
Παράδειγμα εργασίας όπου χρειαζόμαστε συνολικά 400GB RAM
#!/bin/bash
#SBATCH --job-name=RAM_example
#SBATCH --partition=rome
#SBATCH --time=1-00:00:00 # (1 ημέρα)
#SBATCH --mem=400GB # Δέσμευση 400GB RAM
#SBATCH --ntasks=16 # Δέσμευση 16 CPU Cores
#SBATCH --nodes=1 # Το job να "τρέξει" σε 1 node
module load ....
srun ....
Για απλές εργασίες μπορούμε να χρησιμοποιήσουμε υφιστάμενα templates εργασιών:
Πριν υποβάλλουμε μία εργασία μπορούμε για να δούμε την καταληψιμότητα ενός partition να χρησιμοποιήσουμε την εντολή sinfo
, ως εξής:
$ sinfo -p gpu
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
gpu up 1-00:00:00 1 alloc cn21
gpu up 1-00:00:00 1 idle cn22
run.sh
) η υποβολή γίνεται με την εντολή sbatch
, π.χ.# sbatch run.sh
Στην έξοδό της η
sbatch
επιστρέφει ένα ID (auto increment integer) που είναι μοναδικό για κάθε εργασία (job) που υποβάλλουμε με sbatch
.
squeue
, ως εξής:# squeue -p rome
# squeue -u {{ username }}
# sprio -p rome
Εκτίμηση χρόνου εκκίνησης εργασίας
Μπορούμε να έχουμε μιά εκτίμηση του πότε θα ξεκινήσει να εκτελείται μία εργασία χρησιμοποιώντας την παράμετρο --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
.
# tail -f slurm-{{ ID }}.out
scancel
# scancel {{ ID }}
Για να δούμε μία εργασία που έχει ολοκληρωθεί πόσους πόρους αξιοποίησε πραγματικά (σε σχέση με όσους δεσμεύτηκαν) και αν τελικά ήταν αποδοτική μπορούμε να χρησιμοποιήσουμε την εντολή seff
, π.χ. ως εξής:
# seff {{ ID }}
sacct
, π.χ. ως εξής:# sacct -S now-5days # Εργασίες που έτρεξαν τις τελευταίες 5 ημέρες
rome
--------------------------------------------------------------------------------
Job Sizes 2024-01-01T00:00:00 - 2024-12-07T23:59:59 (29548800 secs)
Time reported in Hours/Percentage of Total
--------------------------------------------------------------------------------
Cluster Account 0-32 CPUs 33-64 CPUs 65-128 CPUs 129-512 CPUs >= 513 CPUs % of cluster
--------- --------- -------------------- -------------------- -------------------- -------------------- -------------------- ------------
aristotle root 1309966(13.33%) 1259719(12.82%) 4928752(50.15%) 986900(10.04%) 1342961(13.66%) 100.00%
batch
--------------------------------------------------------------------------------
Job Sizes 2024-01-01T00:00:00 - 2024-12-07T23:59:59 (29548800 secs)
Time reported in Hours/Percentage of Total
--------------------------------------------------------------------------------
Cluster Account 0-10 CPUs 11-20 CPUs 21-40 CPUs >= 41 CPUs % of cluster
--------- --------- -------------------- -------------------- -------------------- -------------------- ------------
aristotle root 307272(16.73%) 1229468(66.92%) 208530(11.35%) 91814(5.00%) 100.00%
/etc/motd