Ceci est une ancienne révision du document !


Langage C, code parallèle (avec OpenMP&MPI)

Soit le programme écrit en C avec une parallélisation hybride MPI+OpenMP ProgPAR_OpenMP_MPI.c. On va l'exécuter avec une décomposition en 2 processus MPI x 8 threads OpenMP.

ProgPAR_OpenMP&MPI.c
#include <stdio.h>
#include "mpi.h"
#include <omp.h>
 
int main(int argc, char *argv[]) {
  int numprocs, rank, namelen;
  char processor_name[MPI_MAX_PROCESSOR_NAME];
  int iam = 0, np = 1;
 
  MPI_Init(&argc, &argv);
  MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  MPI_Get_processor_name(processor_name, &namelen);
 
  #pragma omp parallel default(shared) private(iam, np)
  {
    np = omp_get_num_threads();
    iam = omp_get_thread_num();
    printf("Bonjour, je suis le thread %d parmi %d threads du process  %d parmi %d processes sur le noeud  %s\n",
           iam, np, rank, numprocs, processor_name);
  }
 
  MPI_Finalize();
}
documentation/examples/sommevecvecparopenmpmpi.c.1524640682.txt.gz · Dernière modification : 2020/08/25 15:58 (modification externe)