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 :

Taille tableau vs option compilateur


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Par défaut Taille tableau vs option compilateur
    Bonjour,
    je travaille sous fedora12, avec GNU Fortran (GCC) 4.4.3 20100127 (Red Hat 4.4.3-4)
    sur une machine 64 bits ayant 4G de RAM.
    J'ai un programme ecrit en Fortran 77 qui tourne tres bien pour des tableaux reduits, mais des que j'en augmente la taille, il se passe cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    gfortran test.for -o test.exe
    /tmp/ccbF3d7k.o: In function `MAIN__':
    test.for:(.text+0x556): relocation truncated to fit: R_X86_64_32S against `.bss'
    test.for:(.text+0x55f): relocation truncated to fit: R_X86_64_32S against `.bss'
    test.for:(.text+0x703): relocation truncated to fit: R_X86_64_32S against `.bss'
    test.for:(.text+0x739): relocation truncated to fit: R_X86_64_32S against `.bss'
    test.for:(.text+0x7bd): relocation truncated to fit: R_X86_64_32S against `.bss'
    test.for:(.text+0x83b): relocation truncated to fit: R_X86_64_32S against `.bss'
    test.for:(.text+0x867): relocation truncated to fit: R_X86_64_32S against `.bss'
    test.for:(.text+0x8aa): relocation truncated to fit: R_X86_64_32S against `.bss'
    test.for:(.text+0x8d7): relocation truncated to fit: R_X86_64_32S against `.bss'
    test.for:(.text+0x8f3): relocation truncated to fit: R_X86_64_32S against `.bss'
    test.for:(.text+0x904): additional relocation overflows omitted from the output
    En parcourant un peu les forums, j'ai vu qu'il pouvait exister une option de gfortran conduisant a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    gfortran -mcmodel=medium test.for -o test.exe  -lpgplot -lX11
    [ishtar CVC]$ ./test.exe
    Processus arrêté
    Comme on peut le voir, le programme compile sans probleme mais... ne fait rien!
    Je voulais savoir s'il etait possible d'avoir acces a d'autres options permettant la manipulations de tableaux 150000x150000xReal8 avec ma petite RAM...
    Merci beaucoup de votre aide, cordialement, Philippe.

  2. #2
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    150 000 * 150 000 * 8 = 180 000 000 000 octets soit:
    175781250 Ko
    171661.376953125 Mo
    167.638 Go

    c'est donc la taille que doit faire ta mémoire central plus le swap pour contenir uniquement ton tableau sachant qu'il est fort possible que tu ait d'autres tableau, plus tout ce que l'os a déjà en mémoire etc...

    ce n'est pas dans les options de compil que tu trouvera ta solution... plutôt chez un revendeur de matériel ayant un peu de mémoire...

    sinon la solution c'est de ne pas stocker entièrement le tableau (stockage creux) j'imagine que tu veux stocker une matrice de rigidité qui doit donc certainement contenir beaucoup de cases avec un zéro dedans... donc inutilie de stocker cette variable...
    si la matrice est symétrique: stocke que la moitié...
    sinon utilise des méthodes de résolution qui ne nécéssite pas de stockage de la matrice...

  3. #3
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Par défaut
    Merci de ta reponse, que j'esperais autre... Il s'agit d'un programme de fit par moindre carres, la matrice en question est une matrice de covariance...
    Je vais essaye de voir d'autres algorithmes...
    Encore merci, Philippe.

  4. #4
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    les questions à se poser:
    - quels sont les termes non nul (ou différents d'une certaine valeur)?
    - as-tu besoin de tous les termes en même temps?
    - si matrice très "éparpillée" (termes rangés un peu n'importe comment) possibilité de renumérotation pour avoir une bande utile réduite
    - stockage possible en disque dur... mais très lent...

    malheureusement pour toi, 22 500 000 000 d'éléments dans un tableau cela commence à faire beaucoup!

Discussions similaires

  1. Taille tableau par utilisateur
    Par nicodn02 dans le forum C
    Réponses: 56
    Dernier message: 26/04/2007, 17h28
  2. Aligner taille tableau sur celui du dessous
    Par linar009 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/09/2006, 16h02
  3. besoin d'aide probleme taille tableau
    Par zhao dans le forum C++
    Réponses: 8
    Dernier message: 28/09/2006, 09h14
  4. [Tableaux] taille tableau a deux dimensions
    Par nath-0-0 dans le forum Langage
    Réponses: 2
    Dernier message: 24/08/2006, 18h04
  5. [Tableaux] trouver taille tableau html en php
    Par eulalie15 dans le forum Langage
    Réponses: 4
    Dernier message: 03/07/2006, 13h47

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