Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/05/2007, à 18:04

heuuuuu

[résolu][fortran]Des choses differentes selon le compilateur

Bonjour tout le monde,

Selon que je compile avec g77 ou avec gfortran un petit programme que j'ai fait, j'obtiens des résultats totalement différents: enfait avec gfortran ca ne fonctionne presque pas puisque dans la plupart des cas (mais pas toujours) mon programme me renvoi "nan" à la fin des calculs, alors qu'avec g77 ça marche nickel. hmm

Est-ce que quelqu'un sait d'ou cela peut venir, les erreurs typiques qui amènent ce genre de problème ?

Merci d'avance

Dernière modification par heuuuuu (Le 11/05/2007, à 20:42)


Quand les avions en papier ne partent plus au vent
On se dit que l'bon temps passe finalement...
...comme une étoile filante
http://forum.ubuntu-fr.org/viewtopic.php?id=139410

Hors ligne

#2 Le 11/05/2007, à 20:13

Link31

Re : [résolu][fortran]Des choses differentes selon le compilateur

Je ne peux pas te répondre en ce qui concerne le Fortran, mais je peux essayer de t'aider au niveau de la programmation en général. Ce type d'erreurs peut, entre autres, être causé par deux choses :

1) Un code incorrect, que les deux compilateurs acceptent mais avec une interprétation différente. Essaie d'activer le plus d'avertissements possibles en compilant pour dépister ce genre d'erreurs.

2) Un comportement indéterminé dans une ligne du code : correcte selon le langage, mais dont l'effet est ambigu et n'est pas fixé par la norme. Chaque compilateur l'interprète donc à sa façon. Activer les avertissements peut aider, mais pas toujours.

edit : est-ce que ça ne viendrait pas plutôt de la différence entre le Fortran 77 (g77) et le Fortran 95 (gfortran) ?

Dernière modification par Link31 (Le 11/05/2007, à 20:16)

Hors ligne

#3 Le 11/05/2007, à 20:41

heuuuuu

Re : [résolu][fortran]Des choses differentes selon le compilateur

ah, effectivement si gfortran est fait pour le fortran 95 il peut y avoir des problèmes... Merci pour cette précision... La question qui reste, c'est pourquoi ma prof qui nous a demandé un programme en fortran 77 compile avec gfortran... Mais bon, je risque pas de trouver la réponse sur ce forum... Je vais marquer le sujet résolu, merci smile


Quand les avions en papier ne partent plus au vent
On se dit que l'bon temps passe finalement...
...comme une étoile filante
http://forum.ubuntu-fr.org/viewtopic.php?id=139410

Hors ligne

#4 Le 11/05/2007, à 20:43

Tom_L

Re : [résolu][fortran]Des choses differentes selon le compilateur

Le mieux ça serait de poster le code (ou un bout) pour qu'on puisse t'aider...

Comme le dit Link31 gfortran et g77 sont des compilos basés sur deux versions différentes, et pas mal de choses ont changées entre les deux versions...

C'est difficile de t'aider sans code, mais tu peux déjà verfifier deux trois truc:

1. La declarations implicite: une bonne règle est de TOUJOURS utiliser IMPLICIT NONE en début de programme. La déclaration des variables est donc obligatoire, ca peut t'éviter pas mal d'erreur.

2. L'allocation dynamique: bien verifier que les (eventuels) tableaux ont bien été initialisés. Par défaut un programme fortran ne stoppe pas s'il l'allocation mémoire échoue.

3. Vérifier les types de données (integer / real)

Pour info, le compilateur Intel est gratuit pour unr utilisation non commerciale. Je ne veux pas lancer de polémique, je vais donc y aller avec des pincettes big_smile: sur ma machine et pour le prog que je développe (calcul scientifique), le compilo Intel est jusqu'à 20x plus rapide, en fonction des optimisations...


~~~~~~
Thomas.

Hors ligne

#5 Le 11/05/2007, à 20:47

Tom_L

Re : [résolu][fortran]Des choses differentes selon le compilateur

heuuuuu a écrit :

La question qui reste, c'est pourquoi ma prof qui nous a demandé un programme en fortran 77 compile avec gfortran...

Les compilateur Fortran 95 sont normalement rétrocompatibles... C'est pas très logique d'utiliser gfortran pour du 77, mais normalement ca ne pose aucun problèmes...


~~~~~~
Thomas.

Hors ligne

#6 Le 11/05/2007, à 21:01

heuuuuu

Re : [résolu][fortran]Des choses differentes selon le compilateur

Le code est disponible ici: http://libre-zone.net/fortran.tar.gz

Mais bon, c'est pas forcément tres clair tout ce que j'ai fait, je vais vérifier pour les variables... Fin a mon avis ca peut etre dans le common.h, mais bon, en théorie je suis pas censé etre aidé tongue


Quand les avions en papier ne partent plus au vent
On se dit que l'bon temps passe finalement...
...comme une étoile filante
http://forum.ubuntu-fr.org/viewtopic.php?id=139410

Hors ligne

#7 Le 11/05/2007, à 21:56

JBF

Re : [résolu][fortran]Des choses differentes selon le compilateur

heuuuuu a écrit :

Le code est disponible ici: http://libre-zone.net/fortran.tar.gz

Mais bon, c'est pas forcément tres clair tout ce que j'ai fait, je vais vérifier pour les variables... Fin a mon avis ca peut etre dans le common.h, mais bon, en théorie je suis pas censé etre aidé tongue

C'est quoi un common.h en Fortran ?

À propos de gfortran : ce compilateur est en cours de développement (implémentation de la norme 95) et il n'est peut être pas encore assez mature pour ton code.

Il y a de très bons compilateurs qui implémentent la norme 95. Si le développement de gfortran n'est pas assez avancé, il y a g95 (www.g95.org) qui marche remarquablement bien et qui est open-source même s'il ne fait pas partie de gcc.

À propos de ton prof : il serait peut-être temps que les profs se mettent à jour et se forment aux langages d'aujourd'hui. Rester crispé sur Fortran 77 est le meilleur moyen de dégoutter les étudiants d'un des meilleurs langages pour le calcul scientifique.
Développer avec des commons alors que le Fortran propose les modules, les types dérivés, la manipulation globale des tableaux et une tripotée de nouvelles routines intrinsèques, en particulier pour améliorer la portabilité du code, et même des pointeurs, c'est à croire que certains pensent que le monde n'a pas changé depuis qu'ils ont fini leurs études. Ça tient de la faute professionnelle. Enfin je ne connais pas le sujet imposé, mais d'après ce que tu suggères c'est inquiétant.


JBF


LibreOffice : https://fr.libreoffice.org/ (téléchargement, documentation, FAQ, assistance, contribuer, ...)
Aide pour LibreOffice par la communauté francophone : https://ask.libreoffice.org/fr/

Hors ligne

#8 Le 12/05/2007, à 08:19

heuuuuu

Re : [résolu][fortran]Des choses differentes selon le compilateur

Le common.h c'est ce qui me permet dans mon programme de passer des variables d'un fichier a un autre sans les faire apparaitre commes des variables d'une fonction ou d'une subroutine...

Concernant ma prof, pour prendre quand meme un peu sa defense, d'une part je ne suis pas sur que ce soit elle qui choisisse le programme, et d'autre part, je trouve ca interessant personnellement lorsque l'on connait deja pas mal C, C++ Java, de voir quelque chose d'un peu différent...


Quand les avions en papier ne partent plus au vent
On se dit que l'bon temps passe finalement...
...comme une étoile filante
http://forum.ubuntu-fr.org/viewtopic.php?id=139410

Hors ligne

#9 Le 12/05/2007, à 08:50

JBF

Re : [résolu][fortran]Des choses differentes selon le compilateur

heuuuuu a écrit :

Le common.h c'est ce qui me permet dans mon programme de passer des variables d'un fichier a un autre sans les faire apparaitre commes des variables d'une fonction ou d'une subroutine...

Ok, je sais ce que c'est un common en Fortran. ce qui m'étonne c'est cette dénomination common.h qui fait très header C/C++. Comment est-ce que tu t'en sers ensuite ? En ajoutant un include common.h dans chaque routine ?

Concernant ma prof, pour prendre quand meme un peu sa defense, d'une part je ne suis pas sur que ce soit elle qui choisisse le programme, et d'autre part, je trouve ca interessant personnellement lorsque l'on connait deja pas mal C, C++ Java, de voir quelque chose d'un peu différent...

Bien entendu mais ce n'est pas mon propos ; ma critique porte sur le 77 alors que depuis la norme 77, il y a eu 3 nouvelles normes Fortran (90, 95 et 2003) qui ont apporté des évolutions majeures. Ne pas les enseigner est une faute.

JBF


LibreOffice : https://fr.libreoffice.org/ (téléchargement, documentation, FAQ, assistance, contribuer, ...)
Aide pour LibreOffice par la communauté francophone : https://ask.libreoffice.org/fr/

Hors ligne

#10 Le 12/05/2007, à 13:01

heuuuuu

Re : [résolu][fortran]Des choses differentes selon le compilateur

Comment est-ce que tu t'en sers ensuite ? En ajoutant un include common.h dans chaque routine ?

exactement, par un simple include


Quand les avions en papier ne partent plus au vent
On se dit que l'bon temps passe finalement...
...comme une étoile filante
http://forum.ubuntu-fr.org/viewtopic.php?id=139410

Hors ligne

#11 Le 12/05/2007, à 13:58

JBF

Re : [résolu][fortran]Des choses differentes selon le compilateur

heuuuuu a écrit :

Comment est-ce que tu t'en sers ensuite ? En ajoutant un include common.h dans chaque routine ?

exactement, par un simple include

Franchement ce n'est pas une bonne idée car include n'est pas standard en Fortran.
Il y a bien mieux : utiliser un module

module toto
    integer :: a, b, c
end module toto

subroutine foo
   use toto, only : a
   ...
end subroutine foo

JBF


LibreOffice : https://fr.libreoffice.org/ (téléchargement, documentation, FAQ, assistance, contribuer, ...)
Aide pour LibreOffice par la communauté francophone : https://ask.libreoffice.org/fr/

Hors ligne