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 :

Erreur sous ifort : severe (174): SIGSEGV, segmentation fault occurred


Sujet :

Fortran

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 23
    Points : 11
    Points
    11
    Par défaut Erreur sous ifort : severe (174): SIGSEGV, segmentation fault occurred
    Bonjour
    J'essaye d'exécuter un code fortran 90 avec le compilateur intel fortran Composer 2013 sous Linux. Ça passe sans problème à la compilation mais à l’exécution, j'ai l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     forrtl: severe (174): SIGSEGV, segmentation fault occurred
    au niveau de ces lignes de code où j'appelle une fonction lapack :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    !! Decomposition en valeurs singulieres
    M = Factor_long*taille; N = 2*N_Emetteurs_CBFM
    Allocate( AA(M,N), S(MIN(M,N)),U(M,M),VT(N,N), WW(MIN(M,N)-1)) 
    AA = Epatch
    call GESDD(AA,S,U=U, VT=VT, JOBZ='A')
    J’exécute ce code sur plusieurs boucles, et le vrai problème est que n'arrive pas à trouver une explication vu que ça passe dans des versions simples, et ça passe aussi dans des versions multi-niveaux uniquement pour le premier niveau.
    J'ai tout essayé : l'option -heap-arrays ne corrige pas le problème, ulimit -s unlimited pour l'environnement ifort n'a rien fait aussi.
    Est ce que quelqu'un aura s'il vous plait une explication pour tout ça. Merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Bonjour.

    Est-ce qu'il ne manque pas un deallocate en fin de boucle ?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Merci pour votre réponse. A priori, non tout est bien fait à la fin de la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Deallocate(AA,S,U,VT,WW)
    Le problème n'a pas à mon avis une relation avec une erreur dans le code mais dans la gestion d mémoire. Parce que parfois il suffit que je change quelques paramètres à l'entrée du programme de façon à ce que le problème à résoudre soit plus petit et ça marche. C'est très aléatoire, ça marche pour des versions simples mono niveau du calcul et ça bugge à un nième niveau d'une version multi niveaux. Je ne comprends pas la cause !!

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut version lapack ?
    De quelle version s'agit-il ?

    Plusieurs bogues sur cette procédure ont été signalées dans la version 3.4.1 (listées sur le site de NETLIB).
    Ces problèmes ont été corrigés dans les livraisons plus récentes.

    Difficile d'en dire plus avec si peu de code.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    En plus, bizarrement, ça marche parfaitement avec ifort sous Windows. Je pense que ce n'est pas du au code mais à un paramètre de compilation ou de l'environnement.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Citation Envoyé par annoussa86 Voir le message
    En plus, bizarrement, ça marche parfaitement avec ifort sous Windows. Je pense que ce n'est pas du au code mais à un paramètre de compilation ou de l'environnement.
    En général (disons dans 95% des cas) le fait qu'un code "marche" avec un compilateur sur une machine et ne "marche plus" en changeant de compilateur ou de machine est lié à un défaut du code lui-même.

    Que donnent la compilation (et l'exécution) de ton code en enclenchant toutes les options de debug disponibles ? par ex.:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ifort -p -g -O0 -fpe-all=0 -traceback -ftrapuv -fp-stack-check -check all -debug

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Bonjour et merci pour votre réponse.
    J'ai essayé de compiler avec toutes les options comme vous me l'avez indiqué. Il m'affiche déjà à l'exécution (rien à la compilation) une erreur dans un stade très avancé dans le code (aucune relation avec l'autre erreur)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Attempt to use pointer PARAM_EXP_NAME when it is not associated with a target
    Sans les options ajoutées, je n'avais pas ce problème !! C'est du à quoi à votre avis S'il vous plait.

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    La dernière erreur était due à une variable que j'alloue occasionnellement (si j'ai un nombre d’expérience >1) et que je passe en argument quand même dans tous les cas. Elle ne fausse pas le calcul et elle ne cause des problèmes qu'avec un '-check all'. Je poursuis la chasse aux erreurs ...

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    J'aboutis finalement toujours au même problème au niveau de la même ligne au même moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    call GESDD(AA,S,U=U, VT=VT, JOBZ='A')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    forrtl: severe (174): SIGSEGV, segmentation fault occurred
    !!? Je ne comprends pas pourquoi ? et que dois faire pour l'éviter ?

  10. #10
    Membre actif
    Profil pro
    ingénieur
    Inscrit en
    Novembre 2011
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Novembre 2011
    Messages : 165
    Points : 259
    Points
    259
    Par défaut
    difficile à dire comme cela. Essaie de compiler avec les options de debug et passe ton binaire au debugueur, ça te permettra de voir quel est l'état de la mémoire lors du plantage.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Si malgré les options de debug tu n'obtiens qu'un message aussi sommaire que
    forrtl: severe (174): SIGSEGV, segmentation fault occurred
    lors de l'entrée dans GESDD (la routine Lapack j'imagine), c'est possiblement que:
    - GESDD est buggé (peu probable si c'est la routine Lapack).
    - et/ou les arguments fournis à GESDD ne sont pas bons (pas du bon type ou de la bonne taille, etc.); à vérifier.
    - et/ou plus bêtement parce que tu ne disposes pas d'assez de mémoire lors de l'entrée dans GESDD. Regarde ce que te renvoie (à supposer que tu es sous Linux/Unix) la commande "unlimit -a" à la ligne "stack size" et augmente cette valeur (via la commande "ulimit -s unlimited") puis relance l'exécution du code.
    - et/ou ... (là je suis a cours d'idées)

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/12/2013, 09h19
  2. Réponses: 2
    Dernier message: 23/04/2012, 23h07
  3. Réponses: 2
    Dernier message: 07/03/2010, 00h20
  4. Réponses: 0
    Dernier message: 10/01/2008, 23h28
  5. Réponses: 15
    Dernier message: 15/04/2007, 13h31

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