Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > Fortran
Fortran Forum d'entraide sur la programmation en Fortran. Avant de poster -> FAQ Fortran
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 16/10/2012, 09h25   #1
rogue-spectre
Membre habitué
 
Avatar de rogue-spectre
 
Homme
Inscription : juillet 2011
Messages : 100
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : juillet 2011
Messages : 100
Points : 102
Points : 102
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 :
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
rogue-spectre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2012, 09h35   #2
Marlan
Membre habitué
 
Inscription : mai 2010
Messages : 111
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 111
Points : 109
Points : 109
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
Marlan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2012, 09h54   #3
rogue-spectre
Membre habitué
 
Avatar de rogue-spectre
 
Homme
Inscription : juillet 2011
Messages : 100
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : juillet 2011
Messages : 100
Points : 102
Points : 102
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
rogue-spectre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2012, 15h08   #4
TheOyoStyledMan
Membre habitué
 
Inscription : septembre 2004
Messages : 111
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 111
Points : 118
Points : 118
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)?
TheOyoStyledMan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2012, 15h35   #5
Matthieu Brucher
Rédacteur/Modérateur
 
Avatar de Matthieu Brucher
 
Matthieu Brucher
Développeur HPC
Inscription : juillet 2005
Messages : 9 697
Détails du profil
Informations personnelles :
Nom : Matthieu Brucher
Âge : 31
Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

Informations forums :
Inscription : juillet 2005
Messages : 9 697
Points : 18 133
Points : 18 133
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.
Matthieu Brucher est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h20.


 
 
 
 
Partenaires

Hébergement Web