Hybrid MPI - OpenMP¶
Μία σύντομη εισαγωγή στον παράλληλο προγραμματισμό και στη χρήση του MPI και του OpenMP υπάρχει εδώ.
Έστω ότι θέλουμε να χρησιμοποιήσουμε ένα source file όπου χρησιμοποιούνται και οι δύο βιβλιοθήκες (π.χ. mpiomp.c).
Στο batch script υποβολής της εργασίας καθορίζουμε:
- με τις παραμέτρους
--nodes
και--ntasks-per-node
το πλήθος των MPI διεργασιών (το πλήθος θα είναι το γινόμενο αυτών) και - με την παράμετρο
--cpus-per-task
το πλήθος των OpenMP threads
Έπειτα καλούμε προς εκτέλεση το εκτελέσιμο με την srun
(όπως και στην περίπτωση του "σκέτου" MPI) όπως φαίνεται και στο παρακάτω παράδειγμα
Παράδειγμα
#!/bin/bash
#SBATCH --partition=batch
#SBATCH --time=1:00:00
#SBATCH --job-name=MPI+OMP_test
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=10
module load gcc/10.2.0 mvapich2/2.3.4
mpicc -o mpiomp -fopenmp mpiomp.c
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
srun ./mpiomp