Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1691 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Programmation parallel (ppl.h avec visual studio) (débutant inside)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Programmation parallel (ppl.h avec visual studio) (débutant inside)

n°1990059
Boulou
Wingfoil
Posté le 04-05-2010 à 09:00:42  profilanswer
 

Bonjour à tous,
 
J'ai fait un petit programme en C/C++ que j'essai d'optimiser et en particulier débuter en programmation parallel.
(J'utilise visual studio 2010.)
pour celà j'ai ajouté ppl.h et le namespace concurrency.
 
J'ai voulu tester la fonction parallel_invoke. Seulement mes perfs sont moins bonnes qu'avant ! (par contre je vois bien mes 4 cores utilisés contre un seul auparavant)
Est ce qu'il y des paramètres de compilation particulier à mettre ? doit on spécifier le nombre de core/thread à utiliser ? (gros noob inside :P)
Dans les tutos trouvés sur le net je n'ai pas de réponse :/
 
Merci

mood
Publicité
Posté le 04-05-2010 à 09:00:42  profilanswer
 

n°1990072
snafu8
Posté le 04-05-2010 à 09:51:02  profilanswer
 

Qu'est ce que t'essaies de paralléliser exactement?

n°1990114
Joel F
Real men use unique_ptr
Posté le 04-05-2010 à 11:50:36  profilanswer
 

deja ppl.h ca sort d'ou ?
ensuite ton algo expose t il du parallelisme latent ? sinon c'est pas la peine.

n°1990143
snafu8
Posté le 04-05-2010 à 13:19:19  profilanswer
 

Ca sort de la msdn, http://msdn.microsoft.com/en-us/library/dd492418.aspx, http://msdn.microsoft.com/en-us/library/dd504870.aspx
Je crois qu'il faut pas chercher plus loin pourquoi ça marche pas ^^.

n°1990148
GrosBocdel
Posté le 04-05-2010 à 13:37:07  profilanswer
 

snafu8 a écrit :

Ca sort de la msdn, http://msdn.microsoft.com/en-us/library/dd492418.aspx, http://msdn.microsoft.com/en-us/library/dd504870.aspx
Je crois qu'il faut pas chercher plus loin pourquoi ça marche pas ^^.


 
mauvaise langue  :o

n°1990160
snafu8
Posté le 04-05-2010 à 13:52:19  profilanswer
 

That's not what she says.

n°1990162
Joel F
Real men use unique_ptr
Posté le 04-05-2010 à 13:53:58  profilanswer
 

ok, non je pense que c'ets bon.  
Je pense plutot que l'algo initial est peu parallelisable ou mal parallelisé.
 
Des details ?

n°1990166
GrosBocdel
Posté le 04-05-2010 à 13:57:20  profilanswer
 

snafu8 a écrit :

That's not what she says.


 :o  :o  :o

n°1990274
Boulou
Wingfoil
Posté le 04-05-2010 à 20:47:18  profilanswer
 

alors voici qq détails (effectivement peut etre ca sert à rien, mais faut bien que j'essaye et que j'apprenne ^^)
en gros j'avais ca (je mets pas les détails) :
#include <ppl.h>
using namespace Concurrency;
 
main
{
.
.
RAZStatut();
reini_value();
if (_modeBlocsActive)  
                    {
                        RAZStatutBlocs();
                        initBlocs();
                 
                    }
}
 
avec
void RAZStatut() {
     
     
    for( myIterator = _AllPieces->begin(); myIterator != _AllPieces->end(); myIterator++ )  
            {
 
             }
...
}
void reini_value(){
 
        for(int i=0;i<_nbPoints;i++)
    {
        _value[i] = _valueRAZ[i];
        }
 
}
 
initBlocs() une autre fonction un peu plus complexe avec qq boucle while
 
j'ai remplacé dans le main par :
parallel_invoke(
                 
                [&](){RAZStatut();},  
                 
                 
                [&](){reini_value();},
 
                [&](){
                    if (_modeBlocsActive)  
                    {
                        RAZStatutBlocs();
                        initBlocs();
                 
                    }
 
                }
            );


Message édité par Boulou le 04-05-2010 à 20:48:12
n°1990304
snafu8
Posté le 04-05-2010 à 22:58:24  profilanswer
 

Ouais mais alors en fait, si tu veux, une boucle for ca peut être parallélisable, comme ça peut ne pas l'être, hein, ça dépend des dépendances de données, toussa toussa. Avec ce que tu nous montres, j'ai l'impression que ton code ne fait "que" des remises à zéros et des initialisation de données, des trucs typiquement memory-bound, donc même si c'est parallélisable, ce qui te limite ca va être tes acces mémoires et pas tes temps de calculs.

mood
Publicité
Posté le 04-05-2010 à 22:58:24  profilanswer
 

n°1990313
Joel F
Real men use unique_ptr
Posté le 05-05-2010 à 01:16:29  profilanswer
 

si tu passes 2 pauvres cycles par iteration, ca sert en fait bien à rien.
goto lire les bases de la prog parallele :o

n°1990330
Boulou
Wingfoil
Posté le 05-05-2010 à 08:16:51  profilanswer
 

la taille des boucles est de l'ordre du millier, ici dans ce cas ce n'est pas que des remises à 0 mais c'est effectivement de l'initialisation de données.
 
si je comprends bien il faut mieux // les calculs que les accès mémoires :jap:
 
(dans les tutoriaux que j'ai lu ca ne m'avait pas sauté aux yeux)
 
merci en tout cas pour ces infos

n°1990357
snafu8
Posté le 05-05-2010 à 09:41:29  profilanswer
 

Ouais paralléliser des accès mémoire, c'est surtout pas possible (disclaimer : sur des machines normale et pour ce que j'en sais). La remise à zéro c'est juste un cas particulier de l'init de données. Donc en gros dans ce que tu fais, au lieu d'avoir un seul process/thread/whatever, qui va chercher des datas en mémoire, tu en as deux (ou plus) concurrents qui vont tous accéder à la mémoire donc au mieux, rien faire, au pire, se gêner mutuellement (explication avec les mains inside).

n°1990507
Joel F
Real men use unique_ptr
Posté le 05-05-2010 à 16:42:28  profilanswer
 

ca serait aussi bien de savoir ou son tes hotpsot. Tu parallelise pas tout comme un clebard, faut reflechir un peu :o


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Programmation parallel (ppl.h avec visual studio) (débutant inside)

 

Sujets relatifs
Débutant need Help en CVBA : débutant, besoind'aide pour une macro
Désactiver ponctuellement l'infobulle d'un lien avec balise phpdébutant en Visual basic besoin d un peut d aide
jsp + servlet questions de débutantMATLAB programmation urgent
besoin daide visual studio 2010Programmation d'un tirage au sort
Plus de sujets relatifs à : Programmation parallel (ppl.h avec visual studio) (débutant inside)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR