IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Fortran Discussion :

[Lahey/Windows -> gfortran/Linux] Byte of padding


Sujet :

Fortran

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 19
    Par défaut [Lahey/Windows -> gfortran/Linux] Byte of padding
    Bonjour,

    Je souhaite actuellement adapter un programme écris en fortran 90 habituellement compilé par lahey sous windows vers du gfortran sous linux. Or, un warning que je ne comprends pas apparait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ComBalEqSolver.for:57.26:
        Included at BalEqSolver-gfortran.for:1196:
     
          COMMON /comREACTION/ Reaction,strReaction,NReaction,StoeR,StoeP,  
                             1
    Warning: COMMON 'comreaction' at (1) requires 1 bytes of padding at start
    ComBalEqSolver.for:60.25:
        Included at BalEqSolver-gfortran.for:1196:
     
          COMMON /comESPECES/ Espece,EspeceTrad,strEspece,NEspece,DensINI,At
                            1
    Warning: COMMON 'comespeces' at (1) requires 2 bytes of padding at start
    Quelqu'un a t'il une idée de l'origine de ce warning?

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Pour des raisons de performances, les compilateurs alignent les donnees. Par contre, le standard Fortran exige que les donnees dans un common soient contigues en memoire. Ajouter des octets d'alignement est donc non-standard, et le compilateur le signale. Tu peux essayer de re-organiser les variables du common en ordre de taille decroissante, histoire d'eviter l'alignement. Sinon, le compilateur comporte surement des options pour controler l'ajout d'octets d'alignement.

    (Note qu'en Fortran 90, on utilise plutot des modules que des common.)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 19
    Par défaut
    Ok, merci pour ces explications. J'ai rajouté des variables de la taille demandée par le compilateur dans ses warnings (en tête du COMMON) et tout est rentré dans l'ordre.

    Par contre, une chose m'échappe, dans le lien wikipedia que tu m'as donnée, il est dit que l'architecture x86 ne requiert pas d'accès mémoires alignés sauf pour les instructions SSE2. C'est donc juste pour ces dernières que les compilateurs ont mis en place des accès mémoires alignés? Le compilateur Lahey 90 (que j'utilise encore parfois sous windows et qui ne me signale pas ce problème) est-il alors obsolète et peut-il entrainer un ralentissement de mon programme?

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par DindonSauvage Voir le message
    Par contre, une chose m'échappe, dans le lien wikipedia que tu m'as donnée, il est dit que l'architecture x86 ne requiert pas d'accès mémoires alignés sauf pour les instructions SSE2. C'est donc juste pour ces dernières que les compilateurs ont mis en place des accès mémoires alignés?
    Oh non, c'est un probleme qui date d'avant le x86.

    Le compilateur Lahey 90 (que j'utilise encore parfois sous windows et qui ne me signale pas ce problème) est-il alors obsolète et peut-il entrainer un ralentissement de mon programme?
    Obsolete, non. Pour la rapidite du programme, il faut faire des mesures de temps d'execution pour deux executables compiles par les deux compilateurs. Note que les differences ne seront pas uniquement dues au probleme d'alignement. Deux compilateurs feront des optimisations differentes.

Discussions similaires

  1. [Font] utiliser une même police sur Windows et sur Linux ?
    Par iubito dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 10/05/2005, 16h41
  2. Changment de débit sur Windows mais pas Linux
    Par Nasky dans le forum Réseau
    Réponses: 3
    Dernier message: 29/10/2004, 11h08
  3. Taille partition windows non monté linux
    Par thomas_b dans le forum Administration système
    Réponses: 3
    Dernier message: 15/06/2004, 16h56
  4. [PostgreSQL] clients sous windows - base sous Linux
    Par Gandalf dans le forum Installation
    Réponses: 6
    Dernier message: 10/04/2003, 14h13
  5. Assembleur sous Windows et sous Linux
    Par Bibouda dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 28/10/2002, 07h55

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