2010-08-19 6 views
3

Qu'est-ce qu'une description de haut niveau de OpenMP? Le Wikipedia article indique que «OpenMP (Open Multi-Processing) est une interface de programmation d'application (API) qui supporte la programmation multiprocesseur à mémoire partagée multiplateforme en C, C++ et Fortran sur de nombreuses architectures, y compris les plates-formes 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 au moment de l'exécution. " Quelle?Qu'est-ce que OpenMP?

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

Répondre

2

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, assigner) des threads.

Il vous fait abstraction de la complexité de la gestion des threads en vous permettant d'exécuter de façon déclarative certaines parties de votre code en parallèle. Un exemple de code aide toujours:

# 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]; 
    } 
+0

Y a-t-il un 'parallèle' manquant au dernier pragma? – tur1ng

+0

Ne le pense pas. Mais pas sûr. –