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

Fortran Discussion :

performance copie tableaux en parallèle


Sujet :

Fortran

  1. #1
    Membre régulier Avatar de rogue-spectre
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Points : 122
    Points
    122
    Par défaut performance copie tableaux en parallèle
    Bonjour à tous

    Je dois améliorer un code parallèle, écrit en fortran 77/90 (compilé en O3 avec mpif90 de gfortran et de ifort). Après quelques recherches je tombe sur ce qui semble être une solution du problème, à savoir remplacer

    par une des deux lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    q=w
    q(1:taille, 1:5)=w(1:taille, 1:5)
    car la première génère un code plus lent en parallèle. Avez vous déjà rencontré ce problème. Est-ce un bug, ou juste un point auquel il faut faire attention ?

    Bonne journée à tous
    Libérez vos documents http://fr.libreoffice.org/ et vos doigts en tapant en BÉPO http://bepo.fr/wiki/Accueil:, rangez les cartes perforées dans une armoire et GOTO work

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 152
    Points : 191
    Points
    191
    Par défaut
    Salut,

    La performance est-elle la même sur différents ordinateurs?

    Je pense sinon que le gain vient de :
    Lorsque tu demandes de copier l'ensemble du tableau, sans spécifier sa taille, le CPU doit alors demander à la mémoire quelle est la taille du tableau. En d'autre terme, je pense que l'instruction marche comme suit :
    1. CPU : Quelle est la taille du tableau?
    2. Mémoire : Elle est de taille
    3. CPU : copie le tableau w(taille,1:5) dans q

    Donc en somme, tu sautes deux étapes en stockant directement la taille du tableau (ce qui, particulièrement dans un code MPI a beaucoup de processus peut s'avérer être un gain assez substantiel)

    Enfin, je pense que c'est quelque chose comme ça.

    @ plush,

    Marlan

  3. #3
    Membre régulier Avatar de rogue-spectre
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Points : 122
    Points
    122
    Par défaut
    personnellement j'ai seulement testé sur un i7-2600, en activant ou pas l'hyperthreading, mais le code à déjà été lancé sur d'autres machines par d'autres personnes et il a déjà été constaté des performances plus que médiocres en parallèle. J'accepte bien l'idée le fait que de demander la taille d'un tableau puisse prendre un peu de temps… mais bon, je ne pense pas que ça n'explique tout.
    Libérez vos documents http://fr.libreoffice.org/ et vos doigts en tapant en BÉPO http://bepo.fr/wiki/Accueil:, rangez les cartes perforées dans une armoire et GOTO work

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 110
    Points : 130
    Points
    130
    Par défaut
    Tu observes la même chose avec gfortran et ifort?

    Pour le "en parallèle", c'est MPI ou tu utilises du multithreading (OpenMP ou -auto)?

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Normalement ce bout de code doit saturer la bande passante mémoire. Ajouter des threads sur un même socket ne va que créer de la contention à la mémoire et des cache-miss (ça dépendra du compilateur pour ce dernier point).
    Donc si tu copies déjà à vitesse max, tu ne gagneras rien à paralléliser ce bout de code. Vérifie en faisant un profil de la bande passante mémoire à cet endroit.

Discussions similaires

  1. Problème copie tableaux
    Par kevin16 dans le forum Java ME
    Réponses: 2
    Dernier message: 16/11/2009, 19h44
  2. passage paramétres + copie tableaux
    Par Genesis dans le forum Réseau
    Réponses: 30
    Dernier message: 15/05/2007, 16h53
  3. [Tableaux] test performance nom de variable
    Par maximenet dans le forum Langage
    Réponses: 5
    Dernier message: 28/07/2006, 15h30
  4. [Tableaux] Enfiler et défiler en parallèle ??
    Par haffouff dans le forum Langage
    Réponses: 4
    Dernier message: 25/04/2006, 17h07
  5. D7 - Copy et tableaux dynamiques
    Par RamDevTeam dans le forum Langage
    Réponses: 2
    Dernier message: 15/08/2005, 14h46

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