WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Speicherprobleme

 

Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2009, 09:27     Titel: Speicherprobleme
  Antworten mit Zitat      
Guten Morgen!

Ich habe jetzt schon seit einiger Zeit Probleme mit dem Speicher bei Matlab. Ich muss relativ goße Datenmengen auswerten und leere den Speicher nach jedem Programm mit dem Befehl "clear". Ich dachte, dass durch diesen befehl der gesamte Speicher wieder freiegegeben wird. Allerdings zeigt sich folgendes:

Physical Memory (RAM):
In Use: 339 MB
Free: 659 MB
Total: 999 MB
Page File (Swap space):
In Use: 543 MB
Free: 1862 MB
Total: 2406 MB
Virtual Memory (Address Space):
In Use: 1387 MB
Free: 660 MB
Total: 2047 MB

Gibt es dafür eine Erklärung? Es ist ziemlich nervig, da ich momentan nach jeder Auswertung Matlab neu starten muss, um mit der nächsten Auswertung fortzufahren. Ansonsten erscheint immer die Fehlermeldung "out of memory".
ich hoffe, ich habe mein Problem verständlich geschildert und würde mich freuen, schon bald einen Lösungsvorschlag zu bekommen.

Beste Grüße


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 10.11.2009, 09:56     Titel:
  Antworten mit Zitat      
Es gibt sehr viele verschiedene Optionen wie man auf MATLAB Seite dem begegnen kann. Ich würde gerne mehr über die "relativ grossen Datenmengen" und die Art der Auswertung wissen. Ein paar Eingangsfragen:

o 32 Bit oder 64 Bit System? Ist ein 64 Bit Rechner zur Verfügung?

o Wie grosse ist die grösste Variable im Workspace? Wird sie schon in der Grösse eingelesen oder ist sie Ergebnis einer Berechnung?

o Können Daten von DOUBLE in kleinere Datentypen umgewandelt werden?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2009, 10:11     Titel: Berlin
  Antworten mit Zitat      
Hallo!
Zunächst vielen Danke für die schnelle Antwort! Die Auswertungen führe ich auf einem 32Bit-System durch. Ein 64-Bit-System steht leider nicht zur Verfügung.
Ich lese Daten in der Größe von ~150MB ein, filter meine benötigten Daten heraus, lege diese in einer neuen struktur ab, lösche die Daten aus dem Workspace und lese die nächsten daten ein...usw. wie gesagt, ich bereinige den Workspace regelmäßig mit "clear", dennoch wird der Speicher nicht geleert.
Also mit den Datentypen kenne ich mich noch nicht so gut aus. es sind halt Messwerte mit einer Genauigkeit von 4 Nachkommastellen. Diese lege ich incl. zugehöriger Namen in einer Struktur ab.
Aber dennoch...wird mit dem Befehl "clear" also nicht der gesamte Speicher gelöscht und wieder freigegeben?
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 10.11.2009, 10:53     Titel:
  Antworten mit Zitat      
150 MB sollten eigentlich kein Problem darstellen, zumal ja die weitere Verarbeitung nur mit einem Teil der Daten geschieht.

Wenn Struktur im Sinne von STRUCT gemeint ist könnte das eine Teil des Problems darstellen. STRUCTs sind nicht sehr speichereffizient.

CLEAR löscht zwar die Variablen, aber letzendlich wird nur der Verweis gelöscht - der Speicher fragmentiert zunehmend. Da kann es helfen mit CLEAR und PACK zu arbeiten.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2009, 11:14     Titel:
  Antworten mit Zitat      
Also meine Ausgangs-Daten sind ebenfalls in Strukturen gespeichert. Ich rufe nacheinander 5 Strukturen (jeweils ~150MB) auf und lösche diese wieder. Meine benötigten Daten speicher ich in 50 Strukturen ab, die jeweils eine Größe von 6MB haben. Diese speicher ich ab und lade sie nur in den Workspace, wenn ich diese auch benötige.
Ich habe es auch schon mit "pack" versucht. Aber das hat so gut wie gar nicht geholfen. Gibt es denn eine sinnvolle Alternative zu Strukturen "Struct"?
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 10.11.2009, 11:28     Titel:
  Antworten mit Zitat      
Woher kommen denn die STRUCT Daten? Sind das schon MAT Dateien von anderen Nutzern? Was passiert denn hinterher damit, also welche Art von Datenverarbeitung?

Hier ein Beispiel aus der Signalverarbeitung. Man kann sich vorstellen diese sind einiger Millionen Messwerte in DOUBLE. Diese Präzision braucht aber keiner:

Code:

clear all
close all
clc

n=12000;

tic
t=0:0.001:n;
r=0.2*rand(1,length(t));
y=sin(t)+r;
% plot(t,y)
Y2=fft(y);
whos t y Y2
toc

clear all
close all

n=12000;

tic
t=single(0:0.001:n);
r=0.2*rand(1,length(t));
y=sin(t)+r;
% plot(t,y)
Y2=fft(y);
whos t y Y2
toc
 


Für mittleres n (z. B. 4000) sehe ich einen Speicher- und Performancevorteil von 2x. Komme ich an Speichergrenzen, wie z.B. 12000, dann habe ich einen Performancevorteil von 6x.

Andreas[/code]
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2009, 11:40     Titel:
  Antworten mit Zitat      
Genau. Die STRUCT Daten bekomme ich schon als MAT Dateien von anderen Nutzern.
Ich werte diese Daten nach verschiedenen Kriterien aus, so dass ich entsprechend die benötigten Daten heraus filter und in einer neuen kleinen STRUCT speicher. Letztendlich lasse ich mir verschieden Grafiken ausgeben.
Also ich benötige schon alle Messwerte, in dieser Hinsicht wäre also kein Platz zu sparen.
Ich habe jetzt auch noch immer nicht ganz verstanden, warum Matlab nach dem Befehl "clear" nicht den gesamten Speicher leert...
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 10.11.2009, 12:33     Titel:
  Antworten mit Zitat      
Hallo
Struct braucht einfach großen zusammenhängenden Speicherblock
Außer Struct hast du bestimmt noch andere Variablen.
Z.B.
Es stehen 300MB zur Verfügung
Struct nimmt 150 MB,
dann reservieren noch andere Variablen für sich Speicher.
Wenn du Struct löscht, wird zwar Speicher frei, aber es bleiben zu Hälfte reservierte Blöcke trotzdem übrig.
Also hast du deswegen keinen zusammenhängenden Block mehr der Groß genug wäre, und es kommt zu diesem Out of Memory.

Es passiert oft dass es beim Laden zu Out of Memory kommt, da die Daten noch komprimiert sind, brauch Matlab kurzzeitig sogar mehr Speicher.

Versuch Structs unkomprimiert umzuspeichern, arbeite dann nur mit diesen Files
Code:

save FILE_NAME.M  STRUCT_VARIABLE -V6
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2009, 12:17     Titel:
  Antworten mit Zitat      
Vielen Dank für die zahlreichen Antworten bisher!
Dass die Strukturen also viel Speicher benötigen, habe ich inzwischen verstanden. Aber warum wird mit dem Befehl "clear" nicht wieder der ganze Speicher freigegeben?
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 16.11.2009, 13:37     Titel:
  Antworten mit Zitat      
Der Speicher wird freigegeben, aber der zu Verfügung stehende Speicher wird immer weiter fragmentiert.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2009, 12:50     Titel:
  Antworten mit Zitat      
Hallo nochmal!
Ich habe das mit dem Speicher wohl immer noch nicht so richtig verstanden. Dass der Speicher aufgrund der Strukturen immer weiter fragmentiert wird, verstehe ich ja noch. Aber warum stellt der Befehl "clear" nicht den kompletten Speicher wieder her bzw. defragmentiert den Speicher wieder?
Ich habe das Problem, dass ich momentan regelmäßig Matlab neu starten muss, damit die Programme wieder laufen. Beim Neustart von Matlab wird also der gesamte Speicher wieder hergestellt. Gibt es da keinen Befehl, der mir den Neustart erspart?
 
baronsocke
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 21.05.14
Wohnort: Köln
Version: ---
     Beitrag Verfasst am: 02.07.2014, 13:43     Titel:
  Antworten mit Zitat      
Ich habe ein ähnliches Problem wie hier geschildert wurde.

Ich arbeite an einem 32bit Windows Rechner.
In Matlab muss ich RAW-Bilder (jeweils eine Größe von 50 MB) auswerten.
Nach meinen Testaufnahmen habe ich ca. 400 RAW Bilder á 50 MB, die ich erstmal ganz normal auf der Festplatte speichere.
Nacheinander muss ich die Bilder auswerten, jedoch brauche ich immer 19 Bilder auf einmal. Diese 19 Bilder speichere ich in einem STRUCT ab.

Hier stoße ich an das gleiche Problem wie mein Vorposter. Der Rechner gibt irgendwann eine Fehlermeldung mit "out of memory" aus. Der Befehl "clear" reicht nicht, um genug Speiche freizugeben, ich muss Matlab neu starten.

13 Bilder kann ich auf einmal verarbeiten, bei 19 meckert er immer.

Wie kann ich das Problem lösen?
Besteht die Möglichkeit nur Pfade abzuspeichern?

Besten Dank und viele Grüße

Yvo
Private Nachricht senden Benutzer-Profile anzeigen
 
HansPeterJosef

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2014, 13:12     Titel: Hilfe
  Antworten mit Zitat      
Very Happy Very Happy
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.