7 votes

Qu'est-ce que OpenMP?

Quelle est une description de haut niveau d'OpenMP?

L'article Wikipedia indique que "OpenMP (Open Multi-Processing) est une interface de programmation d'application (API) qui prend en charge la programmation multiprocesseur à mémoire partagée multiplateforme en C, C++ et Fortran sur de nombreuses architectures, y compris les plateformes Unix et Microsoft Windows. Il se compose d'un ensemble de directives de compilation, de routines de bibliothèque, et de variables d'environnement qui influencent le comportement à l'exécution." Quoi?

Comment cela se compare-t-il à d'autres approches de la concurrence, comme les threads, les pools de threads et le vol de travail?

5voto

Pablo Santa Cruz Points 73944

Il s'agit d'un ensemble d'extensions permettant à C/C++ d'exécuter certaines parties du code en parallèle, sans gérer explicitement (créer, détruire, attribuer) les threads.

Cela vous permet essentiellement de vous abstraire de la complexité de la gestion des threads vous-même en vous permettant d'exécuter de manière déclarative certaines parties de votre code en parallèle. Un exemple de code est toujours utile :

# pragma omp parallel \
  shared ( n, x, y ) \
  private ( i ) \
  reduction ( + : xdoty )

# pragma omp for

  for ( i = 0; i < n; i++ )
  {
    xdoty = xdoty + x[i] * y[i];
  }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X