mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Matlab: CPU-Auslastung nur 50%


Autor: Mario M. (mariom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich quäle gerade Matlab mit rechenintensiven Funktionen.
Dabei stelle ich fest, dass die CPU-Auslastung nicht über 50% geht 
(Taskmanager, Windows XP, Matlab 2010a)
Die CPU ist eine Core 2 Duo E6750, zwei Kerne, kein Hyperthreading.
Mache ich nebenbei etwas anderes, öffne z.B. ein Programm, dann geht die 
Auslastung auf 100% hoch.

Kann Matlab nicht beide Kerne benutzen? Woran liegt das? Oder ist das 
Konfigurationssache?

Lg
Mario

: Verschoben durch Admin
Autor: Tilo L. (katagia)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was machst du Matlab?

Berechnungen müssen parallelisiet werden können, damit beide Cores 
benutzt werden. Ergebnisse, die von einander abhängen können, können 
nicht gleichzeitig berechnet werden.

Welche Version von Matlab verwendest du`?

PS: Offtopic ist falsch, das gehört nach PC Hard- & Software

Autor: Mario M. (mariom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verflixt, sorry wegen dem falschen Forum.

Matlab Version siehe oben.

Im Grunde sind es 3 verschachtelte For-Schleifen, die solle man tiptop 
parallelisieren können...

Autor: Tilo L. (katagia)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja Sorry, blind ;)

Du meinst in etwa soetwas?
for (i=0; i<x; i++) {
   for (j=i; j<y; j++) {

da lässt sich gar nichts parallelisieren. Ansonsten bin ich nicht so der 
Matlab Profi, eventuell im Forum von Mathcad nach Hilfe suchen?

Autor: Mario M. (mariom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne, eher so:

for i=1:100
 for j=1:100

  if B(i,j) = ...

  end
 end
end

Aber es ist mir auch sonst schon aufgefallen, das Matlab immmer nur 
einen Kern braucht...kann es das überhaupt, selbstständig die Ware 
parallelisieren?

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mario M. schrieb:
> for i=1:100
>  for j=1:100
>
>   if B(i,j) = ...
>
>   end
>  end
> end

was steckt denn hinter den "..."
vielleicht kann man das ganze ja cleverer aufschreiben.

Autor: Jens G. (jensig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll sich denn da parallelisieren lassen? das sind doch eindeutig 
verschachtelte Schleifen. Wenn die innere Schleife gerade abgearbeitet 
wird, muß doch die äusere Schleife warten, oder was soll die sonst 
machen? Das ist nur was sequentielles, es reicht also nur ein Prozessor 
dafür (sofern ich die Syntax richtig interpretiere, ist es daselbe wie 
die von  Tilo Lutz vermutete Logik).
Ob aber Mathlab parallelisieren kann, kann ich nicht sagen (benutze ich 
nicht). Wenn ich mir aber 
http://www.mathworks.com/support/solutions/en/data... 
anschaue, dann ist es wohl fähig, mehrere CPU's zu benutzen (wenn die 
Aufgabe dies zuläßt).

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jens G. schrieb:
> Was soll sich denn da parallelisieren lassen? das sind doch eindeutig
> verschachtelte Schleifen. Wenn die innere Schleife gerade abgearbeitet
> wird, muß doch die äusere Schleife warten, oder was soll die sonst
> machen?

Wenn es keine Abhängigkeiten zwischen mehreren Ausführungen des 
Schleifenkörpers gibt, dann lässt sich das natürlich parallelisieren. 
MATLAB hat dafür die "parfor"-Anweisung. Inwieweit da 
Datenabhängigkeiten automatisch berücksichtigt werden weiß ich aber 
nicht; außerdem muss die Parallel Computing Toolbox vorhanden sein. 
Einfacher ist es deshalb, die Schleife in Matrix-/Vektoroperationen 
umzuformulieren. MATLAB kann diese seit den neueren Versionen ganz gut 
parallelisieren.

Autor: Michael Lenz (hochbett)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mario,

> ich quäle gerade Matlab mit rechenintensiven Funktionen.> Dabei stelle ich fest, 
dass die CPU-Auslastung nicht über 50% geht
> (Taskmanager, Windows XP, Matlab 2010a)
> Die CPU ist eine Core 2 Duo E6750, zwei Kerne, kein Hyperthreading.
> Mache ich nebenbei etwas anderes, öffne z.B. ein Programm, dann geht die
> Auslastung auf 100% hoch.

> Kann Matlab nicht beide Kerne benutzen? Woran liegt das? Oder ist das
> Konfigurationssache?
Meiner Erfahrung nach nutzt Matlab für die Rechnungen nur einen Kern 
(50%).
Manchmal geht die Auslastung bei Rechnungen auf etwa 70% hoch. Wenn ich 
das richtig deute, handelt es sich aber bei den zusätzlichen 20% 
Rechenleistung um irgendwelche Speicherzugriffe und Rechenzeit für die 
Matlab-Oberfläche.

Wenn Du wirklich parallelisieren willst, müßtest Du Dich wahrscheinlich 
mit der Toolbox für Parallelrechnen 
(http://www.mathworks.com/products/parallel-computing/) vertraut machen.

Bei meinen eigenen Rechnungen umgehe ich diese Toolbox immer. Ich lasse 
einfach zwei Matlab-Instanzen parallel an verschiedenen Problemen 
rechnen und setze die Lösung des Gesamtproblems nachher zusammen.

Gruß,
  Michael

Autor: last (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matlab kann automatisch mehrere Kerne für Berechnungen benutzen, falls 
man die Parallel Computing Toolbox verwendet oder falls die Rechnungen 
"groß genug" also man z.B. 2000 x 2000 Matrizen multipliziert.

Autor: Anon Nymous (fuechslein)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
help parfor

das hat min ruck zuck paralellisiert...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.