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 :

Déclaration des variables en Fortran


Sujet :

Fortran

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 24
    Points : 36
    Points
    36
    Par défaut Déclaration des variables en Fortran
    Bonjour

    j'utilise fortran sur linux (gfortran). j’exécute un code de simulation de l’équation de Navier et Stokes par différence finie. j’écris un fichier pour la déclaration de variable qui est utilisé par le code principale par "include". je trouve ce message d'erreur:
      "Padding of 4 bytes required before 'diff' in COMMON 'para' at (1); reorder elements or use -fno-align-commons"
    Included at differencefinie.for:124:
    voila le fichier common:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
           common/vitesse/Unew,U,Erreur,V0
           common/coefficient/alpha,beta,omega
           common/vecteur/a,b,c,d
     
           common/para/deltay,istep,diff,perm,por,gra,nu
           common/nbadim/Re,da,prd,Ray

    je vous remercie

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Je serais surpris que ce soit un message d'erreur. C'est surement un avertissement seulement (warning).

    Ce que tu dois comprendre, c'est que pour des raisons de performance, les compilateurs alignent (ou placent) les variables en mémoire de sorte qu'elles peuvent être référencées par un déplacement par rapport à l'origine du common (le même phénomène se produit avec les types), comme si c'était des vecteurs. Alors si le common contient les variables suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    integer (kind=4) :: i
    real (kind=4) :: r1,r2
    real (kind=8) :: d
    common /MesVarGlobales/i,r1,r2,d
    Dans ce cas, il y aura un avertissement pour « d ». i, r1,et r2 occupent 3 x 4 octets. r2 est donc le 3ième élément d'un vecteur d'éléments de 4 octets. Dans le cas de d, qui occupe 8 octets, il faudra qu'elle soit déplacée de 4 octets pour occuper les positions 17 à 24 (en octets) et être référencée comme étant le 3ième élément de 8 octets. Il y aura donc insertion (padding) de 4 octets.

    Cela dit, ce n'est pas une erreur. Le compilateur va insérer les 4 octets et tout devrait fonctionner. Tu peux aussi empêcher l'insertion des « paddings » avec -fno-align-commons. Ton programme pourrait être alors légèrement moins efficace parce que le compilateur ne pourra référencé d (dans mon exemple) aussi facilement. Cependant, toutes les routines ou fonctions utilisant ce common doivent être compilées avec les mêmes options de padding (-fno-align-commons ou pas).

    Finalement, certaines utilisations plus exotiques des commons consistent à ne pas les déclarer de la même façon à chaque endroit. Si c'est le cas dans ton code, tu devras être très prudente parce que le padding pourrait varier d'un endroit à l'autre.

Discussions similaires

  1. Macro (déclaration des variables ?)
    Par Nok's dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 29/05/2007, 16h46
  2. déclaration des Variables
    Par aityahia dans le forum Coldfusion
    Réponses: 3
    Dernier message: 02/10/2006, 08h42
  3. Déclaration des variables
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 30/08/2006, 14h47
  4. [MASM32] Déclaration des variables
    Par mrousse dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 30/09/2005, 14h30
  5. [DB2] Ordre de déclaration des variables
    Par Fatah93 dans le forum DB2
    Réponses: 1
    Dernier message: 04/05/2005, 17h18

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