GPU εργασίες¶
Μία σύντομη εισαγωγή στην CUDA και στη χρήση GPU, υπάρχει εδώ.
Στην υπολογιστική συστοιχία "Nefeli" υπάρχουν δύο (2) ουρές (partitions) κατάλληλες για παραγωγικές GPU εργασίες:
- το
a100partition το οποίο αποτελείται από έναν κόμβο με 16 NVIDIA A100 GPUs και - το
l4partition το οποίο αποτελείται από έναν κόμβο με 2 κάρτες NVIDIA L4 Tensor Core GPUs.
Πλήθος GPUs ανά εργασία
- Με την παράμετρο
--partitionκαθορίζουμε σε ποιά ουρά (partition) θέλουμε να δρομολογηθεί μία εργασία. - Η παράμετρος
--gpusκαθορίζει τον αριθμό των GPU καρτών που θέλουμε να δεσμευτούν από τον scheduler (slurm) για αυτή την εργασία.
Στο παρακάτω παράδειγμα, θα γίνει allocate για την εργασία μας, μία gpu στο l4 partition (άρα μία NVIDIA L4):
#SBATCH --partition=l4
#SBATCH --gpus=1
Στο partition a100 μπορούμε να αξιοποιήσουμε από την ίδια εργασία μέχρι και οχτώ κάρτες (χωρίς να είναι απαραίτητη η παραλληλοποίηση με MPI). Στο παρακάτω παράδειγμα θα γίνουν allocate δύο GPUs (A100) κάρτες για την εργασία μας:
#SBATCH --partition=a100
#SBATCH --gpus=2
- Ο αριθμός των GPUs που έχουμε δεσμεύσει δίνεται από την παράμετρο
$SLURM_GPUS.
Προσοχή!
Η παράμετρος --gpus είναι απαραίτητη για την υποβολή εργασιών στα l4 και a100 partitions.
Παράδειγμα χρήσης¶
Ampere Partition¶
- Driver Version: 570.195.03
- CUDA Version: 12.8
- modules:
- gcc/14.2.0
- cuda/12.8.1
Θα χρησιμοποιήσουμε ένα από τα NVIDIA cuda-samples που παρουσιάζουν τα features του CUDA Toolkit.
Μπορούμε να κάνουμε clone από το NVIDIA github repository τα cuda samples στην έκδοση v13.1 ως εξής:
Clone NVIDIA cuda-samples
# git clone https://github.com/NVIDIA/cuda-samples.git --branch v13.1 cuda-samples-v13.1
Για να υποβάλουμε την εργασία στο A100 partition μπορούμε να χρησιμοποιήσουμε το παρακάτω script (έστω DeviceQuery-a100-Nefeli.sh):