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 :

SUN -> MAC OS X 10.4 fonctions dgemv, dgemm, dsvdc


Sujet :

Fortran

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 102
    Par défaut SUN -> MAC OS X 10.4 fonctions dgemv, dgemm, dsvdc
    Bonjour,

    Je suis en train de porter un vieux code fortran qui marchait sur SUN solaris (j'ignore avec quel compilateur) sur mon mac (10.4), compilé avec g77. Après quelques petites modifs sans grandes conséquences, ça compile bien et le programme tourne jusqu'au bout. Mais les résultats obtenus ne sont pas les mêmes que sous SUN ...

    Le programme utilise des fonctions externes telles que dgemv, dgemm et dsvdc. Je me demandais si le problème pouvait venir de là.
    Y-a-t-il un flag en particulier dans makefile à activer (ou déactiver) pour ces fonctions?

    Merci pour votre aide

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    dgemv, dgemm et dsvdc
    La routine dgemv appartient au blas de niveau 2, dgemm au blas de niveau 3. Quant à la routine dsvdc (valeurs singulières), elle appartient à l'ancienne bibliothèque linpack et la rumeur dit qu'elle comporte un bug, mais je n'ai pas plus de détails à ce sujet. Par souci de cohérence, je te conseille de ne plus utiliser que les routines récentes, c'est-à-dire celles de la bibliothèque lapack.
    Jean-Marc Blanc

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    Citation Envoyé par peuf23 Voir le message
    Mais les résultats obtenus ne sont pas les mêmes que sous SUN
    bonjour,

    Il n'est pas surprenant que les résultats soient différents d'une plateforme à l'autre ne serait ce que parce que le compilateur est différent.

    Mais en plus d'être différents ils peuvent ne pas êtres valides. C'est ton cas ?

    Lors de certains portages que j'ai pu faire, les problèmes peuvent venir de plusieurs endroits. Par exemple si tu utilises une variable sans l'avoir initialisée, certains compilateurs l'initialise à 0 automatiquement alors que d'autres vont avoir une valeur carrément différente. Tu dois avoir une option pour forcer l'initialisation des variables avec g77 (je ne connais que gfortran), ça peut être une première piste. Ou alors une option de compilation sur le précédent compilateur imposait que les réels soient en double précision et pas tes options de compil sur MacOs. Ca peut venir de tellement d'endroits :'(...

    Ensuite il faut t'assurer que tu utilises bien les mêmes librairies externes. Et, comme suggéré au dessus, ça peut être le bon moment pour les mettre à jour.

    Si tu as encore la main sur les sources et le Makefile du programme sur SUN, tu peux aussi faire une vérification pas à pas pour voir à quel endroit de ton code tu as une régression non acceptable.

    Courage, c'est pas simple comme problème

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 102
    Par défaut
    Bonjour à tous,

    je reviens un peu à la charge sur ce sujet sur lequel je ne travaille que partiellement. J'ai plus de temps pour m'en occuper maintenant...
    Merci kango de m'avoir rappelé que j'avais déjà ouvert ce sujet auparant (j'aurais du faire une recherche , désolé)

    Suivant les conseils de FR119492, j'ai compilé la librairie LAPACK, pour mettre à jour toutes ces vieilles routine et avoir qqch de plus cohérent. Comme celle-ci se compile sous gfortran, je travaille maintenant également avec ce compilateur pour mon programme que je souhaite faire marcher.

    La compilation se passe bien... jusqu'à la ligne où la routine dsvdc est appellée. Le compilateur ne la trouve pas. J'ai cherché dans les fichiers de la librairie LAPACK et effectivement cette routine n'existe pas pour cette librairie.

    A-t-elle été remplacé par une autre?
    Merci d'avance

  5. #5
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Evidemment: comme indiqué dans mon message précédent, elle fait partie de la librairie LinPack, mais je te conseille d'utiliser plutôt celle qui fait la même chose dans la librairie LAPack, c'est-à-dire probablement DGESVD.
    Jean-Marc Blanc

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 102
    Par défaut
    Merci, j'obtiens maintenant les mêmes valeurs qu'avec le svd de matlab....

    Mais c'est toujours différent du résultat obtenu à l'époque avec le SUN avec la routine dsvdc. Est-ce possible que les résultats obtenus avec le SUN soient faux?? Depuis tellement d'années.... wahou ca fait peur...

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    quels sont les écarts (absolus et relatifs) que tu observes quand tu dis que c'est différent ?

  8. #8
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Est-ce possible que les résultats obtenus avec le SUN soient faux?
    Si tu lisais attentivement les réponses qu'on te fait, ça ne serait pas plus mal. Retourne à mon message du 11.6 à 13h13.
    Jean-Marc Blanc

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 102
    Par défaut
    elle appartient à l'ancienne bibliothèque linpack et la rumeur dit qu'elle comporte un bug, mais je n'ai pas plus de détails à ce sujet
    J'ai bien lu. Mais une rumeur, n'est pas une preuve... Tu as t'appuies sur quelles sources??


    Voici les 8 premières valeurs avec dsvdc sous SUN:
    22419.108332252 19536.265509883 14588.291724584 13636.271731190
    12201.901677047 11223.573935640 11069.031128873 10274.9902022056


    Voici les 8 premières valueur avec dsvdc sous MAC:
    6770.94641 6114.04721 5950.83628 5897.74379 5787.63128 5737.55805
    5737.09053 5721.57081 5628.51634 5599.15914 5534.91096 5521.86754

  10. #10
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Tu as t'appuies sur quelles sources??
    Aucune source écrite, mais je l'ai entendu dire par plusieurs collègues que j'estime très compétents.
    Mais une rumeur, n'est pas une preuve...
    Un juge s'appuie sur des preuves, mais un développeur essaie plutôt de faire des programmes corrects. En outre, j'ai personnellement rencontré un cas où les résultats étaient absurdes, mais c'était avec ZSVDC (matrice complexe), alors que LAPack et MatLab donnaient des résultats apparemment corrects. Si tu veux plus d'informations, adresse-toi à Jack Dongarra.
    Jean-Marc Blanc

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 102
    Par défaut
    Merci pour ta réponse et pour ta franchise.

  12. #12
    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,

    Citation Envoyé par peuf23 Voir le message

    Voici les 8 premières valeurs avec dsvdc sous SUN:
    22419.108332252 19536.265509883 14588.291724584 13636.271731190
    12201.901677047 11223.573935640 11069.031128873 10274.9902022056


    Voici les 8 premières valueur avec dsvdc sous MAC:
    6770.94641 6114.04721 5950.83628 5897.74379 5787.63128 5737.55805
    5737.09053 5721.57081 5628.51634 5599.15914 5534.91096 5521.86754
    J'imagine que la routine dsvdc renvoie les vecteurs et valeurs singulières.
    As-tu vérifié si dans les deux cas ces valeurs sont consistantes avec la matrice fournie en entrée?

    Ehouarn

  13. #13
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Vérifie que tes matrices U et V (vecteurs singuliers) sont bien orthogonales.
    Jean-Marc Blanc

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 102
    Par défaut
    Merci, en compilant avec le compilateur intel ifort sur un mac puce intel, la compilation passe sans problème et le résulat est conforme à ce que j'ai avec SUN. En reprenant tout à zéro avec gfortran sur mon powerpc, j'obtiens aussi le même résultat. J'ai du faire une erreur à un moment donné lorsque j'essayais de compiler avec g77...

    Merci pour vos réponses à tous.

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

Discussions similaires

  1. porter un program SUN-->MAC
    Par peuf23 dans le forum Fortran
    Réponses: 1
    Dernier message: 26/06/2009, 16h31
  2. récupérer adresse IP en fonction d'adresse MAC
    Par Emcy dans le forum Développement
    Réponses: 9
    Dernier message: 22/01/2009, 09h13
  3. Fonction VBA sous Excel 2004 pour MAC
    Par tatayer_42 dans le forum Excel
    Réponses: 3
    Dernier message: 08/08/2008, 17h26
  4. jvm de sun sous windows et mac os x
    Par cdm1024 dans le forum Général Java
    Réponses: 3
    Dernier message: 21/11/2007, 23h37
  5. Réponses: 7
    Dernier message: 30/07/2007, 09h57

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