Ich versuch seit einiger Zeit die hier aufgeführten beiden Teile parallel rechnen zu lassen. Mit spmd oder parfor bin ich leider nicht weit gekommen. Gibt es nicht eine Möglichkeit, jeden Teil explizit einem worker zuzuweisen? Prinzipiell ist alles schon schön vektorisiert, doch muss ich noch schneller werden.
Ich würde allerdings vorher noch überprüfen, ob sich die Verwendung von repmat nicht durch eine Verwendung von bsxfun ersetzen lässt - es sieht mir ganz danach aus.
Zudem sollte es möglich sein, y1_ in jedem Block nur einmal von ganz x1_ abzuziehen.
Außerdem würde ich testen, ob statt dem letztlichen
a.*b <= 0
nicht möglicherweise folgendes effizienter ist:
(a <= 0 & b >=0) | (a >= 0 & b <= 0)
Für eigene Experimente wäre es gut, genaue oder zumindest typische Dimensionen der beteiligten Variablen zu kennen.
Allerdings ist es doch unglaublich langsamer geworden durch die Parallelisierung (Traffic?). Mit bsxfun geht es etwas besser! Y1_ kann man nicht vereinfachen, da x1_ unterschiedlich indiziert ist, sonst wäre das sicher richtig.
Meine Vektoren sind nicht gewaltig gross, vielleicht 1000x1 ... Lohnt sich hier eine Parallelisierung?
bei Parallelisierung entsteht ein Overhead dadurch, dass die Prozesse miteinander kommunizieren müssen. Das lohnt sich allerfrühestens für Verarbeitungszeiten im Sekundenbereich, bevorzugt eher im Minutenbereich. Ich denke mal, da liegst du deutlich drunter.
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.