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) |
… | … | … | … | … |
# ssh {{ username }}@aristotle.it.auth.gr
Το nano
είναι καλή επιλογή για "αρχάριους"
nano
μπορούμε να κάνουμε απευθείας edit και να κάνουμε αλλαγές. Στις 2 κάτω γραμμές στο παράθυρο του nano
μας δίνονται ως επιλογές οι συνδυασμοί πλήκτρων για να σώσουμε τις αλλαγές μας (επιλογή WriteOut
με Crtl+O) και να βγούμε από το περιβάλλον του editor (επιλογή Exit
με Crtl+X)
Το vim
έχει πιο απότομο learning curve
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
).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 είναι ιεραρχική, έτσι οι βιβλιοθήκες ή εφαρμογές που έχουν γίνει compile με ένα συγκεκριμένο compiler γίνονται διαθέσιμες μόνο εφόσον έχουμε φορτώσει στο περιβάλλον το δεδομένο compiler.
gcc
).openmpi
)Για να δούμε ποιά 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
Προκειμένου οι χρήστες να μην χρησιμοποιούν ταυτόχρονα τους ίδιους πόρους "μπροστά" από τα partitions βρίσκεται ένας χρονοδρομολογητής (scheduler) εργασιών που αποφασίζει ποιά εργασία ποιού/-ας χρήστη θα τρέξει σε ποιό (ή ποιά) μηχανήματα.
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 ....
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....
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 μπορούμε να χρησιμοποιήσουμε την εντολή 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
run.sh
) η υποβολή γίνεται με την εντολή sbatch
, π.χ.# sbatch run.sh
sbatch
επιστρέφει ένα ID (auto increment integer) που είναι μοναδικό για κάθε εργασία (job) που υποβάλλουμε με sbatch
.
squeue
, π.χ.# squeue -u {{ username }}
# tail -f slurm-{{ ID }}.out
scancel
# scancel {{ ID }}
Μπορούμε να έχουμε μιά εκτίμηση του πότε θα ξεκινήσει να εκτελείται μία εργασία χρησιμοποιώντας την παράμετρο --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 }}
sacct
, π.χ. ως εξής:# sacct -S now-5days # Εργασίες που έτρεξαν τις τελευταίες 5 ημέρες
/etc/motd