IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Programation parallèle MPMD


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 421
    Par défaut Programation parallèle MPMD
    Bonjour à tous,

    Je souhaiterai faire de la programmation parallèle de type MPMD (multi program multi data) en C++.
    J'ai plusieurs instructions différentes qui peuvent s'exécuter en même temps dans mon code. Existe-il un outil en C++ qui permet de faire ça ?

    Bien cordialement

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Il est prévu en C++ des extensions OpenMP permettant l'optimisation par des tâches parallélisées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    double res{};
    for [[omp::parallel()]] (int i=0; i<v.size(); ++i) res += v[i];
    return res;
    Si tu as déjà des traitements parallélisables, le plus simple - selon moi - est le multithreading.
    En utilisant les std::async() par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    double sommerAvecParallelisation( std::vector<double> const& v ) {
        const int N = v.size() / 4;
     
        std::future<double> fut1 = std::async( std::launch::async , [&] { return std::accumulate( v.cbegin() , v.cbegin() + N , 0. ); } );
        std::future<double> fut2 = std::async( std::launch::async , [&] { return std::accumulate( v.cbegin() + N , v.cbegin() + N*2 , 0. ); } );
        std::future<double> fut3 = std::async( std::launch::async , [&] { return std::accumulate( v.cbegin() + N*2 , v.cbegin() + N*3 , 0. ); } );
        double r4 = std::accumulate( v.cbegin() + N*3 , v.cend() , 0. );
     
        fut1.wait(); fut2.wait(); fut3.wait(); // attendre la fin des 3 traitements parralèles
        return fut1.get() + fut2.get() + fut3.get() + r4; // et cumuler les 4 sous-résultats
    }

Discussions similaires

  1. Réponses: 16
    Dernier message: 25/06/2012, 09h21
  2. Programation parallèle multi-processeur
    Par cdtkoenig dans le forum Langage
    Réponses: 22
    Dernier message: 27/10/2009, 18h21
  3. Gestion du port paralléle sous 2000
    Par kardex dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/01/2006, 19h47
  4. fragment program sur geForce4 Ti4200
    Par sebh dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/12/2003, 22h31
  5. Port Parallèle EPP ou ECP, hardware vs software ?
    Par TONIAPEL dans le forum Assembleur
    Réponses: 3
    Dernier message: 21/08/2003, 01h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo