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 :

Problème de mémoire


Sujet :

MATLAB

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sri Lanka

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 63
    Points
    63
    Par défaut Problème de mémoire
    Bonjour à tous
    Je veux calculer le gradient de données en matrices 3D (2861*60*205), j’ai 18 matrices et j’ai déjà codé le programme, sauf que j’ai cette erreur

    ?? Out of memory. Type HELP MEMORY for your options.

    Error in ==> run0400_grad_sst90J_THETA_initial at 62
    DT(:,i,j)=(sst_mean(:,i,j)-z_90(:,i,j));
    Je trouve ça bizarre car j’ai 3.5 Go de mémoire et je sais que y’a des gens qui ont déjà travaillé sur ces même données et a qui ont déjà fait le calcul sur un pc avec la même RAM !
    Je me demande donc si j’ai fais une erreur dans mon programme qui a induit cette erreur de mémoire???
    Le voilà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    nti=2861;nlo=60;nla=205;
     
    %*** début boucle longitude 
    for n=1:18%début boucle toutes les 60 longitudes
     chn=int2str(n);
     disp(['début lon',chn ' à ' datestr(now,31)])
     %*** longitude
     lon=lon1(deblon(n):finlon(n));
     
    %******** CHARGEMENT  de la sst 7j :
     ficdon1=['sst_mean_lon' chn];
     don1=[racdon1 ficdon1];
     eval (['load ' don1]);%variable THETA_UV_lon4
     
    %******** CHARGEMENT DES DONNEES SST filtrées à 90j ex lon4 :
     ficdon2=['sst_lon' chn];
     don2=[racdon2 ficdon2];
     eval (['load ' don2]);%variable mat
     z_90=mat;clear mat;%time*lon*lat 2861*60*205 de 70S à 30S
     
       for j=1:nla
          chlat=int2str(j);
          for i=1:nlo
           chlon=int2str(i);
           DT(:,i,j)=(sst_mean(:,i,j)-z_90(:,i,j));
         end%fin lon
       end%fin lat
     
    %*** sauvegarde des données ***
    ficres=['SST_GRAD_90J_7J' chn];
    res=[racres ficres];
    save(res,'GT');
    disp(['fin   lon',chn ' à ' datestr(now,31)])
    clear z THETA_UV GR1 GR2 GR lon
    end

  2. #2
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sri Lanka

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 63
    Points
    63
    Par défaut
    ah je vois que la taille d'une des matrice est 150 Mo == 1200MB normalement
    et moi j'ai un WS 32-bit
    en vérifiant dans le help j'ai vu ceci:
    Example 1: Run the MEMORY command on a 32-bit Windows system:

    >> memory
    Maximum possible array: 677 MB (7.101e+008 bytes) *
    Memory available for all arrays: 1602 MB (1.680e+009 bytes) **
    Memory used by MATLAB: 327 MB (3.425e+008 bytes)
    Physical Memory (RAM): 3327 MB (3.489e+009 bytes)

    * Limited by contiguous virtual address space available.
    ** Limited by virtual address space available.
    il n'y a pas de solution possible à ce problème?
    Merci

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sri Lanka

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 63
    Points
    63
    Par défaut
    désolée d'intervenir encore une fois mais je me rends compte que ce n'est pas le problème d'ouverture de deux matrices au meme temps (mémoire insuffisante) vu que mon autre programme marche sans problème et j'ai ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VPERP_UV=V_mean.*cos(THETA_UV)-U_mean.*sin(THETA_UV);
    sachat que V_mean et U_mean ont les meme taille que sst_mean et z_90

    j'ai aussi essayé de faire tourner sans les boucles i et j
    mais j'ai toujours la même erreur

  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 302
    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 302
    Points : 53 163
    Points
    53 163
    Par défaut
    Pour commencer, et même si cela n'a rien à voir avec le problème de mémoire, modifie les lignes similaires aux suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ficdon1=['sst_mean_lon' chn];
    don1=[racdon1 ficdon1];
    eval (['load ' don1]);%variable THETA_UV_lon4
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ficdon1 = ['sst_mean_lon' chn];
    don1 = fullfile(racdon1,ficdon1);
    load(don1);
    Pour revenir au problème de mémoire, essaie en faisant tourner le programme "à vide" ou par morceaux. C'est à dire en mettant par exemple en commentaire le bloc qui calcul DT et qui fait la sauvegarde à la fin, ou en incrémentant au fur et à mesure le nombre d'itération sur n.

    Une autre idée consiste à utiliser une des deux matrices présentes pour stocker les valeurs finales :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DT = mat;clear mat;%time*lon*lat 2861*60*205 de 70S à 30S
    
       for j=1:nla
          chlat=int2str(j);
          for i=1:nlo
           chlon=int2str(i);
           DT(:,i,j)=(sst_mean(:,i,j)-DT(:,i,j));
         end%fin lon
       end%fin lat
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DT = mat;clear mat;%time*lon*lat 2861*60*205 de 70S à 30S
    
    DT = sst_mean-DT;
    Voire encore en se passant de la matrice DT et en ne travaillant qu'avec mat
    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)

Discussions similaires

  1. [WORD]Problème de mémoire
    Par Dnx dans le forum VBA Word
    Réponses: 17
    Dernier message: 05/10/2005, 14h48
  2. [Tomcat][Spring] Problème utilisation mémoire
    Par Wutintin dans le forum Hibernate
    Réponses: 12
    Dernier message: 08/09/2005, 14h57
  3. [Crystal Report]Problème de mémoire avec le moteur RDC
    Par sur_uix dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 26/05/2005, 09h09
  4. Problème de mémoire avec BDE
    Par Machuet dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/07/2004, 10h11
  5. Problème de mémoire Affichage images
    Par Repti dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2004, 20h06

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