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

Out of memory abfangen

 

JeefoWin32
Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 24.12.09
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 28.07.2011, 13:25     Titel: Out of memory abfangen
  Antworten mit Zitat      
Hallöle,

ich hab auf meinem Laptop das Problem, dass Matlab da gerne mal der Speicher zu eng wird. Der Laptop hat "nur" 3GB Arbeitsspeicher. Standardreaktion sind rote Buchstaben und ein out of memory Fehler bei Skalarprodukten mit Vektoren die eine Länge von 10^6 bis 10^7 haben.

Nun würd ich gerne in manchen Programmabläufen solches Auftreten filtern und stattdessen nicht das Matlabinterne-Skalarprodukt laufen lassen, sondern es als Summe berechnen lassen (also Summe der Produkte der Vektorkomponenten). Dies allerdings auch nur wenn Matlab gefahr läuft den ganzen Speicher vollzuballern. Auf einem 2. Rechner habe ich 8GB Speicher und die Berechnung des Skalarproduktes lässt sich ganz einfach durchführen. Da sollte dann alles "normal" ablaufen, ich würde auf beiden Systemen aber gerne die gleichen m-files verwenden. Nun die Frage wie man den Fehler filtert und ihn entsprechend umgehen kann. Reicht da ein einfacher try-catch Block? (und wenn ja, wie würde der aussehen?^^)

Gruß,
JeefoWin32

P.S. beide Syteme verwenden Windows 7 in der x64 Variante.
Private Nachricht senden Benutzer-Profile anzeigen


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 28.07.2011, 15:04     Titel:
  Antworten mit Zitat      
Hallo,

10^6-10^7? Hmm, d.h. ein Vektor hat maximal um die 80 MB? Das sollte eigentlich den Rechner nicht gleich aus der Bahn werfen. Wie berechnest Du denn das Skalarprodukt? Ein einfaches x'*y dürfte weder Speicher verbrauchen noch sonstige Probleme machen ...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
JeefoWin32
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 24.12.09
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 28.07.2011, 17:57     Titel:
  Antworten mit Zitat      
Hey,

berechne ich ganz normal über x'*y, geht auch im Normalfall, aber da is ja dann noch einiges mehr im Speicher und dann wirds wohl irgendwann eng. Also 2.1/3GB belegt und dann ein Skalarprodukt mit 1,6mio Einträgen, zack, Dienst verweigert. Lässt in Matlab auf spezielle Errormessages ab-if-en?

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
MatLabNooB
Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2011, 20:31     Titel:
  Antworten mit Zitat      
ich denk du musst vorher berechnen wieviel Speicher für die Berechnung gebraucht wird, dann schaust du wieviel Speicher zur Verfügung steht, siehe "memory-befehl" und arbeitest dann entsprechend über eine if-else-Bedingung...

gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.07.2011, 21:25     Titel:
  Antworten mit Zitat      
Hallo,

ein Vektor der Größe 1e7 braucht ca. 80 MB. Drei davon (zwei Argumente + Ergebnis) brauchen also "nur" 240 MB. Sprich, das Problem liegt nicht in dieser Operation, sondern in einem sorglosen Umgang mit Speicher.

try-catch sollte eine Fehlermeldung vermeiden, ich empfehle allerdings, das Problem an der Wurzel anzugehen: vernünftiger Umgang mit dem Speicher!

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
JeefoWin32
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 24.12.09
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 31.07.2011, 21:25     Titel:
  Antworten mit Zitat      
Hey,

wenn die beiden Vektoren 80MB brauchen, benötigt das Ergebnis des Skalarproduktes als Zahl hoffentlich keine weiteren 80MB Wink
Wenn man allerdings noch ein paar andere Dinge im Speicher hat, schmeißts immer out of Memory Warnungen.
Ich lass es einfach als eigene Schleife durchlaufen, so scheints zu gehen.

Trotzdem danke

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.07.2011, 22:14     Titel:
  Antworten mit Zitat      
Stimmt, und um so besser. Tja, dann wirst du eben sehen müssen, dass du nicht x Sachen gleichzeitig im Speicher hast - oder dir mehr Arbeitsspeicher + 64 bit zulegen müssen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 31.07.2011, 23:02     Titel:
  Antworten mit Zitat      
lt. irgendeiner Matlabonlinehilfe sollte
Code:
feierSpeicher=memory

gehen.

K.A. ob das für alte oder neue Versionen war, mit der 7.1 gehts nicht.
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
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 - 2025 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.