3 votes

Comment configurer openMP

Je voudrais tester openMP avec C sur Windows 7 avec l'IDE Eclipse. Je ne trouve nulle part des étapes spécifiques à suivre pour configurer openMP. Pouvez-vous m'aider ?

6voto

JDaly Points 47

Je n'ai pas beaucoup travaillé avec OpenMP mais voici ce que j'ai trouvé en l'essayant moi-même.

OpenMP vous permet d'indiquer au compilateur que les choses doivent être exécutées en parallèle. Voici un exemple qui compte jusqu'à 10000000000 :

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    long result = 0;
    long i;

#pragma omp parallel for reduction(+: result)
    for (i = 0; i < 10000000000; i++) {
        result++;
    }
    printf("%li\n", result);
    return EXIT_SUCCESS;
}

Ce programme sera compilé comme un programme C normal :

$ gcc -o OpenMPTest main.c

Il s'exécute en 30 secondes sur ma machine :

$ time ./OpenMPTest
10000000000

real 0m30.674s
user 0m30.628s
sys 0m0.014s

Ajout de la -fopenmp à gcc active le support OpenMP. C'est tout ce dont vous avez besoin pour que la boucle s'exécute dans plusieurs threads.

$ gcc -o OpenMPTest main.c -fopenmp

Cela réduit de moitié le temps d'exécution à 15 secondes sur un système à double cœur : 

$ time ./OpenMPTest
10000000000

real 0m15.840s
user 0m30.123s
sys 0m0.037s

Voici une brève description de ce que c'est #pragma La ligne le fait :

#pragma omp

C'est un préfixe pour les commandes openmp.

parallel

Indique au compilateur que l'instruction suivante doit être exécutée en parallèle.

for reduction(+: result)

Combine toutes les valeurs de result variable des boucles parallèles en une seule valeur par addition. En supprimant cette opération, le nombre final imprimé est incorrect.

Je sais que vous utilisez eclipse, mais les documents MSDN sont assez bons pour décrire OpenMP : OpenMP dans Visual C++

2voto

tune2fs Points 3253

Dans Eclipse, vous devez définir les paramètres suivants dans la configuration de votre projet :

C/C++ Build -> Settings -> Includes: add gomp 

C/C++ Build -> Settings -> Miscellaneous -> Other Flags:  add -fopenmp

Vous devez également installer les binaires openmp pour MinGW :

TDM-GCC

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