|
JeefoWin32 |

Forum-Anfänger
|
 |
Beiträge: 44
|
 |
|
 |
Anmeldedatum: 24.12.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 28.07.2011, 13:25
Titel: Out of memory abfangen
|
 |
|
 |
|
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.
|
|
|
|
|
Titus |

Forum-Meister
|
 |
Beiträge: 871
|
 |
|
 |
Anmeldedatum: 19.07.07
|
 |
|
 |
Wohnort: Aachen
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.07.2011, 15:04
Titel:
|
 |
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
|
|
|
JeefoWin32 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 44
|
 |
|
 |
Anmeldedatum: 24.12.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 28.07.2011, 17:57
Titel:
|
 |
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
|
|
|
MatLabNooB |

Forum-Guru
|
 |
Beiträge: 262
|
 |
|
 |
Anmeldedatum: 27.03.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.07.2011, 20:31
Titel:
|
 |
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ß
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 28.07.2011, 21:25
Titel:
|
 |
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
|
|
|
JeefoWin32 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 44
|
 |
|
 |
Anmeldedatum: 24.12.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 31.07.2011, 21:25
Titel:
|
 |
Hey,
wenn die beiden Vektoren 80MB brauchen, benötigt das Ergebnis des Skalarproduktes als Zahl hoffentlich keine weiteren 80MB
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
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 31.07.2011, 22:14
Titel:
|
 |
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
|
|
|
Andy386 |

Forum-Guru
|
 |
Beiträge: 485
|
 |
|
 |
Anmeldedatum: 24.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.1/8
|
 |
|
|
 |
|
Verfasst am: 31.07.2011, 23:02
Titel:
|
 |
lt. irgendeiner Matlabonlinehilfe sollte
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...
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|