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
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
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...
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?
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?
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.
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/1-6XY1ZX/index.html?product=ML&solution=1-6XY1ZX anschaue, dann ist es wohl fähig, mehrere CPU's zu benutzen (wenn die Aufgabe dies zuläßt).
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.
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
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.