Temps de calcul en Fortran
Bonjour,
j'ai un problème, j'avais un code écrit en Fortran donc je devais améliorer, en autre, le temps de calcul. Je l'ai modifié, mais horreur! les temps de calculs sont plus long. Le truc c'est que je suis assez sûre de mon coup, en gros, sur un problème numérique j'ai fait un maillage adaptatif, donc ça devrait prendre moins de temps!!!
J'ai fait tourner mon code sur un jeu de données relativement triviales, donc sur lequel le maillage n'est pas modifié, mais horreur! mon programme est toujours plus lent que l'ancienne version...
Question: je voudrais savoir quelle est la fonction en fortran 77 ou 90 qui calcule le temps?
Ensuite, juste pour information, le temps de calcul je l'ai en exécutant la commande "timex run", est ce que l'erreur peut venir de là?
Pour toute autre suggestion je suis ouverte car j'avoue que je ne sais plus où chercher...
Merci.
Temps de calcul en Fortran
Salut.
Essaie CPU_TIME ou DATE_AND_TIME
A part ça, ma longue expérience m'a appris qu'on perdait souvent beaucoup plus de temps CPU avec des algorithmes de calcul mal choisis que pour des questions de programmation.
Bonne chance
Jean-Marc Blanc
Temps de calcul en Fortran
Re-Salut!
Je n'ai pas ma documentation sous la main, mais, si je me souviens bien, la routine DATE_AND_TIME prend plusieurs paramètres. Le mieux est d'aller voir dans l'aide en ligne de ton Fortran.
D'autre part, souviens-toi qu'un algorithme courant est souvent, comme son nom l'indique, un algorithme qui se traine.
Salutations
Jean-Marc Blanc
Temps de calcul en Fortran
Salut.
Fais très attention, car la notion de temps de calcul est devenue ambiguë depuis que les ordinateurs sont devenus multitâches: il faut distinguer
1) le temps écoulé (elapsed time) qui est la différence entre l'heure à la fin et au début de ton calcul, et qui dépend des autres tâches que le processeur traite simultanément; pour obtenir une mesure reproductible, il faut redémarrer la machine avant chaque essai et désactiver toutes les tâches intermittentes, en particulier ton antivirus (n'oublie pas de le réactiver après!);
2) le temps processeur (CPU time) qui indique pendant combien de temps le processeur a travaillé vraiment pour ton problème; je ne sais franchement pas ce qui se passe si tu travailles avec une machine avec plusieurs processeurs.
D'autres difficultés peuvent survenir si tu travailles sous Windows et si tu assignes dynamiquement les tableaux (ce que j'essaie toujours d'éviter). Je ne peux pas t'en dire plus, mais j'ai observé des phénomènes étranges.
En espérant ne pas t'avoir trop découragé.
Jean-Marc Blanc
Temps de calcul en Fortran
Loin de moi l'idée de te décourager!
Une petite question tout de même: as-tu traduit ton programme à la main? Il existe un programme qui s'appelle f2c et qui fait ça automatiquement; le résultat n'est pas parfait, mais on peut toujours l'améliorer.
Si tu cherches vraiment à améliorer la performance, essaie le programme ATLAS (Automatic Tuning of Linear Algebra Subroutines).
Ces deux programmes sont disponibles gratuitement sur www.netlib.org
Bonne chance
Jean-Marc Blanc