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

MATLAB Discussion :

parfor : 3 fois plus lent que for


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Points : 26
    Points
    26
    Par défaut parfor : 3 fois plus lent que for
    Bonjour

    Sur un CPU dual core avec matlab 2010a, je voudrais utiliser parfor.

    Voici mon code de test avec for:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    tic
    for i=1:10
        for j=1:1e3
            eig(rand(50,50));      
        end
    end
    toc

    Avec parfor
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    matlabpool open 2
    tic
    parfor i=1:10
        for j=1:1e3
            eig(rand(50,50));      
        end
    end
    toc
    matlabpool close

    Le temps ecoule est de
    - 18 s avec for
    - 60 s avec parfor

    Qu'est ce que je fais de faux.

    Merci pour votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Bonjour,

    une question toute bête :

    ca sert à quoi de boucler sur i et j si tu ne les utilises pas ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Points : 26
    Points
    26
    Par défaut
    Pour le moment a rien. C'est juste pour que cela soit plus pres du veritable code que je vais paralleliser qui contient plusieurs for imbriques.

    Mais le probleme est le meme avec une seule for/parfor.

    Encore une petite precision: je suis sous Linux.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 134
    Points : 129
    Points
    129
    Par défaut
    as-tu initialisé le calcul parallèle auparavant via la commande matlabpool ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Points : 26
    Points
    26
    Par défaut
    Oui, je fais matlabpool open 2

  6. #6
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Tu peux commencer par lire ceci >>

  7. #7
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Points : 26
    Points
    26
    Par défaut
    Merci pour votre aide.
    Le probleme etait (je crois) la configuration de matlab.

    Sinon quand je fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    parfor i=1:10
    disp(['msg1 ' num2str(i)]);
    disp(['msg2 ' num2str(i)]);
     
    end
    Il est normal que j'obtienne pas la sequence 1 2 3 4 ...

    Mais est il possible que les instructions dans la boucle sont afficher ensemble ?

    C'est a dire:

    msg1 : y
    msg2 : y
    msg1 : x
    msg2 : x
    msg1 : z
    msg2 : z

    et non:

    msg1 : x
    msg1 : x
    msg2 : y
    msg2 : y

    x y z n'etant pas forcement consecutif.

Discussions similaires

  1. Sur mobile, les Data URI sont 6 fois plus lentes que les requêtes HTTP
    Par rodolphebrd dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 30/07/2013, 10h32
  2. Réponses: 76
    Dernier message: 29/03/2011, 16h15
  3. SQL2005 15 fois plus lent que SQL2000 !
    Par Najdar dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 29/01/2008, 14h07
  4. [Firebird][Optimisation]Plus lent que le BDE!
    Par vincentj dans le forum Débuter
    Réponses: 3
    Dernier message: 07/02/2005, 15h48
  5. DBExpress est plus lent que BDE?
    Par palassou dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/07/2004, 08h39

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