Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    juin 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2015
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Comment savoir si mon "use module" est obsolette .
    Bonjour,
    J’ai une question sur l’utilisation des modules en Fortran.
    Pour utiliser un module, il faut inclure en tout début de son fichier l’instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    USE MODULE_1
    USE MODULE_2
    USE MODULE_etc…
    Mon soucis vient du fait que avec toutes les évolutions qui ont été faites, certain appels à des modules sont devenu inutile. Ce n’est pas très ennuyeux parce que ça ne gène pas la compilation et l’exécution de mon code. Néanmoins, ce n’est pas très « propre ».
    Mon code contient plusieur centaines de fichiers, et il serait très long de contrôler « à la main » si l’appel de chaque module est justifié ou non
    (par exemple en commentant la ligne contenant l’appel au module et en relançant une compilation et une exécution).
    Est-ce que à la connaissance de quelqu’un, il existerait une option de compilation, ou un outil de contrôle qui me permettrait de savoir si tel ou tel module est effectivement appelé à propos.

    merci beaucoup pour ceux qui pourront être tenté de m’éclairer.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    étudiant ingénieur génie des procédés
    Inscrit en
    mars 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : étudiant ingénieur génie des procédés

    Informations forums :
    Inscription : mars 2018
    Messages : 15
    Points : 25
    Points
    25
    Par défaut option pour la compilation
    Salut,
    Je suis pas du tout fan des modules, mais je sais que si tu compile comme ceci :
    gfortran -Wall *.f90
    Il te dis quand tu fais un truc qui sert à rien.
    Quand je l'utilise, il me dis quand mes tableaux sont mal déclarer même si cela fonctionne, et quand je déclare des trucs qui ne sont pas utilisé dans une subroutine ou autre. Si ça peut servir essaye !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    mars 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2007
    Messages : 465
    Points : 548
    Points
    548
    Par défaut
    Bonjour,

    Citation Envoyé par Le_Boucher Voir le message
    Il te dis quand tu fais un truc qui sert à rien.
    A ma connaissance, -Wall ne donnera pas d'information sur des variables/routines de modules non utilisées.

    Le fond du problème de Wire.Less vient du fait que les modules sont inclus "en vrac" c.-à-d: avec alors que si on travaille proprement, on utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    use module_1, only: ...
    en mentionnant explicitement après le "only" les éléments (variables ou fonctions/routines) du module à utiliser... A partir de là, la maintenance du code suite aux évolutions est bien plus simple.

    Pour en revenir à la question initiale, je ne connais pas d'outils qui irait automatiquement faire le tri pour déterminer quel module est effectivement chargé, mais il me semble qu'il suffit juste qu'un peu de méthode, comme par exemple:
    - remplacer (temporairement) "module_X" par un "module_X" vide et lancer une recompilation de tout le code. Si il n'y a pas d'erreurs alors "module_X" était effectivement inutilisé et peut être supprimé.
    - dans le cas ou ces modules contiennent une routines, e.g. "maroutine", on peut aussi imaginer faire une recherche textuelle (par exemple en utilisant l’utilitaire "grep" sous Linux) pour "maroutine" dans l'ensemble des fichiers sources; on voit très vite au résultat si elle est appelée quelque part ou pas.

    Bon courage.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    août 2006
    Messages
    968
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : août 2006
    Messages : 968
    Points : 1 380
    Points
    1 380
    Par défaut
    Il y a très longtemps, bien avant l'apparition des modules, j'utilisais une option de compilation qui me générait un "Symbols Cross Reference", soit la liste de toutes les variables, fonctions et subroutines avec les lignes dans lesquels elles apparaissaient.

    Peut-être qu'une version moderne de cette liste indiquerait le module dans lequel la ressource est définie, s'il y a lieu.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    juin 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2015
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Merci à tous pour votre contribution.
    Je comprends qu'il n'y a pas de solution magique pour répondre à mon problème.
    Je vais donc tester tous mes à modules pour vérifier s'ils sont ou non pertinent.

    Je passes donc également mon fils de discussion en résolu :-*

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    août 2006
    Messages
    968
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : août 2006
    Messages : 968
    Points : 1 380
    Points
    1 380
    Par défaut
    Si tu lis l'anglais, vas voir la discussion https://software.intel.com/en-us/for...s/topic/282977

    Ça ne donne pas la réponse, mais peut-être une piste.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 20
    Dernier message: 18/05/2008, 16h33
  2. Réponses: 2
    Dernier message: 03/11/2006, 10h36
  3. Comment savoir si mon navigateur est ouvert ?
    Par Chris33 dans le forum Réseau/Web
    Réponses: 8
    Dernier message: 18/07/2006, 14h51
  4. Réponses: 1
    Dernier message: 16/01/2006, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo