Ok pour les messages mais comme je prend un peu de temps a répondre ca me deconnecte a chaque fois et je suis obligée de tout réecrire c'est super chiant je ne sais pas d'où ça vient et c'est pour ça que je fais ça...désolée.
Ok pour les messages mais comme je prend un peu de temps a répondre ca me deconnecte a chaque fois et je suis obligée de tout réecrire c'est super chiant je ne sais pas d'où ça vient et c'est pour ça que je fais ça...désolée.
Pour le changement de compilateur j'y avais déjà pensé mais je n'ai pas d'autorisation pour le faire donc en gros je fais comme je peux avec ce que j'ai...
En ce qui concerne mon programme, la différence avec l'ancienne version c'est (modulo deux ou trois petites modifications) juste l'ajout du pas de temps adaptatif.
Mon algo:
En gros c'est ce que j'ai codé et c'est pour ça que je me dit que a priori ça ne devrait pas prendre plus de temps.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 for nb=1..nbreessai_max if err<epsilon alors i=i+1 sinon on recommence et nb=nb+1 si nb>nbreessai_max alors je diverge et t=t/2 et je recommence
Donc quand tu parlais de maillage adaptatif, tu parlais de temps, et non de maillage spatial.
En effet, si ça converge dans la version précédente du code, avec les même critères de convergence, ça ne devrai pas adapter le pas de temps dans l'autre version du code. Donc ça devrait aller aussi vite (si on ne prend pas en compte les conditions sur le nombre d'essais et sur la convergence).
Je ne suis pas convaincu par contre que ça puisse aller plus vite...
Il est possible que la conversion se passe différement dans les deux cas, comme le dit genteur slayer. Je ne connait pas cet outil.
En tout cas, tu devrait tenter le profiling. ça peut valoir le coup. C'est quoi le compilateur que tu es sensée utiliser pour compiler du fortran ? ça peut valoir le coup de tenter la compilation sur une autre machine avec g95 et de comparer...
J'ai essayé le profiling mais tu m'as dit que ça doit créer un fichier .out que je ne retrouve pas.
Le compilateur c'est f77 si je ne me trompe pas.
Je pense qu'un profiling serrait effectivement idéal, je vais essayé de faire des recherche mais si tu trouve quelque chose d'interessant, ce serrait bien volontié..
Je te remercie.
gregory2526, juste une petite précision sur cette traduction, ce qu'il faut savoir c'est que mon programme Fortran, et je viens de le découvrir, tourne sur pc par exemple, a priori (sachant que je travaille sur hp) il doit s'agir d'une sorte d'imcompatibilité (je suppose) entre mon compilateur et hp, d'ou le traduction, autre chose la perte de temps est négligeable.
Voilà, c'est un peu plus précis et juste comme ça.
a propos du profiling, je n'avais pas les sites internet sous les yeux. Les informations que je t'ai donné étaient de souvenir depuis assez tard hiers soir.
Une petite recherche m'a permis de retrouver un document qui m'avait l'air assez bien fait :
http://spe.univ-corse.fr/bernardiweb...vers/gprof.pdf
effectivement, on doit trouver un fichier gmon.out. Mais comme je n'ai pas essayé moi même, je ne peux t'en dire plus pour le moment.
En ce qui concerne le système, il est possible que ça joue. J'ai moi même eu des différences importantes dans un vieux code entre linux et windows au moment de l'execution (sur la même machine PC), au niveau des résultats. Donc pourquoi pas au niveau du temps d'execution. Je ne saurais pas trop dire.
Merci pour tes réponses, aujourd hui j'ai pas eut le temps de réessayer le profiling mais demain certainement je te dirai ça.
Merci.
je viens de tester sur un code que j'utilise.
je t'indique la procédure. (faite sur cygwin)
1) g77 -pg -o source.exe source.f
--> j'obtient mon executable
2) ./source.exe
--> a la fin de l'execution (qui doit se terminer normalement sinon ça ne fonctionne pas), j'ai obtenu un fichier "gmon.out"
3) gprof source.exe gmon.out > sortie.txt
--> j'ai obtenu un fichier contenant des informations sur le déroulement de mon programme. Je t'en donne des extraits :
Bon, j'ai fait tourner mon code sur un tout petit fichier de donnée, l'execution a durée une ou deux secondes. Mais je pense que ça doit être plus pertinant sur un gros calcul.Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
96.43 0.81 0.81 1 810.00 810.00 zerocl_
1.19 0.82 0.01 1 10.00 830.00 MAIN__
1.19 0.83 0.01 1 10.00 10.00 inputd_
1.19 0.84 0.01 f_open
0.00 0.84 0.00 23 0.00 0.00 rnumck_
0.00 0.84 0.00 16 0.00 0.00 dtin02_
[...]
Call graph (explanation follows)
granularity: each sample hit covers 4 byte(s) for 1.19% of 0.84 seconds
index % time self children called name
0.01 0.82 1/1 main [2]
[1] 98.8 0.01 0.82 1 MAIN__ [1]
0.81 0.00 1/1 zerocl_ [3]
0.00 0.01 1/1 prepar_ [5]
-----------------------------------------------
<spontaneous>
[2] 98.8 0.00 0.83 main [2]
0.01 0.82 1/1 MAIN__ [1]
-----------------------------------------------
0.81 0.00 1/1 MAIN__ [1]
[3] 96.4 0.81 0.00 1 zerocl_ [3]
-----------------------------------------------
[...]
Merci, c'est super ton truc ça marche!
Par contre (ça doit être la commande équivalente sur unix) moi je fait:
avec run mon executable créer avec un makefile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2-> prof run mon.out > sortie.txt
Je te remercie.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager