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

Matlab nur maximal 12% CPU Auslastung

 

leider bereits belegt

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2017, 16:47     Titel: Matlab nur maximal 12% CPU Auslastung
  Antworten mit Zitat      
Hallo,
Matlab läuft bei mir auf einem Dual CPU Server unter Windows Server 2016. Leider scheint Matlab nie mehr als ca. 12% der CPU zu nutzen. Ich habe bereits versucht, einen Parallel Pool zu starten mit 8 Workern (2x4Kerne). Das scheint aber auch nicht zu helfen. Muss ich in meiner Funktion etwas anpassen? Die Funktion beinhaltet primär mehrere Iterationen über eine While Schleife


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.07.2017, 08:33     Titel:
  Antworten mit Zitat      
Hallo,

parallel pools helfen nur dann, wenn du ein paralleles Konstrukt wie z.B. parfor verwendest. Videos zum parallelen Rechnen unter MATLAB:
https://www.mathworks.com/videos/se.....ting-tutorials-97719.html

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
leider bereits belegt

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2017, 08:41     Titel:
  Antworten mit Zitat      
Gibt es dann eine Möglichkeit, wie ich die CPU-Nutzung erhöhen kann? Die Schleifen laufen unnötig lange, da einfach 80% der verfügbaren Ressourcen nicht genutzt werden. Über die Windows eigene Prozesspriorisierung habe ich es bereits versucht. Selbst "Realtime" scheint hier keine Auswirkungen zu haben.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.07.2017, 17:20     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Gibt es dann eine Möglichkeit, wie ich die CPU-Nutzung erhöhen kann?

Das hängt vom Inhalt der while-Schleife ab. Wenn sie beispielsweise zeitintensive for-Schleifen enthält: ja.

Zitat:
Die Schleifen laufen unnötig lange, da einfach 80% der verfügbaren Ressourcen nicht genutzt werden.

Ob das unnötig ist oder nicht, ist Ansichtssache.
Die Frage ist, ob eine Parallelisierung möglich ist. Wenn eine Person 8 Minuten braucht, um Spaghetti zu kochen, kannst du ja auch nicht erwarten, dass 8 Personen dann die Spaghetti in einer Minute gekocht haben.

Mehr kann man ohne genauere Kenntnis des Codes einfach nicht sagen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
leider bereits belegt

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2017, 17:27     Titel:
  Antworten mit Zitat      
Ich habe mich nun etwas in Parallel Pooling eingelesen. Unter anderem auch in Parfor.
Da bei meinen While Schleifen jede auf der vorigen aufbaut, ist ein Nutzen von ParFor und eigentlich des kompletten Parallel Pooling nicht möglich.
 
Harald
Forum-Meister

Forum-Meister


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

while-Schleifen sind wie gesagt nicht parallelisierbar.
Wenn aber jede Iteration der while-Schleife min. einige Sekunden braucht und der Inhalt der Schleife parallelisierbar ist, dann kann das eine Option sein.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
leider bereits vergeben

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2017, 08:02     Titel:
  Antworten mit Zitat      
Jeder Durchlauf benötigt leider nur ein bis zwei Sekunden und der Inhalt ist schwer parallelisierbar. Ich werde es jetzt mal über zwei Schleifen versuchen, wobei die erste mit größeren Schritten eine Approximation rechnet und diese dann in die zweite übergibt.
Matlab R2017a unterstützt anscheinend, dass man manuell Ergebnisse einer Funktion in den Cache schreibt mit memoize. Ich werde mal versuchen, ob ich das noch einbauen kann.
Gibt es eine Möglichkeit herauszufinden, was an der While-Schleife die lange Durchlaufzeit verursacht, ohne den Prozessor richtig auszulasten?
 
Harald
Forum-Meister

Forum-Meister


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

das gibt es nur den Profiler (HOME --> Run and Time).

Grüße,
Harald
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 - 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.