Χρησιμοποιούμε Η/Υ για την αριθμητική επίλυση εξισώσεων.
Με τον όρο κώδικα αναφερόμαστε στον πηγαίο κώδικα μίας εφαρμογής. Συνήθως ο κώδικας μεταγλωτίζεται σε γλώσσα μηχανής (εκτελέσιμο) με τη χρήση ενός compiler (μεταγλωτιστή). Παραδείγματα τέτοιων γλωσσών είναι η C, C++, FORTRAN κ.α.. Υπάρχουν και interpreted γλώσσες προγραμματισμού (π.χ. Python, MATLAB κ.α.) στις οποίες η μεταγλώτιση γίνεται δυναμικά στο runtime οπότε δεν παρεμβάλεται μεταγλωτιστής που να παράγει ένα εκτελέσιμο. Συνήθως οι compiled γλώσσες παράγουν ταχύτερα εκτελέσιμα σε σύγκριση με τις interpreted γλώσσες.
Υποδομές που διαθέτουν τα παραπάνω χαρακτηριστικά αναφέρονται γενικώς ως συστοιχίες υπολογιστών. Επίσης χρησιμοποιούνται οι όροι HPC (High Performance Computing) ή Supercomputer (υπερυπολογιστής) όταν αναφερόμαστε σε συστοιχίες υπολογιστών.
Οι σημερινοί (Απρίλιος 2024) υπερυπολογιστές "σπάνε" το φράγμα του HFlop δηλαδή 10^18 υπολογισμών ανά δευτερόλεπτο. Η ταξινόμησή τους βασίζεται στο Linpack benchmark και η λίστα των κορυφαίων υπερυπολογιστών ενημερώνεται δύο φορές ετησίως στο top500.org.
Η/Υ (server) ίδιων χαρακτηριστικών ομαδοποιούνται σε partitions (ή ουρές)
Partition Name | Number of nodes | Number of CPU Cores per node | Memory per node | CPU/GPU Type |
---|---|---|---|---|
login nodes | 3 | 64 | 64GB | AMD Epyc Rome/- |
batch |
20 | 20 | 128GB | Intel Broadwell/- |
rome |
17 | 256 | 256GB/1TB | AMD Epyc Rome/- |
ondemand |
12 | 12 | 48GB | Intel Cascade Lake/RTX 6000 |
… | … | … | … |
Πιο λεπτομερής καταγραφή: https://hpc.it.auth.gr/nodes-summary/
Φόρμα αίτησης για λογαριασμό: https://eforms.auth.gr/it/scientific_account/
Οδηγίες πρόσβασης με γραμμή εντολών: https://hpc.it.auth.gr/intro/
Οδηγίες πρόσβασης μέσω browser: https://hpc.it.auth.gr/web-portal/
Εισαγωγή στη γραμμή εντολών του Linux: https://hackmd.io/@pkoro/H1bqSpwXp
Το nano
είναι καλή επιλογή για "αρχάριους"
Εφόσον ανοίξουμε ένα αρχείο με
nano
μπορούμε να κάνουμε απευθείας edit και να κάνουμε αλλαγές. Στις 2 κάτω γραμμές στο παράθυρο του nano
μας δίνονται ως επιλογές οι συνδυασμοί πλήκτρων για να σώσουμε τις αλλαγές μας (επιλογή WriteOut
με Crtl+O) και να βγούμε από το περιβάλλον του editor (επιλογή Exit
με Crtl+X)
Το vim
έχει πιο απότομο learning curve
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
). Ενημερωμένες λίστες: https://hpc.it.auth.gr/software/avail/
R
στο περιβάλλον χρήσης είναι απαραίτητο να έχουμε φορτώσει πρώτα το σχετικό modulefile.R
(έκδοση 4.3.0
)Η δομή των modulefiles είναι ιεραρχική, έτσι οι βιβλιοθήκες ή εφαρμογές που έχουν γίνει compile με ένα συγκεκριμένο compiler γίνονται διαθέσιμες μόνο εφόσον έχουμε φορτώσει στο περιβάλλον το δεδομένο compiler.
Στο πρώτο επίπεδο της ιεραρχίας βρίσκονται οι compilers.
Στο δεύτερο επίπεδο βρίσκονται οι περισσότερες εφαρμογές. Για να τις δούμε όμως θα πρέπει πρώτα να φορτώσουμε ένα compiler.
Κάποιες εφαρμογές που είναι παράλληλες (αξιοποιούν τη χρήση μίας mpi βιβλιοθήκης) βρίσκονται σε τρίτο επίπεδο.
Για να δούμε ποιά modulefiles θα χρειαστεί πρώτα να φορτώσουμε προκειμένου να κάνουμε μία εφαρμογή διαθέσιμη στο περιβάλλον χρήσης μπορούμε να χρησιμοποιούμε την module spider
. Π.χ. για να δούμε ποιές επιλογές έχουμε διαθέσιμες για να "φορτώσουμε" την βιβλιοθήκη fftw
(Fastest Fourier Transform in the West) μπορούμε να εκτελέσουμε την εξής εντολή:
Βλέπουμε ότι η συγκερκιμένη βιβλιοθήκη (fftw/3.3.8
) υπάρχει τέσσερις φορές εγκατεστημένη και για να την φέρουμε στο περιβάλλον χρήσης θα πρέπει να φορτώσουμε πρώτα ένα συνδυασμό του gcc και του openmpi, π.χ.:
Αναλυτική τεκμηρίωση slurm directives: https://hpc.it.auth.gr/jobs/slurm/
Παράδειγμα εργασίας που θέλουμε να εκτελεστεί παράλληλα (DMP) σε 4 μηχανήματα του batch partition
Παράδειγμα εργασίας που θέλουμε να εκτελεστεί παράλληλα (SMP) σε "μισό" μηχάνημα του rome partition
run.sh
) η υποβολή γίνεται με την εντολή sbatch
, π.χ. Στην έξοδό της η
sbatch
επιστρέφει ένα ID (auto increment integer) που είναι μοναδικό για κάθε εργασία (job) που υποβάλλουμε με sbatch
.
squeue
, π.χ.scancel
Για να δούμε μία εργασία που έχει ολοκληρωθεί πόσους πόρους αξιοποίησε πραγματικά (σε σχέση με όσους δεσμεύτηκαν) και αν τελικά ήταν αποδοτική μπορούμε να χρησιμοποιήσουμε την εντολή seff
, π.χ. ως εξής:
Για να δούμε την καταληψιμότητα ενός partition μπορούμε να χρησιμοποιήσουμε την εντολή sinfo
, π.χ. ως εξής:
openCARP
is an open cardiac electrophysiology simulator for in-silico experiments
openCARP simulator
) είναι υλοποιημένος σε C++ και χρησιμοποιεί τη μέθοδο των πεπερασμένων στοιχείων (FEM) για την επίλυση των ηλεκτροχημικών και ρευστοδυναμικών πεδίων. Η άδεια χρήσης είναι ανοιχτή για ακαδημαϊκή χρήση.
carputils
είναι υλοποιημένα σε python (Apache 2.0 open source)CellML
) και για δεδομένα εξόδου (π.χ. VTK
format) Οδηγίες χρήσης στον "Αριστοτέλη": https://hpc.it.auth.gr/applications/opencarp/
Η προεγκατεστημένη έκδοση που θα χρησιμοποιήσουμε στα παραδείγματα είναι η 11.0
.
~/.config/carputils/settings.yaml
. Εάν το αρχείο αυτό υπάρχει ήδη τότε το βήμα αυτό μπορεί να παραληφθεί. Αν όχι το βήμα αυτό θα χρειαστεί να το εκτελέσετε μόνο μία φορά πριν την εκτέλεση των παραδειγμάτων που ακολουθούν. Έλεγχος ύπαρξης αρχείου ρυθμίσεων
Για να δούμε αν υπάρχει το αρχείο ρυθμίσεων εκτελούμε την παρακάτω εντολή:
Αν υπάρχει τότε μπορούμε να προχωρήσουμε παρακάτω
Εφόσον το αρχείο ρυθμίσεων δεν υπάρχει για να το κατασκευάσουμε κατόπιν νέου login εκτελούμε διαδοχικά τις εξής δύο εντολές:
Ξεκινάμε κάνοντας clone το openCARP experiments repository.
Έπειτα μεταβαίνουμε στο φάκελο του παραδείγματος
Για να αποθηκεύονται τα plots που παράγονται από την batch εργασία, μπορούμε να χρησιμοποιήσουμε την παρακάτω εντολή:
Με την παραπάνω αντικαθιστούμε τις εντολές plt.show
της matplotlib
που χρησιμοποιούνται για την εμφάνιση μίας γραφικής παράστασης, με εντολές plt.savefig
που αποθηκεύουν σε ένα αρχείο το ίδιο αποτέλεσμα. Έτσι, αφού ολοκληρωθεί η εργασία, θα πρέπει να έχει παραχθεί το αρχείο myplot.png
.
Στην συνέχεια, συντάσουμε ένα νέο αρχείο (έστω run.sh
) με τα εξής περιεχόμενα:
η υποβολή της εργασίας γίνεται με την εντολή sbatch
ως εξής:
Παρακολουθούμε με την εντολή squeue
την εξέλιξη της εργασίας.
Eφόσον η εργασία έχει εκκινήσει μπορούμε να ελέγχουμε την πρόοδο της επίλυσης μέσω των αρχείων εξόδου. Π.χ.:
Μόλις η εργασία ολοκληρωθεί, μπορούμε να δούμε ότι στον φάκελο υποβολής έχει παραχθεί το directory με τα αρχεία εξόδου exp01
.
Μπορούμε να δούμε και το περιεχόμενά του, για παράδειγμα ως εξής:
Μεταβαίνουμε στο φάκελο όπου περιέχεται το συγκεκριμένο παράδειγμα
Για το συγκεκριμένο παράδειγμα το script υποβολής της εργασίας θα έχει την ακόλουθη μορφή:
Η υποβολή της εργασίας γίνεται με την εντολή sbatch
, όπως στο προηγούμενο παράδειγμα.
Οι ερευνητικές δημοσιεύσεις που προκύπτουν από την αξιοποίηση των πόρων της συστοιχίας "Αριστοτέλης" αναρτόνται στον εξής σύνδεσμο: