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

MATLAB Discussion :

Partage d'une fonction créée avec un Mex-file


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Partage d'une fonction créée avec un Mex-file
    Bonjour,

    Voici mon souci :
    Je dois intégrer du code Fortran à un programme Matlab. Pour celà, j'ai utilisé la fonction mex qui permet d'interfacer Fortran/matlab.
    Je récupère donc un exécutable matlab(.mexglx car je bosse sous linux) que je peux lancer depuis ma console matlab. Jusque là tout va bien.

    Problème : je dois pouvoir utiliser cette fonction dans un projet sur la machine d'une collègue

    Dans la doc matlab, c'est écrit que ce .mexglx se comporte exactement comme un M-file mais quand j'essaie de l'exécuter sur la machine de ma collègue, j'obtiens un gros plantage matlab avec un segmentation fault (apparement, ça plante au lancement, lorsque le linkage dynamique s'effectue). Alors j'ai essayé toutes sortes de choses : placer les fichiers objets dans le même répertoire, fournir les sources etc... mais rien à faire toujours la même erreur !

    Est-ce que quelqu'un sait comment partager une fonction créée avec un mex-file ??

    Merci d'avance à tous ceux qui prendront du temps pour répondre à ma question.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Pourrais-tu nous montrer le message d'erreur complet (même si ça semble incompréhensible...)

    Sinon, y-a-t-il des différences entre les deux machines (version de MATLAB, système d'exploitation...) ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci de t'intéresser à mon problème.

    Je bosse sour Linux (red hat 5) et elle, sa machine est sous red hat 4.
    Pour ce qui est de la version de Matlab c'est exactement la même puisqu'on la récupère sur le même serveur. C'est la version 7.4.

    Et l'erreur, la voici :

    ------------------------------------------------------------------------
    Floating point exception detected at Wed Aug 27 17:13:21 2008
    ------------------------------------------------------------------------

    Configuration:
    MATLAB Version: 7.4.0.336 (R2007a)
    MATLAB License: ****
    Operating System: Linux 2.6.9-22.EL #1 Mon Sep 19 18:20:28 EDT 2005 i686
    GNU C Library: 2.3.4 stable
    Window System: The X.Org Foundation (60802000), display :0.0
    Current Visual: 0x21 (class 4, depth 24)
    Processor ID: x86 Family 15 Model 4 Stepping 7, GenuineIntel
    Virtual Machine: Java 1.5.0 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode
    Default Charset: UTF-8

    Register State:
    eax = 0f4d007f ebx = 0095bfd4
    ecx = 00000000 edx = 00000000
    esi = 09f18fa8 edi = 00a8d2ee
    ebp = bff81f84 esp = bff81f3c
    eip = 0094e47c flg = 00010246

    Stack Trace:
    [0] ld-linux.so.2:0x0094e47c(0x00a8d120, 0xbff82014, 0x09f19100, 0)
    [1] ld-linux.so.2:0x0094e822(0x09f19154, 0, 0, 1)
    [2] ld-linux.so.2:0x0094fcc4(0x09f18fa8, 0x09f19154, 0, 0)
    [3] libc.so.6:0x00a5e96a(0xbff82340, 0x09e8c7c4, 0xbff83654, 0xa6338cb0)
    [4] ld-linux.so.2:0x0095207e(0xbff82340, 0x0941fb5c, 6, 0x44200000)
    [5] libc.so.6:_dl_open~(0xfffffffe, 0xbff824e0, 0x0095bca0, 0x0095bfd4) + 152 bytes
    [6] libdl.so.2:0x00ab4cb8(0xbff824e0, 0, 0, 0)
    [7] ld-linux.so.2:0x0095207e(0xbff824e0, 0x00ab4f50, 0xb740b9f0 ", 0x00770de3)
    [8] libdl.so.2:0x00ab52bb(2, 2, 2, 2)
    [9] libdl.so.2:dlopen~(0x09ba451d "/home/******/Desktop/ema/scal..", 2, 0xbff82548, 0x0139ad00 ") + 65 bytes

    This error was detected while a MEX-file was running. If the MEX-file
    is not an official MathWorks function, please examine its source code
    for errors. Please consult the External Interfaces Guide for information
    on debugging MEX-files.

    If it is an official MathWorks function, please
    follow these steps to report this problem to The MathWorks so we
    have the best chance of correcting it:

    The next time MATLAB is launched under typical usage, a dialog box will
    open to help you send the error log to The MathWorks. Alternatively, you
    can send an e-mail to segv@mathworks.com with the following file attached:
    /home/******/matlab_crash_dump.21902

    If the problem is reproducible, please submit a Service Request via:
    http://www.mathworks.com/support/con...request_1.html

    A technical support engineer might contact you with further information.

    Thank you for your help. Save your workspace and restart MATLAB.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 886
    Points
    52 886
    Par défaut
    As-tu essayé l'exécution pas à pas ?

    => Debugging Fortran Source MEX-Files
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Après avoir bien galéré, nous avons trouvé une solution provisoire qui marche : retourner sous une ancienne version de matlab (r14.3), tout recompiler avec gfortran à la place de g95 et f95 et créer le mex-file directement sur la machine de ma collègue.

    Ce n'est pas l'idéal... donc je vais continuer à chercher...

    Mais, merci beaucoup en tous cas.

  6. #6
    Membre averti

    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 352
    Points
    352
    Par défaut
    je regarderais s'il n'y a pas quelques depassements d'indices dans les tableaux dans votre programme fortran....

    Salutations,

    Greg

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Points : 73
    Points
    73
    Par défaut
    Oui c'est assez courant comme problème. En fait, certains gardent des veillent versions de Matlab pour pouvoir distribuer des mexfiles qui fonctionneront sur les versions ultérieures.

    Pourquoi ne recompilez-vous pas le mex file sur la machine de votre collègue ?. c'est la solution. Ca peut venir également d'options de compilation (optimisations par rapport à un type de processeur) liées à la premiere machine.

Discussions similaires

  1. Erreur avec une fonction créée
    Par ptitemeuh dans le forum Débuter
    Réponses: 6
    Dernier message: 08/12/2011, 10h14
  2. Réponses: 0
    Dernier message: 11/01/2010, 10h49
  3. [PHP-JS] une fonction php avec parametres javascript
    Par kagura dans le forum Langage
    Réponses: 1
    Dernier message: 02/03/2006, 18h10
  4. Apelle d une fonction js avec la valeur d'une listbox
    Par echecetmat dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/02/2005, 16h53
  5. Creation d'une fonction temporaire avec droit datareader
    Par Bjuice2 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/10/2004, 14h26

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