Partage
  • Partager sur Facebook
  • Partager sur Twitter

C++ OpenMP (Paralel Computing)

Parallélisme

Sujet résolu
    26 mars 2021 à 15:10:00

    Bonjour à tous,

    Je m'en remet à vous pour essayer de comprendre une erreur que je traine depuis quelques jours.

    Je vous mets en contexte, je travaille sur un projet de simulation des plaques OCT [Tomographie par cohérence optique], et j'ai besoin d'ajouter un compteur pour calculer le nombre de photons, en effet le compteur s'initialise après un certain nombre d'itération, paracerque j'utilise dans mon programme  la programmation parallèle, je voulais savoir comment je peux faire pour introduire une boucle dans mon programme?

    est ce qu'il ya qlqun qui peux m'aider par des solutions ou bien des ressources ? 

    Merci d'avance. 

    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2021 à 15:24:50

      Tu aurais un exemple de début de code ? car la la question est assez floue.

      Pour faire une boucle automatiquement multithreadée avec openmp c'est:

      #pragma omp parallel for
      for(int i=0; i<N; ++i){
          // ...
      }

      mais selon les cas d'utilisation c'est pas forcément la panacée, y'a moyen de configurer un peu la directive openmp pour par exemple fixer une taille de chunk, le nombre de threads, le type de découpage etc ... pour affiner un peu le truc mais s'est souvent moins performant qu'un multithreading manuel, ne serait-ce que parce que openmp crée les threads au moment de la boucle ce qui prend un peu de temps.



      • Partager sur Facebook
      • Partager sur Twitter
        26 mars 2021 à 19:41:07

        Salut ! Tu pourrais nous donner un peu plus de contexte s'il te plait ? Parce que perso j'ai pas vraiment compris ou se trouve le problème, quelle est la situation, et quelles ont été tes tentatives pour le régler.
        • Partager sur Facebook
        • Partager sur Twitter
          30 mars 2021 à 10:56:30




          Daimyo_ a écrit:

          Salut ! Tu pourrais nous donner un peu plus de contexte s'il te plait ? Parce que perso j'ai pas vraiment compris ou se trouve le problème, quelle est la situation, et quelles ont été tes tentatives pour le régler.


          Je suis désolé, je n'ai pas bien expliquer le problème, du coup quand je rajoute une boucle a mon programme, dans l'affichage je trouve que les valeurs du boucles sont désordonnées, donc je dois empêcher le programme d'exécuter le multithreading au niveau du boucle pour que les valeurs soient ordonnées.

          en effet j'ai utilisé le #pragma omp criteria , mais ca na pas marché .

          • Partager sur Facebook
          • Partager sur Twitter
            31 mars 2021 à 9:56:32

            Salut,

            dans un environnement parallèle, il me semble que la directive pour exécuter le code sur un unique thread est

            #pragma omp single

            Voir ici

            Edit : La différence avec 

            #pragma omp critical

            est qu'avec cette dernière directive, le code va être exécuté par tous les threads, mais séquentiellement, tandis qu'avec la première, un seul thread exécute vraiment le code.

            -
            Edité par Nozio 31 mars 2021 à 9:58:05

            • Partager sur Facebook
            • Partager sur Twitter

            Avez-vous entendu parler de Julia ? Laissez-vous tenter ...

              31 mars 2021 à 16:31:28

              Nozio a écrit:

              Salut,

              dans un environnement parallèle, il me semble que la directive pour exécuter le code sur un unique thread est

              #pragma omp single

              Voir ici

              Edit : La différence avec 

              #pragma omp critical

              est qu'avec cette dernière directive, le code va être exécuté par tous les threads, mais séquentiellement, tandis qu'avec la première, un seul thread exécute vraiment le code.

              -
              Edité par Nozio il y a environ 3 heures


              D'acc, j vais jeter un œil sur le lien

              Merci beaucoup

              • Partager sur Facebook
              • Partager sur Twitter

              C++ OpenMP (Paralel Computing)

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown