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 :

[Fortran 77/Mac] Lecture unformatted, problème endian ou autre ?


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1
    Par défaut [Fortran 77/Mac] Lecture unformatted, problème endian ou autre ?
    Bonjour à tous,

    Je développe sous Mac OS 10.5, puce Intel, une appli multi-proc en fortran 77.

    Je lis un fichier non formaté généré à partir d'une machine type G5 MacPro. Il y a donc une incompatibilité big-endian / little-endian.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          OPEN(UNIT=7,FILE='DATA.DAT',FORM='UNFORMATTED')
          READ(7) (DATA(I), I=1,NSIZE)
          CLOSE(7)
    Une erreur survient à l'éxécution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    do_us: off end of record
    apparent state: unit 7 named DATA.DAT
    last format: list io
    lately reading sequential unformatted external IO
    Première question: est-ce que cela peut venir du problème big-endian ou est-ce que je me fourvoie complètement et qu'il s'agit d'autre chose ?
    Car il semble qu'il y ait "dépassement" de la taille de mon fichier.
    Pourtant le même code, exécuté sur les machines initialement prévues pour lui, fonctionne correctement, avec le même DATA.DAT, la même taille NSIZE définie à l'identique, et aucun changement dans le source.

    Seul le Makefile est différent.

    Et comme je suis un peu embrouillé dans quel compilateur inclut quelle commande, je ne suis pas très sûr de ce qu'il faut faire.

    Sur les machines pour lesquelles tout fonctionne bien, mon makefile utilise les appels et flags suivants:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MPF77 = mpxlf_r -q64
    LDFLAGS = -qsave -qextchk -O2 -qtune=auto -qarch=auto -qcache=auto
    Sur les nouvelles machines, j'ai utilisé
    et essayé plusieurs choses:
    un flag -fendian=big mais cela n'est pas reconnu par mpif77 (possible confusion que je ferais avec g95, mais quel est le lien entre ces deux compilateurs?)
    et, avant de compiler, un EXPORT G95_ENDIAN=BIG, qui ne résout pas le problème.

    J'ai l'impression de ne pas avoir été très clair, j'espère que vous pourrez quand même m'aider; je donne tous les éclaircissements dont vous auriez besoin Merci !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 489
    Par défaut
    Bonjour,

    Vu ce que tu en dis, il est effectivement possible qu'il s'agisse d'un problème d'endian différents entre tes deux machines.
    Mais tu peux facilement tester cela avec deux petits programmes d'écriture/lecture de fichiers non-formatés que tu ferais tourner sur tes deux machines.

    Je ne suis pas très compétent en ce qui concerne les programmes et compilateurs parallèles, mais il me semble que 'mpimachin' est juste une surcouche (via mpich ?) du compilateur 'machin'; il faudrait s'assurer à quel 'f77' ton 'mpif77' est lié parce que rien ne dit qu'il s'agisse de g95 ... et dans ce cas ton "EXPORT G95_ENDIAN=BIG" n'a alors évidement aucune incidence...
    Par contre l'idée de passer par une option de compilation pour gérer le changement d'endian est bonne; mais attention, il n'est pas certain que tous les compilateurs incluent cette option.

Discussions similaires

  1. JOGL et Mac OS X = problème ?
    Par jomeo dans le forum OpenGL
    Réponses: 3
    Dernier message: 18/04/2008, 19h45
  2. lecture XML, problème d'encodage
    Par Speranza dans le forum Général Python
    Réponses: 2
    Dernier message: 22/03/2008, 13h29
  3. [Lecture binaire] Problème de conversion
    Par poukill dans le forum C++
    Réponses: 2
    Dernier message: 14/09/2007, 09h34
  4. Réponses: 4
    Dernier message: 30/07/2007, 18h55
  5. Réponses: 5
    Dernier message: 02/10/2006, 22h54

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