Μετάβαση στο περιεχόμενο

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