Leider läuft mir bei der Simulation immer der Speichwer voll (Out of memory), aber er nutzt maximal 2gb Arbeitsspeicher von 4 vorhandenen gb wie kann ich dieses Problem lösen und ihm sagen er soll mehr abrebitsspeicher nutzen. Oder gibt es eine andere Lösung?
Möglicherweise hat eine Rechenoperation mehr Speicherbedarf als vorhanden ist, dann würde sich das nicht im Speicherverlauf darstellen, weil sofort abgebrochen wird.
Mit einem einfachen Code kannst du sehen, wie der Speicher aufakkumuliert wird:
Code:
ii = 1; while true, C{ii} = rand(1000); ii = ii + 1; end
Achtung (!): Endlosschleife, Abbruch mit Strg + C (Windows).
Alternativ kannst du dir virtuellen Speicher anlegen, der aber massiv langsamer arbeitet, als der RAM.
Es gibt sehr viele Gründe und ebenso viele Möglichkeiten es zu lösen.
"Simulation" heisst Simulink?
Wenn ja: Wo werden welche Ergebnisse in den Speicher geschrieben? (To Workspace, Scope, Out) und was könnte man davon reduzieren (Ungenutzte Kanäle, Dezimation der Zwischenschritte, Datentypen)?
Windows XP stellt für Programme maximal 2 GB Arbeitsspeicher zur Verfügung, obwohl Insgesamt 4 GB verfügbar sind.
Es ist möglich in BOOT.INI einen Switch auf 3GB zu setzen. Das hilft schon mal ein wenig
Je nachdem, was du simulierst, und welche Zwischenwerte du brauchst, kannst du dir ein einfaches Skript schreiben, das dir deine Simulation aufruft und die letzten Zwischenwerte die du brauchst speichert. Matlab beenden, neustarten und Skript wieder ausführen (natürlich die letzten Werte am Anfang laden lassen) ... hab ich mal so gemacht. Geht ganz gut, wenn einem der Prozessspeicher vollläuft, ohne dass der Workspace selber zu groß ist, bzw. wenn du für die weitere Berechnung nicht alle Zwischenergebnisse brauchst.
Wenn die Simulation so zu lange dauern würde, bzw. du 1000mal matlab neu starten müsstest, kann man matlab auch sehr fein übers terminal starten lassen:
(matlabP-> Pfad zu deiner Matlab.exe, scriptName: Das Skript, das du ausführen möchtest)
Das baust du dir in eine Schleife ein, die halt schaut, ob matlab fertig ist, oder nicht. (Ich hab das glaub ich gemacht, indem geprüft wird, ob der letzte Zwischenschritt schon als datei vorliegt oder nicht, weil Matlab selber über irgendeinen 'subprozess' oder so gestartet wird, sodass der normale befehl \wait (wartet mit dem nächsten Terminalschritt bis der vorherige beendet wurde) nicht funktioniert)
Aber ... weiß halt nicht genau, wo dein Problem liegt
Options and Permissions
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
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.