Wie nutzen die Parallelverarbeitung in Matlab
Arbeite ich an einer Zeitreihen-Berechnung. Jede iteration die Berechnung ist unabhängig. Könnte jemand einige Tipps /online-Primer zur Verwendung, die Nutzung der Parallelverarbeitung in Matlab? Wie können diese angegeben werden, innerhalb der eigentlichen code?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie Zugriff auf die Parallele toolbox, schlage ich vor, dass Sie zuerst überprüfen, ob Sie können, tun Sie es der einfache Weg.
Grundsätzlich, statt zu schreiben
Schreiben Sie
Dann verwenden Sie
matlabpool
zu erstellen, die eine Anzahl von Arbeitern (Sie können maximal 8 auf Ihrem lokalen Rechner mit der toolbox, und Tonnen auf einem remote-cluster, wenn Sie auch einen Distributed Computing Server-Lizenz), und führen Sie den code, und sehen schön Geschwindigkeit gewinnt, wenn Ihre Iterationen ausgeführt werden, durch die 8 Kerne statt einer.Obwohl die
parfor
route ist die einfachste, es kann nicht funktionieren direkt aus der box, da Sie möglicherweise Ihre Indizierung falsch aus, oder Sie verweisen auf ein array in einer problematischen Weise usw. Blick auf die mlint Warnungen im editor, die Dokumentation zu Lesen, und verlassen Sie sich auf guten, alten trial-and-error, und Sie sollten es herauszufinden ziemlich schnell. Wenn Sie geschachtelte Schleifen, ist es oft am besten parallelisieren, nur die innerste und sicherzustellen, dass es nicht Tonnen von Iterationen - das ist nicht nur gutes design, sondern reduziert auch die Menge an code, dass könnte ärger geben.Beachten Sie, dass vor allem, wenn Sie führen Sie den code auf einem lokalen Rechner, kann es zu Problemen mit dem Arbeitsspeicher (das könnte manifestieren sich in wirklich langsame Ausführung im parallelen Modus, weil man paging): Jeder Arbeitnehmer erhält eine Kopie des Arbeitsbereichs, so dass, wenn Ihre Berechnung geht es um die Schaffung einer 500MB-array, 8 Arbeiter benötigen insgesamt 4 GB RAM) - und dann noch nicht einmal gestartet, zählen der RAM, der parent-Prozess! Darüber hinaus kann es gut sein, zu verwenden nur N-1 Prozessorkerne auf Ihrem Computer, so dass es noch ein Kern übrig für andere Prozesse, die möglicherweise auf dem computer ausgeführt werden (z.B. eine obligatorische antivirus...).
Mathworks bietet seine eigenen parallel-computing-toolbox. Wenn Sie nicht möchten, zu kaufen gibt es ein paar Optionen
Bearbeiten: Hinzufügen link Parallele MATLAB mit openmp-mex-Dateien
Ich habe nur versucht, die erste.
Nicht vergessen, dass viele Matlab-Funktionen sind bereits Multithreading. Durch sorgfältige Planung können Sie in der Lage, Sie zu nutzen -- überprüfen Sie die Dokumentation für Ihre version von the Mathworks zu sein scheinen die Erhöhung der Reichweite und Anzahl von Multithread-Funktionen mit jedem neuen release. Zum Beispiel scheint es, dass 2010a hat Multithread -
fft
s, welche nützlich sein können für die Zeitreihen der Verarbeitung.Wenn die intrinsische multithreading ist nicht, was Sie brauchen, dann, wie @srean schlägt vor, die Parallel Computing Toolbox ist verfügbar. Für mein Geld (oder eher, dass mein Arbeitgeber Geld) es ist der Weg zu gehen, so dass Sie das Programm parallel in Matlab, anstatt bolt Dinge auf. Ich muss zugeben, auch ich bin ziemlich beeindruckt von der toolbox und den Einrichtungen bietet.