bonjour ;j'ai exécuté un code parallèle que j'ai programmé avec la librairie MPI
j'ai remarqué que le temps de calcul a augmenté au lieu de diminuer par rapport à 1 seul processeur.
pour comprendre le problème ;j'ai enlevé toutes les communications et les synchronisations (et Petsci aussi ,...) et Donc chaque processus va s'exécuter indépendamment de l'autre
et la surprise est que le temps de calcul est toujours + grand sur 2 processeurs
ça ne vient pas de l'initialisation ou la finalisation de MPI. c'est le coeur de calcul qui prend + de temps quand on travaille sur deux processeurs
On dirait que les deux processus s'exécuteront chacun son tour sur un seul processeur !!!
j'ai : Intel(R) Core(TM) i3 CPU -> double coeur (PC portable personnel )
commande d'exécution : mpirun -np 2 ./programme
librairie utilisée: OpenMPI
le code a cette forme :
--> initialisation
DO time=1, n_time_step
time = time + dt
call calcul()
! call communication()
ENDDO
---> fin MPI,
. c'est la fonction calcul() qui prends du temps ( qui a comme outputs des grandeurs physiques calculés par des schémas de différence finis )
entre 1 et 2 processus la fonction calcul() est la même. et j'ai mis l'appel de la fonction communication() en commentaire pour tester
puis je savoir si mon programme utilise vraiment deux processeurs ? ( c'est une piste seulement ;je ne doute pas que ça vient de ça ).j'ai l'impression que le problème n'est pas numérique. peut être qu'il faut mettre une option à mpirun (ou mpiexec)
-----